From 2cd79d14a0c05c443249878f36b28eb46befb33c Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Mon, 15 Oct 2018 22:12:34 -0400 Subject: [PATCH 0001/1537] Roll src/third_party/skia 4b7b2ceb4ad9..b3067e8e1b6e (1 commits) (#6551) https://skia.googlesource.com/skia.git/+log/4b7b2ceb4ad9..b3067e8e1b6e Created with: gclient setdep -r src/third_party/skia@b3067e8e1b6e The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 76015248c0e57..b7092ebef8784 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '4b7b2ceb4ad93861c2ae6b4fabce13f187ec4b93', + 'skia_revision': 'b3067e8e1b6eb8b30806098dfbff27e4d6c81e32', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index a6e5f1f7e4750..a25707ec5e84a 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 34a318a5a1174afe381aa7e505a9474c +Signature: d3420dd9ed886c73246ace73b1e05948 UNUSED LICENSES: From 126e61d34cf8cd9b4a5676f0cada0221890c7307 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Tue, 16 Oct 2018 01:35:34 -0400 Subject: [PATCH 0002/1537] Roll src/third_party/skia b3067e8e1b6e..198b87e5be20 (2 commits) (#6553) https://skia.googlesource.com/skia.git/+log/b3067e8e1b6e..198b87e5be20 Created with: gclient setdep -r src/third_party/skia@198b87e5be20 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index b7092ebef8784..8e86532026bc8 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'b3067e8e1b6eb8b30806098dfbff27e4d6c81e32', + 'skia_revision': '198b87e5be2083d15901a91c82caad1912e8209a', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index a25707ec5e84a..0fd5f2d9bda4a 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: d3420dd9ed886c73246ace73b1e05948 +Signature: 53fce8bda85747304baa95f0174ef5e7 UNUSED LICENSES: From 2dbbb2a9a733099ec6dc67fb795e73e6b83adb90 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Tue, 16 Oct 2018 04:58:34 -0400 Subject: [PATCH 0003/1537] Roll src/third_party/skia 198b87e5be20..a583a06f831e (5 commits) (#6554) https://skia.googlesource.com/skia.git/+log/198b87e5be20..a583a06f831e Created with: gclient setdep -r src/third_party/skia@a583a06f831e The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 8e86532026bc8..8e5cd1ab2701d 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '198b87e5be2083d15901a91c82caad1912e8209a', + 'skia_revision': 'a583a06f831e9e03c303920b9d34f085508135c1', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 0fd5f2d9bda4a..7430f09dafdd5 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 53fce8bda85747304baa95f0174ef5e7 +Signature: a75a88eeba9d8519124c07bda188a64b UNUSED LICENSES: From fc376dd53033186d1af4a361457cc10d503a2c11 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Tue, 16 Oct 2018 08:53:06 -0400 Subject: [PATCH 0004/1537] Roll src/third_party/skia a583a06f831e..1349ec4de78c (1 commits) (#6555) https://skia.googlesource.com/skia.git/+log/a583a06f831e..1349ec4de78c Created with: gclient setdep -r src/third_party/skia@1349ec4de78c The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 8e5cd1ab2701d..4490b1cfffaa6 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'a583a06f831e9e03c303920b9d34f085508135c1', + 'skia_revision': '1349ec4de78cec5d5e106a1a2831fdcf0084fdec', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 7430f09dafdd5..c607b8105d370 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: a75a88eeba9d8519124c07bda188a64b +Signature: ce18e7798023262e66ae52b3b1582080 UNUSED LICENSES: From 215c14694b9dac196998b957d4ca1b0c9594e788 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Tue, 16 Oct 2018 12:16:34 -0400 Subject: [PATCH 0005/1537] Roll src/third_party/skia 1349ec4de78c..3d99b1e347be (3 commits) (#6556) https://skia.googlesource.com/skia.git/+log/1349ec4de78c..3d99b1e347be Created with: gclient setdep -r src/third_party/skia@3d99b1e347be The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 18 +++++++++++------- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/DEPS b/DEPS index 4490b1cfffaa6..64068fa089618 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '1349ec4de78cec5d5e106a1a2831fdcf0084fdec', + 'skia_revision': '3d99b1e347bef67f77c2d373f5d7824f23b0515c', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index c607b8105d370..517450c0e9963 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: ce18e7798023262e66ae52b3b1582080 +Signature: d66f991916ba8345f92a7949251d756d UNUSED LICENSES: @@ -2010,12 +2010,13 @@ FILE: ../../../third_party/skia/docs/overview.bmh FILE: ../../../third_party/skia/docs/status.json FILE: ../../../third_party/skia/docs/undocumented.bmh FILE: ../../../third_party/skia/docs/usingBookmaker.bmh -FILE: ../../../third_party/skia/experimental/canvaskit/canvas-kit/cpu_example.html -FILE: ../../../third_party/skia/experimental/canvaskit/canvas-kit/example.html -FILE: ../../../third_party/skia/experimental/canvaskit/canvas-kit/package.json +FILE: ../../../third_party/skia/experimental/canvaskit/canvaskit/cpu_example.html +FILE: ../../../third_party/skia/experimental/canvaskit/canvaskit/example.html +FILE: ../../../third_party/skia/experimental/canvaskit/canvaskit/package.json FILE: ../../../third_party/skia/experimental/canvaskit/externs.js FILE: ../../../third_party/skia/experimental/canvaskit/helper.js FILE: ../../../third_party/skia/experimental/canvaskit/interface.js +FILE: ../../../third_party/skia/experimental/canvaskit/karma.conf.js FILE: ../../../third_party/skia/experimental/canvaskit/package.json FILE: ../../../third_party/skia/experimental/docs/animationCommon.js FILE: ../../../third_party/skia/experimental/docs/backend.js @@ -2095,7 +2096,7 @@ FILE: ../../../third_party/skia/infra/bots/recipe_modules/build/examples/full.ex FILE: ../../../third_party/skia/infra/bots/recipe_modules/build/examples/full.expected/Build-Debian9-EMCC-asmjs-Release-PathKit.json FILE: ../../../third_party/skia/infra/bots/recipe_modules/build/examples/full.expected/Build-Debian9-EMCC-wasm-Debug-CanvasKit.json FILE: ../../../third_party/skia/infra/bots/recipe_modules/build/examples/full.expected/Build-Debian9-EMCC-wasm-Debug-PathKit.json -FILE: ../../../third_party/skia/infra/bots/recipe_modules/build/examples/full.expected/Build-Debian9-EMCC-wasm-Release-CanvasKit.json +FILE: ../../../third_party/skia/infra/bots/recipe_modules/build/examples/full.expected/Build-Debian9-EMCC-wasm-Release-CanvasKit_CPU.json FILE: ../../../third_party/skia/infra/bots/recipe_modules/build/examples/full.expected/Build-Debian9-EMCC-wasm-Release-PathKit.json FILE: ../../../third_party/skia/infra/bots/recipe_modules/build/examples/full.expected/Build-Debian9-GCC-arm-Release-Chromecast.json FILE: ../../../third_party/skia/infra/bots/recipe_modules/build/examples/full.expected/Build-Debian9-GCC-loongson3a-Release.json @@ -2275,7 +2276,10 @@ FILE: ../../../third_party/skia/infra/bots/recipes/test.expected/failed_get_hash FILE: ../../../third_party/skia/infra/bots/recipes/test.expected/failed_pull.json FILE: ../../../third_party/skia/infra/bots/recipes/test.expected/failed_push.json FILE: ../../../third_party/skia/infra/bots/recipes/test.expected/internal_bot_2.json +FILE: ../../../third_party/skia/infra/bots/recipes/test.expected/internal_bot_5.json FILE: ../../../third_party/skia/infra/bots/recipes/test.expected/trybot.json +FILE: ../../../third_party/skia/infra/bots/recipes/test_canvaskit.expected/Test-Debian9-EMCC-GCE-GPU-WEBGL1-wasm-Debug-All-CanvasKit.json +FILE: ../../../third_party/skia/infra/bots/recipes/test_canvaskit.expected/canvaskit_trybot.json FILE: ../../../third_party/skia/infra/bots/recipes/test_lottie_web.expected/Test-Debian9-none-GCE-CPU-AVX2-x86_64-Debug-All-LottieWeb.json FILE: ../../../third_party/skia/infra/bots/recipes/test_lottie_web.expected/lottie_web_trybot.json FILE: ../../../third_party/skia/infra/bots/recipes/test_pathkit.expected/Test-Debian9-EMCC-GCE-CPU-AVX2-asmjs-Debug-All-PathKit.json @@ -5269,8 +5273,8 @@ TYPE: LicenseType.bsd FILE: ../../../third_party/skia/include/gpu/GrDriverBugWorkaroundsAutogen.h FILE: ../../../third_party/skia/include/utils/SkTraceEventPhase.h FILE: ../../../third_party/skia/infra/lottiecap/gold/lottie-web-aggregator.go -FILE: ../../../third_party/skia/infra/pathkit/gold/pathkit_gold_aggregator.go -FILE: ../../../third_party/skia/infra/pathkit/perf/pathkit_perf_aggregator.go +FILE: ../../../third_party/skia/infra/pathkit/gold/wasm_gold_aggregator.go +FILE: ../../../third_party/skia/infra/pathkit/perf/wasm_perf_aggregator.go ---------------------------------------------------------------------------------------------------- Copyright 2018 The Chromium Authors. All rights reserved. From df5f4207ab0dd6e51389932ab1f5398434bcae84 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Tue, 16 Oct 2018 15:40:34 -0400 Subject: [PATCH 0006/1537] Roll src/third_party/skia 3d99b1e347be..c9092eb46754 (10 commits) (#6559) https://skia.googlesource.com/skia.git/+log/3d99b1e347be..c9092eb46754 Created with: gclient setdep -r src/third_party/skia@c9092eb46754 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 64068fa089618..dc257543c2ff5 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '3d99b1e347bef67f77c2d373f5d7824f23b0515c', + 'skia_revision': 'c9092eb467549826cfb490a89165daf5c64fea74', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 517450c0e9963..be146ce9bfde5 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: d66f991916ba8345f92a7949251d756d +Signature: 211dd925feec2941f42ca11e495e5964 UNUSED LICENSES: From 10f9cab4c532b99be72bf24fab8ca3f5ac305f91 Mon Sep 17 00:00:00 2001 From: Chinmay Garde Date: Tue, 16 Oct 2018 14:30:19 -0700 Subject: [PATCH 0007/1537] Ensure that the platform view is created and destroyed when running the shell unittests. (#6560) --- shell/common/BUILD.gn | 11 +++- shell/common/shell_unittests.cc | 110 +++++++++++++++++++++++++++++--- shell/gpu/BUILD.gn | 46 +++++++++++++ shell/gpu/gpu.gni | 42 ++---------- 4 files changed, 162 insertions(+), 47 deletions(-) create mode 100644 shell/gpu/BUILD.gn diff --git a/shell/common/BUILD.gn b/shell/common/BUILD.gn index c2821e2a4bdc3..3ed3e929cb91e 100644 --- a/shell/common/BUILD.gn +++ b/shell/common/BUILD.gn @@ -3,6 +3,7 @@ # found in the LICENSE file. import("$flutter_root/testing/testing.gni") +import("$flutter_root/shell/gpu/gpu.gni") # Template to generate a dart embedder resource.cc file. # Required invoker inputs: @@ -107,8 +108,8 @@ source_set("common") { public_deps = [ "$flutter_root/shell/version", "$flutter_root/third_party/txt", - "//third_party/tonic", "//third_party/rapidjson", + "//third_party/tonic", ] public_configs = [ "$flutter_root:config" ] @@ -139,12 +140,20 @@ template("shell_host_executable") { } } +shell_gpu_configuration("shell_unittests_gpu_configuration") { + enable_software = true + enable_vulkan = false + enable_gl = false +} + shell_host_executable("shell_unittests") { sources = [ "shell_unittests.cc", ] deps = [ + ":shell_unittests_gpu_configuration", + "$flutter_root/shell/", "$flutter_root/testing", ] } diff --git a/shell/common/shell_unittests.cc b/shell/common/shell_unittests.cc index 6c1cc66c9f6ff..91e0cf6f12168 100644 --- a/shell/common/shell_unittests.cc +++ b/shell/common/shell_unittests.cc @@ -14,6 +14,7 @@ #include "flutter/shell/common/rasterizer.h" #include "flutter/shell/common/shell.h" #include "flutter/shell/common/thread_host.h" +#include "flutter/shell/gpu/gpu_surface_software.h" #include "gtest/gtest.h" #define CURRENT_TEST_NAME \ @@ -23,6 +24,64 @@ namespace shell { +class TestPlatformView : public PlatformView, + public GPUSurfaceSoftwareDelegate { + public: + TestPlatformView(PlatformView::Delegate& delegate, + blink::TaskRunners task_runners) + : PlatformView(delegate, std::move(task_runners)) {} + + private: + // |PlatformView| + std::unique_ptr CreateRenderingSurface() override { + return std::make_unique(this); + } + + // |GPUSurfaceSoftwareDelegate| + virtual sk_sp AcquireBackingStore(const SkISize& size) override { + return SkSurface::MakeRasterN32Premul(size.width(), size.height()); + } + + // |GPUSurfaceSoftwareDelegate| + virtual bool PresentBackingStore(sk_sp backing_store) override { + return true; + } + + FML_DISALLOW_COPY_AND_ASSIGN(TestPlatformView); +}; + +static bool ValidateShell(Shell* shell) { + if (!shell) { + return false; + } + + if (!shell->IsSetup()) { + return false; + } + + { + fml::AutoResetWaitableEvent latch; + fml::TaskRunner::RunNowOrPostTask( + shell->GetTaskRunners().GetPlatformTaskRunner(), [shell, &latch]() { + shell->GetPlatformView()->NotifyCreated(); + latch.Signal(); + }); + latch.Wait(); + } + + { + fml::AutoResetWaitableEvent latch; + fml::TaskRunner::RunNowOrPostTask( + shell->GetTaskRunners().GetPlatformTaskRunner(), [shell, &latch]() { + shell->GetPlatformView()->NotifyDestroyed(); + latch.Signal(); + }); + latch.Wait(); + } + + return true; +} + TEST(ShellTest, InitializeWithInvalidThreads) { blink::Settings settings = {}; settings.task_observer_add = [](intptr_t, fml::closure) {}; @@ -31,7 +90,8 @@ TEST(ShellTest, InitializeWithInvalidThreads) { auto shell = Shell::Create( std::move(task_runners), settings, [](Shell& shell) { - return std::make_unique(shell, shell.GetTaskRunners()); + return std::make_unique(shell, + shell.GetTaskRunners()); }, [](Shell& shell) { return std::make_unique(shell.GetTaskRunners()); @@ -54,12 +114,13 @@ TEST(ShellTest, InitializeWithDifferentThreads) { auto shell = Shell::Create( std::move(task_runners), settings, [](Shell& shell) { - return std::make_unique(shell, shell.GetTaskRunners()); + return std::make_unique(shell, + shell.GetTaskRunners()); }, [](Shell& shell) { return std::make_unique(shell.GetTaskRunners()); }); - ASSERT_TRUE(shell); + ASSERT_TRUE(ValidateShell(shell.get())); } TEST(ShellTest, InitializeWithSingleThread) { @@ -74,12 +135,13 @@ TEST(ShellTest, InitializeWithSingleThread) { auto shell = Shell::Create( std::move(task_runners), settings, [](Shell& shell) { - return std::make_unique(shell, shell.GetTaskRunners()); + return std::make_unique(shell, + shell.GetTaskRunners()); }, [](Shell& shell) { return std::make_unique(shell.GetTaskRunners()); }); - ASSERT_TRUE(shell); + ASSERT_TRUE(ValidateShell(shell.get())); } TEST(ShellTest, InitializeWithSingleThreadWhichIsTheCallingThread) { @@ -93,12 +155,13 @@ TEST(ShellTest, InitializeWithSingleThreadWhichIsTheCallingThread) { auto shell = Shell::Create( std::move(task_runners), settings, [](Shell& shell) { - return std::make_unique(shell, shell.GetTaskRunners()); + return std::make_unique(shell, + shell.GetTaskRunners()); }, [](Shell& shell) { return std::make_unique(shell.GetTaskRunners()); }); - ASSERT_TRUE(shell); + ASSERT_TRUE(ValidateShell(shell.get())); } TEST(ShellTest, InitializeWithMultipleThreadButCallingThreadAsPlatformThread) { @@ -117,12 +180,41 @@ TEST(ShellTest, InitializeWithMultipleThreadButCallingThreadAsPlatformThread) { auto shell = Shell::Create( std::move(task_runners), settings, [](Shell& shell) { - return std::make_unique(shell, shell.GetTaskRunners()); + return std::make_unique(shell, + shell.GetTaskRunners()); + }, + [](Shell& shell) { + return std::make_unique(shell.GetTaskRunners()); + }); + ASSERT_TRUE(ValidateShell(shell.get())); +} + +// Reported in Bug: Engine deadlocks when gpu and platforms threads are the same +// #21398 (https://github.com/flutter/flutter/issues/21398) +TEST(ShellTest, DISABLED_InitializeWithGPUAndPlatformThreadsTheSame) { + blink::Settings settings = {}; + settings.task_observer_add = [](intptr_t, fml::closure) {}; + settings.task_observer_remove = [](intptr_t) {}; + ThreadHost thread_host( + "io.flutter.test." + CURRENT_TEST_NAME + ".", + ThreadHost::Type::Platform | ThreadHost::Type::IO | ThreadHost::Type::UI); + blink::TaskRunners task_runners( + "test", + thread_host.platform_thread->GetTaskRunner(), // platform + thread_host.platform_thread->GetTaskRunner(), // gpu + thread_host.ui_thread->GetTaskRunner(), // ui + thread_host.io_thread->GetTaskRunner() // io + ); + auto shell = Shell::Create( + std::move(task_runners), settings, + [](Shell& shell) { + return std::make_unique(shell, + shell.GetTaskRunners()); }, [](Shell& shell) { return std::make_unique(shell.GetTaskRunners()); }); - ASSERT_TRUE(shell); + ASSERT_TRUE(ValidateShell(shell.get())); } } // namespace shell diff --git a/shell/gpu/BUILD.gn b/shell/gpu/BUILD.gn new file mode 100644 index 0000000000000..2ad78b45d7a25 --- /dev/null +++ b/shell/gpu/BUILD.gn @@ -0,0 +1,46 @@ +# Copyright 2018 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. + +import("$flutter_root/shell/config.gni") + +gpu_dir = "$flutter_root/shell/gpu" + +gpu_common_deps = [ + "$flutter_root/common", + "$flutter_root/flow", + "$flutter_root/fml", + "$flutter_root/shell/common", + "$flutter_root/synchronization", + "//third_party/skia", +] + +source_set("gpu_surface_software") { + sources = [ + "$gpu_dir/gpu_surface_software.cc", + "$gpu_dir/gpu_surface_software.h", + ] + + deps = gpu_common_deps +} + +source_set("gpu_surface_gl") { + sources = [ + "$gpu_dir/gpu_surface_gl.cc", + "$gpu_dir/gpu_surface_gl.h", + ] + + deps = gpu_common_deps + [ "//third_party/skia:gpu" ] +} + +source_set("gpu_surface_vulkan") { + sources = [ + "$gpu_dir/gpu_surface_vulkan.cc", + "$gpu_dir/gpu_surface_vulkan.h", + ] + + deps = gpu_common_deps + [ + "//third_party/skia:gpu", + "$flutter_root/vulkan", + ] +} diff --git a/shell/gpu/gpu.gni b/shell/gpu/gpu.gni index 48cb476017509..28eb061aea350 100644 --- a/shell/gpu/gpu.gni +++ b/shell/gpu/gpu.gni @@ -12,51 +12,19 @@ template("shell_gpu_configuration") { assert(defined(invoker.enable_gl), "Caller must declare if the Open GL backend must be enabled.") - source_set(target_name) { - # vulkan_backend_enabled = shell_enable_vulkan - # gl_backend_enabled = !is_fuchsia - # software_backend_enabled = true - - sources = [] - - gpu_dir = "$flutter_root/shell/gpu" + group(target_name) { + public_deps = [] if (invoker.enable_software) { - sources += [ - "$gpu_dir/gpu_surface_software.cc", - "$gpu_dir/gpu_surface_software.h", - ] + public_deps += [ "$flutter_root/shell/gpu:gpu_surface_software" ] } if (invoker.enable_gl) { - sources += [ - "$gpu_dir/gpu_surface_gl.cc", - "$gpu_dir/gpu_surface_gl.h", - ] - } - - if (invoker.enable_vulkan) { - sources += [ - "$gpu_dir/gpu_surface_vulkan.cc", - "$gpu_dir/gpu_surface_vulkan.h", - ] - } - - deps = [ - "$flutter_root/common", - "$flutter_root/flow", - "$flutter_root/fml", - "$flutter_root/shell/common", - "$flutter_root/synchronization", - "//third_party/skia", - ] - - if (invoker.enable_vulkan || invoker.enable_gl) { - deps += [ "//third_party/skia:gpu" ] + public_deps += [ "$flutter_root/shell/gpu:gpu_surface_gl" ] } if (invoker.enable_vulkan) { - deps += [ "$flutter_root/vulkan" ] + public_deps += [ "$flutter_root/shell/gpu:gpu_surface_vulkan" ] } } } From 6697d9ddedcc301170fdf8848d82a66f616fffa8 Mon Sep 17 00:00:00 2001 From: Greg Spencer Date: Tue, 16 Oct 2018 15:50:28 -0700 Subject: [PATCH 0008/1537] Update @animation dartdoc directives to current api (#6552) --- lib/ui/painting.dart | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/lib/ui/painting.dart b/lib/ui/painting.dart index 1b2dc7a6acaac..98a6a4dfb1ad6 100644 --- a/lib/ui/painting.dart +++ b/lib/ui/painting.dart @@ -879,7 +879,7 @@ enum StrokeCap { enum StrokeJoin { /// Joins between line segments form sharp corners. /// - /// {@animation joinMiterEnum 300 300 https://flutter.github.io/assets-for-api-docs/assets/dart-ui/miter_4_join.mp4} + /// {@animation 300 300 https://flutter.github.io/assets-for-api-docs/assets/dart-ui/miter_4_join.mp4} /// /// The center of the line segment is colored in the diagram above to /// highlight the join, but in normal usage the join is the same color as the @@ -895,7 +895,7 @@ enum StrokeJoin { /// Joins between line segments are semi-circular. /// - /// {@animation joinRoundEnum 300 300 https://flutter.github.io/assets-for-api-docs/assets/dart-ui/round_join.mp4} + /// {@animation 300 300 https://flutter.github.io/assets-for-api-docs/assets/dart-ui/round_join.mp4} /// /// The center of the line segment is colored in the diagram above to /// highlight the join, but in normal usage the join is the same color as the @@ -910,7 +910,7 @@ enum StrokeJoin { /// Joins between line segments connect the corners of the butt ends of the /// line segments to give a beveled appearance. /// - /// {@animation joinBevelEnum 300 300 https://flutter.github.io/assets-for-api-docs/assets/dart-ui/bevel_join.mp4} + /// {@animation 300 300 https://flutter.github.io/assets-for-api-docs/assets/dart-ui/bevel_join.mp4} /// /// The center of the line segment is colored in the diagram above to /// highlight the join, but in normal usage the join is the same color as the @@ -1209,11 +1209,11 @@ class Paint { /// /// Some examples of joins: /// - /// {@animation joinMiterStrokeJoin 300 300 https://flutter.github.io/assets-for-api-docs/assets/dart-ui/miter_4_join.mp4} + /// {@animation 300 300 https://flutter.github.io/assets-for-api-docs/assets/dart-ui/miter_4_join.mp4} /// - /// {@animation joinRoundStrokeJoin 300 300 https://flutter.github.io/assets-for-api-docs/assets/dart-ui/round_join.mp4} + /// {@animation 300 300 https://flutter.github.io/assets-for-api-docs/assets/dart-ui/round_join.mp4} /// - /// {@animation joinBevelStrokeJoin 300 300 https://flutter.github.io/assets-for-api-docs/assets/dart-ui/bevel_join.mp4} + /// {@animation 300 300 https://flutter.github.io/assets-for-api-docs/assets/dart-ui/bevel_join.mp4} /// /// The centers of the line segments are colored in the diagrams above to /// highlight the joins, but in normal usage the join is the same color as the @@ -1248,11 +1248,11 @@ class Paint { /// Defaults to 4.0. Using zero as a limit will cause a [StrokeJoin.bevel] /// join to be used all the time. /// - /// {@animation joinMiter0Limit 300 300 https://flutter.github.io/assets-for-api-docs/assets/dart-ui/miter_0_join.mp4} + /// {@animation 300 300 https://flutter.github.io/assets-for-api-docs/assets/dart-ui/miter_0_join.mp4} /// - /// {@animation joinMiter4Limit 300 300 https://flutter.github.io/assets-for-api-docs/assets/dart-ui/miter_4_join.mp4} + /// {@animation 300 300 https://flutter.github.io/assets-for-api-docs/assets/dart-ui/miter_4_join.mp4} /// - /// {@animation joinMiter6Limit 300 300 https://flutter.github.io/assets-for-api-docs/assets/dart-ui/miter_6_join.mp4} + /// {@animation 300 300 https://flutter.github.io/assets-for-api-docs/assets/dart-ui/miter_6_join.mp4} /// /// The centers of the line segments are colored in the diagrams above to /// highlight the joins, but in normal usage the join is the same color as the From ad0fbd5d4973f72dbe1539842bace10d6fb48037 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Tue, 16 Oct 2018 19:03:34 -0400 Subject: [PATCH 0009/1537] Roll src/third_party/skia c9092eb46754..f831b64ed40e (14 commits) (#6561) https://skia.googlesource.com/skia.git/+log/c9092eb46754..f831b64ed40e Created with: gclient setdep -r src/third_party/skia@f831b64ed40e The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index dc257543c2ff5..102483af4fdf4 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'c9092eb467549826cfb490a89165daf5c64fea74', + 'skia_revision': 'f831b64ed40e78da8f4946fdb39c91ae2be5f682', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index be146ce9bfde5..fe8b7774aed5e 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 211dd925feec2941f42ca11e495e5964 +Signature: 5d6eea48fb9d69013ee0a6bc392f3630 UNUSED LICENSES: From 915f5e01a1a928f03fb73a2acdfa181d405c9603 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Tue, 16 Oct 2018 22:27:33 -0400 Subject: [PATCH 0010/1537] Roll src/third_party/skia f831b64ed40e..0a8faf3f557d (5 commits) (#6563) https://skia.googlesource.com/skia.git/+log/f831b64ed40e..0a8faf3f557d Created with: gclient setdep -r src/third_party/skia@0a8faf3f557d The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 102483af4fdf4..00bea89b984e3 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'f831b64ed40e78da8f4946fdb39c91ae2be5f682', + 'skia_revision': '0a8faf3f557d30fa0c2c4db5787c86c2b73fde3e', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index fe8b7774aed5e..9c6521c561e53 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 5d6eea48fb9d69013ee0a6bc392f3630 +Signature: 9e48376c436d9c9b9ffe5877f1413c35 UNUSED LICENSES: From e22da7c70a292f0a9457ef19e781a8572e0c3f42 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Wed, 17 Oct 2018 02:25:34 -0400 Subject: [PATCH 0011/1537] Roll src/third_party/skia 0a8faf3f557d..583161c09a3b (1 commits) (#6564) https://skia.googlesource.com/skia.git/+log/0a8faf3f557d..583161c09a3b Created with: gclient setdep -r src/third_party/skia@583161c09a3b The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 00bea89b984e3..571bd7c829307 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '0a8faf3f557d30fa0c2c4db5787c86c2b73fde3e', + 'skia_revision': '583161c09a3b6fd78862c2b9af12a9c607c130a5', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 9c6521c561e53..2be973ef0f30c 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 9e48376c436d9c9b9ffe5877f1413c35 +Signature: 6145ed10b2a7b69c443206459da08773 UNUSED LICENSES: From b0008ca39c36128687e389a3da421f4846fc1504 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Wed, 17 Oct 2018 05:49:34 -0400 Subject: [PATCH 0012/1537] Roll src/third_party/skia 583161c09a3b..483536c242f3 (2 commits) (#6565) https://skia.googlesource.com/skia.git/+log/583161c09a3b..483536c242f3 Created with: gclient setdep -r src/third_party/skia@483536c242f3 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 571bd7c829307..2bff17a6de5dd 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '583161c09a3b6fd78862c2b9af12a9c607c130a5', + 'skia_revision': '483536c242f33e229cb9feceb26c771c17bb7e89', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 2be973ef0f30c..9b23c8d4e3e31 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 6145ed10b2a7b69c443206459da08773 +Signature: 5f0b01ef6ac7133d1b12a717a72b37d1 UNUSED LICENSES: From 065246eed713a0846c48c9ae04a8834dadec4731 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Wed, 17 Oct 2018 09:12:34 -0400 Subject: [PATCH 0013/1537] Roll src/third_party/skia 483536c242f3..5b90b84085cf (3 commits) (#6566) https://skia.googlesource.com/skia.git/+log/483536c242f3..5b90b84085cf Created with: gclient setdep -r src/third_party/skia@5b90b84085cf The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/DEPS b/DEPS index 2bff17a6de5dd..d7c42de152c6d 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '483536c242f33e229cb9feceb26c771c17bb7e89', + 'skia_revision': '5b90b84085cf75b88497a16f8eed987aa961f8bf', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 9b23c8d4e3e31..84bae08ff62de 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 5f0b01ef6ac7133d1b12a717a72b37d1 +Signature: d415818a3e6066fd705442d468c5a79a UNUSED LICENSES: @@ -2010,10 +2010,12 @@ FILE: ../../../third_party/skia/docs/overview.bmh FILE: ../../../third_party/skia/docs/status.json FILE: ../../../third_party/skia/docs/undocumented.bmh FILE: ../../../third_party/skia/docs/usingBookmaker.bmh -FILE: ../../../third_party/skia/experimental/canvaskit/canvaskit/cpu_example.html FILE: ../../../third_party/skia/experimental/canvaskit/canvaskit/example.html +FILE: ../../../third_party/skia/experimental/canvaskit/canvaskit/node.example.js FILE: ../../../third_party/skia/experimental/canvaskit/canvaskit/package.json +FILE: ../../../third_party/skia/experimental/canvaskit/cpu.js FILE: ../../../third_party/skia/experimental/canvaskit/externs.js +FILE: ../../../third_party/skia/experimental/canvaskit/gpu.js FILE: ../../../third_party/skia/experimental/canvaskit/helper.js FILE: ../../../third_party/skia/experimental/canvaskit/interface.js FILE: ../../../third_party/skia/experimental/canvaskit/karma.conf.js @@ -4695,10 +4697,12 @@ ORIGIN: ../../../third_party/skia/fuzz/oss_fuzz/FuzzAPIImageFilter.cpp + ../../. TYPE: LicenseType.bsd FILE: ../../../third_party/skia/fuzz/FuzzCommon.h FILE: ../../../third_party/skia/fuzz/oss_fuzz/FuzzAPIImageFilter.cpp +FILE: ../../../third_party/skia/fuzz/oss_fuzz/FuzzAndroidCodec.cpp FILE: ../../../third_party/skia/fuzz/oss_fuzz/FuzzAnimatedImage.cpp FILE: ../../../third_party/skia/fuzz/oss_fuzz/FuzzDrawFunctions.cpp FILE: ../../../third_party/skia/fuzz/oss_fuzz/FuzzGradients.cpp FILE: ../../../third_party/skia/fuzz/oss_fuzz/FuzzImage.cpp +FILE: ../../../third_party/skia/fuzz/oss_fuzz/FuzzIncrementalImage.cpp FILE: ../../../third_party/skia/fuzz/oss_fuzz/FuzzJPEGEncoder.cpp FILE: ../../../third_party/skia/fuzz/oss_fuzz/FuzzJSON.cpp FILE: ../../../third_party/skia/fuzz/oss_fuzz/FuzzMockGPUCanvas.cpp From ef2ea1213b1e83b11e40c223f71f6fd18d849dcb Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Wed, 17 Oct 2018 12:35:34 -0400 Subject: [PATCH 0014/1537] Roll src/third_party/skia 5b90b84085cf..cb65ce7f77c9 (8 commits) (#6567) https://skia.googlesource.com/skia.git/+log/5b90b84085cf..cb65ce7f77c9 Created with: gclient setdep -r src/third_party/skia@cb65ce7f77c9 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index d7c42de152c6d..d31ccfe7ae935 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '5b90b84085cf75b88497a16f8eed987aa961f8bf', + 'skia_revision': 'cb65ce7f77c905a05df309aa656b387ff0008cda', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 84bae08ff62de..234eb98f7c892 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: d415818a3e6066fd705442d468c5a79a +Signature: b057b889cea5ca9c9f140935cabc33b4 UNUSED LICENSES: From 04c860fa1dbaf4181fc20269864d1e786a84fcc0 Mon Sep 17 00:00:00 2001 From: liyuqian Date: Wed, 17 Oct 2018 10:08:23 -0700 Subject: [PATCH 0015/1537] Revert "Roll Dart to ac6d4f7e653deba11d4836768376537893a9e9d6. (#6549)" (#6568) This reverts commit aed6b8c46b05c7cee4506a9757dd9ea1b40583c2. We revert because it breaks the engine to framework roll. Reverting as soon as possible allows other engine commits to roll into framework first so we'll have smaller engine rolls which is good for triaging regressions. TBR: rmacnak-google --- DEPS | 2 +- ci/licenses_golden/licenses_third_party | 9 ++++--- runtime/BUILD.gn | 36 +++++++++++++++++++++++++ 3 files changed, 42 insertions(+), 5 deletions(-) diff --git a/DEPS b/DEPS index d31ccfe7ae935..10c4882587af9 100644 --- a/DEPS +++ b/DEPS @@ -31,7 +31,7 @@ vars = { # Dart is: https://github.com/dart-lang/sdk/blob/master/DEPS. # You can use //tools/dart/create_updated_flutter_deps.py to produce # updated revision list of existing dependencies. - 'dart_revision': 'ac6d4f7e653deba11d4836768376537893a9e9d6', + 'dart_revision': 'b99bcfd3099f0d32e39287160a9539e878cb0b68', # WARNING: DO NOT EDIT MANUALLY # The lines between blank lines above and below are generated by a script. See create_updated_flutter_deps.py diff --git a/ci/licenses_golden/licenses_third_party b/ci/licenses_golden/licenses_third_party index c3ff235b72fd5..7400d728db39f 100644 --- a/ci/licenses_golden/licenses_third_party +++ b/ci/licenses_golden/licenses_third_party @@ -1,4 +1,4 @@ -Signature: aafea799ed666129bcb0e64c356e77f1 +Signature: 7c3937f9c7241377fd191ec55d536a6a UNUSED LICENSES: @@ -4432,7 +4432,6 @@ ORIGIN: ../../../third_party/dart/LICENSE TYPE: LicenseType.bsd FILE: ../../../third_party/dart/.gitconfig FILE: ../../../third_party/dart/.mailmap -FILE: ../../../third_party/dart/.vpython FILE: ../../../third_party/dart/client/idea/.idea/.name FILE: ../../../third_party/dart/client/idea/.idea/inspectionProfiles/Project_Default.xml FILE: ../../../third_party/dart/client/idea/.idea/vcs.xml @@ -5272,6 +5271,7 @@ FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/sourc FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/target.dart FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/thread.dart FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/timeline_event.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/token_stream.dart FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/type_arguments.dart FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/unknown.dart FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/vm.dart @@ -5458,8 +5458,6 @@ FILE: ../../../third_party/dart/runtime/vm/compiler/assembler/disassembler_kbc.c FILE: ../../../third_party/dart/runtime/vm/compiler/assembler/disassembler_kbc.h FILE: ../../../third_party/dart/runtime/vm/compiler/backend/code_statistics.cc FILE: ../../../third_party/dart/runtime/vm/compiler/backend/code_statistics.h -FILE: ../../../third_party/dart/runtime/vm/compiler/backend/loops.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/backend/loops.h FILE: ../../../third_party/dart/runtime/vm/compiler/compiler_pass.cc FILE: ../../../third_party/dart/runtime/vm/compiler/compiler_pass.h FILE: ../../../third_party/dart/runtime/vm/compiler/compiler_state.h @@ -5544,6 +5542,8 @@ FILE: ../../../third_party/dart/runtime/vm/code_patcher_x64_test.cc FILE: ../../../third_party/dart/runtime/vm/compiler/assembler/disassembler.cc FILE: ../../../third_party/dart/runtime/vm/compiler/assembler/disassembler.h FILE: ../../../third_party/dart/runtime/vm/compiler/assembler/disassembler_test.cc +FILE: ../../../third_party/dart/runtime/vm/compiler_stats.cc +FILE: ../../../third_party/dart/runtime/vm/compiler_stats.h FILE: ../../../third_party/dart/runtime/vm/cpu_ia32.cc FILE: ../../../third_party/dart/runtime/vm/custom_isolate_test.cc FILE: ../../../third_party/dart/runtime/vm/dart.h @@ -5879,6 +5879,7 @@ FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/sentinel_va FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/sentinel_view.dart FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/source_inset.dart FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/stack_trace_tree_config.dart +FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/token_stream_ref.dart FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/type_arguments_ref.dart FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/unknown_ref.dart FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/vm_view.dart diff --git a/runtime/BUILD.gn b/runtime/BUILD.gn index 1fa0d73af64e2..bf4b8e6fb8316 100644 --- a/runtime/BUILD.gn +++ b/runtime/BUILD.gn @@ -6,6 +6,41 @@ import("//third_party/dart/runtime/bin/vmservice/vmservice_sources.gni") import("$flutter_root/common/config.gni") import("$flutter_root/testing/testing.gni") +action("gen_embedded_resources_cc") { + script = "//third_party/dart/runtime/tools/create_resources.py" + output_file = "$target_gen_dir/embedded_resources.cc" + outputs = [ + output_file, + ] + + inputs = rebase_path(vmservice_sources, + "", + "//third_party/dart/runtime/bin/vmservice") + + args = [ + "--output", + rebase_path(output_file), + "--outer_namespace", + "flutter", + "--inner_namespace", + "runtime", + "--table_name", + "flutter_embedded_service_isolate", + "--root_prefix", + rebase_path("//third_party/dart/runtime/bin/"), + ] + rebase_path(inputs) +} + +source_set("embedded_resources_cc") { + sources = [ + "$target_gen_dir/embedded_resources.cc", + ] + deps = [ + ":gen_embedded_resources_cc", + ] + public_configs = [ "$flutter_root:config" ] +} + source_set("test_font") { sources = [ "test_font_data.cc", @@ -49,6 +84,7 @@ source_set("runtime") { ] deps = [ + ":embedded_resources_cc", ":test_font", "$flutter_root/assets", "$flutter_root/common", From 35340ceaf037ee8652005a7380fb0567fd9232bc Mon Sep 17 00:00:00 2001 From: Gary Qian Date: Wed, 17 Oct 2018 10:53:01 -0700 Subject: [PATCH 0016/1537] Pass full locale list with script and variant codes to framework (#6557) * Locale Passing * Pass full locale list and script and variant codes to framework * Working Android locale list passing and fallback --- lib/ui/hooks.dart | 12 ++++-- lib/ui/window.dart | 29 +++++++++++++-- lib/ui/window/window.cc | 13 ++----- lib/ui/window/window.h | 7 ++-- runtime/runtime_controller.cc | 20 +++------- runtime/runtime_controller.h | 25 +++++++++++-- shell/common/engine.cc | 24 +++++++----- .../android/io/flutter/view/FlutterView.java | 37 +++++++++++++++++-- .../framework/Source/FlutterViewController.mm | 33 ++++++++++------- .../dart/window_hooks_integration_test.dart | 2 +- 10 files changed, 138 insertions(+), 64 deletions(-) diff --git a/lib/ui/hooks.dart b/lib/ui/hooks.dart index 20980a0a1c41f..d3d81b7f3cc7d 100644 --- a/lib/ui/hooks.dart +++ b/lib/ui/hooks.dart @@ -42,14 +42,20 @@ void _updateWindowMetrics(double devicePixelRatio, typedef _LocaleClosure = String Function(); -String _localeClosure() => window._locale.toString(); +String _localeClosure() => window.locale.toString(); @pragma('vm:entry-point') _LocaleClosure _getLocaleClosure() => _localeClosure; @pragma('vm:entry-point') -void _updateLocale(String languageCode, String countryCode, String scriptCode, String variantCode) { - window._locale = new Locale(languageCode, countryCode); +void _updateLocales(List locales) { + const int stringsPerLocale = 4; + final int numLocales = locales.length ~/ stringsPerLocale; + window._locales = new List(numLocales); + for (int localeIndex = 0; localeIndex < numLocales; localeIndex++) { + window._locales[localeIndex] = new Locale(locales[localeIndex * stringsPerLocale], + locales[localeIndex * stringsPerLocale + 1]); + } _invoke(window.onLocaleChanged, window._onLocaleChangedZone); } diff --git a/lib/ui/window.dart b/lib/ui/window.dart index 0b1318c997aaf..fa0431b3113d8 100644 --- a/lib/ui/window.dart +++ b/lib/ui/window.dart @@ -152,6 +152,9 @@ class Locale { /// the region subtag should be uppercase. const Locale(this._languageCode, [ this._countryCode ]) : assert(_languageCode != null); + /// Empty locale constant. This is an invalid locale. + static const Locale none = const Locale('', ''); + /// The primary language subtag for the locale. /// /// This must not be null. @@ -426,19 +429,39 @@ class Window { _onMetricsChangedZone = Zone.current; } - /// The system-reported locale. + /// The system-reported default locale of the device. + /// + /// This establishes the language and formatting conventions that application + /// should, if possible, use to render their user interface. + /// + /// This is the first locale selected by the user and is the user's + /// primary locale (the locale the device UI is displayed in) + /// + /// This is equivalent to `locales.first` and will provide an empty non-null locale + /// if the [locales] list has not been set or is empty. + Locale get locale { + if (_locales != null && _locales.isNotEmpty) { + return _locales.first; + } + return Locale.none; + } + + /// The full system-reported supported locales of the device. /// /// This establishes the language and formatting conventions that application /// should, if possible, use to render their user interface. /// + /// The list is ordered in order of priority, with lower-indexed locales being + /// preferred over higher-indexed ones. The first element is the primary [locale]. + /// /// The [onLocaleChanged] callback is called whenever this value changes. /// /// See also: /// /// * [WidgetsBindingObserver], for a mechanism at the widgets layer to /// observe when this value changes. - Locale get locale => _locale; - Locale _locale; + List get locales => _locales; + List _locales; /// A callback that is invoked whenever [locale] changes value. /// diff --git a/lib/ui/window/window.cc b/lib/ui/window/window.cc index 95be0076198cc..ce4626afa74e7 100644 --- a/lib/ui/window/window.cc +++ b/lib/ui/window/window.cc @@ -162,21 +162,14 @@ void Window::UpdateWindowMetrics(const ViewportMetrics& metrics) { }); } -void Window::UpdateLocale(const std::string& language_code, - const std::string& country_code, - const std::string& script_code, - const std::string& variant_code) { +void Window::UpdateLocales(const std::vector& locales) { std::shared_ptr dart_state = library_.dart_state().lock(); if (!dart_state) return; tonic::DartState::Scope scope(dart_state); - - DartInvokeField(library_.value(), "_updateLocale", + DartInvokeField(library_.value(), "_updateLocales", { - StdStringToDart(language_code), - StdStringToDart(country_code), - StdStringToDart(script_code), - StdStringToDart(variant_code), + tonic::ToDart>(locales), }); } diff --git a/lib/ui/window/window.h b/lib/ui/window/window.h index eb2a8c6613d07..bc1e3ba267f73 100644 --- a/lib/ui/window/window.h +++ b/lib/ui/window/window.h @@ -5,7 +5,9 @@ #ifndef FLUTTER_LIB_UI_WINDOW_WINDOW_H_ #define FLUTTER_LIB_UI_WINDOW_WINDOW_H_ +#include #include +#include #include "flutter/fml/time/time_point.h" #include "flutter/lib/ui/semantics/semantics_update.h" @@ -59,10 +61,7 @@ class Window final { void DidCreateIsolate(); void UpdateWindowMetrics(const ViewportMetrics& metrics); - void UpdateLocale(const std::string& language_code, - const std::string& country_code, - const std::string& script_code, - const std::string& variant_code); + void UpdateLocales(const std::vector& locales); void UpdateUserSettingsData(const std::string& data); void UpdateSemanticsEnabled(bool enabled); void UpdateAccessibilityFeatures(int32_t flags); diff --git a/runtime/runtime_controller.cc b/runtime/runtime_controller.cc index 7e0bd024c66cc..92fb962437969 100644 --- a/runtime/runtime_controller.cc +++ b/runtime/runtime_controller.cc @@ -124,8 +124,7 @@ std::unique_ptr RuntimeController::Clone() const { bool RuntimeController::FlushRuntimeStateToIsolate() { return SetViewportMetrics(window_data_.viewport_metrics) && - SetLocale(window_data_.language_code, window_data_.country_code, - window_data_.script_code, window_data_.variant_code) && + SetLocales(window_data_.locale_data) && SetSemanticsEnabled(window_data_.semantics_enabled) && SetAccessibilityFeatures(window_data_.accessibility_feature_flags_); } @@ -140,22 +139,15 @@ bool RuntimeController::SetViewportMetrics(const ViewportMetrics& metrics) { return false; } -bool RuntimeController::SetLocale(const std::string& language_code, - const std::string& country_code, - const std::string& script_code, - const std::string& variant_code) { - window_data_.language_code = language_code; - window_data_.country_code = country_code; - window_data_.script_code = script_code; - window_data_.variant_code = variant_code; +bool RuntimeController::SetLocales( + const std::vector& locale_data) { + window_data_.locale_data = locale_data; if (auto window = GetWindowIfAvailable()) { - window->UpdateLocale(window_data_.language_code, window_data_.country_code, - window_data_.script_code, window_data_.variant_code); + window->UpdateLocales(locale_data); return true; } - - return false; + return true; } bool RuntimeController::SetUserSettingsData(const std::string& data) { diff --git a/runtime/runtime_controller.h b/runtime/runtime_controller.h index 67c7f3e44cb83..532499cb51e1d 100644 --- a/runtime/runtime_controller.h +++ b/runtime/runtime_controller.h @@ -6,6 +6,7 @@ #define FLUTTER_RUNTIME_RUNTIME_CONTROLLER_H_ #include +#include #include "flutter/common/task_runners.h" #include "flutter/flow/layers/layer_tree.h" @@ -15,6 +16,8 @@ #include "flutter/lib/ui/window/pointer_data_packet.h" #include "flutter/lib/ui/window/window.h" #include "flutter/runtime/dart_vm.h" +#include "rapidjson/document.h" +#include "rapidjson/stringbuffer.h" namespace blink { class Scene; @@ -40,10 +43,7 @@ class RuntimeController final : public WindowClient { bool SetViewportMetrics(const ViewportMetrics& metrics); - bool SetLocale(const std::string& language_code, - const std::string& country_code, - const std::string& script_code, - const std::string& variant_code); + bool SetLocales(const std::vector& locale_data); bool SetUserSettingsData(const std::string& data); @@ -78,12 +78,29 @@ class RuntimeController final : public WindowClient { std::pair GetRootIsolateReturnCode(); private: + struct Locale { + Locale(std::string language_code_, + std::string country_code_, + std::string script_code_, + std::string variant_code_) + : language_code(language_code_), + country_code(country_code_), + script_code(script_code_), + variant_code(variant_code_) {} + + std::string language_code; + std::string country_code; + std::string script_code; + std::string variant_code; + }; + struct WindowData { ViewportMetrics viewport_metrics; std::string language_code; std::string country_code; std::string script_code; std::string variant_code; + std::vector locale_data; std::string user_settings_data = "{}"; bool semantics_enabled = false; bool assistive_technology_enabled = false; diff --git a/shell/common/engine.cc b/shell/common/engine.cc index 5e1f53a55912d..3ab484c46f37c 100644 --- a/shell/common/engine.cc +++ b/shell/common/engine.cc @@ -7,6 +7,7 @@ #include #include #include +#include #include "flutter/common/settings.h" #include "flutter/fml/eintr_wrapper.h" @@ -325,17 +326,22 @@ bool Engine::HandleLocalizationPlatformMessage( if (args == root.MemberEnd() || !args->value.IsArray()) return false; - const auto& language = args->value[0]; - const auto& country = args->value[1]; - const auto& script = args->value[2]; - const auto& variant = args->value[3]; - - if (!language.IsString() || !country.IsString()) + const size_t strings_per_locale = 4; + if (args->value.Size() % strings_per_locale != 0) return false; + std::vector locale_data; + for (size_t locale_index = 0; locale_index < args->value.Size(); + locale_index += strings_per_locale) { + if (!args->value[locale_index].IsString() || + !args->value[locale_index + 1].IsString()) + return false; + locale_data.push_back(args->value[locale_index].GetString()); + locale_data.push_back(args->value[locale_index + 1].GetString()); + locale_data.push_back(args->value[locale_index + 2].GetString()); + locale_data.push_back(args->value[locale_index + 3].GetString()); + } - return runtime_controller_->SetLocale(language.GetString(), - country.GetString(), script.GetString(), - variant.GetString()); + return runtime_controller_->SetLocales(locale_data); } void Engine::HandleSettingsPlatformMessage(blink::PlatformMessage* message) { diff --git a/shell/platform/android/io/flutter/view/FlutterView.java b/shell/platform/android/io/flutter/view/FlutterView.java index 8778877486875..4f1f151d74705 100644 --- a/shell/platform/android/io/flutter/view/FlutterView.java +++ b/shell/platform/android/io/flutter/view/FlutterView.java @@ -37,6 +37,7 @@ import org.json.JSONException; import org.json.JSONObject; +import java.lang.reflect.Method; import java.net.URI; import java.nio.ByteBuffer; import java.nio.ByteOrder; @@ -170,7 +171,8 @@ public void surfaceDestroyed(SurfaceHolder holder) { mImm = (InputMethodManager) getContext().getSystemService(Context.INPUT_METHOD_SERVICE); mTextInputPlugin = new TextInputPlugin(this); - setLocale(getResources().getConfiguration().locale); + + setLocales(getResources().getConfiguration()); setUserSettings(); } @@ -316,14 +318,43 @@ private void setUserSettings() { mFlutterSettingsChannel.send(message); } - private void setLocale(Locale locale) { + private void setLocales(Configuration config) { + if (Build.VERSION.SDK_INT >= 24) { + try { + // Passes the full list of locales for android API >= 24 with reflection. + Object localeList = config.getClass().getDeclaredMethod("getLocales").invoke(config); + Method localeListGet = localeList.getClass().getDeclaredMethod("get", int.class); + Method localeListSize = localeList.getClass().getDeclaredMethod("size"); + int localeCount = (int)localeListSize.invoke(localeList); + List data = new ArrayList(); + for (int index = 0; index < localeCount; ++index) { + Locale locale = (Locale)localeListGet.invoke(localeList, index); + data.add(locale.getLanguage()); + data.add(locale.getCountry()); + data.add(locale.getScript()); + data.add(locale.getVariant()); + } + mFlutterLocalizationChannel.invokeMethod("setLocale", data); + return; + } catch (Exception exception) { + // Any exception is a failure. Resort to fallback of sending only one locale. + } + } + // Fallback single locale passing for android API < 24. Should work always. + Locale locale = config.locale; + List data = new ArrayList(); + data.add(locale.getLanguage()); + data.add(locale.getCountry()); + data.add(locale.getScript()); + data.add(locale.getVariant()); mFlutterLocalizationChannel.invokeMethod("setLocale", Arrays.asList(locale.getLanguage(), locale.getCountry(), locale.getScript(), locale.getVariant())); + } @Override protected void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); - setLocale(newConfig.locale); + setLocales(newConfig); setUserSettings(); } diff --git a/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm b/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm index 2e81213980423..9327e8fbbb5e6 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm @@ -905,19 +905,26 @@ - (void)onMemoryWarning:(NSNotification*)notification { #pragma mark - Locale updates - (void)onLocaleUpdated:(NSNotification*)notification { - NSLocale* currentLocale = [NSLocale currentLocale]; - NSString* languageCode = [currentLocale objectForKey:NSLocaleLanguageCode]; - NSString* countryCode = [currentLocale objectForKey:NSLocaleCountryCode]; - NSString* scriptCode = [currentLocale objectForKey:NSLocaleScriptCode]; - NSString* variantCode = [currentLocale objectForKey:NSLocaleVariantCode]; - if (languageCode && countryCode) - // We pass empty strings for undefined scripts and variants to ensure the JSON encoder/decoder - // functions properly. - [_localizationChannel.get() invokeMethod:@"setLocale" - arguments:@[ - languageCode, countryCode, scriptCode ? scriptCode : @"", - variantCode ? variantCode : @"" - ]]; + NSArray* preferredLocales = [NSLocale preferredLanguages]; + NSMutableArray* data = [NSMutableArray new]; + for (NSString* localeID in preferredLocales) { + NSLocale* currentLocale = [[NSLocale alloc] initWithLocaleIdentifier:localeID]; + NSString* languageCode = [currentLocale objectForKey:NSLocaleLanguageCode]; + NSString* countryCode = [currentLocale objectForKey:NSLocaleCountryCode]; + NSString* scriptCode = [currentLocale objectForKey:NSLocaleScriptCode]; + NSString* variantCode = [currentLocale objectForKey:NSLocaleVariantCode]; + if (!languageCode || !countryCode) { + continue; + } + [data addObject:languageCode]; + [data addObject:countryCode]; + [data addObject:(scriptCode ? scriptCode : @"")]; + [data addObject:(variantCode ? variantCode : @"")]; + } + if (data.count == 0) { + return; + } + [_localizationChannel.get() invokeMethod:@"setLocale" arguments:data]; } #pragma mark - Set user settings diff --git a/testing/dart/window_hooks_integration_test.dart b/testing/dart/window_hooks_integration_test.dart index b56aaeee4d1e9..1e362f403ceb2 100644 --- a/testing/dart/window_hooks_integration_test.dart +++ b/testing/dart/window_hooks_integration_test.dart @@ -100,7 +100,7 @@ void main() { }; }); - _updateLocale('en', 'US', '', ''); + _updateLocales(['en', 'US', '', '']); expect(runZone, isNotNull); expect(runZone, same(innerZone)); expect(locale, equals(const Locale('en', 'US'))); From 04a1ffa42fc4ab404df35ed5b65c1acf807b4498 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Wed, 17 Oct 2018 15:59:34 -0400 Subject: [PATCH 0017/1537] Roll src/third_party/skia cb65ce7f77c9..3a0c66da5fc2 (10 commits) (#6571) https://skia.googlesource.com/skia.git/+log/cb65ce7f77c9..3a0c66da5fc2 Created with: gclient setdep -r src/third_party/skia@3a0c66da5fc2 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 10c4882587af9..4e28839803e2c 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'cb65ce7f77c905a05df309aa656b387ff0008cda', + 'skia_revision': '3a0c66da5fc26098a4f92198784013a7022c2b75', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 234eb98f7c892..34d1bb998503f 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: b057b889cea5ca9c9f140935cabc33b4 +Signature: 05d6cc24418c9f1966eefe7da840487f UNUSED LICENSES: From 8cc49cac3b4ab7671e5266ab9a8be14a45e4bc9a Mon Sep 17 00:00:00 2001 From: Chinmay Garde Date: Wed, 17 Oct 2018 13:37:18 -0700 Subject: [PATCH 0018/1537] Ensure that the isolate shutdown callback occurs in an isolate scope. (#6572) --- runtime/dart_isolate.cc | 1 + runtime/dart_isolate_unittests.cc | 35 +++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+) diff --git a/runtime/dart_isolate.cc b/runtime/dart_isolate.cc index db01e619cba32..ef62d141b3e77 100644 --- a/runtime/dart_isolate.cc +++ b/runtime/dart_isolate.cc @@ -477,6 +477,7 @@ bool DartIsolate::Shutdown() { // the isolate to shutdown as a parameter. FML_DCHECK(Dart_CurrentIsolate() == nullptr); Dart_EnterIsolate(vm_isolate); + shutdown_callbacks_.clear(); Dart_ShutdownIsolate(); FML_DCHECK(Dart_CurrentIsolate() == nullptr); } diff --git a/runtime/dart_isolate_unittests.cc b/runtime/dart_isolate_unittests.cc index cb7797abdcb74..f876d349a2648 100644 --- a/runtime/dart_isolate_unittests.cc +++ b/runtime/dart_isolate_unittests.cc @@ -46,4 +46,39 @@ TEST_F(DartIsolateTest, RootIsolateCreationAndShutdown) { ASSERT_TRUE(root_isolate->Shutdown()); } +TEST_F(DartIsolateTest, IsolateShutdownCallbackIsInIsolateScope) { + Settings settings = {}; + settings.task_observer_add = [](intptr_t, fml::closure) {}; + settings.task_observer_remove = [](intptr_t) {}; + auto vm = DartVM::ForProcess(settings); + ASSERT_TRUE(vm); + TaskRunners task_runners(CURRENT_TEST_NAME, // + GetCurrentTaskRunner(), // + GetCurrentTaskRunner(), // + GetCurrentTaskRunner(), // + GetCurrentTaskRunner() // + ); + auto weak_isolate = DartIsolate::CreateRootIsolate( + vm.get(), // vm + vm->GetIsolateSnapshot(), // isolate snapshot + vm->GetSharedSnapshot(), // shared snapshot + std::move(task_runners), // task runners + nullptr, // window + {}, // resource context + nullptr, // unref qeueue + "main.dart", // advisory uri + "main" // advisory entrypoint + ); + auto root_isolate = weak_isolate.lock(); + ASSERT_TRUE(root_isolate); + ASSERT_EQ(root_isolate->GetPhase(), DartIsolate::Phase::LibrariesSetup); + size_t destruction_callback_count = 0; + root_isolate->AddIsolateShutdownCallback([&destruction_callback_count]() { + ASSERT_NE(Dart_CurrentIsolate(), nullptr); + destruction_callback_count++; + }); + ASSERT_TRUE(root_isolate->Shutdown()); + ASSERT_EQ(destruction_callback_count, 1u); +} + } // namespace blink From 705738fd78ff9eed20f4229615acc124f552e348 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Wed, 17 Oct 2018 19:24:34 -0400 Subject: [PATCH 0019/1537] Roll src/third_party/skia 3a0c66da5fc2..928db927f7fc (5 commits) (#6573) https://skia.googlesource.com/skia.git/+log/3a0c66da5fc2..928db927f7fc Created with: gclient setdep -r src/third_party/skia@928db927f7fc The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 10 +++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 4e28839803e2c..6d7c1dc3e4c11 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '3a0c66da5fc26098a4f92198784013a7022c2b75', + 'skia_revision': '928db927f7fcbebfac0a588dddbd4d89fb3d444b', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 34d1bb998503f..569464e245810 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 05d6cc24418c9f1966eefe7da840487f +Signature: 213dc7cd39cc912c07a5c48a0e57f619 UNUSED LICENSES: @@ -2018,8 +2018,14 @@ FILE: ../../../third_party/skia/experimental/canvaskit/externs.js FILE: ../../../third_party/skia/experimental/canvaskit/gpu.js FILE: ../../../third_party/skia/experimental/canvaskit/helper.js FILE: ../../../third_party/skia/experimental/canvaskit/interface.js +FILE: ../../../third_party/skia/experimental/canvaskit/karma.bench.conf.js FILE: ../../../third_party/skia/experimental/canvaskit/karma.conf.js FILE: ../../../third_party/skia/experimental/canvaskit/package.json +FILE: ../../../third_party/skia/experimental/canvaskit/perf/animation.bench.js +FILE: ../../../third_party/skia/experimental/canvaskit/perf/assets/confetti.json +FILE: ../../../third_party/skia/experimental/canvaskit/perf/assets/drinks.json +FILE: ../../../third_party/skia/experimental/canvaskit/perf/assets/lego_loader.json +FILE: ../../../third_party/skia/experimental/canvaskit/perf/assets/onboarding.json FILE: ../../../third_party/skia/experimental/docs/animationCommon.js FILE: ../../../third_party/skia/experimental/docs/backend.js FILE: ../../../third_party/skia/experimental/docs/canvasBackend.js @@ -2211,6 +2217,8 @@ FILE: ../../../third_party/skia/infra/bots/recipes/perf.expected/Perf-Win10-Clan FILE: ../../../third_party/skia/infra/bots/recipes/perf.expected/Perf-Win10-Clang-NUC6i5SYK-GPU-IntelIris540-x86_64-Release-All-Vulkan.json FILE: ../../../third_party/skia/infra/bots/recipes/perf.expected/Perf-iOS-Clang-iPadPro-GPU-PowerVRGT7800-arm64-Release-All.json FILE: ../../../third_party/skia/infra/bots/recipes/perf.expected/trybot.json +FILE: ../../../third_party/skia/infra/bots/recipes/perf_canvaskit.expected/Perf-Debian9-EMCC-GCE-CPU-AVX2-wasm-Release-All-CanvasKit.json +FILE: ../../../third_party/skia/infra/bots/recipes/perf_canvaskit.expected/pathkit_trybot.json FILE: ../../../third_party/skia/infra/bots/recipes/perf_pathkit.expected/Perf-Debian9-EMCC-GCE-CPU-AVX2-asmjs-Release-All-PathKit.json FILE: ../../../third_party/skia/infra/bots/recipes/perf_pathkit.expected/Perf-Debian9-EMCC-GCE-CPU-AVX2-wasm-Release-All-PathKit.json FILE: ../../../third_party/skia/infra/bots/recipes/perf_pathkit.expected/pathkit_trybot.json From 979de076b3350c3c69fe45fb0cce61bdef51076a Mon Sep 17 00:00:00 2001 From: Chinmay Garde Date: Wed, 17 Oct 2018 17:20:44 -0700 Subject: [PATCH 0020/1537] Add a CountDownLatch to fml with tests. (#6574) --- ci/licenses_golden/licenses_flutter | 3 ++ fml/BUILD.gn | 3 ++ fml/synchronization/count_down_latch.cc | 29 ++++++++++++++ fml/synchronization/count_down_latch.h | 29 ++++++++++++++ .../count_down_latch_unittests.cc | 39 +++++++++++++++++++ 5 files changed, 103 insertions(+) create mode 100644 fml/synchronization/count_down_latch.cc create mode 100644 fml/synchronization/count_down_latch.h create mode 100644 fml/synchronization/count_down_latch_unittests.cc diff --git a/ci/licenses_golden/licenses_flutter b/ci/licenses_golden/licenses_flutter index 573f866548a21..905c8dcdf24de 100644 --- a/ci/licenses_golden/licenses_flutter +++ b/ci/licenses_golden/licenses_flutter @@ -495,6 +495,9 @@ FILE: ../../../flutter/fml/platform/win/errors_win.h FILE: ../../../flutter/fml/platform/win/file_win.cc FILE: ../../../flutter/fml/platform/win/native_library_win.cc FILE: ../../../flutter/fml/platform/win/wstring_conversion.h +FILE: ../../../flutter/fml/synchronization/count_down_latch.cc +FILE: ../../../flutter/fml/synchronization/count_down_latch.h +FILE: ../../../flutter/fml/synchronization/count_down_latch_unittests.cc FILE: ../../../flutter/fml/unique_fd.cc FILE: ../../../flutter/fml/unique_fd.h FILE: ../../../flutter/fml/unique_object.h diff --git a/fml/BUILD.gn b/fml/BUILD.gn index 25e065c8b1fe9..4edc9aadf5e45 100644 --- a/fml/BUILD.gn +++ b/fml/BUILD.gn @@ -46,6 +46,8 @@ source_set("fml") { "paths.h", "string_view.cc", "string_view.h", + "synchronization/count_down_latch.cc", + "synchronization/count_down_latch.h", "synchronization/thread_annotations.h", "synchronization/thread_checker.h", "synchronization/waitable_event.cc", @@ -176,6 +178,7 @@ executable("fml_unittests") { "message_unittests.cc", "paths_unittests.cc", "string_view_unittest.cc", + "synchronization/count_down_latch_unittests.cc", "synchronization/thread_annotations_unittest.cc", "synchronization/thread_checker_unittest.cc", "synchronization/waitable_event_unittest.cc", diff --git a/fml/synchronization/count_down_latch.cc b/fml/synchronization/count_down_latch.cc new file mode 100644 index 0000000000000..5eeb012b97e4a --- /dev/null +++ b/fml/synchronization/count_down_latch.cc @@ -0,0 +1,29 @@ +// Copyright 2018 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/fml/synchronization/count_down_latch.h" + +#include "flutter/fml/logging.h" + +namespace fml { + +CountDownLatch::CountDownLatch(size_t count) : count_(count) { + if (count_ == 0) { + waitable_event_.Signal(); + } +} + +CountDownLatch::~CountDownLatch() = default; + +void CountDownLatch::Wait() { + waitable_event_.Wait(); +} + +void CountDownLatch::CountDown() { + if (--count_ == 0) { + waitable_event_.Signal(); + } +} + +} // namespace fml diff --git a/fml/synchronization/count_down_latch.h b/fml/synchronization/count_down_latch.h new file mode 100644 index 0000000000000..87148f6df0367 --- /dev/null +++ b/fml/synchronization/count_down_latch.h @@ -0,0 +1,29 @@ +// Copyright 2018 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 + +#include "flutter/fml/macros.h" +#include "flutter/fml/synchronization/waitable_event.h" + +namespace fml { + +class CountDownLatch { + public: + CountDownLatch(size_t count); + + ~CountDownLatch(); + + void Wait(); + + void CountDown(); + + private: + std::atomic_size_t count_; + ManualResetWaitableEvent waitable_event_; + + FML_DISALLOW_COPY_AND_ASSIGN(CountDownLatch); +}; + +} // namespace fml diff --git a/fml/synchronization/count_down_latch_unittests.cc b/fml/synchronization/count_down_latch_unittests.cc new file mode 100644 index 0000000000000..2c85b9474612b --- /dev/null +++ b/fml/synchronization/count_down_latch_unittests.cc @@ -0,0 +1,39 @@ +// Copyright 2018 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 +#include + +#include "flutter/fml/synchronization/count_down_latch.h" +#include "flutter/fml/thread.h" +#include "flutter/testing/testing.h" + +namespace fml { + +TEST(CountDownLatchTest, CanWaitOnZero) { + CountDownLatch latch(0); + latch.Wait(); +} + +TEST(CountDownLatchTest, CanWait) { + fml::Thread thread("test_thread"); + const size_t count = 100; + size_t current_count = 0; + CountDownLatch latch(count); + auto decrement_latch_on_thread = [runner = thread.GetTaskRunner(), &latch, + ¤t_count]() { + runner->PostTask([&latch, ¤t_count]() { + std::this_thread::sleep_for(std::chrono::microseconds(100)); + current_count++; + latch.CountDown(); + }); + }; + for (size_t i = 0; i < count; ++i) { + decrement_latch_on_thread(); + } + latch.Wait(); + ASSERT_EQ(current_count, count); +} + +} // namespace fml From 607c05c93d18d7ce993e2d4aa078bab0392eee8b Mon Sep 17 00:00:00 2001 From: Chinmay Garde Date: Wed, 17 Oct 2018 17:44:11 -0700 Subject: [PATCH 0021/1537] Run all supported host unit tests on Cirrus. (#6575) --- testing/run_tests.sh | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/testing/run_tests.sh b/testing/run_tests.sh index 6c0c79f523cf8..82090afbfea63 100755 --- a/testing/run_tests.sh +++ b/testing/run_tests.sh @@ -2,8 +2,13 @@ set -o pipefail -e; -out/host_debug_unopt/fml_unittests +out/host_debug_unopt/embedder_unittests +out/host_debug_unopt/flow_unittests +out/host_debug_unopt/fml_unittests --gtest_filter="-*TimeSensitiveTest*" +out/host_debug_unopt/runtime_unittests +out/host_debug_unopt/shell_unittests out/host_debug_unopt/synchronization_unittests +out/host_debug_unopt/txt_unittests --font-directory=flutter/third_party/txt/third_party/fonts pushd flutter/testing/dart pub get From 31557d0c7427537117f3ef2fc72aab7e6d85f06e Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Wed, 17 Oct 2018 22:48:34 -0400 Subject: [PATCH 0022/1537] Roll src/third_party/skia 928db927f7fc..5deda2e93055 (6 commits) (#6584) https://skia.googlesource.com/skia.git/+log/928db927f7fc..5deda2e93055 Created with: gclient setdep -r src/third_party/skia@5deda2e93055 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/DEPS b/DEPS index 6d7c1dc3e4c11..5c74c8f24c413 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '928db927f7fcbebfac0a588dddbd4d89fb3d444b', + 'skia_revision': '5deda2e930558c886f1e3bc6ae7ae79794f78525', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 569464e245810..f44ada3878cc0 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 213dc7cd39cc912c07a5c48a0e57f619 +Signature: 369d80f412063db92fbfb04a5a0dd7c0 UNUSED LICENSES: @@ -709,7 +709,7 @@ TYPE: LicenseType.bsd FILE: ../../../third_party/skia/bench/AndroidCodecBench.cpp FILE: ../../../third_party/skia/bench/AndroidCodecBench.h FILE: ../../../third_party/skia/bench/DrawLatticeBench.cpp -FILE: ../../../third_party/skia/bench/EncoderBench.cpp +FILE: ../../../third_party/skia/bench/EncodeBench.cpp FILE: ../../../third_party/skia/bench/GrMipMapBench.cpp FILE: ../../../third_party/skia/bench/HardStopGradientBench_ScaleNumColors.cpp FILE: ../../../third_party/skia/bench/HardStopGradientBench_ScaleNumHardStops.cpp From cc2ec365b73807434390ff2ae736fe53d486d67e Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Thu, 18 Oct 2018 02:12:34 -0400 Subject: [PATCH 0023/1537] Roll src/third_party/skia 5deda2e93055..48ee86f818fb (3 commits) (#6585) https://skia.googlesource.com/skia.git/+log/5deda2e93055..48ee86f818fb Created with: gclient setdep -r src/third_party/skia@48ee86f818fb The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 5c74c8f24c413..9bec388d3860f 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '5deda2e930558c886f1e3bc6ae7ae79794f78525', + 'skia_revision': '48ee86f818fb8b6779e1e2b0dd87a5694e35a4bb', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index f44ada3878cc0..0baf4d48ae1d5 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 369d80f412063db92fbfb04a5a0dd7c0 +Signature: f7ac7a6f67d701de165fb38164cbc77e UNUSED LICENSES: From 9a981eaced820b6f8c5465c172e94070bcfd4446 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Thu, 18 Oct 2018 05:38:06 -0400 Subject: [PATCH 0024/1537] Roll src/third_party/skia 48ee86f818fb..dd254486280d (2 commits) (#6587) https://skia.googlesource.com/skia.git/+log/48ee86f818fb..dd254486280d Created with: gclient setdep -r src/third_party/skia@dd254486280d The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 9bec388d3860f..2c696d7b1302f 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '48ee86f818fb8b6779e1e2b0dd87a5694e35a4bb', + 'skia_revision': 'dd254486280df922f6ba845ddee6db440e5c0d6f', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 0baf4d48ae1d5..c7dd8f933898d 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: f7ac7a6f67d701de165fb38164cbc77e +Signature: 4d112271df9a99e9c3539fb947213ac0 UNUSED LICENSES: From 104f0572802c9304b9e0f655b3d44cac5a4f4ca0 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Thu, 18 Oct 2018 09:36:34 -0400 Subject: [PATCH 0025/1537] Roll src/third_party/skia dd254486280d..a64e4eeaa357 (1 commits) (#6588) https://skia.googlesource.com/skia.git/+log/dd254486280d..a64e4eeaa357 Created with: gclient setdep -r src/third_party/skia@a64e4eeaa357 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 2c696d7b1302f..8b1b003064663 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'dd254486280df922f6ba845ddee6db440e5c0d6f', + 'skia_revision': 'a64e4eeaa357494f710e5650b8f4b6660277dc26', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index c7dd8f933898d..4971acdd69000 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 4d112271df9a99e9c3539fb947213ac0 +Signature: bd5bb401744153d98a66c76ecf44a763 UNUSED LICENSES: From 0887dd58f288cd3233623576f6ee95f00324790d Mon Sep 17 00:00:00 2001 From: Michael Goderbauer Date: Thu, 18 Oct 2018 16:51:02 +0200 Subject: [PATCH 0026/1537] Roll buildroot to 4ee38927dc45c46f2a1c74b1e3700b3cf953e747 (#6586) --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index 8b1b003064663..19f6ef78f2798 100644 --- a/DEPS +++ b/DEPS @@ -117,7 +117,7 @@ allowed_hosts = [ ] deps = { - 'src': 'https://github.com/flutter/buildroot.git' + '@' + '378efdc3507cef3204a164132cdeab04ea8e907e', + 'src': 'https://github.com/flutter/buildroot.git' + '@' + '4ee38927dc45c46f2a1c74b1e3700b3cf953e747', # Fuchsia compatibility # From 2511dec76a712e589b87d7838e9d190619f880f5 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Thu, 18 Oct 2018 13:01:34 -0400 Subject: [PATCH 0027/1537] Roll src/third_party/skia a64e4eeaa357..b4ae49937d83 (14 commits) (#6590) https://skia.googlesource.com/skia.git/+log/a64e4eeaa357..b4ae49937d83 Created with: gclient setdep -r src/third_party/skia@b4ae49937d83 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/DEPS b/DEPS index 19f6ef78f2798..aadc4b4339570 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'a64e4eeaa357494f710e5650b8f4b6660277dc26', + 'skia_revision': 'b4ae49937d837fd10841de92895e378eefb60817', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 4971acdd69000..5c00cdc0c119a 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: bd5bb401744153d98a66c76ecf44a763 +Signature: b10468433dabee219765b0ad41e005fd UNUSED LICENSES: @@ -3662,7 +3662,6 @@ FILE: ../../../third_party/skia/src/core/SkOpts.h FILE: ../../../third_party/skia/src/core/SkPathPriv.h FILE: ../../../third_party/skia/src/core/SkPictureCommon.h FILE: ../../../third_party/skia/src/core/SkPictureImageGenerator.cpp -FILE: ../../../third_party/skia/src/core/SkPictureImageGenerator.h FILE: ../../../third_party/skia/src/core/SkPixmap.cpp FILE: ../../../third_party/skia/src/core/SkPixmapPriv.h FILE: ../../../third_party/skia/src/core/SkPoint3.cpp @@ -4633,6 +4632,7 @@ FILE: ../../../third_party/skia/fuzz/FuzzEncoders.cpp FILE: ../../../third_party/skia/fuzz/FuzzPolyUtils.cpp FILE: ../../../third_party/skia/include/private/GrSkSLFPFactoryCache.h FILE: ../../../third_party/skia/modules/pathkit/pathkit_wasm_bindings.cpp +FILE: ../../../third_party/skia/src/core/SkPicture_none.cpp FILE: ../../../third_party/skia/src/gpu/ccpr/GrCoverageCountingPathRenderer_none.cpp ---------------------------------------------------------------------------------------------------- Copyright 2018 Google LLC From c17624479003ffb801dcd7b471720b57dc97492b Mon Sep 17 00:00:00 2001 From: Jason Simmons Date: Thu, 18 Oct 2018 12:24:10 -0700 Subject: [PATCH 0028/1537] Provide an estimate of EngineLayer memory usage to the Dart GC (#6589) See https://github.com/flutter/flutter/issues/23171 --- lib/ui/painting/engine_layer.cc | 7 +++++++ lib/ui/painting/engine_layer.h | 3 +++ 2 files changed, 10 insertions(+) diff --git a/lib/ui/painting/engine_layer.cc b/lib/ui/painting/engine_layer.cc index 5ff6e96f61574..afa3876ffb653 100644 --- a/lib/ui/painting/engine_layer.cc +++ b/lib/ui/painting/engine_layer.cc @@ -17,6 +17,13 @@ namespace blink { EngineLayer::~EngineLayer() = default; +size_t EngineLayer::GetAllocationSize() { + // Provide an approximation of the total memory impact of this object to the + // Dart GC. The ContainerLayer may hold references to a tree of other layers, + // which in turn may contain Skia objects. + return 3000; +}; + IMPLEMENT_WRAPPERTYPEINFO(ui, EngineLayer); #define FOR_EACH_BINDING(V) // nothing to bind diff --git a/lib/ui/painting/engine_layer.h b/lib/ui/painting/engine_layer.h index e79b5f8e63967..c578e88c9e88f 100644 --- a/lib/ui/painting/engine_layer.h +++ b/lib/ui/painting/engine_layer.h @@ -22,6 +22,9 @@ class EngineLayer : public RefCountedDartWrappable { public: ~EngineLayer() override; + + size_t GetAllocationSize() override; + static fml::RefPtr MakeRetained( std::shared_ptr layer) { return fml::MakeRefCounted(layer); From 09dcc3d5ee8a0cf264fc81edc30f7df7d2866973 Mon Sep 17 00:00:00 2001 From: Gary Qian Date: Thu, 18 Oct 2018 14:03:48 -0700 Subject: [PATCH 0029/1537] Gate locale.getScript() behind version check for android API < 21 (#6592) --- shell/platform/android/io/flutter/view/FlutterView.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/shell/platform/android/io/flutter/view/FlutterView.java b/shell/platform/android/io/flutter/view/FlutterView.java index 4f1f151d74705..f7a8dacac61c9 100644 --- a/shell/platform/android/io/flutter/view/FlutterView.java +++ b/shell/platform/android/io/flutter/view/FlutterView.java @@ -345,7 +345,11 @@ private void setLocales(Configuration config) { List data = new ArrayList(); data.add(locale.getLanguage()); data.add(locale.getCountry()); - data.add(locale.getScript()); + if (Build.VERSION.SDK_INT >= 21) { + data.add(locale.getScript()); + } else { + data.add(""); + } data.add(locale.getVariant()); mFlutterLocalizationChannel.invokeMethod("setLocale", Arrays.asList(locale.getLanguage(), locale.getCountry(), locale.getScript(), locale.getVariant())); From 3860a43379fa3a7474427a671c794fa29e555c10 Mon Sep 17 00:00:00 2001 From: Gary Qian Date: Thu, 18 Oct 2018 14:15:20 -0700 Subject: [PATCH 0030/1537] Re-revert wrong line_heights implementation (#6598) --- third_party/txt/src/txt/paragraph.cc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/third_party/txt/src/txt/paragraph.cc b/third_party/txt/src/txt/paragraph.cc index 2e324aa6e2b0d..8f6dfd596eab7 100644 --- a/third_party/txt/src/txt/paragraph.cc +++ b/third_party/txt/src/txt/paragraph.cc @@ -732,9 +732,9 @@ void Paragraph::Layout(double width, bool force) { auto update_line_metrics = [&](const SkPaint::FontMetrics& metrics, const TextStyle& style) { double line_spacing = - (line_number == 0) ? -metrics.fAscent * style.height - : (-metrics.fAscent + metrics.fLeading) * - style.height * paragraph_style_.line_height; + (line_number == 0) + ? -metrics.fAscent * style.height + : (-metrics.fAscent + metrics.fLeading) * style.height; if (line_spacing > max_line_spacing) { max_line_spacing = line_spacing; if (line_number == 0) { From abd04b459c410a9f33fff3e7eb900ac67fc4c942 Mon Sep 17 00:00:00 2001 From: Michael Klimushyn Date: Thu, 18 Oct 2018 14:47:24 -0700 Subject: [PATCH 0031/1537] Programmatically set the root isolate's debug name (#6596) An integration test will be added to the framework's repo as a followup. Addresses flutter/flutter#22009 --- lib/ui/ui_dart_state.h | 2 ++ lib/ui/window.dart | 10 ++++++++++ lib/ui/window/window.cc | 12 ++++++++++++ lib/ui/window/window.h | 1 + runtime/runtime_controller.cc | 8 ++++++++ runtime/runtime_controller.h | 3 +++ 6 files changed, 36 insertions(+) diff --git a/lib/ui/ui_dart_state.h b/lib/ui/ui_dart_state.h index 6d4094a47f2be..dea3e9b650447 100644 --- a/lib/ui/ui_dart_state.h +++ b/lib/ui/ui_dart_state.h @@ -31,6 +31,8 @@ class UIDartState : public tonic::DartState { Dart_Port main_port() const { return main_port_; } + void set_debug_name(const std::string name) { debug_name_ = name; } + const std::string& debug_name() const { return debug_name_; } const std::string& logger_prefix() const { return logger_prefix_; } diff --git a/lib/ui/window.dart b/lib/ui/window.dart index fa0431b3113d8..2c4f283214643 100644 --- a/lib/ui/window.dart +++ b/lib/ui/window.dart @@ -714,6 +714,16 @@ class Window { /// semantics update cannot be used further. void updateSemantics(SemanticsUpdate update) native 'Window_updateSemantics'; + /// Set the debug name associated with this window's root isolate. + /// + /// Normally debug names are automatically generated from the Dart port, entry + /// point, and source file. For example: `main.dart$main-1234`. + /// + /// This can be combined with flutter tools `--isolate-filter` flag to debug + /// specific root isolates. For example: `flutter attach --isolate-filter=[name]`. + /// Note that this does not rename any child isolates of the root. + void setIsolateDebugName(String name) native 'Window_setIsolateDebugName'; + /// Sends a message to a platform-specific plugin. /// /// The `name` parameter determines which plugin receives the message. The diff --git a/lib/ui/window/window.cc b/lib/ui/window/window.cc index ce4626afa74e7..356ab771e3863 100644 --- a/lib/ui/window/window.cc +++ b/lib/ui/window/window.cc @@ -54,6 +54,17 @@ void UpdateSemantics(Dart_NativeArguments args) { UIDartState::Current()->window()->client()->UpdateSemantics(update); } +void SetIsolateDebugName(Dart_NativeArguments args) { + Dart_Handle exception = nullptr; + const std::string name = + tonic::DartConverter::FromArguments(args, 1, exception); + if (exception) { + Dart_ThrowException(exception); + return; + } + UIDartState::Current()->window()->client()->SetIsolateDebugName(name); +} + Dart_Handle SendPlatformMessage(Dart_Handle window, const std::string& name, Dart_Handle callback, @@ -306,6 +317,7 @@ void Window::RegisterNatives(tonic::DartLibraryNatives* natives) { {"Window_respondToPlatformMessage", _RespondToPlatformMessage, 3, true}, {"Window_render", Render, 2, true}, {"Window_updateSemantics", UpdateSemantics, 2, true}, + {"Window_setIsolateDebugName", SetIsolateDebugName, 2, true}, }); } diff --git a/lib/ui/window/window.h b/lib/ui/window/window.h index bc1e3ba267f73..05ef8ef97a34f 100644 --- a/lib/ui/window/window.h +++ b/lib/ui/window/window.h @@ -43,6 +43,7 @@ class WindowClient { virtual void Render(Scene* scene) = 0; virtual void UpdateSemantics(SemanticsUpdate* update) = 0; virtual void HandlePlatformMessage(fml::RefPtr message) = 0; + virtual void SetIsolateDebugName(const std::string isolateName) = 0; virtual FontCollection& GetFontCollection() = 0; protected: diff --git a/runtime/runtime_controller.cc b/runtime/runtime_controller.cc index 92fb962437969..956a6a6a862c7 100644 --- a/runtime/runtime_controller.cc +++ b/runtime/runtime_controller.cc @@ -264,6 +264,14 @@ void RuntimeController::HandlePlatformMessage( client_.HandlePlatformMessage(std::move(message)); } +void RuntimeController::SetIsolateDebugName(const std::string name) { + std::shared_ptr root_isolate = root_isolate_.lock(); + if (!root_isolate) { + return; + } + root_isolate->set_debug_name(name); +} + FontCollection& RuntimeController::GetFontCollection() { return client_.GetFontCollection(); } diff --git a/runtime/runtime_controller.h b/runtime/runtime_controller.h index 532499cb51e1d..ac1bfca1f9333 100644 --- a/runtime/runtime_controller.h +++ b/runtime/runtime_controller.h @@ -150,6 +150,9 @@ class RuntimeController final : public WindowClient { // |blink::WindowClient| void HandlePlatformMessage(fml::RefPtr message) override; + // |blink::WindowClient| + void SetIsolateDebugName(const std::string name) override; + // |blink::WindowClient| FontCollection& GetFontCollection() override; From 2900950dd744cba597b1895cf13a0a440439ef3a Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Thu, 18 Oct 2018 17:51:34 -0400 Subject: [PATCH 0032/1537] Roll src/third_party/skia b4ae49937d83..798a713685a9 (20 commits) (#6602) https://skia.googlesource.com/skia.git/+log/b4ae49937d83..798a713685a9 Created with: gclient setdep -r src/third_party/skia@798a713685a9 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index aadc4b4339570..a1b670fd4cf26 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'b4ae49937d837fd10841de92895e378eefb60817', + 'skia_revision': '798a713685a972fa8f4a258e88e15f88454bc820', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 5c00cdc0c119a..93098754593cd 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: b10468433dabee219765b0ad41e005fd +Signature: d49fbc28e52acedecfc7b2360e55e24d UNUSED LICENSES: @@ -826,6 +826,7 @@ FILE: ../../../third_party/skia/include/core/SkMilestone.h FILE: ../../../third_party/skia/include/core/SkOverdrawCanvas.h FILE: ../../../third_party/skia/include/core/SkRasterHandleAllocator.h FILE: ../../../third_party/skia/include/core/SkSwizzle.h +FILE: ../../../third_party/skia/include/core/SkYUVASizeInfo.h FILE: ../../../third_party/skia/include/core/SkYUVSizeInfo.h FILE: ../../../third_party/skia/include/effects/SkArithmeticImageFilter.h FILE: ../../../third_party/skia/include/effects/SkOverdrawColorFilter.h @@ -1457,6 +1458,7 @@ FILE: ../../../third_party/skia/src/core/SkSurfaceCharacterization.cpp FILE: ../../../third_party/skia/src/core/SkTextBlobPriv.h FILE: ../../../third_party/skia/src/core/SkTypeface_remote.cpp FILE: ../../../third_party/skia/src/core/SkTypeface_remote.h +FILE: ../../../third_party/skia/src/core/SkYUVSizeInfo.cpp FILE: ../../../third_party/skia/src/effects/SkOpPE.h FILE: ../../../third_party/skia/src/effects/SkOpPathEffect.cpp FILE: ../../../third_party/skia/src/effects/SkShaderMaskFilter.cpp From 2707b7433874a8b03e4a1f7341d45b5cdcc8dfc6 Mon Sep 17 00:00:00 2001 From: Jason Simmons Date: Thu, 18 Oct 2018 14:53:46 -0700 Subject: [PATCH 0033/1537] Roll Tonic (#6599) Fixes https://github.com/flutter/flutter/issues/23246 --- DEPS | 2 +- ci/licenses_golden/licenses_third_party | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index a1b670fd4cf26..0c96314076dd0 100644 --- a/DEPS +++ b/DEPS @@ -126,7 +126,7 @@ deps = { # and not have to specific specific hashes. 'src/third_party/tonic': - Var('fuchsia_git') + '/tonic' + '@' + '077be256142ede39a271385907faadf4fcc62a4d', + Var('fuchsia_git') + '/tonic' + '@' + '5c9c2b63091ffd6000d44a3b5ff86e4f349e6978', 'src/third_party/benchmark': Var('fuchsia_git') + '/third_party/benchmark' + '@' + '21f1eb3fe269ea43eba862bf6b699cde46587ade', diff --git a/ci/licenses_golden/licenses_third_party b/ci/licenses_golden/licenses_third_party index 7400d728db39f..8854f4642f33d 100644 --- a/ci/licenses_golden/licenses_third_party +++ b/ci/licenses_golden/licenses_third_party @@ -1,4 +1,4 @@ -Signature: 7c3937f9c7241377fd191ec55d536a6a +Signature: 288479a70ccd3cb5cff17176ada4dfa1 UNUSED LICENSES: From c0b1b37d6efe7c1172ee5b8c1a926dbb42293b4a Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Thu, 18 Oct 2018 21:16:34 -0400 Subject: [PATCH 0034/1537] Roll src/third_party/skia 798a713685a9..9a986cfd5f58 (2 commits) (#6604) https://skia.googlesource.com/skia.git/+log/798a713685a9..9a986cfd5f58 Created with: gclient setdep -r src/third_party/skia@9a986cfd5f58 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 0c96314076dd0..ac3290a16a84b 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '798a713685a972fa8f4a258e88e15f88454bc820', + 'skia_revision': '9a986cfd5f58cd72c8d77f336173f3bf62c6fffd', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 93098754593cd..3980821c3db74 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: d49fbc28e52acedecfc7b2360e55e24d +Signature: 4589bb64f2ab797c963b763a3f3ec8b9 UNUSED LICENSES: From d0fae0428b4d57f3bdba8e4c2a1c978f302c763b Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Fri, 19 Oct 2018 00:40:34 -0400 Subject: [PATCH 0035/1537] Roll src/third_party/skia 9a986cfd5f58..607d2610e5e3 (4 commits) (#6606) https://skia.googlesource.com/skia.git/+log/9a986cfd5f58..607d2610e5e3 Created with: gclient setdep -r src/third_party/skia@607d2610e5e3 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index ac3290a16a84b..a39dc5892e4d5 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '9a986cfd5f58cd72c8d77f336173f3bf62c6fffd', + 'skia_revision': '607d2610e5e3f1d5c64fe757913da7fe25038159', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 3980821c3db74..985df2852541f 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 4589bb64f2ab797c963b763a3f3ec8b9 +Signature: b5335474fac199d97b9c62b710c333da UNUSED LICENSES: From 958086d5aa36b48d7f74022b68cb54cb5fa2adb5 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Fri, 19 Oct 2018 04:04:34 -0400 Subject: [PATCH 0036/1537] Roll src/third_party/skia 607d2610e5e3..e2865b28005f (2 commits) (#6608) https://skia.googlesource.com/skia.git/+log/607d2610e5e3..e2865b28005f Created with: gclient setdep -r src/third_party/skia@e2865b28005f The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index a39dc5892e4d5..2e03013bb63f1 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '607d2610e5e3f1d5c64fe757913da7fe25038159', + 'skia_revision': 'e2865b28005f49889a8f93c6797d271c5d60b3a1', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 985df2852541f..11d02c9ddfc4a 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: b5335474fac199d97b9c62b710c333da +Signature: 44eda3e5c5e7f4500831f0d480bbcd5d UNUSED LICENSES: From 8b069adf1a3cefe86831d7bc4d8201ad641648f7 Mon Sep 17 00:00:00 2001 From: Michael Goderbauer Date: Fri, 19 Oct 2018 12:54:21 +0200 Subject: [PATCH 0037/1537] Revert "Roll buildroot to 4ee38927dc45c46f2a1c74b1e3700b3cf953e747 (#6586)" (#6610) This reverts commit 0887dd58f288cd3233623576f6ee95f00324790d. Reason: The compressed binaries are actually larger with these LTO settings. --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index 2e03013bb63f1..2205c247698fb 100644 --- a/DEPS +++ b/DEPS @@ -117,7 +117,7 @@ allowed_hosts = [ ] deps = { - 'src': 'https://github.com/flutter/buildroot.git' + '@' + '4ee38927dc45c46f2a1c74b1e3700b3cf953e747', + 'src': 'https://github.com/flutter/buildroot.git' + '@' + '378efdc3507cef3204a164132cdeab04ea8e907e', # Fuchsia compatibility # From 2fab7d7293e748d542a2e2849d7c0249fd80629f Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Fri, 19 Oct 2018 08:01:34 -0400 Subject: [PATCH 0038/1537] Roll src/third_party/skia e2865b28005f..1bccae517ace (1 commits) (#6611) https://skia.googlesource.com/skia.git/+log/e2865b28005f..1bccae517ace Created with: gclient setdep -r src/third_party/skia@1bccae517ace The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 2205c247698fb..ffc87b857fbca 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'e2865b28005f49889a8f93c6797d271c5d60b3a1', + 'skia_revision': '1bccae517acec3cc0295079bf27ab7ed12fcf617', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 11d02c9ddfc4a..9e208204e086a 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 44eda3e5c5e7f4500831f0d480bbcd5d +Signature: 7906b1dae2fc913f8afc7aa2243c5115 UNUSED LICENSES: From a9974a3f4a82e80d72984cfcc62746634ea031d0 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Fri, 19 Oct 2018 11:27:34 -0400 Subject: [PATCH 0039/1537] Roll src/third_party/skia 1bccae517ace..eb772c0869d5 (6 commits) (#6612) https://skia.googlesource.com/skia.git/+log/1bccae517ace..eb772c0869d5 Created with: gclient setdep -r src/third_party/skia@eb772c0869d5 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index ffc87b857fbca..a83522373437d 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '1bccae517acec3cc0295079bf27ab7ed12fcf617', + 'skia_revision': 'eb772c0869d5fb2fad64a31ff66c056dbe81fa55', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 9e208204e086a..5df051f3df8a3 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 7906b1dae2fc913f8afc7aa2243c5115 +Signature: ced0db33ee28dff52a0cf06242bc27e9 UNUSED LICENSES: From e79d77f6e6cdcfedf6a01b2a44b00de0260b7ede Mon Sep 17 00:00:00 2001 From: liyuqian Date: Fri, 19 Oct 2018 11:46:12 -0700 Subject: [PATCH 0040/1537] Add offset to engine OpacityLayer (#6594) See https://github.com/flutter/flutter/pull/22566#discussion_r226082171 for why we add this. --- flow/layers/opacity_layer.cc | 7 +++++-- flow/layers/opacity_layer.h | 2 ++ lib/ui/compositing.dart | 5 ++++- lib/ui/compositing/scene_builder.cc | 3 ++- lib/ui/compositing/scene_builder.h | 2 +- 5 files changed, 14 insertions(+), 5 deletions(-) diff --git a/flow/layers/opacity_layer.cc b/flow/layers/opacity_layer.cc index 202b53bdb9983..ebbced6f605a1 100644 --- a/flow/layers/opacity_layer.cc +++ b/flow/layers/opacity_layer.cc @@ -11,10 +11,12 @@ OpacityLayer::OpacityLayer() = default; OpacityLayer::~OpacityLayer() = default; void OpacityLayer::Preroll(PrerollContext* context, const SkMatrix& matrix) { - ContainerLayer::Preroll(context, matrix); + SkMatrix child_matrix = matrix; + child_matrix.postTranslate(offset_.fX, offset_.fY); + ContainerLayer::Preroll(context, child_matrix); if (context->raster_cache && layers().size() == 1) { Layer* child = layers()[0].get(); - SkMatrix ctm = matrix; + SkMatrix ctm = child_matrix; #ifndef SUPPORT_FRACTIONAL_TRANSLATION ctm = RasterCache::GetIntegralTransCTM(ctm); #endif @@ -30,6 +32,7 @@ void OpacityLayer::Paint(PaintContext& context) const { paint.setAlpha(alpha_); SkAutoCanvasRestore save(&context.canvas, true); + context.canvas.translate(offset_.fX, offset_.fY); #ifndef SUPPORT_FRACTIONAL_TRANSLATION context.canvas.setMatrix( diff --git a/flow/layers/opacity_layer.h b/flow/layers/opacity_layer.h index 4733d13645233..75e939e03e97e 100644 --- a/flow/layers/opacity_layer.h +++ b/flow/layers/opacity_layer.h @@ -15,6 +15,7 @@ class OpacityLayer : public ContainerLayer { ~OpacityLayer() override; void set_alpha(int alpha) { alpha_ = alpha; } + void set_offset(const SkPoint& offset) { offset_ = offset; } void Preroll(PrerollContext* context, const SkMatrix& matrix) override; @@ -25,6 +26,7 @@ class OpacityLayer : public ContainerLayer { private: int alpha_; + SkPoint offset_; FML_DISALLOW_COPY_AND_ASSIGN(OpacityLayer); }; diff --git a/lib/ui/compositing.dart b/lib/ui/compositing.dart index 8c3d9261d69e5..935a1665248da 100644 --- a/lib/ui/compositing.dart +++ b/lib/ui/compositing.dart @@ -122,7 +122,10 @@ class SceneBuilder extends NativeFieldWrapperClass2 { /// opacity). /// /// See [pop] for details about the operation stack. - void pushOpacity(int alpha) native 'SceneBuilder_pushOpacity'; + void pushOpacity(int alpha, {Offset offset = Offset.zero}) { + _pushOpacity(alpha, offset.dx, offset.dy); + } + void _pushOpacity(int alpha, double dx, double dy) native 'SceneBuilder_pushOpacity'; /// Pushes a color filter operation onto the operation stack. /// diff --git a/lib/ui/compositing/scene_builder.cc b/lib/ui/compositing/scene_builder.cc index 76137c464969d..18810d4aa02fd 100644 --- a/lib/ui/compositing/scene_builder.cc +++ b/lib/ui/compositing/scene_builder.cc @@ -118,9 +118,10 @@ void SceneBuilder::pushClipPath(const CanvasPath* path, int clipBehavior) { PushLayer(std::move(layer)); } -void SceneBuilder::pushOpacity(int alpha) { +void SceneBuilder::pushOpacity(int alpha, double dx, double dy) { auto layer = std::make_unique(); layer->set_alpha(alpha); + layer->set_offset(SkPoint::Make(dx, dy)); PushLayer(std::move(layer)); } diff --git a/lib/ui/compositing/scene_builder.h b/lib/ui/compositing/scene_builder.h index 8674d004ab5d8..7fd1a0d17f4af 100644 --- a/lib/ui/compositing/scene_builder.h +++ b/lib/ui/compositing/scene_builder.h @@ -42,7 +42,7 @@ class SceneBuilder : public RefCountedDartWrappable { int clipBehavior); void pushClipRRect(const RRect& rrect, int clipBehavior); void pushClipPath(const CanvasPath* path, int clipBehavior); - void pushOpacity(int alpha); + void pushOpacity(int alpha, double dx = 0, double dy = 0); void pushColorFilter(int color, int blendMode); void pushBackdropFilter(ImageFilter* filter); void pushShaderMask(Shader* shader, From 79d30126009639908355c1f78570a15a6b224e2c Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Fri, 19 Oct 2018 14:53:05 -0400 Subject: [PATCH 0041/1537] Roll src/third_party/skia eb772c0869d5..69083b2b626b (16 commits) (#6615) https://skia.googlesource.com/skia.git/+log/eb772c0869d5..69083b2b626b Created with: gclient setdep -r src/third_party/skia@69083b2b626b The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/DEPS b/DEPS index a83522373437d..a0e0b7f0387a1 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'eb772c0869d5fb2fad64a31ff66c056dbe81fa55', + 'skia_revision': '69083b2b626b173db75f13a2b51ee35b30101807', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 5df051f3df8a3..93839ffcfdc61 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: ced0db33ee28dff52a0cf06242bc27e9 +Signature: 352f06c73d2d2707818a37eea3cfcf54 UNUSED LICENSES: @@ -1341,6 +1341,7 @@ FILE: ../../../third_party/skia/include/core/SkYUVAIndex.h FILE: ../../../third_party/skia/include/effects/SkOpPathEffect.h FILE: ../../../third_party/skia/include/effects/SkShaderMaskFilter.h FILE: ../../../third_party/skia/include/effects/SkTrimPathEffect.h +FILE: ../../../third_party/skia/include/gpu/GrBackendDrawableInfo.h FILE: ../../../third_party/skia/include/gpu/GrDriverBugWorkarounds.h FILE: ../../../third_party/skia/include/gpu/vk/GrVkMemoryAllocator.h FILE: ../../../third_party/skia/include/private/GrCCClipPath.h @@ -5660,9 +5661,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ==================================================================================================== LIBRARY: skia -ORIGIN: ../../../third_party/skia/src/core/SkFlattenablePriv.h + ../../../third_party/skia/LICENSE +ORIGIN: ../../../third_party/skia/src/core/SkGlyphRun.cpp + ../../../third_party/skia/LICENSE TYPE: LicenseType.bsd -FILE: ../../../third_party/skia/src/core/SkFlattenablePriv.h FILE: ../../../third_party/skia/src/core/SkGlyphRun.cpp FILE: ../../../third_party/skia/src/core/SkGlyphRun.h FILE: ../../../third_party/skia/src/core/SkGlyphRunPainter.cpp From 58cdd53f9083412fa7da893f53c1ca1c93500532 Mon Sep 17 00:00:00 2001 From: Michael Goderbauer Date: Fri, 19 Oct 2018 22:17:21 +0200 Subject: [PATCH 0042/1537] Roll buildtools to 759274dd801b2f78ae0c4066101d0beca27ffc9a (#6609) New clang produces slightly smaller binaries --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index a0e0b7f0387a1..e04539d1a6a32 100644 --- a/DEPS +++ b/DEPS @@ -104,7 +104,7 @@ vars = { # Build bot tooling for iOS 'ios_tools_revision': '69b7c1b160e7107a6a98d948363772dc9caea46f', - 'buildtools_revision': 'c1408453246f0475547b6fe634c2f3dad71c6457', + 'buildtools_revision': '759274dd801b2f78ae0c4066101d0beca27ffc9a', } # Only these hosts are allowed for dependencies in this DEPS file. From 6c84c5f6aea84797d9cdc787b342c6a5994524f1 Mon Sep 17 00:00:00 2001 From: Gary Qian Date: Fri, 19 Oct 2018 14:19:11 -0700 Subject: [PATCH 0043/1537] Pass null instead of 'none' locale (#6613) --- lib/ui/window.dart | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/lib/ui/window.dart b/lib/ui/window.dart index 2c4f283214643..ca93f4874b15e 100644 --- a/lib/ui/window.dart +++ b/lib/ui/window.dart @@ -152,9 +152,6 @@ class Locale { /// the region subtag should be uppercase. const Locale(this._languageCode, [ this._countryCode ]) : assert(_languageCode != null); - /// Empty locale constant. This is an invalid locale. - static const Locale none = const Locale('', ''); - /// The primary language subtag for the locale. /// /// This must not be null. @@ -443,7 +440,7 @@ class Window { if (_locales != null && _locales.isNotEmpty) { return _locales.first; } - return Locale.none; + return null; } /// The full system-reported supported locales of the device. From 7d49036d8b14f679509e64bff6f91644cbe11151 Mon Sep 17 00:00:00 2001 From: Aart Bik <39774503+aartbik@users.noreply.github.com> Date: Fri, 19 Oct 2018 14:19:30 -0700 Subject: [PATCH 0044/1537] Roll Dart to 45f9462398ae7d2e80acd79d3f9c32c7ca6f6f97 (#6616) changes included: 45f9462398 Revert "[build] Debug means debug!" 9f7ad8d082 Fix recovery when parsing complex type variables dcb665fa6d [hhh] Apply patch to flutter engine to fix hhh buildbot build step. 781ea1be70 [vm/interpreter] Fix interpreter frame recognition in stack walking, v2 c70666a3a3 Additional tests in the analyzer_plugin optype_test.dart file, follow up from https://dart-review.googlesource.com/c/sdk/+/80362. 7a3762d4a9 Fixes for convert tests 3f9c3e6ebc Update unterminated string error message length a502061c11 Add test and implementation for package: uris 70d5cf8578 [VM] Rehash constant tables after cid-renumbering during app-jit training cfbb70aa1c [gardening] Mark various RawDatagramSocket/ tests as flaky 2b23fa0607 Improve the way we call inferExpression e18aeac38c Remove NamedExpressionJudgment b429939377 Remove CheckLibraryIsLoadedJudgment f13537064e Remove ThrowJudgment 1bc9bbcdb6 Remove StaticInvocationJudgment 1610356382 Remove StaticGetJudgment 5aa705776b Remove desugaredError a474f49ada Revert "[vm/interpreter] Fix interpreter frame recognition in stack walking" e9b8e24891 [vm] Adds mutator thread asserts around bytecode reading f0a116d339 [dart2js] Some tear-off cleanup a0cc3e2684 [vm/interpreter] Fix interpreter frame recognition in stack walking ef870b25e6 Dont complain about TypeImpl in switch cases 531d8235eb Initial documentation for the public API bff11184fe dart2js co19_2 status bingo fdca304de5 Safari status bingo ac2036d76b Firefox status bingo c0c3fc4c5f [dartdevc] fix #34596, hot restart can now clear field & cache state 54690c0d38 Update dartdoc to 0.24.1. 5f4511a30e Stop adding tokens to unit API signature at EOF. 2a63500865 [infra] Add flutter-analyze builder to the test matrix (#34739) f51ccbc010 bump to linter 0.1.70 91b5862c1e [vm] Add core-jit-all snapshot kind to gen_snapshot 0f32be21bf Document single root flag a4a3f95748 Avoid using future closure in http connect. 8f4e379665 update kernel worker to enable sync-async bb93696c96 Simplify canParse on LSP types to only check for required fields 36551624e1 Implement fromJson() constructors for LSP types 4585b8eb44 [gardening] Mark RawDatagramSocket/any_A01_t02 co19 test flaky d04a36b4ab [infra] Fix third_party/pkg_tested step having slash in name. 1061c83779 Optionally report scanner errors via errors list rather than in the token stream fed5bc62b6 [co19] DEPS and .status files updated b27e4febaf Eliminate an unnecessary boolean variable a29c04953e Automatically run analysis server from source if launched with the SDK source tree d07f3edd5e [vm] Disable symbolization of Dart frames in Dart_DumpNativeStackTrace. 3039fb0031 Sort LSP files 0aa2dc6ead Batch 'inherit' 2bb4284c63 Add a few more tests and comments for GnWorkspace 5dfe3c8f94 bump to linter 0.1.69 1ca91cb6db Ensure unterminated string error is reported on visible characters ce1eac3800 Adapt analyzer/FE comparison logic to handle mixins with >2 superclass constraints. cc750ecec1 Revert "Don't clone constant ASTs when running with Analysis Driver." c7bc970ba7 [vm/simdbc] Clean up slot for result in InlineCacheMiss d5e5842971 [vm/interpreter] Fix stack frame recording in native calls 5d4ce27bea [vm] Fix race between Dart::Cleanup and VerifyBootstrapClasses. 4506e1d179 add linter changes (#34817) a53172cd47 [vm] Print isolate sticky_error during shutdown to let user know of unhandled exceptions. 22b4ec0e78 [vm/interpreter] Clean up slot for result in InlineCacheMiss b10a36b8df [vm] Set WasCompiled at safepoint 27b3f0ba6b [vm/frontend] Allow 'package:'-scheme uris as sources for frontend_server compilation. a3db8a904e Support running analyzer_cli in worker mode in an isolate. 3fc1f36e28 [vm] Update status files for issue 34760. f337b254ce Support running dartdevc in worker mode in an isolate. 18f56e59cf [infra] Add configuration name to results.json 843b4c9c23 Refactoring to prepare for serialization 531bce152d Tune invariants for inferredTypesMap 822fd6a1ed Remove StringLiteralJudgment cf84ce88d6 Remove StringConcatenationJudgment f0ebf05092 Remove RethrowJudgment 83c6963ce2 Remove PropertyGetJudgment 2a9ba09b93 Allow abstract operator == methods in switch case constants 5d1832b20a Disallow factory constructors in mixin declarations. 055ce6f101 fix syntax error on android 130f57f7f3 missing include for android ee975c89e2 [dart2js] Force --fast-startup holders to be fast objects 8fb17e0b6a Missing import for some linux builds 5c1a40837e Update analyzer fix sorting by priority 6e23c3b3cb Support SO_REUSEPORT and IP_MULTICAST_TTL for datagram sockets. 9a69a5c1ee Remove more unnecessary awaits (from analyzer) 5b574415f8 Fix GnWorkspace root 7f9049991b [ VM / Dart API ] Updated Dart_Invoke Dart_SetField tests to check error messages 2d397d1da6 Fix for dartbug.com/34821, variable_name_contributor.dart to complete "var SomeType |", to "someType" and "_someType", for declarations that can be denoted private. 0eb5dbffac [vm] Revert service isolate setup in main.cc 445a43b58d [ VM / Testing ] Add build flags to enable code coverage 6066ac83e3 Improve dartfix console output da67d58110 Remove some unnecessary await expressions f99d89b513 Update dartdoc to 0.24.0 93b1955ed0 Dartfix ui tweaks. 009eabf892 [Test tool] Add VM options to compiler arguments in VMKernelCompilerConfiguration 984c407bb3 [build] Debug means debug! 3a69805f6b Switch enums that don't have type aliases to stronger-typed values 56306b90ee Fix html changes markdown syntax: f921f203f4 [vm/bytecode] Fix constant evaluation of factory constructors in bytecode 20f4349951 Fix for reporting INVALID_USE_OF_PROTECTED_MEMBER in documentation comments. fade5f33f0 Regenerate code based on the server spec after updates to the generator 1996e78049 Update dart2js_info in DEPS to 0.5.13 df621a1fff Fix cast exception in TypeNameResolver (issue-34809) f4ffb426c4 [Gardening] Mark flaky co19 tests and filed issue 4d5c5ecdbf Update synced version of pkg:test 8300248edb [VM] Ensure inferred types are set on parameters 5d78509e25 Make FieldElementImpl.isCovariant a public member on FieldElement 9ba152b69e Mark deprecated fields as such de6f24367a Fix build from two incompatible changes landing cfa92dc090 Remove NullJudgment 9fadaec5f8 Remove NotJudgment e65ed1d143 Remove LogicalJudgment 0bcd98eb76 Remove FunctionExpressionJudgment 4df63225a8 Remove IsJudgment and IsNotJudgment 035aad457e Remove ConstructorInvocationJudgment 840afb4f9d Remove ConditionalJudgment 7fa8bc3fee Remove BoolJudgment 2495e2e951 [vm] Silence output from kernel::Program::ReadFromFile. c0ec6299ad Extract enums from the spec ea72ba3b1d Move sorting from reading to codegen ab253a8a4e Review comments for "[vm/aot] Fix regressions from dynamic invocation forwarders in AOT." 801f28666a Remove ThisJudgment af00f7c05d [vm/aot] Fix regressions from dynamic invocation forwarders in AOT. 349adc5b1f Reland "[VM] Use c++/kernel2kernel constant evaluator for const StaticInvocation in the kernel IR" ed73cc379d Increase file descriptor limit when running test.py on MacOS 5ce132a912 [infra] Copy core dumps to ISOLATED_OUTDIR on shards (#34746) a2aa6c8414 Consolidate DDC dependencies on front_end 9137fe26ac Remove deprecated_problems.dart ed7be67cab Remove CompilerOptions.onProblem 18cb217840 Remove CompilerOptions.onError and CompilationMessage 2084c5b2a9 Add toJson() methods d4fac1684c Remove CompilerOptions.reportMessages c6b43d9cb6 Use ansi color in the dartfix cli output. c8cf355c54 Bump package dart_internal's SDK constraint upper-bound to <2.2.0 2ed614819d [vm] Fix MakeUnusedSpaceTraversable in the 'Instance' filler case c362e4862f [vm] Invalidate KernelProgramInfo caches on a reload ac6d4f7e65 [vm] Disable conversion of large typed data to external when sending through a message port dea6c97a08 [vm] A couple more benchmark for kernel loading f3c51a4be0 Organize imports. ae22eaa48b Remove unused import abcb84ac78 Re-order the dartdoc param. 311a184cb8 Remove type merging and the only instance that used it dd59921896 Support "{@link xxx}" in LSP spec 1f344e4ee0 Add support for "class" instead of interface 0a6d960d66 Update bazel_worker to onDiagnostic e502edf28b Add DiagnosticMessage support API 88bde88112 Add constructors and mark all fields final bf270577cc [fasta] Report errors on generic function types in type arguments 06f9a9e354 [VM] Introduce function and osr entrypoints to the VM's IR 22b11717ac [fasta] Fix bounds checking: non-generic types are always well-bounded 0a986f3f80 Remove a few shadow nodes. 490421d166 Fixed Service Workers and any Promise/Future API with a Dictionary parameter. 77c5677abe Don't clone constant ASTs when running with Analysis Driver. 1cabefdf5b Fix analyzer/FE comparison tool handling of mixins. 45092fd0aa Improve output of analyzer/FE comparison tool. a4f3df6534 [vm] Fix symlinks in test cases. 180b3dd301 Remove extra spaces in copyright notices in analyzer_plugin d127ab9a27 Get rid of places that allocate lots of _Closure instances. 5cff16bc75 Use single InheritanceManager2 instance for Linker. d8e52e5e82 Remove last references to InheritanceManager in analyzer/server. 9f00eec55b [ VM / Mirrors ] Added type checking to enforce strong mode semantics when using dart:mirrors 2ec7c9cdb1 Skip the tests that require super mixin support 469e1e2e64 Remove unnecessary library directives 1d0d9f1d3f [vm] Fix heap corruption while reading "kernel list" file 80cddf0d53 Rename writeOverrideOfInheritedMember() to writeOverride() in DartEditBuilder. 2c352111a4 Use just TypeSystem in InheritanceManager2. 977f5c2c21 Switch KytheDartVisitor to InheritanceManager2. bc2ea566f1 Auto generate more analyzer error codes a2a3c36b77 Switch CREATE_MISSING_OVERRIDES to writeOverrideOfInheritedMember() and using FunctionType signatures. aabc26bafe Revert "[VM] Use c++/kernel2kernel constant evaluator for const StaticInvocation in the kernel IR" dac3e0d9df [dart2js] Don't create instance call-through stubs for statics e34472db10 Remove unused import 22190e4d79 [vm] In IsolateMirror.loadUri, note that a kernel file at a URI may not contain any library with that URI. dc9d6785de Report compile-time errors on invalid switch cases af8d026337 Address dartfix comments and improve output 841a75698d [vm] Fix typo in previous commit 5b6220d44d [vm/compiler] Start of loop framework 0b1b09116a Simplify handling of non-shadow nodes in type inference aa9f0f911f Update stream.dart 0e001641a9 Re-write invalid ASTs and update fix to reflect new AST structure for invalid type arguments on named constructors 48544cd77d Use InheritanceManager2 in InstanceMemberInferrer. 29ff9e4a6a [VM] Use c++/kernel2kernel constant evaluator for const StaticInvocation in the kernel IR 3199875231 Remove TypeSystemImpl. 0b78ac7f38 [VM] Add regression test for buildbot flakiness due to smi-widening optimization in VM af7cead848 Clone default values of mixin application constructors 47c55605b8 Reland: [vm] Add a library and class cache to KernelProgramInfo 87a10d9811 Provide context for NotAType 69cf0ec97c Signal an error if a class extends a mixin 99815c8d6d Do not print --output_directory in reproduction commands 9b41728b2d Remove FileParseExceptionHandler from FileSystemState. eee8787a8d Generate noSuchMethod forwarders for private members inherited from a class in a foreign library. 5b1fcb09df Remove d2fe ikg minimal benchmark from commit queue. 54ef78b7c5 Remove non-strong vm dill files from SDK 6177615d71 [kernel] Fix subtype relationship for generic function types 1f4dfce179 [gardening] Mark co19 LibTest/io/HttpServer/close_A05_t01 flaky 5cbb640f7c Error for type arguments after named constructor with implicit new 2fa1143600 Check classes at mixin applications ade528c4e6 Fixed the type alias omission in the def. of simple bounds ddf67772bb Remove warning about inferring packages URI from dart2js 18110717fe Move infer methods to visitor bd223d0ec4 Add consistent_type_error_test d95f63d752 Update dartfix to use new invalid type argument fix 0cdd5b9ff3 Raise warning to error: duplicate key in a const map is now an error in Dart. f6ca2c1d8f Remove the Dart 1 tests. 9f98f5f44c Remove instantiateToBounds parameter from FunctionTypeImpl.relate. 82f31cd250 Add types to method args to avoid analysis warnings. 63c9a241e3 Upgrade WRONG_NUMBER_OF_TYPE_ARGUMENTS_CONSTRUCTOR from a warning to an error 5658d406b7 Add changelog entry for integer literals in double contexts. 6b67cd784b [vm] Make UBSAN happy for the code in Range::BitwiseOp e4c3fa0a9c Improve recovery when parsing named constructor invocation with invalid type arguments 3e7ce992cf [vm/tfa] Implementation of type arguments tracking in TFA. 001343ce06 [vm, gc] Disable reads and writes to from-space after a scavenge. 97ffcd9a3d [vm] Disable incorrect widening of smis to int32 1a4933715e [gardening] Mark co19 LibTest/io/RawDatagramSocket/any_A03_t01 flaky e4842a293b Remove extra spaces in headers 58c90dc488 [vm] Fix bytecode in core-jit for simarm64 fab5d0a50d In InheritanceManager remove unused, and deprecate used (in lints) methods. 2989116219 Add some special cases for types we can't/don't need to parse 49b121f20d Remove TypeParameterSerializationContext.location. 244e6c7ffc Infer package URIs cc884b3449 Remove optional argument from FunctionTypeImpl.forTypedef. 931202df27 Improve wrapping of lists and *notes* in LSP spec comments 3e897ac3b1 [vm] Extend previous status file updates. 23e7f9d1eb Handle references to other classes in comments 472c898c87 [dartdevc] fix for-in loop variable shadowing a var used in initialzer 3fe3106489 [gardening] Fix leaks in run_vm_tests binary detected by ASAN. a6c8b62056 Remove dummy .packages files 2f7e7a4b52 [vm] Update status files for vm-kernel-mac-product-x64 for issue 34760. e12538fff0 Move package bundle functionality into SummaryBaseTestStrategy. 96737787e2 Add LSP spec code-gen output 5e7ea5b672 [infra] Add .vpython spec to fix gsutil on the bots (#31065) 3cf0008b13 [vm/bytecode] Remove dependencies on ASTs when running with bytecode fc0decc262 Improvements to the Dart code generated from the LSP spec. efcca1132b Switch ErrorVerifier and OverrideVerifier to InheritanceManager2. c347850976 [gardening] Mark co19 LibTest/io/RawDatagramSocket/timeout_A06_t01 as flaky 5e1bf1d135 Create LibraryScope once per library analyzer. 7c7df7bfa4 Add initial version of feature specification on interface conflicts. f2bffc6872 Revert "[infra] Upgrade gsutil to a new version (#31065)" 1809bae318 Revert "Ignore JSON exceptions when reading (empty) test results file" 787194e738 [infra] Upgrade gsutil to a new version (#31065) 265d0d9ec1 Update status files after 8648d782 23c36ed029 Elaborate that -0 means -0.0 in double context or when compiled to JS. 8648d782ae Reland "[fasta] Report errors for bounds violations" 5c9a8d8cb5 [VM] Add $target_gen_dir/gen_kernel_bytecode.dill.d to outputs of GN action, to ensure directory is created before action is run 49d7fb39ac Temporarily ignore --strong option in flutter builds f0a30bc8d1 Revert "[vm] Add a library and class cache to KernelProgramInfo" 1c2ed4ac11 [infra] Include gsutil in vm-kernel fileset to enable coredumps on shards (#31065) 5b32ab3be6 Remove the word "strongMode" from some package:kernel libraries. dfb8e97b86 Report errors on members hiding prefixes 235a918233 [vm] Remove Dart_LoadScript, Dart_LoadLibrary, Dart_LoadSource, etc. 90e362f63c Deprecate the last non-deprecated EMPTY_LIST 0ab8e42fea Use a special context for serializing generic function types. c47879d354 Remove one-phase summary logic. b9dd229e35 Convert element.dart to triple-slash comment style. e70a7aab8a [VM] Dead code removal - Remove dead code around creation of service isolate in gen_snapshot.cc - Create service isolate from the core snapshot - exclude sources from platform dill file (saves about 2.5MB in size) 662ff7f112 [vm] Remove TokenStream, TokenValue, CompilerStats. a933f42b9e [VM] Use Symbols::Empty() when there is no source for a script instead of creating new empty string objects. Change-Id: I8ec6702557b07c4c4ede2aece5a3f25b4cde1a5b Reviewed-on: https://dart-review.googlesource.com/c/79060 Reviewed-by: Ryan Macnak Commit-Queue: Siva Annamalai 72b31316e4 [observatory] Fail gracefully when a Script lacks source code. --- DEPS | 10 +++---- ci/licenses_golden/licenses_third_party | 9 +++---- runtime/BUILD.gn | 36 ------------------------- 3 files changed, 9 insertions(+), 46 deletions(-) diff --git a/DEPS b/DEPS index e04539d1a6a32..c59b7eed8f73e 100644 --- a/DEPS +++ b/DEPS @@ -31,7 +31,7 @@ vars = { # Dart is: https://github.com/dart-lang/sdk/blob/master/DEPS. # You can use //tools/dart/create_updated_flutter_deps.py to produce # updated revision list of existing dependencies. - 'dart_revision': 'b99bcfd3099f0d32e39287160a9539e878cb0b68', + 'dart_revision': '45f9462398ae7d2e80acd79d3f9c32c7ca6f6f97', # WARNING: DO NOT EDIT MANUALLY # The lines between blank lines above and below are generated by a script. See create_updated_flutter_deps.py @@ -47,9 +47,9 @@ vars = { 'dart_convert_tag': '2.0.2', 'dart_crypto_tag': '2.0.6', 'dart_csslib_tag': '0.14.4+1', - 'dart_dart2js_info_tag': '0.5.6+4', + 'dart_dart2js_info_tag': '0.5.13', 'dart_dart_style_tag': '1.2.0', - 'dart_dartdoc_tag': 'v0.23.1', + 'dart_dartdoc_tag': 'v0.24.1', 'dart_fixnum_tag': '0.10.8', 'dart_glob_tag': '1.1.7', 'dart_html_tag': '0.13.3+2', @@ -60,7 +60,7 @@ vars = { 'dart_http_throttle_tag': '1.0.2', 'dart_intl_tag': '0.15.7', 'dart_json_rpc_2_tag': '2.0.9', - 'dart_linter_tag': '0.1.68', + 'dart_linter_tag': '0.1.70', 'dart_logging_tag': '0.11.3+2', 'dart_markdown_tag': '2.0.2', 'dart_matcher_tag': '0.12.3', @@ -92,7 +92,7 @@ vars = { 'dart_string_scanner_tag': '1.0.3', 'dart_term_glyph_tag': '1.0.1', 'dart_test_reflective_loader_tag': '0.1.8', - 'dart_test_tag': '1.0.0', + 'dart_test_tag': '1.3.4', 'dart_tuple_tag': 'v1.0.1', 'dart_typed_data_tag': '1.1.6', 'dart_usage_tag': '3.4.0', diff --git a/ci/licenses_golden/licenses_third_party b/ci/licenses_golden/licenses_third_party index 8854f4642f33d..c5c6fc633659f 100644 --- a/ci/licenses_golden/licenses_third_party +++ b/ci/licenses_golden/licenses_third_party @@ -1,4 +1,4 @@ -Signature: 288479a70ccd3cb5cff17176ada4dfa1 +Signature: d91d49f0e8c58eb2fe7be4d8b2ed65eb UNUSED LICENSES: @@ -4432,6 +4432,7 @@ ORIGIN: ../../../third_party/dart/LICENSE TYPE: LicenseType.bsd FILE: ../../../third_party/dart/.gitconfig FILE: ../../../third_party/dart/.mailmap +FILE: ../../../third_party/dart/.vpython FILE: ../../../third_party/dart/client/idea/.idea/.name FILE: ../../../third_party/dart/client/idea/.idea/inspectionProfiles/Project_Default.xml FILE: ../../../third_party/dart/client/idea/.idea/vcs.xml @@ -5271,7 +5272,6 @@ FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/sourc FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/target.dart FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/thread.dart FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/timeline_event.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/token_stream.dart FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/type_arguments.dart FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/unknown.dart FILE: ../../../third_party/dart/runtime/observatory/lib/src/models/objects/vm.dart @@ -5458,6 +5458,8 @@ FILE: ../../../third_party/dart/runtime/vm/compiler/assembler/disassembler_kbc.c FILE: ../../../third_party/dart/runtime/vm/compiler/assembler/disassembler_kbc.h FILE: ../../../third_party/dart/runtime/vm/compiler/backend/code_statistics.cc FILE: ../../../third_party/dart/runtime/vm/compiler/backend/code_statistics.h +FILE: ../../../third_party/dart/runtime/vm/compiler/backend/loops.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/backend/loops.h FILE: ../../../third_party/dart/runtime/vm/compiler/compiler_pass.cc FILE: ../../../third_party/dart/runtime/vm/compiler/compiler_pass.h FILE: ../../../third_party/dart/runtime/vm/compiler/compiler_state.h @@ -5542,8 +5544,6 @@ FILE: ../../../third_party/dart/runtime/vm/code_patcher_x64_test.cc FILE: ../../../third_party/dart/runtime/vm/compiler/assembler/disassembler.cc FILE: ../../../third_party/dart/runtime/vm/compiler/assembler/disassembler.h FILE: ../../../third_party/dart/runtime/vm/compiler/assembler/disassembler_test.cc -FILE: ../../../third_party/dart/runtime/vm/compiler_stats.cc -FILE: ../../../third_party/dart/runtime/vm/compiler_stats.h FILE: ../../../third_party/dart/runtime/vm/cpu_ia32.cc FILE: ../../../third_party/dart/runtime/vm/custom_isolate_test.cc FILE: ../../../third_party/dart/runtime/vm/dart.h @@ -5879,7 +5879,6 @@ FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/sentinel_va FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/sentinel_view.dart FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/source_inset.dart FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/stack_trace_tree_config.dart -FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/token_stream_ref.dart FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/type_arguments_ref.dart FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/unknown_ref.dart FILE: ../../../third_party/dart/runtime/observatory/lib/src/elements/vm_view.dart diff --git a/runtime/BUILD.gn b/runtime/BUILD.gn index bf4b8e6fb8316..1fa0d73af64e2 100644 --- a/runtime/BUILD.gn +++ b/runtime/BUILD.gn @@ -6,41 +6,6 @@ import("//third_party/dart/runtime/bin/vmservice/vmservice_sources.gni") import("$flutter_root/common/config.gni") import("$flutter_root/testing/testing.gni") -action("gen_embedded_resources_cc") { - script = "//third_party/dart/runtime/tools/create_resources.py" - output_file = "$target_gen_dir/embedded_resources.cc" - outputs = [ - output_file, - ] - - inputs = rebase_path(vmservice_sources, - "", - "//third_party/dart/runtime/bin/vmservice") - - args = [ - "--output", - rebase_path(output_file), - "--outer_namespace", - "flutter", - "--inner_namespace", - "runtime", - "--table_name", - "flutter_embedded_service_isolate", - "--root_prefix", - rebase_path("//third_party/dart/runtime/bin/"), - ] + rebase_path(inputs) -} - -source_set("embedded_resources_cc") { - sources = [ - "$target_gen_dir/embedded_resources.cc", - ] - deps = [ - ":gen_embedded_resources_cc", - ] - public_configs = [ "$flutter_root:config" ] -} - source_set("test_font") { sources = [ "test_font_data.cc", @@ -84,7 +49,6 @@ source_set("runtime") { ] deps = [ - ":embedded_resources_cc", ":test_font", "$flutter_root/assets", "$flutter_root/common", From 739d66eeb3f8777f3e28d3e635a5f691a0f1a16b Mon Sep 17 00:00:00 2001 From: Chinmay Garde Date: Fri, 19 Oct 2018 14:20:31 -0700 Subject: [PATCH 0045/1537] Don't attempt to build any platform target on Fuchsia. (#6617) --- shell/platform/BUILD.gn | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/shell/platform/BUILD.gn b/shell/platform/BUILD.gn index ae3b1003f22fe..1e12ffe1e604e 100644 --- a/shell/platform/BUILD.gn +++ b/shell/platform/BUILD.gn @@ -15,8 +15,9 @@ group("platform") { deps = [ "embedder", ] - } else if (is_win) { - # There is no platform target on windows. Instead, only a tester is used. + } else if (is_win || is_fuchsia) { + # There is no platform target on Windows. Fuchsia has its own runner + # implementation. deps = [] } else { assert(false, "Unknown/Unsupported platform.") From 2091c0db69d7ba7772b05564f60c25612e0aaaf4 Mon Sep 17 00:00:00 2001 From: liyuqian Date: Fri, 19 Oct 2018 14:31:10 -0700 Subject: [PATCH 0046/1537] Update Dart version in Dockerfile (#6618) --- ci/docker/build/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci/docker/build/Dockerfile b/ci/docker/build/Dockerfile index 81655f7adf228..7529ba37d5c7a 100644 --- a/ci/docker/build/Dockerfile +++ b/ci/docker/build/Dockerfile @@ -19,7 +19,7 @@ RUN ./build/install-build-deps.sh --no-prompt RUN ./build/install-build-deps-android.sh --no-prompt WORKDIR $HOME/dart -RUN wget https://storage.googleapis.com/dart-archive/channels/dev/release/2.0.0-dev.63.0/sdk/dartsdk-linux-x64-release.zip +RUN wget https://storage.googleapis.com/dart-archive/channels/dev/release/2.1.0-dev.7.1/sdk/dartsdk-linux-x64-release.zip RUN unzip dartsdk-linux-x64-release.zip ENV PATH $PATH:$HOME/dart/dart-sdk/bin From 8cb3965a3ebf1c65d03a78fc6c0b84a8adc3024f Mon Sep 17 00:00:00 2001 From: Gary Qian Date: Fri, 19 Oct 2018 15:01:43 -0700 Subject: [PATCH 0047/1537] Properly gate android API < 21 and remove extraneous data array. (#6619) --- .../android/io/flutter/view/FlutterView.java | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/shell/platform/android/io/flutter/view/FlutterView.java b/shell/platform/android/io/flutter/view/FlutterView.java index f7a8dacac61c9..eadd2247f8d83 100644 --- a/shell/platform/android/io/flutter/view/FlutterView.java +++ b/shell/platform/android/io/flutter/view/FlutterView.java @@ -342,16 +342,8 @@ private void setLocales(Configuration config) { } // Fallback single locale passing for android API < 24. Should work always. Locale locale = config.locale; - List data = new ArrayList(); - data.add(locale.getLanguage()); - data.add(locale.getCountry()); - if (Build.VERSION.SDK_INT >= 21) { - data.add(locale.getScript()); - } else { - data.add(""); - } - data.add(locale.getVariant()); - mFlutterLocalizationChannel.invokeMethod("setLocale", Arrays.asList(locale.getLanguage(), locale.getCountry(), locale.getScript(), locale.getVariant())); + // getScript() is gated because it is added in API 21. + mFlutterLocalizationChannel.invokeMethod("setLocale", Arrays.asList(locale.getLanguage(), locale.getCountry(), Build.VERSION.SDK_INT >= 21 ? locale.getScript() : "", locale.getVariant())); } From 9de880cc909c6a687aabb9fbe98fd2e7476fd7e8 Mon Sep 17 00:00:00 2001 From: Chinmay Garde Date: Fri, 19 Oct 2018 16:06:54 -0700 Subject: [PATCH 0048/1537] Revert "Roll buildtools to 759274dd801b2f78ae0c4066101d0beca27ffc9a" (#6621) --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index c59b7eed8f73e..1794090e0949e 100644 --- a/DEPS +++ b/DEPS @@ -104,7 +104,7 @@ vars = { # Build bot tooling for iOS 'ios_tools_revision': '69b7c1b160e7107a6a98d948363772dc9caea46f', - 'buildtools_revision': '759274dd801b2f78ae0c4066101d0beca27ffc9a', + 'buildtools_revision': 'c1408453246f0475547b6fe634c2f3dad71c6457', } # Only these hosts are allowed for dependencies in this DEPS file. From ce36d85d60a6738511180e71023df27809f2aaa1 Mon Sep 17 00:00:00 2001 From: Gary Qian Date: Fri, 19 Oct 2018 23:44:40 -0700 Subject: [PATCH 0049/1537] Revert "Pass null instead of 'none' locale" (#6622) * Revert "Revert "Roll buildtools to 759274dd801b2f78ae0c4066101d0beca27ffc9a" (#6621)" This reverts commit 9de880cc909c6a687aabb9fbe98fd2e7476fd7e8. * Revert "Properly gate android API < 21 and remove extraneous data array. (#6619)" This reverts commit 8cb3965a3ebf1c65d03a78fc6c0b84a8adc3024f. * Revert "Update Dart version in Dockerfile (#6618)" This reverts commit 2091c0db69d7ba7772b05564f60c25612e0aaaf4. * Revert "Don't attempt to build any platform target on Fuchsia. (#6617)" This reverts commit 739d66eeb3f8777f3e28d3e635a5f691a0f1a16b. * Revert "Roll Dart to 45f9462398ae7d2e80acd79d3f9c32c7ca6f6f97 (#6616)" This reverts commit 7d49036d8b14f679509e64bff6f91644cbe11151. * Revert "Pass null instead of 'none' locale (#6613)" This reverts commit 6c84c5f6aea84797d9cdc787b342c6a5994524f1. --- lib/ui/window.dart | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/ui/window.dart b/lib/ui/window.dart index ca93f4874b15e..2c4f283214643 100644 --- a/lib/ui/window.dart +++ b/lib/ui/window.dart @@ -152,6 +152,9 @@ class Locale { /// the region subtag should be uppercase. const Locale(this._languageCode, [ this._countryCode ]) : assert(_languageCode != null); + /// Empty locale constant. This is an invalid locale. + static const Locale none = const Locale('', ''); + /// The primary language subtag for the locale. /// /// This must not be null. @@ -440,7 +443,7 @@ class Window { if (_locales != null && _locales.isNotEmpty) { return _locales.first; } - return null; + return Locale.none; } /// The full system-reported supported locales of the device. From 4c79e423dc6f89f98d8ceb263a5ca78e2f2da996 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Sun, 21 Oct 2018 10:46:43 -0400 Subject: [PATCH 0050/1537] Roll src/third_party/skia 69083b2b626b..b9998cdceec7 (9 commits) (#6620) https://skia.googlesource.com/skia.git/+log/69083b2b626b..b9998cdceec7 Created with: gclient setdep -r src/third_party/skia@b9998cdceec7 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 1794090e0949e..b5009c84ee316 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '69083b2b626b173db75f13a2b51ee35b30101807', + 'skia_revision': 'b9998cdceec748454c052eb6acb981dfbb731425', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 93839ffcfdc61..90fcd6ab49193 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 352f06c73d2d2707818a37eea3cfcf54 +Signature: 05b322e4e4efe8dd9093df9fb90184d5 UNUSED LICENSES: @@ -1587,6 +1587,8 @@ FILE: ../../../third_party/skia/src/gpu/mtl/GrMtlVaryingHandler.h FILE: ../../../third_party/skia/src/gpu/mtl/GrMtlVaryingHandler.mm FILE: ../../../third_party/skia/src/gpu/ops/GrClearStencilClipOp.cpp FILE: ../../../third_party/skia/src/gpu/ops/GrDebugMarkerOp.cpp +FILE: ../../../third_party/skia/src/gpu/ops/GrDrawableOp.cpp +FILE: ../../../third_party/skia/src/gpu/ops/GrDrawableOp.h FILE: ../../../third_party/skia/src/gpu/text/GrAtlasManager.cpp FILE: ../../../third_party/skia/src/gpu/text/GrAtlasManager.h FILE: ../../../third_party/skia/src/gpu/text/GrSDFMaskFilter.cpp From cadf4405b0a862651c2334172a9b6caca0ccbe91 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Mon, 22 Oct 2018 07:56:09 -0400 Subject: [PATCH 0051/1537] Roll src/third_party/skia b9998cdceec7..b1a002e850e1 (13 commits) (#6626) https://skia.googlesource.com/skia.git/+log/b9998cdceec7..b1a002e850e1 Created with: gclient setdep -r src/third_party/skia@b1a002e850e1 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/DEPS b/DEPS index b5009c84ee316..bd7cbe64457ec 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'b9998cdceec748454c052eb6acb981dfbb731425', + 'skia_revision': 'b1a002e850e136134c68a5199f4e32f3bca54162', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 90fcd6ab49193..4f38478184d36 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 05b322e4e4efe8dd9093df9fb90184d5 +Signature: bd69c07fc708fecdda910a0509344e4d UNUSED LICENSES: @@ -967,7 +967,6 @@ FILE: ../../../third_party/skia/src/core/SkColorSpace.cpp FILE: ../../../third_party/skia/src/core/SkColorSpacePriv.h FILE: ../../../third_party/skia/src/core/SkCpu.cpp FILE: ../../../third_party/skia/src/core/SkCpu.h -FILE: ../../../third_party/skia/src/core/SkDeduper.h FILE: ../../../third_party/skia/src/core/SkExchange.h FILE: ../../../third_party/skia/src/core/SkFixed15.h FILE: ../../../third_party/skia/src/core/SkFuzzLogging.h From edfe02481a2982733de6159eae77d39a91f16b5f Mon Sep 17 00:00:00 2001 From: Matthew Smith Date: Mon, 22 Oct 2018 10:28:39 -0700 Subject: [PATCH 0052/1537] 13771 - iOS dictation bug (#6607) According to the iOS docs, implementing `- (id)insertDictationResultPlaceholder` ```Implementation of this method is optional but can be done when you want to provide a specific rectangle for the placeholder animation while the dictation results are being processed. ``` If you do not implement this method, UIKit will insert a default placeholder of 10 whitespace characters. By overriding this, no placeholder text will be inserted. If you implement the `insertDictationResultPlaceholder`, you must implement `- (void)removeDictationResultPlaceholder:(id)placeholder willInsertResult:(BOOL)willInsertResult` --- .../darwin/ios/framework/Source/FlutterTextInputPlugin.mm | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/shell/platform/darwin/ios/framework/Source/FlutterTextInputPlugin.mm b/shell/platform/darwin/ios/framework/Source/FlutterTextInputPlugin.mm index da64123432f93..f8378d5d7174e 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterTextInputPlugin.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterTextInputPlugin.mm @@ -289,6 +289,13 @@ - (void)setSelectedTextRange:(UITextRange*)selectedTextRange updateEditingState: } } +- (id)insertDictationResultPlaceholder { + return @""; +} + +- (void)removeDictationResultPlaceholder:(id)placeholder willInsertResult:(BOOL)willInsertResult { +} + - (NSString*)textInRange:(UITextRange*)range { NSRange textRange = ((FlutterTextRange*)range).range; return [self.text substringWithRange:textRange]; @@ -297,7 +304,6 @@ - (NSString*)textInRange:(UITextRange*)range { - (void)replaceRange:(UITextRange*)range withText:(NSString*)text { NSRange replaceRange = ((FlutterTextRange*)range).range; NSRange selectedRange = _selectedTextRange.range; - // Adjust the text selection: // * reduce the length by the intersection length // * adjust the location by newLength - oldLength + intersectionLength From 2cd89200c24c8c1d51e875e87e0f899339865cd3 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Mon, 22 Oct 2018 15:39:43 -0400 Subject: [PATCH 0053/1537] Roll src/third_party/skia b1a002e850e1..327955b1ba19 (12 commits) (#6631) https://skia.googlesource.com/skia.git/+log/b1a002e850e1..327955b1ba19 Created with: gclient setdep -r src/third_party/skia@327955b1ba19 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/DEPS b/DEPS index bd7cbe64457ec..a362c122cfa19 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'b1a002e850e136134c68a5199f4e32f3bca54162', + 'skia_revision': '327955b1ba194eb010ff5a3ef1f32a913d52dd5c', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 4f38478184d36..e69f131e8219c 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: bd69c07fc708fecdda910a0509344e4d +Signature: f7bbd4a07f225efa0742cd84427ff2b8 UNUSED LICENSES: @@ -4368,7 +4368,6 @@ FILE: ../../../third_party/skia/src/core/SkDrawShadowInfo.cpp FILE: ../../../third_party/skia/src/core/SkDrawShadowInfo.h FILE: ../../../third_party/skia/src/core/SkDraw_vertices.cpp FILE: ../../../third_party/skia/src/core/SkExecutor.cpp -FILE: ../../../third_party/skia/src/core/SkFDot6Constants.cpp FILE: ../../../third_party/skia/src/core/SkFontMgrPriv.h FILE: ../../../third_party/skia/src/core/SkGaussFilter.cpp FILE: ../../../third_party/skia/src/core/SkGaussFilter.h @@ -4873,7 +4872,6 @@ FILE: ../../../third_party/skia/src/core/SkEdge.cpp FILE: ../../../third_party/skia/src/core/SkEdge.h FILE: ../../../third_party/skia/src/core/SkEndian.h FILE: ../../../third_party/skia/src/core/SkFDot6.h -FILE: ../../../third_party/skia/src/core/SkFDot6Constants.h FILE: ../../../third_party/skia/src/core/SkGeometry.cpp FILE: ../../../third_party/skia/src/core/SkGeometry.h FILE: ../../../third_party/skia/src/core/SkGlyph.h From cdd592f5be97e8245b31d7621bc95234b62c3a43 Mon Sep 17 00:00:00 2001 From: Gary Qian Date: Mon, 22 Oct 2018 15:21:04 -0700 Subject: [PATCH 0054/1537] Reland 'Pass null instead of 'none' locale' (#6632) --- lib/ui/window.dart | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/lib/ui/window.dart b/lib/ui/window.dart index 2c4f283214643..28f91372460f2 100644 --- a/lib/ui/window.dart +++ b/lib/ui/window.dart @@ -150,10 +150,7 @@ class Locale { /// Registry](https://www.iana.org/assignments/language-subtag-registry/language-subtag-registry). /// Typically this means the primary language subtag should be lowercase and /// the region subtag should be uppercase. - const Locale(this._languageCode, [ this._countryCode ]) : assert(_languageCode != null); - - /// Empty locale constant. This is an invalid locale. - static const Locale none = const Locale('', ''); + const Locale(this._languageCode, [ this._countryCode ]) : assert(_languageCode != null), assert(_languageCode != ''); /// The primary language subtag for the locale. /// @@ -443,7 +440,7 @@ class Window { if (_locales != null && _locales.isNotEmpty) { return _locales.first; } - return Locale.none; + return null; } /// The full system-reported supported locales of the device. From 4f17d7ee760b57c55d538e4a8b46bcdb7ef94795 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Mon, 22 Oct 2018 19:04:34 -0400 Subject: [PATCH 0055/1537] Roll src/third_party/skia 327955b1ba19..ff1aeb953faf (13 commits) (#6635) https://skia.googlesource.com/skia.git/+log/327955b1ba19..ff1aeb953faf Created with: gclient setdep -r src/third_party/skia@ff1aeb953faf The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index a362c122cfa19..e44094b564481 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '327955b1ba194eb010ff5a3ef1f32a913d52dd5c', + 'skia_revision': 'ff1aeb953faf9f68631d5f6086611ff3564344ce', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index e69f131e8219c..f931066393a60 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: f7bbd4a07f225efa0742cd84427ff2b8 +Signature: 787b1c3dd9f97adb3814cded8066eb57 UNUSED LICENSES: @@ -2021,6 +2021,7 @@ FILE: ../../../third_party/skia/experimental/canvaskit/cpu.js FILE: ../../../third_party/skia/experimental/canvaskit/externs.js FILE: ../../../third_party/skia/experimental/canvaskit/gpu.js FILE: ../../../third_party/skia/experimental/canvaskit/helper.js +FILE: ../../../third_party/skia/experimental/canvaskit/htmlcanvas/canvas2d.js FILE: ../../../third_party/skia/experimental/canvaskit/interface.js FILE: ../../../third_party/skia/experimental/canvaskit/karma.bench.conf.js FILE: ../../../third_party/skia/experimental/canvaskit/karma.conf.js @@ -5153,6 +5154,7 @@ ORIGIN: ../../../third_party/skia/include/docs/SkPDFDocument.h + ../../../third_ TYPE: LicenseType.bsd FILE: ../../../third_party/skia/include/docs/SkPDFDocument.h FILE: ../../../third_party/skia/src/gpu/GrPathRendering_none.cpp +FILE: ../../../third_party/skia/src/pdf/SkPDFGlyphUse.h FILE: ../../../third_party/skia/src/utils/SkUTF.cpp FILE: ../../../third_party/skia/src/utils/SkUTF.h ---------------------------------------------------------------------------------------------------- From 25d0507d854bc293a470c46eff990445eaeb74a3 Mon Sep 17 00:00:00 2001 From: Michael Goderbauer Date: Tue, 23 Oct 2018 01:22:55 +0200 Subject: [PATCH 0056/1537] Roll buildtools to 5a9e1b3a0b84a2871f20f85fde665e54a894ba72 (#6633) This one includes the fix for the bug that caused the rollback in https://github.com/flutter/engine/pull/6621. --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index e44094b564481..bf64306057d76 100644 --- a/DEPS +++ b/DEPS @@ -104,7 +104,7 @@ vars = { # Build bot tooling for iOS 'ios_tools_revision': '69b7c1b160e7107a6a98d948363772dc9caea46f', - 'buildtools_revision': 'c1408453246f0475547b6fe634c2f3dad71c6457', + 'buildtools_revision': '5a9e1b3a0b84a2871f20f85fde665e54a894ba72', } # Only these hosts are allowed for dependencies in this DEPS file. From 20c805c97312fb69e67984847d031339242a9924 Mon Sep 17 00:00:00 2001 From: Chinmay Garde Date: Mon, 22 Oct 2018 17:40:24 -0700 Subject: [PATCH 0057/1537] Ensure that Scene::toImage renders texture backed images. (#6636) TL;DR: Offscreen surface is created on the render thread and device to host transfer performed there before task completion on the UI thread. While attempting to snapshot layer trees, the engine was attempting to use the IO thread context. The reasoning was that this would be safe to do because any textures uploaded to the GPU as a result of async texture upload would have originated from this context and hence the handles would be valid in either context. As it turns out, while the handles are valid, Skia does not support this use-case because cross-context images transfer ownership of the image from one context to another. So, when we made the hop from the UI thread to the IO thread (for snapshotting), if either the UI or GPU threads released the last reference to the texture backed image, the image would be invalid. This led to such images being absent from the layer tree snapshot. Simply referencing the images as they are being used on the IO thread is not sufficient because accessing images on one context after their ownership has already been transferred to another is not safe behavior (from Skia's perspective, the handles are still valid in the sharegroup). To work around these issues, it was decided that an offscreen render target would be created on the render thread. The color attachment of this render target could then be transferred as a cross context image to the IO thread for the device to host tranfer. Again, this is currently not quite possible because the only way to create cross context images is from encoded data. Till Skia exposes the functionality to create cross-context images from textures in one context, we do a device to host transfer on the GPU thread. The side effect of this is that this is now part of the frame workload (image compression, which dominate the wall time, is still done of the IO thread). A minor side effect of this patch is that the GPU latch needs to be waited on before the UI thread tasks can be completed before shell initialization. --- ci/licenses_golden/licenses_flutter | 1 + lib/ui/BUILD.gn | 3 +- lib/ui/compositing/scene.cc | 139 ++++++++++------------------ lib/ui/snapshot_delegate.h | 21 +++++ lib/ui/ui_dart_state.cc | 6 ++ lib/ui/ui_dart_state.h | 5 + runtime/dart_isolate.cc | 22 +++-- runtime/dart_isolate.h | 3 + runtime/dart_isolate_unittests.cc | 2 + runtime/runtime_controller.cc | 6 ++ runtime/runtime_controller.h | 3 + shell/common/engine.cc | 2 + shell/common/engine.h | 2 + shell/common/rasterizer.cc | 51 ++++++++++ shell/common/rasterizer.h | 9 +- shell/common/shell.cc | 44 +++++---- 16 files changed, 202 insertions(+), 117 deletions(-) create mode 100644 lib/ui/snapshot_delegate.h diff --git a/ci/licenses_golden/licenses_flutter b/ci/licenses_golden/licenses_flutter index 905c8dcdf24de..acefd7e4a9672 100644 --- a/ci/licenses_golden/licenses_flutter +++ b/ci/licenses_golden/licenses_flutter @@ -507,6 +507,7 @@ FILE: ../../../flutter/lib/ui/isolate_name_server/isolate_name_server_natives.cc FILE: ../../../flutter/lib/ui/isolate_name_server/isolate_name_server_natives.h FILE: ../../../flutter/lib/ui/plugins/callback_cache.cc FILE: ../../../flutter/lib/ui/plugins/callback_cache.h +FILE: ../../../flutter/lib/ui/snapshot_delegate.h FILE: ../../../flutter/runtime/dart_service_isolate_unittests.cc FILE: ../../../flutter/shell/common/isolate_configuration.cc FILE: ../../../flutter/shell/common/isolate_configuration.h diff --git a/lib/ui/BUILD.gn b/lib/ui/BUILD.gn index 28791a35af619..06c46bc37f1c8 100644 --- a/lib/ui/BUILD.gn +++ b/lib/ui/BUILD.gn @@ -23,8 +23,8 @@ source_set("ui") { "painting/canvas.h", "painting/codec.cc", "painting/codec.h", - "painting/engine_layer.h", "painting/engine_layer.cc", + "painting/engine_layer.h", "painting/frame_info.cc", "painting/frame_info.h", "painting/gradient.cc", @@ -65,6 +65,7 @@ source_set("ui") { "semantics/semantics_update.h", "semantics/semantics_update_builder.cc", "semantics/semantics_update_builder.h", + "snapshot_delegate.h", "text/asset_manager_font_provider.cc", "text/asset_manager_font_provider.h", "text/font_collection.cc", diff --git a/lib/ui/compositing/scene.cc b/lib/ui/compositing/scene.cc index 735ce44197921..3629637688a2a 100644 --- a/lib/ui/compositing/scene.cc +++ b/lib/ui/compositing/scene.cc @@ -53,46 +53,6 @@ void Scene::dispose() { ClearDartWrapper(); } -static sk_sp CreateSceneSnapshot(GrContext* context, - sk_sp picture, - const SkSize& size) { - TRACE_EVENT0("flutter", "CreateSceneSnapshot"); - auto image_info = - SkImageInfo::MakeN32Premul(SkISize::Make(size.width(), size.height())); - - sk_sp surface; - - if (context) { - surface = SkSurface::MakeRenderTarget(context, SkBudgeted::kNo, image_info); - } - - if (!surface) { - surface = SkSurface::MakeRaster(image_info); - } - - if (!surface) { - return nullptr; - } - - auto canvas = surface->getCanvas(); - - if (!canvas) { - return nullptr; - } - - if (picture) { - canvas->drawPicture(picture.get()); - } - - auto snapshot = surface->makeImageSnapshot(); - - if (!snapshot) { - return nullptr; - } - - return snapshot->makeRasterImage(); -} - Dart_Handle Scene::toImage(uint32_t width, uint32_t height, Dart_Handle raw_image_callback) { @@ -110,67 +70,70 @@ Dart_Handle Scene::toImage(uint32_t width, } auto dart_state = UIDartState::Current(); - auto image_callback = std::make_unique( dart_state, raw_image_callback); + auto unref_queue = dart_state->GetSkiaUnrefQueue(); + auto ui_task_runner = dart_state->GetTaskRunners().GetUITaskRunner(); + auto gpu_task_runner = dart_state->GetTaskRunners().GetGPUTaskRunner(); + auto snapshot_delegate = dart_state->GetSnapshotDelegate(); // We can't create an image on this task runner because we don't have a // graphics context. Even if we did, it would be slow anyway. Also, this // thread owns the sole reference to the layer tree. So we flatten the layer // tree into a picture and use that as the thread transport mechanism. - auto bounds_size = SkSize::Make(width, height); - auto picture = m_layerTree->Flatten(SkRect::MakeSize(bounds_size)); + auto picture_bounds = SkISize::Make(width, height); + auto picture = m_layerTree->Flatten(SkRect::MakeWH(width, height)); + if (!picture) { // Already in Dart scope. return tonic::ToDart("Could not flatten scene into a layer tree."); } - auto resource_context = dart_state->GetResourceContext(); - auto ui_task_runner = dart_state->GetTaskRunners().GetUITaskRunner(); - auto unref_queue = dart_state->GetSkiaUnrefQueue(); - - // The picture has been prepared on the UI thread. - dart_state->GetTaskRunners().GetIOTaskRunner()->PostTask( - fml::MakeCopyable([picture = std::move(picture), // - bounds_size, // - resource_context = std::move(resource_context), // - ui_task_runner = std::move(ui_task_runner), // - image_callback = std::move(image_callback), // - unref_queue = std::move(unref_queue) // - ]() mutable { - // Snapshot the picture on the IO thread that contains an optional - // GrContext. - auto image = CreateSceneSnapshot(resource_context.get(), - std::move(picture), bounds_size); - - // Send the image back to the UI thread for submission back to the - // framework. - ui_task_runner->PostTask( - fml::MakeCopyable([image = std::move(image), // - image_callback = std::move(image_callback), // - unref_queue = std::move(unref_queue) // - ]() mutable { - auto dart_state = image_callback->dart_state().lock(); - if (!dart_state) { - // The root isolate could have died in the meantime. - return; - } - tonic::DartState::Scope scope(dart_state); - - if (!image) { - tonic::DartInvoke(image_callback->Get(), {Dart_Null()}); - return; - } - - auto dart_image = CanvasImage::Create(); - dart_image->set_image({std::move(image), std::move(unref_queue)}); - auto raw_dart_image = tonic::ToDart(std::move(dart_image)); - - // All done! - tonic::DartInvoke(image_callback->Get(), {raw_dart_image}); - })); - })); + auto ui_task = fml::MakeCopyable([ui_task_runner, + image_callback = std::move(image_callback), + unref_queue]( + sk_sp raster_image) mutable { + // Send the raster image back to the UI thread for submission to the + // framework. + ui_task_runner->PostTask(fml::MakeCopyable([raster_image, + image_callback = + std::move(image_callback), + unref_queue]() mutable { + auto dart_state = image_callback->dart_state().lock(); + if (!dart_state) { + // The root isolate could have died in the meantime. + return; + } + tonic::DartState::Scope scope(dart_state); + + if (!raster_image) { + tonic::DartInvoke(image_callback->Get(), {Dart_Null()}); + return; + } + + auto dart_image = CanvasImage::Create(); + dart_image->set_image({std::move(raster_image), std::move(unref_queue)}); + auto raw_dart_image = tonic::ToDart(std::move(dart_image)); + + // All done! + tonic::DartInvoke(image_callback->Get(), {raw_dart_image}); + })); + }); + + auto gpu_task = fml::MakeCopyable([gpu_task_runner, picture, picture_bounds, + snapshot_delegate, ui_task]() { + gpu_task_runner->PostTask([snapshot_delegate, picture, picture_bounds, + ui_task]() { + // Snapshot the picture on the GPU thread. This thread has access to the + // GPU contexts that may contain the sole references to texture backed + // images in the picture. + ui_task(snapshot_delegate->MakeRasterSnapshot(picture, picture_bounds)); + }); + }); + + // Kick things off on the GPU. + gpu_task(); return Dart_Null(); } diff --git a/lib/ui/snapshot_delegate.h b/lib/ui/snapshot_delegate.h new file mode 100644 index 0000000000000..ceca0e7b35cd7 --- /dev/null +++ b/lib/ui/snapshot_delegate.h @@ -0,0 +1,21 @@ +// Copyright 2018 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. + +#ifndef FLUTTER_LIB_UI_SNAPSHOT_DELEGATE_H_ +#define FLUTTER_LIB_UI_SNAPSHOT_DELEGATE_H_ + +#include "third_party/skia/include/core/SkImage.h" +#include "third_party/skia/include/core/SkPicture.h" + +namespace blink { + +class SnapshotDelegate { + public: + virtual sk_sp MakeRasterSnapshot(sk_sp picture, + SkISize picture_size) = 0; +}; + +} // namespace blink + +#endif // FLUTTER_LIB_UI_SNAPSHOT_DELEGATE_H_ diff --git a/lib/ui/ui_dart_state.cc b/lib/ui/ui_dart_state.cc index 0d762f785262d..3903b4b23c736 100644 --- a/lib/ui/ui_dart_state.cc +++ b/lib/ui/ui_dart_state.cc @@ -16,6 +16,7 @@ namespace blink { UIDartState::UIDartState(TaskRunners task_runners, TaskObserverAdd add_callback, TaskObserverRemove remove_callback, + fml::WeakPtr snapshot_delegate, fml::WeakPtr resource_context, fml::RefPtr skia_unref_queue, std::string advisory_script_uri, @@ -25,6 +26,7 @@ UIDartState::UIDartState(TaskRunners task_runners, : task_runners_(std::move(task_runners)), add_callback_(std::move(add_callback)), remove_callback_(std::move(remove_callback)), + snapshot_delegate_(std::move(snapshot_delegate)), resource_context_(std::move(resource_context)), advisory_script_uri_(std::move(advisory_script_uri)), advisory_script_entrypoint_(std::move(advisory_script_entrypoint)), @@ -99,6 +101,10 @@ void UIDartState::AddOrRemoveTaskObserver(bool add) { } } +fml::WeakPtr UIDartState::GetSnapshotDelegate() const { + return snapshot_delegate_; +} + fml::WeakPtr UIDartState::GetResourceContext() const { return resource_context_; } diff --git a/lib/ui/ui_dart_state.h b/lib/ui/ui_dart_state.h index dea3e9b650447..2fafb0537ae30 100644 --- a/lib/ui/ui_dart_state.h +++ b/lib/ui/ui_dart_state.h @@ -15,6 +15,7 @@ #include "flutter/fml/build_config.h" #include "flutter/fml/memory/weak_ptr.h" #include "flutter/lib/ui/isolate_name_server/isolate_name_server.h" +#include "flutter/lib/ui/snapshot_delegate.h" #include "third_party/dart/runtime/include/dart_api.h" #include "third_party/skia/include/gpu/GrContext.h" #include "third_party/tonic/dart_microtask_queue.h" @@ -47,6 +48,8 @@ class UIDartState : public tonic::DartState { fml::RefPtr GetSkiaUnrefQueue() const; + fml::WeakPtr GetSnapshotDelegate() const; + fml::WeakPtr GetResourceContext() const; IsolateNameServer* GetIsolateNameServer(); @@ -68,6 +71,7 @@ class UIDartState : public tonic::DartState { UIDartState(TaskRunners task_runners, TaskObserverAdd add_callback, TaskObserverRemove remove_callback, + fml::WeakPtr snapshot_delegate, fml::WeakPtr resource_context, fml::RefPtr skia_unref_queue, std::string advisory_script_uri, @@ -89,6 +93,7 @@ class UIDartState : public tonic::DartState { const TaskRunners task_runners_; const TaskObserverAdd add_callback_; const TaskObserverRemove remove_callback_; + fml::WeakPtr snapshot_delegate_; fml::WeakPtr resource_context_; const std::string advisory_script_uri_; const std::string advisory_script_entrypoint_; diff --git a/runtime/dart_isolate.cc b/runtime/dart_isolate.cc index ef62d141b3e77..784f650f6fdb0 100644 --- a/runtime/dart_isolate.cc +++ b/runtime/dart_isolate.cc @@ -38,6 +38,7 @@ std::weak_ptr DartIsolate::CreateRootIsolate( fml::RefPtr shared_snapshot, TaskRunners task_runners, std::unique_ptr window, + fml::WeakPtr snapshot_delegate, fml::WeakPtr resource_context, fml::RefPtr unref_queue, std::string advisory_script_uri, @@ -54,14 +55,15 @@ std::weak_ptr DartIsolate::CreateRootIsolate( // isolate lifecycle is entirely managed by the VM). auto root_embedder_data = std::make_unique>( std::make_shared( - vm, // VM - std::move(isolate_snapshot), // isolate snapshot - std::move(shared_snapshot), // shared snapshot - task_runners, // task runners - std::move(resource_context), // resource context - std::move(unref_queue), // skia unref queue - advisory_script_uri, // advisory URI - advisory_script_entrypoint, // advisory entrypoint + vm, // VM + std::move(isolate_snapshot), // isolate snapshot + std::move(shared_snapshot), // shared snapshot + task_runners, // task runners + std::move(snapshot_delegate), // snapshot delegate + std::move(resource_context), // resource context + std::move(unref_queue), // skia unref queue + advisory_script_uri, // advisory URI + advisory_script_entrypoint, // advisory entrypoint nullptr // child isolate preparer will be set when this isolate is // prepared to run )); @@ -101,6 +103,7 @@ DartIsolate::DartIsolate(DartVM* vm, fml::RefPtr isolate_snapshot, fml::RefPtr shared_snapshot, TaskRunners task_runners, + fml::WeakPtr snapshot_delegate, fml::WeakPtr resource_context, fml::RefPtr unref_queue, std::string advisory_script_uri, @@ -109,6 +112,7 @@ DartIsolate::DartIsolate(DartVM* vm, : UIDartState(std::move(task_runners), vm->GetSettings().task_observer_add, vm->GetSettings().task_observer_remove, + std::move(snapshot_delegate), std::move(resource_context), std::move(unref_queue), advisory_script_uri, @@ -520,6 +524,7 @@ Dart_Isolate DartIsolate::DartCreateAndStartServiceIsolate( vm->GetSharedSnapshot(), // shared snapshot null_task_runners, // task runners nullptr, // window + {}, // snapshot delegate {}, // resource context {}, // unref queue advisory_script_uri == nullptr ? "" @@ -630,6 +635,7 @@ DartIsolate::CreateDartVMAndEmbedderObjectPair( (*raw_embedder_isolate)->GetIsolateSnapshot(), // isolate_snapshot (*raw_embedder_isolate)->GetSharedSnapshot(), // shared_snapshot null_task_runners, // task_runners + fml::WeakPtr{}, // snapshot_delegate fml::WeakPtr{}, // resource_context nullptr, // unref_queue advisory_script_uri, // advisory_script_uri diff --git a/runtime/dart_isolate.h b/runtime/dart_isolate.h index f2167364effdd..e17ba08c66be0 100644 --- a/runtime/dart_isolate.h +++ b/runtime/dart_isolate.h @@ -12,6 +12,7 @@ #include "flutter/fml/compiler_specific.h" #include "flutter/fml/macros.h" #include "flutter/fml/mapping.h" +#include "flutter/lib/ui/snapshot_delegate.h" #include "flutter/lib/ui/ui_dart_state.h" #include "flutter/lib/ui/window/window.h" #include "flutter/runtime/dart_snapshot.h" @@ -44,6 +45,7 @@ class DartIsolate : public UIDartState { fml::RefPtr shared_snapshot, TaskRunners task_runners, std::unique_ptr window, + fml::WeakPtr snapshot_delegate, fml::WeakPtr resource_context, fml::RefPtr unref_queue, std::string advisory_script_uri, @@ -54,6 +56,7 @@ class DartIsolate : public UIDartState { fml::RefPtr isolate_snapshot, fml::RefPtr shared_snapshot, TaskRunners task_runners, + fml::WeakPtr snapshot_delegate, fml::WeakPtr resource_context, fml::RefPtr unref_queue, std::string advisory_script_uri, diff --git a/runtime/dart_isolate_unittests.cc b/runtime/dart_isolate_unittests.cc index f876d349a2648..44547d3190139 100644 --- a/runtime/dart_isolate_unittests.cc +++ b/runtime/dart_isolate_unittests.cc @@ -35,6 +35,7 @@ TEST_F(DartIsolateTest, RootIsolateCreationAndShutdown) { vm->GetSharedSnapshot(), // shared snapshot std::move(task_runners), // task runners nullptr, // window + {}, // snapshot delegate {}, // resource context nullptr, // unref qeueue "main.dart", // advisory uri @@ -64,6 +65,7 @@ TEST_F(DartIsolateTest, IsolateShutdownCallbackIsInIsolateScope) { vm->GetSharedSnapshot(), // shared snapshot std::move(task_runners), // task runners nullptr, // window + {}, // snapshot delegate {}, // resource context nullptr, // unref qeueue "main.dart", // advisory uri diff --git a/runtime/runtime_controller.cc b/runtime/runtime_controller.cc index 956a6a6a862c7..ace1b9b7a2183 100644 --- a/runtime/runtime_controller.cc +++ b/runtime/runtime_controller.cc @@ -24,6 +24,7 @@ RuntimeController::RuntimeController( fml::RefPtr p_isolate_snapshot, fml::RefPtr p_shared_snapshot, TaskRunners p_task_runners, + fml::WeakPtr p_snapshot_delegate, fml::WeakPtr p_resource_context, fml::RefPtr p_unref_queue, std::string p_advisory_script_uri, @@ -33,6 +34,7 @@ RuntimeController::RuntimeController( std::move(p_isolate_snapshot), std::move(p_shared_snapshot), std::move(p_task_runners), + std::move(p_snapshot_delegate), std::move(p_resource_context), std::move(p_unref_queue), std::move(p_advisory_script_uri), @@ -45,6 +47,7 @@ RuntimeController::RuntimeController( fml::RefPtr p_isolate_snapshot, fml::RefPtr p_shared_snapshot, TaskRunners p_task_runners, + fml::WeakPtr p_snapshot_delegate, fml::WeakPtr p_resource_context, fml::RefPtr p_unref_queue, std::string p_advisory_script_uri, @@ -55,6 +58,7 @@ RuntimeController::RuntimeController( isolate_snapshot_(std::move(p_isolate_snapshot)), shared_snapshot_(std::move(p_shared_snapshot)), task_runners_(p_task_runners), + snapshot_delegate_(p_snapshot_delegate), resource_context_(p_resource_context), unref_queue_(p_unref_queue), advisory_script_uri_(p_advisory_script_uri), @@ -66,6 +70,7 @@ RuntimeController::RuntimeController( shared_snapshot_, task_runners_, std::make_unique(this), + snapshot_delegate_, resource_context_, unref_queue_, p_advisory_script_uri, @@ -114,6 +119,7 @@ std::unique_ptr RuntimeController::Clone() const { isolate_snapshot_, // shared_snapshot_, // task_runners_, // + snapshot_delegate_, // resource_context_, // unref_queue_, // advisory_script_uri_, // diff --git a/runtime/runtime_controller.h b/runtime/runtime_controller.h index ac1bfca1f9333..839fcd6a327e0 100644 --- a/runtime/runtime_controller.h +++ b/runtime/runtime_controller.h @@ -32,6 +32,7 @@ class RuntimeController final : public WindowClient { fml::RefPtr isolate_snapshot, fml::RefPtr shared_snapshot, TaskRunners task_runners, + fml::WeakPtr snapshot_delegate, fml::WeakPtr resource_context, fml::RefPtr unref_queue, std::string advisory_script_uri, @@ -112,6 +113,7 @@ class RuntimeController final : public WindowClient { fml::RefPtr isolate_snapshot_; fml::RefPtr shared_snapshot_; TaskRunners task_runners_; + fml::WeakPtr snapshot_delegate_; fml::WeakPtr resource_context_; fml::RefPtr unref_queue_; std::string advisory_script_uri_; @@ -125,6 +127,7 @@ class RuntimeController final : public WindowClient { fml::RefPtr isolate_snapshot, fml::RefPtr shared_snapshot, TaskRunners task_runners, + fml::WeakPtr snapshot_delegate, fml::WeakPtr resource_context, fml::RefPtr unref_queue, std::string advisory_script_uri, diff --git a/shell/common/engine.cc b/shell/common/engine.cc index 3ab484c46f37c..59cff299b7ab0 100644 --- a/shell/common/engine.cc +++ b/shell/common/engine.cc @@ -45,6 +45,7 @@ Engine::Engine(Delegate& delegate, blink::TaskRunners task_runners, blink::Settings settings, std::unique_ptr animator, + fml::WeakPtr snapshot_delegate, fml::WeakPtr resource_context, fml::RefPtr unref_queue) : delegate_(delegate), @@ -62,6 +63,7 @@ Engine::Engine(Delegate& delegate, std::move(isolate_snapshot), // isolate snapshot std::move(shared_snapshot), // shared snapshot std::move(task_runners), // task runners + std::move(snapshot_delegate), // snapshot delegate std::move(resource_context), // resource context std::move(unref_queue), // skia unref queue settings_.advisory_script_uri, // advisory script uri diff --git a/shell/common/engine.h b/shell/common/engine.h index 06436ce3683d0..0f79eeeb31c00 100644 --- a/shell/common/engine.h +++ b/shell/common/engine.h @@ -14,6 +14,7 @@ #include "flutter/fml/memory/weak_ptr.h" #include "flutter/lib/ui/semantics/custom_accessibility_action.h" #include "flutter/lib/ui/semantics/semantics_node.h" +#include "flutter/lib/ui/snapshot_delegate.h" #include "flutter/lib/ui/text/font_collection.h" #include "flutter/lib/ui/window/platform_message.h" #include "flutter/lib/ui/window/viewport_metrics.h" @@ -56,6 +57,7 @@ class Engine final : public blink::RuntimeDelegate { blink::TaskRunners task_runners, blink::Settings settings, std::unique_ptr animator, + fml::WeakPtr snapshot_delegate, fml::WeakPtr resource_context, fml::RefPtr unref_queue); diff --git a/shell/common/rasterizer.cc b/shell/common/rasterizer.cc index 6f08b2afd0b7e..9a870326dd2d5 100644 --- a/shell/common/rasterizer.cc +++ b/shell/common/rasterizer.cc @@ -39,6 +39,10 @@ fml::WeakPtr Rasterizer::GetWeakPtr() const { return weak_factory_.GetWeakPtr(); } +fml::WeakPtr Rasterizer::GetSnapshotDelegate() const { + return weak_factory_.GetWeakPtr(); +} + void Rasterizer::Setup(std::unique_ptr surface) { surface_ = std::move(surface); compositor_context_->OnGrContextCreated(); @@ -89,6 +93,53 @@ void Rasterizer::Draw( } } +sk_sp Rasterizer::MakeRasterSnapshot(sk_sp picture, + SkISize picture_size) { + TRACE_EVENT0("flutter", __FUNCTION__); + + sk_sp surface; + if (surface_ == nullptr || surface_->GetContext() == nullptr) { + // Raster surface is fine if there is no on screen surface. This might + // happen in case of software rendering. + surface = SkSurface::MakeRaster(SkImageInfo::MakeN32Premul(picture_size)); + } else { + // When there is an on screen surface, we need a render target SkSurface + // because we want to access texture backed images. + surface = SkSurface::MakeRenderTarget( + surface_->GetContext(), // context + SkBudgeted::kNo, // budgeted + SkImageInfo::MakeN32Premul(picture_size) // image info + ); + } + + if (surface == nullptr || surface->getCanvas() == nullptr) { + return nullptr; + } + + surface->getCanvas()->drawPicture(picture.get()); + + surface->getCanvas()->flush(); + + sk_sp device_snapshot; + { + TRACE_EVENT0("flutter", "MakeDeviceSnpashot"); + device_snapshot = surface->makeImageSnapshot(); + } + + if (device_snapshot == nullptr) { + return nullptr; + } + + { + TRACE_EVENT0("flutter", "DeviceHostTransfer"); + if (auto raster_image = device_snapshot->makeRasterImage()) { + return raster_image; + } + } + + return nullptr; +} + void Rasterizer::DoDraw(std::unique_ptr layer_tree) { if (!layer_tree || !surface_) { return; diff --git a/shell/common/rasterizer.h b/shell/common/rasterizer.h index 1d3c03d8953df..5bffb104f8519 100644 --- a/shell/common/rasterizer.h +++ b/shell/common/rasterizer.h @@ -13,12 +13,13 @@ #include "flutter/fml/closure.h" #include "flutter/fml/memory/weak_ptr.h" #include "flutter/fml/synchronization/waitable_event.h" +#include "flutter/lib/ui/snapshot_delegate.h" #include "flutter/shell/common/surface.h" #include "flutter/synchronization/pipeline.h" namespace shell { -class Rasterizer final { +class Rasterizer final : public blink::SnapshotDelegate { public: Rasterizer(blink::TaskRunners task_runners); @@ -33,6 +34,8 @@ class Rasterizer final { fml::WeakPtr GetWeakPtr() const; + fml::WeakPtr GetSnapshotDelegate() const; + flow::LayerTree* GetLastLayerTree(); void DrawLastLayerTree(); @@ -75,6 +78,10 @@ class Rasterizer final { fml::closure next_frame_callback_; fml::WeakPtrFactory weak_factory_; + // |blink::SnapshotDelegate| + sk_sp MakeRasterSnapshot(sk_sp picture, + SkISize picture_size) override; + void DoDraw(std::unique_ptr layer_tree); bool DrawToSurface(flow::LayerTree& layer_tree); diff --git a/shell/common/shell.cc b/shell/common/shell.cc index 8f07f500588a4..1139be8531c94 100644 --- a/shell/common/shell.cc +++ b/shell/common/shell.cc @@ -92,31 +92,37 @@ std::unique_ptr Shell::CreateShellOnPlatformThread( // Create the rasterizer on the GPU thread. fml::AutoResetWaitableEvent gpu_latch; std::unique_ptr rasterizer; + fml::WeakPtr snapshot_delegate; fml::TaskRunner::RunNowOrPostTask( task_runners.GetGPUTaskRunner(), [&gpu_latch, // &rasterizer, // on_create_rasterizer, // - shell = shell.get() // + shell = shell.get(), // + &snapshot_delegate // ]() { if (auto new_rasterizer = on_create_rasterizer(*shell)) { rasterizer = std::move(new_rasterizer); + snapshot_delegate = rasterizer->GetSnapshotDelegate(); } gpu_latch.Signal(); }); + gpu_latch.Wait(); + // Create the engine on the UI thread. fml::AutoResetWaitableEvent ui_latch; std::unique_ptr engine; fml::TaskRunner::RunNowOrPostTask( shell->GetTaskRunners().GetUITaskRunner(), - fml::MakeCopyable([&ui_latch, // - &engine, // - shell = shell.get(), // - isolate_snapshot = std::move(isolate_snapshot), // - shared_snapshot = std::move(shared_snapshot), // - vsync_waiter = std::move(vsync_waiter), // - resource_context = std::move(resource_context), // - unref_queue = std::move(unref_queue) // + fml::MakeCopyable([&ui_latch, // + &engine, // + shell = shell.get(), // + isolate_snapshot = std::move(isolate_snapshot), // + shared_snapshot = std::move(shared_snapshot), // + vsync_waiter = std::move(vsync_waiter), // + snapshot_delegate = std::move(snapshot_delegate), // + resource_context = std::move(resource_context), // + unref_queue = std::move(unref_queue) // ]() mutable { const auto& task_runners = shell->GetTaskRunners(); @@ -125,20 +131,20 @@ std::unique_ptr Shell::CreateShellOnPlatformThread( auto animator = std::make_unique(*shell, task_runners, std::move(vsync_waiter)); - engine = std::make_unique(*shell, // - shell->GetDartVM(), // - std::move(isolate_snapshot), // - std::move(shared_snapshot), // - task_runners, // - shell->GetSettings(), // - std::move(animator), // - std::move(resource_context), // - std::move(unref_queue) // + engine = std::make_unique(*shell, // + shell->GetDartVM(), // + std::move(isolate_snapshot), // + std::move(shared_snapshot), // + task_runners, // + shell->GetSettings(), // + std::move(animator), // + std::move(snapshot_delegate), // + std::move(resource_context), // + std::move(unref_queue) // ); ui_latch.Signal(); })); - gpu_latch.Wait(); ui_latch.Wait(); // We are already on the platform thread. So there is no platform latch to // wait on. From 427915e2fb0f63fafe36b0242a324588a54400db Mon Sep 17 00:00:00 2001 From: Dan Field Date: Mon, 22 Oct 2018 19:53:04 -0700 Subject: [PATCH 0058/1537] Allow FlutterViewController to specify whether its FlutterView is opaque (#6570) * Allow FlutterViewController to specify whether its FlutterView is opaque --- .../framework/Headers/FlutterViewController.h | 9 +++ .../darwin/ios/framework/Source/FlutterView.h | 15 +++++ .../ios/framework/Source/FlutterView.mm | 58 ++++++++++--------- .../framework/Source/FlutterViewController.mm | 27 ++++++++- 4 files changed, 80 insertions(+), 29 deletions(-) diff --git a/shell/platform/darwin/ios/framework/Headers/FlutterViewController.h b/shell/platform/darwin/ios/framework/Headers/FlutterViewController.h index 5459c17f4f8e6..27b7330ba3457 100644 --- a/shell/platform/darwin/ios/framework/Headers/FlutterViewController.h +++ b/shell/platform/darwin/ios/framework/Headers/FlutterViewController.h @@ -93,6 +93,15 @@ FLUTTER_EXPORT */ @property(strong, nonatomic) UIView* splashScreenView; +/** + * Controls whether the created view will be opaque or not. + * + * Default is `YES`. Note that setting this to `NO` may negatively impact performance + * when using hardware acceleration, and toggling this will trigger a re-layout of the + * view. + */ +@property(nonatomic, getter=isViewOpaque) BOOL viewOpaque; + @end #endif // FLUTTER_FLUTTERVIEWCONTROLLER_H_ diff --git a/shell/platform/darwin/ios/framework/Source/FlutterView.h b/shell/platform/darwin/ios/framework/Source/FlutterView.h index 5e3d303401725..e9cd37281e63a 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterView.h +++ b/shell/platform/darwin/ios/framework/Source/FlutterView.h @@ -9,10 +9,25 @@ #include +#include "flutter/fml/memory/weak_ptr.h" +#include "flutter/shell/common/shell.h" #include "flutter/shell/platform/darwin/ios/ios_surface.h" +@protocol FlutterScreenshotDelegate + +- (shell::Rasterizer::Screenshot)takeScreenshot:(shell::Rasterizer::ScreenshotType)type + asBase64Encoded:(BOOL)base64Encode; + +@end + @interface FlutterView : UIView +- (instancetype)init NS_UNAVAILABLE; +- (instancetype)initWithFrame:(CGRect)frame NS_UNAVAILABLE; +- (instancetype)initWithCoder:(NSCoder*)aDecoder NS_UNAVAILABLE; + +- (instancetype)initWithDelegate:(id)delegate + opaque:(BOOL)opaque NS_DESIGNATED_INITIALIZER; - (std::unique_ptr)createSurface; @end diff --git a/shell/platform/darwin/ios/framework/Source/FlutterView.mm b/shell/platform/darwin/ios/framework/Source/FlutterView.mm index 32c54f632992f..63ee05acc832c 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterView.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterView.mm @@ -12,8 +12,6 @@ #include "flutter/fml/trace_event.h" #include "flutter/shell/common/platform_view.h" #include "flutter/shell/common/rasterizer.h" -#include "flutter/shell/common/shell.h" -#include "flutter/shell/platform/darwin/ios/framework/Source/FlutterViewController_Internal.h" #include "flutter/shell/platform/darwin/ios/ios_surface_gl.h" #include "flutter/shell/platform/darwin/ios/ios_surface_software.h" #include "third_party/skia/include/utils/mac/SkCGUtils.h" @@ -24,28 +22,42 @@ @interface FlutterView () @implementation FlutterView -- (FlutterViewController*)flutterViewController { - // Find the first view controller in the responder chain and see if it is a FlutterViewController. - for (UIResponder* responder = self.nextResponder; responder != nil; - responder = responder.nextResponder) { - if ([responder isKindOfClass:[UIViewController class]]) { - if ([responder isKindOfClass:[FlutterViewController class]]) { - return reinterpret_cast(responder); - } else { - // Should only happen if a non-FlutterViewController tries to somehow (via dynamic class - // resolution or reparenting) set a FlutterView as its view. - return nil; - } - } +id _delegate; + +- (instancetype)init { + @throw([NSException exceptionWithName:@"FlutterView must initWithDelegate" + reason:nil + userInfo:nil]); +} + +- (instancetype)initWithFrame:(CGRect)frame { + @throw([NSException exceptionWithName:@"FlutterView must initWithDelegate" + reason:nil + userInfo:nil]); +} + +- (instancetype)initWithCoder:(NSCoder*)aDecoder { + @throw([NSException exceptionWithName:@"FlutterView must initWithDelegate" + reason:nil + userInfo:nil]); +} + +- (instancetype)initWithDelegate:(id)delegate opaque:(BOOL)opaque { + FML_DCHECK(delegate) << "Delegate must not be nil."; + self = [super initWithFrame:CGRectNull]; + + if (self) { + _delegate = delegate; + self.layer.opaque = opaque; } - return nil; + + return self; } - (void)layoutSubviews { if ([self.layer isKindOfClass:[CAEAGLLayer class]]) { CAEAGLLayer* layer = reinterpret_cast(self.layer); layer.allowsGroupOpacity = YES; - layer.opaque = YES; CGFloat screenScale = [UIScreen mainScreen].scale; layer.contentsScale = screenScale; layer.rasterizationScale = screenScale; @@ -84,16 +96,8 @@ - (void)drawLayer:(CALayer*)layer inContext:(CGContextRef)context { return; } - FlutterViewController* controller = [self flutterViewController]; - - if (controller == nil) { - return; - } - - auto& shell = [controller shell]; - - auto screenshot = shell.Screenshot(shell::Rasterizer::ScreenshotType::UncompressedImage, - false /* base64 encode */); + auto screenshot = [_delegate takeScreenshot:shell::Rasterizer::ScreenshotType::UncompressedImage + asBase64Encoded:NO]; if (!screenshot.data || screenshot.data->isEmpty() || screenshot.frame_size.isEmpty()) { return; diff --git a/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm b/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm index 9327e8fbbb5e6..eeab410c37a0a 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm @@ -22,7 +22,7 @@ #include "flutter/shell/platform/darwin/ios/framework/Source/platform_message_response_darwin.h" #include "flutter/shell/platform/darwin/ios/platform_view_ios.h" -@interface FlutterViewController () +@interface FlutterViewController () @property(nonatomic, readonly) NSMutableDictionary* pluginPublications; @end @@ -58,6 +58,7 @@ @implementation FlutterViewController { blink::ViewportMetrics _viewportMetrics; int64_t _nextTextureId; BOOL _initialized; + BOOL _viewOpaque; fml::scoped_nsobject _publisher; } @@ -75,6 +76,8 @@ - (instancetype)initWithProject:(FlutterDartProject*)projectOrNil else _dartProject.reset([projectOrNil retain]); + self.viewOpaque = YES; + [self performCommonViewControllerInitialization]; } @@ -146,7 +149,7 @@ - (BOOL)setupShell { _threadHost.io_thread->GetTaskRunner() // io ); - _flutterView.reset([[FlutterView alloc] init]); + _flutterView.reset([[FlutterView alloc] initWithDelegate:self opaque:self.isViewOpaque]); // Lambda captures by pointers to ObjC objects are fine here because the create call is // synchronous. @@ -180,6 +183,18 @@ - (BOOL)setupShell { return true; } +- (BOOL)isViewOpaque { + return _viewOpaque; +} + +- (void)viewOpaque:(BOOL)value { + _viewOpaque = value; + if (_flutterView.get().layer.opaque != value) { + _flutterView.get().layer.opaque = value; + [_flutterView.get().layer setNeedsLayout]; + } +} + - (void)setupChannels { _localizationChannel.reset([[FlutterMethodChannel alloc] initWithName:@"flutter/localization" @@ -840,6 +855,14 @@ - (void)performAction:(FlutterTextInputAction)action withClient:(int)client { arguments:@[ @(client), actionString ]]; } +#pragma mark - Screenshot Delegate + +- (shell::Rasterizer::Screenshot)takeScreenshot:(shell::Rasterizer::ScreenshotType)type + asBase64Encoded:(BOOL)base64Encode { + FML_DCHECK(_shell) << "Cannot takeScreenshot without a shell"; + return _shell->Screenshot(type, base64Encode); +} + #pragma mark - Orientation updates - (void)onOrientationPreferencesUpdated:(NSNotification*)notification { From 4a18dfffef304d88366aa1d9eed0f4543c83a5af Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Mon, 22 Oct 2018 23:38:02 -0400 Subject: [PATCH 0059/1537] Roll src/third_party/skia ff1aeb953faf..e023ae7c5540 (1 commits) (#6637) https://skia.googlesource.com/skia.git/+log/ff1aeb953faf..e023ae7c5540 Created with: gclient setdep -r src/third_party/skia@e023ae7c5540 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index bf64306057d76..80f8dbf10367f 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'ff1aeb953faf9f68631d5f6086611ff3564344ce', + 'skia_revision': 'e023ae7c554050968581c36bea36a2f9aee3747d', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index f931066393a60..4385fb0a33ef0 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 787b1c3dd9f97adb3814cded8066eb57 +Signature: 16a039c01f7dde47f34577047a50b871 UNUSED LICENSES: From 5dfbc0a072c1ec8c5fbfdd3944e95ad5adac9d04 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Tue, 23 Oct 2018 03:02:34 -0400 Subject: [PATCH 0060/1537] Roll src/third_party/skia e023ae7c5540..1b07dffd979d (1 commits) (#6638) https://skia.googlesource.com/skia.git/+log/e023ae7c5540..1b07dffd979d Created with: gclient setdep -r src/third_party/skia@1b07dffd979d The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 80f8dbf10367f..2da0cf57921be 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'e023ae7c554050968581c36bea36a2f9aee3747d', + 'skia_revision': '1b07dffd979d3c9c3734ad9f00a10189c7607693', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 4385fb0a33ef0..2d5df2feb1b51 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 16a039c01f7dde47f34577047a50b871 +Signature: 17c6661249ec9d1e0373dd20acff50ab UNUSED LICENSES: From 324c21a72113e5998ff0a7a067994df1d282b5ea Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Tue, 23 Oct 2018 08:40:34 -0400 Subject: [PATCH 0061/1537] Roll src/third_party/skia 1b07dffd979d..25837bf17019 (1 commits) (#6639) https://skia.googlesource.com/skia.git/+log/1b07dffd979d..25837bf17019 Created with: gclient setdep -r src/third_party/skia@25837bf17019 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 2da0cf57921be..65b7d45fcaa1b 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '1b07dffd979d3c9c3734ad9f00a10189c7607693', + 'skia_revision': '25837bf17019e708eda97c010c51e125947cceab', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 2d5df2feb1b51..7ce2d09c5d7b5 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 17c6661249ec9d1e0373dd20acff50ab +Signature: 2b8de7ed168d1a78e152fd64fd7d0422 UNUSED LICENSES: From c9197e44985f364a77b70d99459fdc4985dd8f11 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Tue, 23 Oct 2018 12:05:35 -0400 Subject: [PATCH 0062/1537] Roll src/third_party/skia 25837bf17019..b46c4d0925ad (6 commits) (#6640) https://skia.googlesource.com/skia.git/+log/25837bf17019..b46c4d0925ad Created with: gclient setdep -r src/third_party/skia@b46c4d0925ad The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 65b7d45fcaa1b..cbe016e5e31f2 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '25837bf17019e708eda97c010c51e125947cceab', + 'skia_revision': 'b46c4d0925ad4ee016fa150893ed9a89a4b74cf8', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 7ce2d09c5d7b5..89edb77a14675 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 2b8de7ed168d1a78e152fd64fd7d0422 +Signature: 2eaadab5c99a9d8080acce23726ed195 UNUSED LICENSES: From 52e48ab84a73e1f4cae415b3a853ef64cfcd4cd1 Mon Sep 17 00:00:00 2001 From: James Clarke Date: Tue, 23 Oct 2018 09:47:53 -0700 Subject: [PATCH 0063/1537] Fix Windows embedding. Appears that #6523 or #6525 introduced a bug for embedder scenarios causing the window native library to be incorrectly initialized and thus incapable of correctly resolving GL functions. This change fixes that. (#6624) --- shell/platform/embedder/embedder.cc | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/shell/platform/embedder/embedder.cc b/shell/platform/embedder/embedder.cc index b8483616b1464..2e226a3d2c034 100644 --- a/shell/platform/embedder/embedder.cc +++ b/shell/platform/embedder/embedder.cc @@ -89,17 +89,17 @@ static bool IsRendererValid(const FlutterRendererConfig* config) { return false; } -#if OS_LINUX || OS_WIN - static void* DefaultGLProcResolver(const char* name) { static fml::RefPtr proc_library = +#if OS_LINUX fml::NativeLibrary::CreateForCurrentProcess(); +#elif OS_WIN // OS_LINUX + fml::NativeLibrary::Create("opengl32.dll"); +#endif // OS_WIN return static_cast( const_cast(proc_library->ResolveSymbol(name))); } -#endif // OS_LINUX || OS_WIN - static shell::Shell::CreateCallback InferOpenGLPlatformViewCreationCallback( const FlutterRendererConfig* config, From e78f86e011b49e634dfcf458378eb8d22f4eaa3e Mon Sep 17 00:00:00 2001 From: Chinmay Garde Date: Tue, 23 Oct 2018 10:46:14 -0700 Subject: [PATCH 0064/1537] Fix mac builds. Only Linux and Windows require default GL proc resolvers. (#6641) --- shell/platform/embedder/embedder.cc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/shell/platform/embedder/embedder.cc b/shell/platform/embedder/embedder.cc index 2e226a3d2c034..d8e1854e6b5df 100644 --- a/shell/platform/embedder/embedder.cc +++ b/shell/platform/embedder/embedder.cc @@ -89,6 +89,7 @@ static bool IsRendererValid(const FlutterRendererConfig* config) { return false; } +#if OS_LINUX || OS_WIN static void* DefaultGLProcResolver(const char* name) { static fml::RefPtr proc_library = #if OS_LINUX @@ -99,6 +100,7 @@ static void* DefaultGLProcResolver(const char* name) { return static_cast( const_cast(proc_library->ResolveSymbol(name))); } +#endif // OS_LINUX || OS_WIN static shell::Shell::CreateCallback InferOpenGLPlatformViewCreationCallback( From 2586e941225726f0429b9e67f4d9b6ab404d7b1e Mon Sep 17 00:00:00 2001 From: Gary Qian Date: Tue, 23 Oct 2018 11:06:21 -0700 Subject: [PATCH 0065/1537] Support all combinations of GetRectsForRange styles (#6591) --- lib/ui/text/paragraph.cc | 5 +- lib/ui/text/paragraph_impl.h | 3 +- lib/ui/text/paragraph_impl_txt.cc | 7 +- lib/ui/text/paragraph_impl_txt.h | 3 +- third_party/txt/src/txt/paragraph.cc | 166 +++++- third_party/txt/src/txt/paragraph.h | 55 +- third_party/txt/tests/paragraph_unittests.cc | 512 ++++++++++++++++++- 7 files changed, 692 insertions(+), 59 deletions(-) diff --git a/lib/ui/text/paragraph.cc b/lib/ui/text/paragraph.cc index 032ee1af4d9bd..1821bf9dd3a7a 100644 --- a/lib/ui/text/paragraph.cc +++ b/lib/ui/text/paragraph.cc @@ -85,8 +85,9 @@ void Paragraph::paint(Canvas* canvas, double x, double y) { } std::vector Paragraph::getRectsForRange(unsigned start, unsigned end) { - return m_paragraphImpl->getRectsForRange(start, end, - txt::Paragraph::RectStyle::kTight); + return m_paragraphImpl->getRectsForRange( + start, end, txt::Paragraph::RectHeightStyle::kTight, + txt::Paragraph::RectWidthStyle::kTight); } Dart_Handle Paragraph::getPositionForOffset(double dx, double dy) { diff --git a/lib/ui/text/paragraph_impl.h b/lib/ui/text/paragraph_impl.h index cf71897d250e4..30ce8a080070d 100644 --- a/lib/ui/text/paragraph_impl.h +++ b/lib/ui/text/paragraph_impl.h @@ -36,7 +36,8 @@ class ParagraphImpl { virtual std::vector getRectsForRange( unsigned start, unsigned end, - txt::Paragraph::RectStyle rect_style) = 0; + txt::Paragraph::RectHeightStyle rect_height_style, + txt::Paragraph::RectWidthStyle rect_width_style) = 0; virtual Dart_Handle getPositionForOffset(double dx, double dy) = 0; diff --git a/lib/ui/text/paragraph_impl_txt.cc b/lib/ui/text/paragraph_impl_txt.cc index cc55638db2680..9f31a3896985d 100644 --- a/lib/ui/text/paragraph_impl_txt.cc +++ b/lib/ui/text/paragraph_impl_txt.cc @@ -64,10 +64,11 @@ void ParagraphImplTxt::paint(Canvas* canvas, double x, double y) { std::vector ParagraphImplTxt::getRectsForRange( unsigned start, unsigned end, - txt::Paragraph::RectStyle rect_style) { + txt::Paragraph::RectHeightStyle rect_height_style, + txt::Paragraph::RectWidthStyle rect_width_style) { std::vector result; - std::vector boxes = - m_paragraph->GetRectsForRange(start, end, rect_style); + std::vector boxes = m_paragraph->GetRectsForRange( + start, end, rect_height_style, rect_width_style); for (const txt::Paragraph::TextBox& box : boxes) { result.emplace_back(box.rect, static_cast(box.direction)); diff --git a/lib/ui/text/paragraph_impl_txt.h b/lib/ui/text/paragraph_impl_txt.h index 665d65b15cce2..eabdcc114b198 100644 --- a/lib/ui/text/paragraph_impl_txt.h +++ b/lib/ui/text/paragraph_impl_txt.h @@ -31,7 +31,8 @@ class ParagraphImplTxt : public ParagraphImpl { std::vector getRectsForRange( unsigned start, unsigned end, - txt::Paragraph::RectStyle rect_style) override; + txt::Paragraph::RectHeightStyle rect_height_style, + txt::Paragraph::RectWidthStyle rect_width_style) override; Dart_Handle getPositionForOffset(double dx, double dy) override; Dart_Handle getWordBoundary(unsigned offset) override; diff --git a/third_party/txt/src/txt/paragraph.cc b/third_party/txt/src/txt/paragraph.cc index 8f6dfd596eab7..270a094a0d947 100644 --- a/third_party/txt/src/txt/paragraph.cc +++ b/third_party/txt/src/txt/paragraph.cc @@ -446,6 +446,11 @@ void Paragraph::Layout(double width, bool force) { line_baselines_.clear(); glyph_lines_.clear(); code_unit_runs_.clear(); + line_max_spacings_.clear(); + line_max_descent_.clear(); + line_max_ascent_.clear(); + max_right_ = FLT_MIN; + min_left_ = FLT_MAX; minikin::Layout layout; SkTextBlobBuilder builder; @@ -703,6 +708,9 @@ void Paragraph::Layout(double width, bool force) { Range(glyph_positions.front().x_pos.start, glyph_positions.back().x_pos.end), line_number, metrics, run.direction()); + + min_left_ = std::min(min_left_, glyph_positions.front().x_pos.start); + max_right_ = std::max(max_right_, glyph_positions.back().x_pos.end); } // for each in glyph_blobs run_x_offset += layout.getAdvance(); @@ -729,8 +737,12 @@ void Paragraph::Layout(double width, bool force) { double max_line_spacing = 0; double max_descent = 0; + SkScalar max_unscaled_ascent = 0; auto update_line_metrics = [&](const SkPaint::FontMetrics& metrics, const TextStyle& style) { + // TODO(garyq): Multipling in the style.height on the first line is + // probably wrong. Figure out how paragraph and line heights are supposed + // to work and fix it. double line_spacing = (line_number == 0) ? -metrics.fAscent * style.height @@ -747,6 +759,8 @@ void Paragraph::Layout(double width, bool force) { double descent = metrics.fDescent * style.height; max_descent = std::max(descent, max_descent); + + max_unscaled_ascent = std::max(-metrics.fAscent, max_unscaled_ascent); }; for (const PaintRecord& paint_record : paint_records) { update_line_metrics(paint_record.metrics(), paint_record.style()); @@ -762,12 +776,20 @@ void Paragraph::Layout(double width, bool force) { update_line_metrics(metrics, style); } + // TODO(garyq): Remove rounding of line heights because it is irrelevant in + // a world of high DPI devices. line_heights_.push_back((line_heights_.empty() ? 0 : line_heights_.back()) + round(max_line_spacing + max_descent)); line_baselines_.push_back(line_heights_.back() - max_descent); y_offset += round(max_line_spacing + prev_max_descent); prev_max_descent = max_descent; + // The max line spacing and ascent have been multiplied by -1 to make math + // in GetRectsForRange more logical/readable. + line_max_spacings_.push_back(max_line_spacing); + line_max_descent_.push_back(max_descent); + line_max_ascent_.push_back(max_unscaled_ascent); + for (PaintRecord& paint_record : paint_records) { paint_record.SetOffset( SkPoint::Make(paint_record.offset().x() + line_x_offset, y_offset)); @@ -1093,10 +1115,30 @@ void Paragraph::PaintShadow(SkCanvas* canvas, std::vector Paragraph::GetRectsForRange( size_t start, size_t end, - RectStyle rect_style) const { - std::map> line_boxes; - + RectHeightStyle rect_height_style, + RectWidthStyle rect_width_style) const { + // Struct that holds calculated metrics for each line. + struct LineBoxMetrics { + std::vector boxes; + // Per-line metrics for max and min coordinates for left and right boxes. + // These metrics cannot be calculated in layout generically because of + // selections that do not cover the whole line. + SkScalar max_right = FLT_MIN; + SkScalar min_left = FLT_MAX; + }; + + std::map line_metrics; + // Text direction of the first line so we can extend the correct side for + // RectWidthStyle::kMax. + TextDirection first_line_dir = TextDirection::ltr; + + // Lines that are actually in the requested range. + size_t max_line = 0; + size_t min_line = INT_MAX; + + // Generate initial boxes and calculate metrics. for (const CodeUnitRun& run : code_unit_runs_) { + // Check to see if we are finished. if (run.code_units.start >= end) break; if (run.code_units.end <= start) @@ -1106,6 +1148,10 @@ std::vector Paragraph::GetRectsForRange( SkScalar top = baseline + run.font_metrics.fAscent; SkScalar bottom = baseline + run.font_metrics.fDescent; + max_line = std::max(run.line_number, max_line); + min_line = std::min(run.line_number, min_line); + + // Calculate left and right. SkScalar left, right; if (run.code_units.start >= start && run.code_units.end <= end) { left = run.x_pos.start; @@ -1122,7 +1168,18 @@ std::vector Paragraph::GetRectsForRange( if (left == SK_ScalarMax || right == SK_ScalarMin) continue; } - line_boxes[run.line_number].emplace_back( + // Keep track of the min and max horizontal coordinates over all lines. Not + // needed for kTight. + if (rect_width_style == RectWidthStyle::kMax) { + line_metrics[run.line_number].max_right = + std::max(line_metrics[run.line_number].max_right, right); + line_metrics[run.line_number].min_left = + std::min(line_metrics[run.line_number].min_left, left); + if (min_line == run.line_number) { + first_line_dir = run.direction; + } + } + line_metrics[run.line_number].boxes.emplace_back( SkRect::MakeLTRB(left, top, right, bottom), run.direction); } @@ -1135,34 +1192,105 @@ std::vector Paragraph::GetRectsForRange( break; if (line.end_including_newline <= start) continue; - if (line_boxes.find(line_number) == line_boxes.end()) { + if (line_metrics.find(line_number) == line_metrics.end()) { if (line.end != line.end_including_newline && line.end >= start && line.end_including_newline <= end) { SkScalar x = line_widths_[line_number]; SkScalar top = (line_number > 0) ? line_heights_[line_number - 1] : 0; SkScalar bottom = line_heights_[line_number]; - line_boxes[line_number].emplace_back( + line_metrics[line_number].boxes.emplace_back( SkRect::MakeLTRB(x, top, x, bottom), TextDirection::ltr); } } } + // "Post-process" metrics and aggregate final rects to return. std::vector boxes; - for (const auto& kv : line_boxes) { - if (rect_style & RectStyle::kTight) { + for (const auto& kv : line_metrics) { + // Handle rect_width_styles. We skip the last line because not everything is + // selected. + if (rect_width_style == RectWidthStyle::kMax && kv.first != max_line) { + if (line_metrics[kv.first].min_left > min_left_ && + (kv.first != min_line || first_line_dir == TextDirection::rtl)) { + line_metrics[kv.first].boxes.emplace_back( + SkRect::MakeLTRB( + min_left_, + line_baselines_[kv.first] - line_max_ascent_[kv.first], + line_metrics[kv.first].min_left, + line_baselines_[kv.first] + line_max_descent_[kv.first]), + TextDirection::rtl); + } + if (line_metrics[kv.first].max_right < max_right_ && + (kv.first != min_line || first_line_dir == TextDirection::ltr)) { + line_metrics[kv.first].boxes.emplace_back( + SkRect::MakeLTRB( + line_metrics[kv.first].max_right, + line_baselines_[kv.first] - line_max_ascent_[kv.first], + max_right_, + line_baselines_[kv.first] + line_max_descent_[kv.first]), + TextDirection::ltr); + } + } + + // Handle rect_height_styles. The height metrics used are all positive to + // make the signage clear here. + if (rect_height_style == RectHeightStyle::kTight) { // Ignore line max height and width and generate tight bounds. - boxes.insert(boxes.end(), kv.second.begin(), kv.second.end()); - } else { - // Set each box to the max height of each line to ensure continuity. - float min_top = DBL_MAX; - float max_bottom = 0; - for (const Paragraph::TextBox& box : kv.second) { - min_top = std::min(box.rect.fTop, min_top); - max_bottom = std::max(box.rect.fBottom, max_bottom); + boxes.insert(boxes.end(), kv.second.boxes.begin(), kv.second.boxes.end()); + } else if (rect_height_style == RectHeightStyle::kMax) { + for (const Paragraph::TextBox& box : kv.second.boxes) { + boxes.emplace_back( + SkRect::MakeLTRB( + box.rect.fLeft, + line_baselines_[kv.first] - line_max_ascent_[kv.first], + box.rect.fRight, + line_baselines_[kv.first] + line_max_descent_[kv.first]), + box.direction); + } + } else if (rect_height_style == + RectHeightStyle::kIncludeLineSpacingMiddle) { + SkScalar adjusted_bottom = + line_baselines_[kv.first] + line_max_descent_[kv.first]; + if (kv.first < line_ranges_.size() - 1) { + adjusted_bottom += (line_max_spacings_[kv.first + 1] - + line_max_ascent_[kv.first + 1]) / + 2; + } + SkScalar adjusted_top = + line_baselines_[kv.first] - line_max_ascent_[kv.first]; + if (kv.first != 0) { + adjusted_top -= + (line_max_spacings_[kv.first] - line_max_ascent_[kv.first]) / 2; } - for (const Paragraph::TextBox& box : kv.second) { - boxes.emplace_back(SkRect::MakeLTRB(box.rect.fLeft, min_top, - box.rect.fRight, max_bottom), + for (const Paragraph::TextBox& box : kv.second.boxes) { + boxes.emplace_back(SkRect::MakeLTRB(box.rect.fLeft, adjusted_top, + box.rect.fRight, adjusted_bottom), + box.direction); + } + } else if (rect_height_style == RectHeightStyle::kIncludeLineSpacingTop) { + for (const Paragraph::TextBox& box : kv.second.boxes) { + SkScalar adjusted_top = + kv.first == 0 + ? line_baselines_[kv.first] - line_max_ascent_[kv.first] + : line_baselines_[kv.first] - line_max_spacings_[kv.first]; + boxes.emplace_back( + SkRect::MakeLTRB( + box.rect.fLeft, adjusted_top, box.rect.fRight, + line_baselines_[kv.first] + line_max_descent_[kv.first]), + box.direction); + } + } else { // kIncludeLineSpacingBottom + for (const Paragraph::TextBox& box : kv.second.boxes) { + SkScalar adjusted_bottom = + line_baselines_[kv.first] + line_max_descent_[kv.first]; + if (kv.first < line_ranges_.size() - 1) { + adjusted_bottom += + -line_max_ascent_[kv.first] + line_max_spacings_[kv.first]; + } + boxes.emplace_back(SkRect::MakeLTRB(box.rect.fLeft, + line_baselines_[kv.first] - + line_max_ascent_[kv.first], + box.rect.fRight, adjusted_bottom), box.direction); } } diff --git a/third_party/txt/src/txt/paragraph.h b/third_party/txt/src/txt/paragraph.h index 637f4e4723f3a..708482aa628f1 100644 --- a/third_party/txt/src/txt/paragraph.h +++ b/third_party/txt/src/txt/paragraph.h @@ -59,19 +59,36 @@ class Paragraph { // Options for various types of bounding boxes provided by // GetRectsForRange(...). - // These options can be individually enabled, for example: - // - // (RectStyle::kTight | RectStyle::kExtendEndOfLine) - // - // provides tight bounding boxes and extends the last box per line to the end - // of the layout area. - enum RectStyle { - kNone = 0x0, // kNone cannot be combined with |. - - // Provide tight bounding boxes that fit heights per span. Otherwise, the - // heights of spans are the max of the heights of the line the span belongs - // in. - kTight = 0x1 + enum class RectHeightStyle { + // Provide tight bounding boxes that fit heights per run. + kTight, + + // The height of the boxes will be the maximum height of all runs in the + // line. All rects in the same line will be the same height. + kMax, + + // Extends the top and/or bottom edge of the bounds to fully cover any line + // spacing. The top edge of each line should be the same as the bottom edge + // of the line above. There should be no gaps in vertical coverage given any + // ParagraphStyle line_height. + // + // The top and bottom of each rect will cover half of the + // space above and half of the space below the line. + kIncludeLineSpacingMiddle, + // The line spacing will be added to the top of the rect. + kIncludeLineSpacingTop, + // The line spacing will be added to the bottom of the rect. + kIncludeLineSpacingBottom + }; + + enum class RectWidthStyle { + // Provide tight bounding boxes that fit widths to the runs of each line + // independently. + kTight, + + // Extends the width of the last rect of each line to match the position of + // the widest rect over all the lines. + kMax }; struct PositionWithAffinity { @@ -158,7 +175,8 @@ class Paragraph { // end glyph indexes, including start and excluding end. std::vector GetRectsForRange(size_t start, size_t end, - RectStyle rect_style) const; + RectHeightStyle rect_height_style, + RectWidthStyle rect_width_style) const; // Returns the index of the glyph that corresponds to the provided coordinate, // with the top left corner as the origin, and +y direction as down. @@ -240,6 +258,15 @@ class Paragraph { std::vector line_baselines_; bool did_exceed_max_lines_; + // Metrics for use in GetRectsForRange(...); + // Per-line max metrics over all runs in a given line. + std::vector line_max_spacings_; + std::vector line_max_descent_; + std::vector line_max_ascent_; + // Overall left and right extremes over all lines. + double max_right_; + double min_left_; + class BidiRun { public: BidiRun(size_t s, size_t e, TextDirection d, const TextStyle& st) diff --git a/third_party/txt/tests/paragraph_unittests.cc b/third_party/txt/tests/paragraph_unittests.cc index 43243da4e97e8..b7589f7e211fd 100644 --- a/third_party/txt/tests/paragraph_unittests.cc +++ b/third_party/txt/tests/paragraph_unittests.cc @@ -892,7 +892,7 @@ TEST_F(ParagraphTest, GetGlyphPositionAtCoordinateParagraph) { text_style.letter_spacing = 1; text_style.word_spacing = 5; text_style.color = SK_ColorBLACK; - text_style.height = 1.5; + text_style.height = 1; builder.PushStyle(text_style); builder.AddText(u16_text); @@ -930,11 +930,11 @@ TEST_F(ParagraphTest, GetGlyphPositionAtCoordinateParagraph) { 18ull); ASSERT_EQ(paragraph->GetGlyphPositionAtCoordinate(20, -80).position, 1ull); ASSERT_EQ(paragraph->GetGlyphPositionAtCoordinate(1, 90).position, 18ull); - ASSERT_EQ(paragraph->GetGlyphPositionAtCoordinate(1, 180).position, 36ull); + ASSERT_EQ(paragraph->GetGlyphPositionAtCoordinate(1, 170).position, 36ull); ASSERT_EQ(paragraph->GetGlyphPositionAtCoordinate(10000, 180).position, - 54ull); - ASSERT_EQ(paragraph->GetGlyphPositionAtCoordinate(70, 180).position, 38ull); - ASSERT_EQ(paragraph->GetGlyphPositionAtCoordinate(1, 270).position, 54ull); + 72ull); + ASSERT_EQ(paragraph->GetGlyphPositionAtCoordinate(70, 180).position, 56ull); + ASSERT_EQ(paragraph->GetGlyphPositionAtCoordinate(1, 270).position, 72ull); ASSERT_EQ(paragraph->GetGlyphPositionAtCoordinate(35, 90).position, 19ull); ASSERT_EQ(paragraph->GetGlyphPositionAtCoordinate(10000, 10000).position, 77ull); @@ -981,15 +981,20 @@ TEST_F(ParagraphTest, DISABLE_ON_WINDOWS(GetRectsForRangeParagraph)) { // Tests for GetRectsForRange() // NOTE: The base truth values may still need adjustment as the specifics // are adjusted. + Paragraph::RectHeightStyle rect_height_style = + Paragraph::RectHeightStyle::kMax; + Paragraph::RectWidthStyle rect_width_style = + Paragraph::RectWidthStyle::kTight; paint.setColor(SK_ColorRED); std::vector boxes = - paragraph->GetRectsForRange(0, 0, Paragraph::RectStyle::kNone); + paragraph->GetRectsForRange(0, 0, rect_height_style, rect_width_style); for (size_t i = 0; i < boxes.size(); ++i) { GetCanvas()->drawRect(boxes[i].rect, paint); } EXPECT_EQ(boxes.size(), 0ull); - boxes = paragraph->GetRectsForRange(0, 1, Paragraph::RectStyle::kNone); + boxes = + paragraph->GetRectsForRange(0, 1, rect_height_style, rect_width_style); for (size_t i = 0; i < boxes.size(); ++i) { GetCanvas()->drawRect(boxes[i].rect, paint); } @@ -1000,7 +1005,8 @@ TEST_F(ParagraphTest, DISABLE_ON_WINDOWS(GetRectsForRangeParagraph)) { EXPECT_FLOAT_EQ(boxes[0].rect.bottom(), 59); paint.setColor(SK_ColorBLUE); - boxes = paragraph->GetRectsForRange(2, 8, Paragraph::RectStyle::kNone); + boxes = + paragraph->GetRectsForRange(2, 8, rect_height_style, rect_width_style); for (size_t i = 0; i < boxes.size(); ++i) { GetCanvas()->drawRect(boxes[i].rect, paint); } @@ -1011,7 +1017,8 @@ TEST_F(ParagraphTest, DISABLE_ON_WINDOWS(GetRectsForRangeParagraph)) { EXPECT_FLOAT_EQ(boxes[0].rect.bottom(), 59); paint.setColor(SK_ColorGREEN); - boxes = paragraph->GetRectsForRange(8, 21, Paragraph::RectStyle::kNone); + boxes = + paragraph->GetRectsForRange(8, 21, rect_height_style, rect_width_style); for (size_t i = 0; i < boxes.size(); ++i) { GetCanvas()->drawRect(boxes[i].rect, paint); } @@ -1022,7 +1029,8 @@ TEST_F(ParagraphTest, DISABLE_ON_WINDOWS(GetRectsForRangeParagraph)) { EXPECT_FLOAT_EQ(boxes[0].rect.bottom(), 59); paint.setColor(SK_ColorRED); - boxes = paragraph->GetRectsForRange(30, 100, Paragraph::RectStyle::kNone); + boxes = + paragraph->GetRectsForRange(30, 100, rect_height_style, rect_width_style); for (size_t i = 0; i < boxes.size(); ++i) { GetCanvas()->drawRect(boxes[i].rect, paint); } @@ -1040,7 +1048,8 @@ TEST_F(ParagraphTest, DISABLE_ON_WINDOWS(GetRectsForRangeParagraph)) { EXPECT_FLOAT_EQ(boxes[3].rect.bottom(), 295); paint.setColor(SK_ColorBLUE); - boxes = paragraph->GetRectsForRange(19, 22, Paragraph::RectStyle::kNone); + boxes = + paragraph->GetRectsForRange(19, 22, rect_height_style, rect_width_style); for (size_t i = 0; i < boxes.size(); ++i) { GetCanvas()->drawRect(boxes[i].rect, paint); } @@ -1051,7 +1060,8 @@ TEST_F(ParagraphTest, DISABLE_ON_WINDOWS(GetRectsForRangeParagraph)) { EXPECT_FLOAT_EQ(boxes[0].rect.bottom(), 59); paint.setColor(SK_ColorRED); - boxes = paragraph->GetRectsForRange(21, 21, Paragraph::RectStyle::kNone); + boxes = + paragraph->GetRectsForRange(21, 21, rect_height_style, rect_width_style); for (size_t i = 0; i < boxes.size(); ++i) { GetCanvas()->drawRect(boxes[i].rect, paint); } @@ -1101,15 +1111,20 @@ TEST_F(ParagraphTest, DISABLE_ON_WINDOWS(GetRectsForRangeTight)) { // Tests for GetRectsForRange() // NOTE: The base truth values may still need adjustment as the specifics // are adjusted. + Paragraph::RectHeightStyle rect_height_style = + Paragraph::RectHeightStyle::kTight; + Paragraph::RectWidthStyle rect_width_style = + Paragraph::RectWidthStyle::kTight; paint.setColor(SK_ColorRED); std::vector boxes = - paragraph->GetRectsForRange(0, 0, Paragraph::RectStyle::kTight); + paragraph->GetRectsForRange(0, 0, rect_height_style, rect_width_style); for (size_t i = 0; i < boxes.size(); ++i) { GetCanvas()->drawRect(boxes[i].rect, paint); } EXPECT_EQ(boxes.size(), 0ull); - boxes = paragraph->GetRectsForRange(0, 1, Paragraph::RectStyle::kTight); + boxes = + paragraph->GetRectsForRange(0, 1, rect_height_style, rect_width_style); for (size_t i = 0; i < boxes.size(); ++i) { GetCanvas()->drawRect(boxes[i].rect, paint); } @@ -1120,7 +1135,8 @@ TEST_F(ParagraphTest, DISABLE_ON_WINDOWS(GetRectsForRangeTight)) { EXPECT_FLOAT_EQ(boxes[0].rect.bottom(), 74); paint.setColor(SK_ColorBLUE); - boxes = paragraph->GetRectsForRange(2, 8, Paragraph::RectStyle::kTight); + boxes = + paragraph->GetRectsForRange(2, 8, rect_height_style, rect_width_style); for (size_t i = 0; i < boxes.size(); ++i) { GetCanvas()->drawRect(boxes[i].rect, paint); } @@ -1130,7 +1146,8 @@ TEST_F(ParagraphTest, DISABLE_ON_WINDOWS(GetRectsForRangeTight)) { EXPECT_FLOAT_EQ(boxes[0].rect.bottom(), 74); paint.setColor(SK_ColorGREEN); - boxes = paragraph->GetRectsForRange(8, 21, Paragraph::RectStyle::kTight); + boxes = + paragraph->GetRectsForRange(8, 21, rect_height_style, rect_width_style); for (size_t i = 0; i < boxes.size(); ++i) { GetCanvas()->drawRect(boxes[i].rect, paint); } @@ -1143,10 +1160,464 @@ TEST_F(ParagraphTest, DISABLE_ON_WINDOWS(GetRectsForRangeTight)) { ASSERT_TRUE(Snapshot()); } +TEST_F(ParagraphTest, + DISABLE_ON_WINDOWS(GetRectsForRangeIncludeLineSpacingMiddle)) { + // const char* text = + // "12345, \"67890\" 12345 67890 12345 67890 12345 67890 12345 67890 + // 12345 " "67890 12345"; + const char* text = + "( ´・‿・`)( ´・‿・`)( ´・‿・`)( ´・‿・`)( ´・‿・`)( ´・‿・`)( ´・‿・`)(" + " ´・‿・`)( ´・‿・`)( ´・‿・`)( ´・‿・`)( ´・‿・`)( ´・‿・`)( ´・‿・`)(" + " ´・‿・`)( ´・‿・`)( ´・‿・`)( ´・‿・`)( ´・‿・`)( ´・‿・`)"; + auto icu_text = icu::UnicodeString::fromUTF8(text); + std::u16string u16_text(icu_text.getBuffer(), + icu_text.getBuffer() + icu_text.length()); + + txt::ParagraphStyle paragraph_style; + paragraph_style.max_lines = 10; + paragraph_style.text_align = TextAlign::left; + txt::ParagraphBuilder builder(paragraph_style, GetTestFontCollection()); + + txt::TextStyle text_style; + text_style.font_family = "Roboto"; + text_style.font_size = 50; + text_style.letter_spacing = 0; + text_style.font_weight = FontWeight::w500; + text_style.word_spacing = 0; + text_style.color = SK_ColorBLACK; + text_style.height = 1.3; + builder.PushStyle(text_style); + + builder.AddText(u16_text); + + builder.Pop(); + + auto paragraph = builder.Build(); + paragraph->Layout(550); + + paragraph->Paint(GetCanvas(), 0, 0); + + SkPaint paint; + paint.setStyle(SkPaint::kStroke_Style); + paint.setAntiAlias(true); + paint.setStrokeWidth(1); + + // Tests for GetRectsForRange() + // NOTE: The base truth values may still need adjustment as the specifics + // are adjusted. + Paragraph::RectHeightStyle rect_height_style = + Paragraph::RectHeightStyle::kIncludeLineSpacingMiddle; + Paragraph::RectWidthStyle rect_width_style = Paragraph::RectWidthStyle::kMax; + paint.setColor(SK_ColorRED); + std::vector boxes = + paragraph->GetRectsForRange(0, 0, rect_height_style, rect_width_style); + for (size_t i = 0; i < boxes.size(); ++i) { + GetCanvas()->drawRect(boxes[i].rect, paint); + } + EXPECT_EQ(boxes.size(), 0ull); + + boxes = + paragraph->GetRectsForRange(0, 1, rect_height_style, rect_width_style); + for (size_t i = 0; i < boxes.size(); ++i) { + GetCanvas()->drawRect(boxes[i].rect, paint); + } + EXPECT_EQ(boxes.size(), 1ull); + EXPECT_FLOAT_EQ(boxes[0].rect.left(), 0); + EXPECT_FLOAT_EQ(boxes[0].rect.top(), 13.744141); + EXPECT_FLOAT_EQ(boxes[0].rect.right(), 17.429688); + EXPECT_FLOAT_EQ(boxes[0].rect.bottom(), 82.958008); + + paint.setColor(SK_ColorBLUE); + boxes = + paragraph->GetRectsForRange(2, 8, rect_height_style, rect_width_style); + for (size_t i = 0; i < boxes.size(); ++i) { + GetCanvas()->drawRect(boxes[i].rect, paint); + } + EXPECT_EQ(boxes.size(), 1ull); + EXPECT_FLOAT_EQ(boxes[0].rect.left(), 67.429688); + EXPECT_FLOAT_EQ(boxes[0].rect.top(), 13.744141); + EXPECT_FLOAT_EQ(boxes[0].rect.right(), 190.00781); + EXPECT_FLOAT_EQ(boxes[0].rect.bottom(), 82.958008); + + paint.setColor(SK_ColorGREEN); + boxes = + paragraph->GetRectsForRange(8, 21, rect_height_style, rect_width_style); + for (size_t i = 0; i < boxes.size(); ++i) { + GetCanvas()->drawRect(boxes[i].rect, paint); + } + EXPECT_EQ(boxes.size(), 1ull); + EXPECT_FLOAT_EQ(boxes[0].rect.left(), 190.00781); + EXPECT_FLOAT_EQ(boxes[0].rect.top(), 13.744141); + EXPECT_FLOAT_EQ(boxes[0].rect.right(), 508.0625); + EXPECT_FLOAT_EQ(boxes[0].rect.bottom(), 82.958008); + + paint.setColor(SK_ColorRED); + boxes = + paragraph->GetRectsForRange(30, 150, rect_height_style, rect_width_style); + for (size_t i = 0; i < boxes.size(); ++i) { + GetCanvas()->drawRect(boxes[i].rect, paint); + } + EXPECT_EQ(boxes.size(), 8ull); + EXPECT_FLOAT_EQ(boxes[0].rect.left(), 190.00781); + EXPECT_FLOAT_EQ(boxes[0].rect.top(), 82.786133); + EXPECT_FLOAT_EQ(boxes[0].rect.right(), 525.6875); + EXPECT_FLOAT_EQ(boxes[0].rect.bottom(), 158.95801); + + EXPECT_FLOAT_EQ(boxes[1].rect.left(), 525.6875); + EXPECT_FLOAT_EQ(boxes[1].rect.top(), 82.786133); + EXPECT_FLOAT_EQ(boxes[1].rect.right(), 570.02344); + EXPECT_FLOAT_EQ(boxes[1].rect.bottom(), 158.95801); + + EXPECT_FLOAT_EQ(boxes[2].rect.left(), 0); + EXPECT_FLOAT_EQ(boxes[2].rect.top(), 158.78613); + EXPECT_FLOAT_EQ(boxes[2].rect.right(), 531.57422); + EXPECT_FLOAT_EQ(boxes[2].rect.bottom(), 234.95801); + + EXPECT_FLOAT_EQ(boxes[3].rect.left(), 531.57422); + EXPECT_FLOAT_EQ(boxes[3].rect.top(), 158.78613); + EXPECT_FLOAT_EQ(boxes[3].rect.right(), 570.02344); + EXPECT_FLOAT_EQ(boxes[3].rect.bottom(), 234.95801); + + EXPECT_FLOAT_EQ(boxes[4].rect.left(), 0); + EXPECT_FLOAT_EQ(boxes[4].rect.top(), 234.78613); + EXPECT_FLOAT_EQ(boxes[4].rect.right(), 570.02344); + EXPECT_FLOAT_EQ(boxes[4].rect.bottom(), 310.95801); + + EXPECT_FLOAT_EQ(boxes[5].rect.left(), 0); + EXPECT_FLOAT_EQ(boxes[5].rect.top(), 310.78613); + EXPECT_FLOAT_EQ(boxes[5].rect.right(), 570.02344); + EXPECT_FLOAT_EQ(boxes[5].rect.bottom(), 386.95801); + + paint.setColor(SK_ColorBLUE); + boxes = + paragraph->GetRectsForRange(19, 22, rect_height_style, rect_width_style); + for (size_t i = 0; i < boxes.size(); ++i) { + GetCanvas()->drawRect(boxes[i].rect, paint); + } + EXPECT_EQ(boxes.size(), 1ull); + EXPECT_FLOAT_EQ(boxes[0].rect.left(), 463.72656); + EXPECT_FLOAT_EQ(boxes[0].rect.top(), 13.744141); + EXPECT_FLOAT_EQ(boxes[0].rect.right(), 530.23047); + EXPECT_FLOAT_EQ(boxes[0].rect.bottom(), 82.958008); + + paint.setColor(SK_ColorRED); + boxes = + paragraph->GetRectsForRange(21, 21, rect_height_style, rect_width_style); + for (size_t i = 0; i < boxes.size(); ++i) { + GetCanvas()->drawRect(boxes[i].rect, paint); + } + EXPECT_EQ(boxes.size(), 0ull); + + ASSERT_TRUE(Snapshot()); +} + +TEST_F(ParagraphTest, + DISABLE_ON_WINDOWS(GetRectsForRangeIncludeLineSpacingTop)) { + // const char* text = + // "12345, \"67890\" 12345 67890 12345 67890 12345 67890 12345 67890 + // 12345 " "67890 12345"; + const char* text = + "( ´・‿・`)( ´・‿・`)( ´・‿・`)( ´・‿・`)( ´・‿・`)( ´・‿・`)( ´・‿・`)(" + " ´・‿・`)( ´・‿・`)( ´・‿・`)( ´・‿・`)( ´・‿・`)( ´・‿・`)( ´・‿・`)(" + " ´・‿・`)( ´・‿・`)( ´・‿・`)( ´・‿・`)( ´・‿・`)( ´・‿・`)"; + auto icu_text = icu::UnicodeString::fromUTF8(text); + std::u16string u16_text(icu_text.getBuffer(), + icu_text.getBuffer() + icu_text.length()); + + txt::ParagraphStyle paragraph_style; + paragraph_style.max_lines = 10; + paragraph_style.text_align = TextAlign::left; + txt::ParagraphBuilder builder(paragraph_style, GetTestFontCollection()); + + txt::TextStyle text_style; + text_style.font_family = "Roboto"; + text_style.font_size = 50; + text_style.letter_spacing = 0; + text_style.font_weight = FontWeight::w500; + text_style.word_spacing = 0; + text_style.color = SK_ColorBLACK; + text_style.height = 1.3; + builder.PushStyle(text_style); + + builder.AddText(u16_text); + + builder.Pop(); + + auto paragraph = builder.Build(); + paragraph->Layout(550); + + paragraph->Paint(GetCanvas(), 0, 0); + + SkPaint paint; + paint.setStyle(SkPaint::kStroke_Style); + paint.setAntiAlias(true); + paint.setStrokeWidth(1); + + // Tests for GetRectsForRange() + // NOTE: The base truth values may still need adjustment as the specifics + // are adjusted. + Paragraph::RectHeightStyle rect_height_style = + Paragraph::RectHeightStyle::kIncludeLineSpacingTop; + Paragraph::RectWidthStyle rect_width_style = Paragraph::RectWidthStyle::kMax; + paint.setColor(SK_ColorRED); + std::vector boxes = + paragraph->GetRectsForRange(0, 0, rect_height_style, rect_width_style); + for (size_t i = 0; i < boxes.size(); ++i) { + GetCanvas()->drawRect(boxes[i].rect, paint); + } + EXPECT_EQ(boxes.size(), 0ull); + + boxes = + paragraph->GetRectsForRange(0, 1, rect_height_style, rect_width_style); + for (size_t i = 0; i < boxes.size(); ++i) { + GetCanvas()->drawRect(boxes[i].rect, paint); + } + EXPECT_EQ(boxes.size(), 1ull); + EXPECT_FLOAT_EQ(boxes[0].rect.left(), 0); + EXPECT_FLOAT_EQ(boxes[0].rect.top(), 13.744141); + EXPECT_FLOAT_EQ(boxes[0].rect.right(), 17.429688); + EXPECT_FLOAT_EQ(boxes[0].rect.bottom(), 76); + + paint.setColor(SK_ColorBLUE); + boxes = + paragraph->GetRectsForRange(2, 8, rect_height_style, rect_width_style); + for (size_t i = 0; i < boxes.size(); ++i) { + GetCanvas()->drawRect(boxes[i].rect, paint); + } + EXPECT_EQ(boxes.size(), 1ull); + EXPECT_FLOAT_EQ(boxes[0].rect.left(), 67.429688); + EXPECT_FLOAT_EQ(boxes[0].rect.top(), 13.744141); + EXPECT_FLOAT_EQ(boxes[0].rect.right(), 190.00781); + EXPECT_FLOAT_EQ(boxes[0].rect.bottom(), 76); + + paint.setColor(SK_ColorGREEN); + boxes = + paragraph->GetRectsForRange(8, 21, rect_height_style, rect_width_style); + for (size_t i = 0; i < boxes.size(); ++i) { + GetCanvas()->drawRect(boxes[i].rect, paint); + } + EXPECT_EQ(boxes.size(), 1ull); + EXPECT_FLOAT_EQ(boxes[0].rect.left(), 190.00781); + EXPECT_FLOAT_EQ(boxes[0].rect.top(), 13.744141); + EXPECT_FLOAT_EQ(boxes[0].rect.right(), 508.0625); + EXPECT_FLOAT_EQ(boxes[0].rect.bottom(), 76); + + paint.setColor(SK_ColorRED); + boxes = + paragraph->GetRectsForRange(30, 150, rect_height_style, rect_width_style); + for (size_t i = 0; i < boxes.size(); ++i) { + GetCanvas()->drawRect(boxes[i].rect, paint); + } + EXPECT_EQ(boxes.size(), 8ull); + EXPECT_FLOAT_EQ(boxes[0].rect.left(), 190.00781); + EXPECT_FLOAT_EQ(boxes[0].rect.top(), 75.828125); + EXPECT_FLOAT_EQ(boxes[0].rect.right(), 525.6875); + EXPECT_FLOAT_EQ(boxes[0].rect.bottom(), 152); + + EXPECT_FLOAT_EQ(boxes[1].rect.left(), 525.6875); + EXPECT_FLOAT_EQ(boxes[1].rect.top(), 75.828125); + EXPECT_FLOAT_EQ(boxes[1].rect.right(), 570.02344); + EXPECT_FLOAT_EQ(boxes[1].rect.bottom(), 152); + + EXPECT_FLOAT_EQ(boxes[2].rect.left(), 0); + EXPECT_FLOAT_EQ(boxes[2].rect.top(), 151.82812); + EXPECT_FLOAT_EQ(boxes[2].rect.right(), 531.57422); + EXPECT_FLOAT_EQ(boxes[2].rect.bottom(), 228); + + EXPECT_FLOAT_EQ(boxes[3].rect.left(), 531.57422); + EXPECT_FLOAT_EQ(boxes[3].rect.top(), 151.82812); + EXPECT_FLOAT_EQ(boxes[3].rect.right(), 570.02344); + EXPECT_FLOAT_EQ(boxes[3].rect.bottom(), 228); + + EXPECT_FLOAT_EQ(boxes[4].rect.left(), 0); + EXPECT_FLOAT_EQ(boxes[4].rect.top(), 227.82812); + EXPECT_FLOAT_EQ(boxes[4].rect.right(), 570.02344); + EXPECT_FLOAT_EQ(boxes[4].rect.bottom(), 304); + + EXPECT_FLOAT_EQ(boxes[5].rect.left(), 0); + EXPECT_FLOAT_EQ(boxes[5].rect.top(), 303.82812); + EXPECT_FLOAT_EQ(boxes[5].rect.right(), 570.02344); + EXPECT_FLOAT_EQ(boxes[5].rect.bottom(), 380); + + paint.setColor(SK_ColorBLUE); + boxes = + paragraph->GetRectsForRange(19, 22, rect_height_style, rect_width_style); + for (size_t i = 0; i < boxes.size(); ++i) { + GetCanvas()->drawRect(boxes[i].rect, paint); + } + EXPECT_EQ(boxes.size(), 1ull); + EXPECT_FLOAT_EQ(boxes[0].rect.left(), 463.72656); + EXPECT_FLOAT_EQ(boxes[0].rect.top(), 13.744141); + EXPECT_FLOAT_EQ(boxes[0].rect.right(), 530.23047); + EXPECT_FLOAT_EQ(boxes[0].rect.bottom(), 76); + + paint.setColor(SK_ColorRED); + boxes = + paragraph->GetRectsForRange(21, 21, rect_height_style, rect_width_style); + for (size_t i = 0; i < boxes.size(); ++i) { + GetCanvas()->drawRect(boxes[i].rect, paint); + } + EXPECT_EQ(boxes.size(), 0ull); + + ASSERT_TRUE(Snapshot()); +} + +TEST_F(ParagraphTest, + DISABLE_ON_WINDOWS(GetRectsForRangeIncludeLineSpacingBottom)) { + // const char* text = + // "12345, \"67890\" 12345 67890 12345 67890 12345 67890 12345 67890 + // 12345 " "67890 12345"; + const char* text = + "( ´・‿・`)( ´・‿・`)( ´・‿・`)( ´・‿・`)( ´・‿・`)( ´・‿・`)( ´・‿・`)(" + " ´・‿・`)( ´・‿・`)( ´・‿・`)( ´・‿・`)( ´・‿・`)( ´・‿・`)( ´・‿・`)(" + " ´・‿・`)( ´・‿・`)( ´・‿・`)( ´・‿・`)( ´・‿・`)( ´・‿・`)"; + auto icu_text = icu::UnicodeString::fromUTF8(text); + std::u16string u16_text(icu_text.getBuffer(), + icu_text.getBuffer() + icu_text.length()); + + txt::ParagraphStyle paragraph_style; + paragraph_style.max_lines = 10; + paragraph_style.text_align = TextAlign::left; + txt::ParagraphBuilder builder(paragraph_style, GetTestFontCollection()); + + txt::TextStyle text_style; + text_style.font_family = "Roboto"; + text_style.font_size = 50; + text_style.letter_spacing = 0; + text_style.font_weight = FontWeight::w500; + text_style.word_spacing = 0; + text_style.color = SK_ColorBLACK; + text_style.height = 1.3; + builder.PushStyle(text_style); + + builder.AddText(u16_text); + + builder.Pop(); + + auto paragraph = builder.Build(); + paragraph->Layout(550); + + paragraph->Paint(GetCanvas(), 0, 0); + + SkPaint paint; + paint.setStyle(SkPaint::kStroke_Style); + paint.setAntiAlias(true); + paint.setStrokeWidth(1); + + // Tests for GetRectsForRange() + // NOTE: The base truth values may still need adjustment as the specifics + // are adjusted. + Paragraph::RectHeightStyle rect_height_style = + Paragraph::RectHeightStyle::kIncludeLineSpacingBottom; + Paragraph::RectWidthStyle rect_width_style = Paragraph::RectWidthStyle::kMax; + paint.setColor(SK_ColorRED); + std::vector boxes = + paragraph->GetRectsForRange(0, 0, rect_height_style, rect_width_style); + for (size_t i = 0; i < boxes.size(); ++i) { + GetCanvas()->drawRect(boxes[i].rect, paint); + } + EXPECT_EQ(boxes.size(), 0ull); + + boxes = + paragraph->GetRectsForRange(0, 1, rect_height_style, rect_width_style); + for (size_t i = 0; i < boxes.size(); ++i) { + GetCanvas()->drawRect(boxes[i].rect, paint); + } + EXPECT_EQ(boxes.size(), 1ull); + EXPECT_FLOAT_EQ(boxes[0].rect.left(), 0); + EXPECT_FLOAT_EQ(boxes[0].rect.top(), 13.744141); + EXPECT_FLOAT_EQ(boxes[0].rect.right(), 17.429688); + EXPECT_FLOAT_EQ(boxes[0].rect.bottom(), 89.916016); + + paint.setColor(SK_ColorBLUE); + boxes = + paragraph->GetRectsForRange(2, 8, rect_height_style, rect_width_style); + for (size_t i = 0; i < boxes.size(); ++i) { + GetCanvas()->drawRect(boxes[i].rect, paint); + } + EXPECT_EQ(boxes.size(), 1ull); + EXPECT_FLOAT_EQ(boxes[0].rect.left(), 67.429688); + EXPECT_FLOAT_EQ(boxes[0].rect.top(), 13.744141); + EXPECT_FLOAT_EQ(boxes[0].rect.right(), 190.00781); + EXPECT_FLOAT_EQ(boxes[0].rect.bottom(), 89.916016); + + paint.setColor(SK_ColorGREEN); + boxes = + paragraph->GetRectsForRange(8, 21, rect_height_style, rect_width_style); + for (size_t i = 0; i < boxes.size(); ++i) { + GetCanvas()->drawRect(boxes[i].rect, paint); + } + EXPECT_EQ(boxes.size(), 1ull); + EXPECT_FLOAT_EQ(boxes[0].rect.left(), 190.00781); + EXPECT_FLOAT_EQ(boxes[0].rect.top(), 13.744141); + EXPECT_FLOAT_EQ(boxes[0].rect.right(), 508.0625); + EXPECT_FLOAT_EQ(boxes[0].rect.bottom(), 89.916016); + + paint.setColor(SK_ColorRED); + boxes = + paragraph->GetRectsForRange(30, 150, rect_height_style, rect_width_style); + for (size_t i = 0; i < boxes.size(); ++i) { + GetCanvas()->drawRect(boxes[i].rect, paint); + } + EXPECT_EQ(boxes.size(), 8ull); + EXPECT_FLOAT_EQ(boxes[0].rect.left(), 190.00781); + EXPECT_FLOAT_EQ(boxes[0].rect.top(), 89.744141); + EXPECT_FLOAT_EQ(boxes[0].rect.right(), 525.6875); + EXPECT_FLOAT_EQ(boxes[0].rect.bottom(), 165.91602); + + EXPECT_FLOAT_EQ(boxes[1].rect.left(), 525.6875); + EXPECT_FLOAT_EQ(boxes[1].rect.top(), 89.744141); + EXPECT_FLOAT_EQ(boxes[1].rect.right(), 570.02344); + EXPECT_FLOAT_EQ(boxes[1].rect.bottom(), 165.91602); + + EXPECT_FLOAT_EQ(boxes[2].rect.left(), 0); + EXPECT_FLOAT_EQ(boxes[2].rect.top(), 165.74414); + EXPECT_FLOAT_EQ(boxes[2].rect.right(), 531.57422); + EXPECT_FLOAT_EQ(boxes[2].rect.bottom(), 241.91602); + + EXPECT_FLOAT_EQ(boxes[3].rect.left(), 531.57422); + EXPECT_FLOAT_EQ(boxes[3].rect.top(), 165.74414); + EXPECT_FLOAT_EQ(boxes[3].rect.right(), 570.02344); + EXPECT_FLOAT_EQ(boxes[3].rect.bottom(), 241.91602); + + EXPECT_FLOAT_EQ(boxes[4].rect.left(), 0); + EXPECT_FLOAT_EQ(boxes[4].rect.top(), 241.74414); + EXPECT_FLOAT_EQ(boxes[4].rect.right(), 570.02344); + EXPECT_FLOAT_EQ(boxes[4].rect.bottom(), 317.91602); + + EXPECT_FLOAT_EQ(boxes[5].rect.left(), 0); + EXPECT_FLOAT_EQ(boxes[5].rect.top(), 317.74414); + EXPECT_FLOAT_EQ(boxes[5].rect.right(), 570.02344); + EXPECT_FLOAT_EQ(boxes[5].rect.bottom(), 393.91602); + + paint.setColor(SK_ColorBLUE); + boxes = + paragraph->GetRectsForRange(19, 22, rect_height_style, rect_width_style); + for (size_t i = 0; i < boxes.size(); ++i) { + GetCanvas()->drawRect(boxes[i].rect, paint); + } + EXPECT_EQ(boxes.size(), 1ull); + EXPECT_FLOAT_EQ(boxes[0].rect.left(), 463.72656); + EXPECT_FLOAT_EQ(boxes[0].rect.top(), 13.744141); + EXPECT_FLOAT_EQ(boxes[0].rect.right(), 530.23047); + EXPECT_FLOAT_EQ(boxes[0].rect.bottom(), 89.916016); + + paint.setColor(SK_ColorRED); + boxes = + paragraph->GetRectsForRange(21, 21, rect_height_style, rect_width_style); + for (size_t i = 0; i < boxes.size(); ++i) { + GetCanvas()->drawRect(boxes[i].rect, paint); + } + EXPECT_EQ(boxes.size(), 0ull); + + ASSERT_TRUE(Snapshot()); +} + SkRect GetCoordinatesForGlyphPosition(const txt::Paragraph& paragraph, size_t pos) { std::vector boxes = - paragraph.GetRectsForRange(pos, pos + 1, Paragraph::RectStyle::kNone); + paragraph.GetRectsForRange(pos, pos + 1, Paragraph::RectHeightStyle::kMax, + Paragraph::RectWidthStyle::kTight); return !boxes.empty() ? boxes.front().rect : SkRect::MakeEmpty(); } @@ -1718,9 +2189,12 @@ TEST_F(ParagraphTest, UnderlineShiftParagraph) { paragraph->records_[1].GetRunWidth(), paragraph2->records_[0].GetRunWidth()); - auto rects1 = paragraph->GetRectsForRange(0, 12, Paragraph::RectStyle::kNone); + auto rects1 = + paragraph->GetRectsForRange(0, 12, Paragraph::RectHeightStyle::kMax, + Paragraph::RectWidthStyle::kTight); auto rects2 = - paragraph2->GetRectsForRange(0, 12, Paragraph::RectStyle::kNone); + paragraph2->GetRectsForRange(0, 12, Paragraph::RectHeightStyle::kMax, + Paragraph::RectWidthStyle::kTight); for (size_t i = 0; i < 12; ++i) { auto r1 = GetCoordinatesForGlyphPosition(*paragraph, i); From 9829c51a977c9ce1869c1ad6b61dbfc6cc0a9ca5 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Tue, 23 Oct 2018 15:31:34 -0400 Subject: [PATCH 0066/1537] Roll src/third_party/skia b46c4d0925ad..3aca39df7b22 (12 commits) (#6643) https://skia.googlesource.com/skia.git/+log/b46c4d0925ad..3aca39df7b22 Created with: gclient setdep -r src/third_party/skia@3aca39df7b22 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/DEPS b/DEPS index cbe016e5e31f2..562c6228e6192 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'b46c4d0925ad4ee016fa150893ed9a89a4b74cf8', + 'skia_revision': '3aca39df7b22276674c9abad62ac0555aa7ee821', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 89edb77a14675..da06e648509a9 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 2eaadab5c99a9d8080acce23726ed195 +Signature: 347c3d27687b63de5c16b1956003b84c UNUSED LICENSES: @@ -2755,8 +2755,6 @@ FILE: ../../../third_party/skia/gm/texteffects.cpp FILE: ../../../third_party/skia/gm/tilemodes.cpp FILE: ../../../third_party/skia/gm/tilemodes_scaled.cpp FILE: ../../../third_party/skia/gm/tinybitmap.cpp -FILE: ../../../third_party/skia/gm/verttext.cpp -FILE: ../../../third_party/skia/gm/verttext2.cpp FILE: ../../../third_party/skia/gm/xfermodes.cpp FILE: ../../../third_party/skia/include/core/SkData.h FILE: ../../../third_party/skia/include/core/SkImageEncoder.h From 26e8840de5d6fe801378301dd36d54c92b25bd3b Mon Sep 17 00:00:00 2001 From: Ben Konyi Date: Tue, 23 Oct 2018 15:09:53 -0700 Subject: [PATCH 0067/1537] Dart SDK roll for 2018-10-23 c04215d5f6 [fasta] Add a test case for issue #34899 03765ed6ec Update old mixin tests. Remove the --super-mixins flag from the tests. a394e4f492 Fix handling of JSON with interfaces nested within Unions 2f90f8d0ef Issue 34896. Verify the superconstraint signature invoked by a mixin, not the mixin's one. b82c1f979f Revert "[VM] Fix for issue 34839 - Dart_Cleanup may hang while shutting down" 289d2b003a [vm] Don't re-enqueue functions after unoptimized compiles 33accb510b [VM] : Cleanup the file modified and service stream callbacks in Dart_Cleanup so that the Flutter engine can restart the VM. 89c845eba2 [VM] Fix for issue 34839 - Dart_Cleanup may hang while shutting down the service isolate. e648d63bed Revert "Compute unlinked API signatures without unlinked summaries." 74792f4b9c Revert "[vm] Revert service isolate setup in main.cc" b4fbf1a065 [vm/bytecode] Wire up bytecode generation in kernel service 914065d80b [vm/compiler] Use loop framework for register allocator 7fd78ed5b6 [infra] Add analyzer branch alias for flutter-analyze builder (#34739) 9406b7b44e [vm/bytecode] Add versioning to bytecode format a82e025739 Move dartfix to its own package 872e90106e Set to publish new analyzer_plugin. 2d14d9a313 Improve how dartfix finds the analysis server pkg root a342cecffd Disable support for the old super mixins cddc2d42e1 Handle generic types in LSP spec parsing 8b6f8969a6 Support post-inference serialization/deserialization 9c3834d41c Remove unused import that shows a warning a1d61371d3 Exposes VM and Isolate Metrics in the API. 2c6eabd3c4 Compute substitution map on kernel objects instead of builders 704a43558d Move getSubstitutionMap to KernelClassBuilder af8e29142b Respecify where type promotion happens. 393fe44f8f Resolve types from the class header earlier 1515d4fe34 [Gardening] Mark LibTest/io/RawDatagramSocket/timeout_A06_t01 as flaky 11adb81a77 Remove the last references to the analyzer package from kernel. 02651515eb Fix identifyWidgetExpression() for Flutter. f5cd6ccfb7 More shared fasta/analyzer error codes cecda9043b Update analyzer docs based on previous feedback ab6eb9332f [VM] Fix flaky crash when unwinding the mutator stack during GC --- DEPS | 2 +- ci/licenses_golden/licenses_third_party | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 562c6228e6192..70e28d3de0845 100644 --- a/DEPS +++ b/DEPS @@ -31,7 +31,7 @@ vars = { # Dart is: https://github.com/dart-lang/sdk/blob/master/DEPS. # You can use //tools/dart/create_updated_flutter_deps.py to produce # updated revision list of existing dependencies. - 'dart_revision': '45f9462398ae7d2e80acd79d3f9c32c7ca6f6f97', + 'dart_revision': 'c04215d5f68b93fd513b5f69c04abf401faf5452', # WARNING: DO NOT EDIT MANUALLY # The lines between blank lines above and below are generated by a script. See create_updated_flutter_deps.py diff --git a/ci/licenses_golden/licenses_third_party b/ci/licenses_golden/licenses_third_party index c5c6fc633659f..a4aa30317b7ab 100644 --- a/ci/licenses_golden/licenses_third_party +++ b/ci/licenses_golden/licenses_third_party @@ -1,4 +1,4 @@ -Signature: d91d49f0e8c58eb2fe7be4d8b2ed65eb +Signature: a83c9a206b0a733bd4ca5faafac5edb9 UNUSED LICENSES: From 7b3bb62a88359e808303801f37875bba976a91da Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Tue, 23 Oct 2018 18:56:34 -0400 Subject: [PATCH 0068/1537] Roll src/third_party/skia 3aca39df7b22..8429c7930291 (5 commits) (#6647) https://skia.googlesource.com/skia.git/+log/3aca39df7b22..8429c7930291 Created with: gclient setdep -r src/third_party/skia@8429c7930291 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 70e28d3de0845..9d1fce38097a5 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '3aca39df7b22276674c9abad62ac0555aa7ee821', + 'skia_revision': '8429c793029135827ca336dee01de7179c683cb4', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index da06e648509a9..142df72cfcc8b 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 347c3d27687b63de5c16b1956003b84c +Signature: d2551b3225f7d9d15b383a1a3eaeba7c UNUSED LICENSES: From 3dddf4d5bcc171a35343a6b110d333f6b9b5c336 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Wed, 24 Oct 2018 10:42:57 -0400 Subject: [PATCH 0069/1537] Roll src/third_party/skia 8429c7930291..3b57279fd65a (2 commits) (#6650) https://skia.googlesource.com/skia.git/+log/8429c7930291..3b57279fd65a Created with: gclient setdep -r src/third_party/skia@3b57279fd65a The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 9d1fce38097a5..5e5cdd25764d1 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '8429c793029135827ca336dee01de7179c683cb4', + 'skia_revision': '3b57279fd65a91684d5281620f01a25e9639c947', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 142df72cfcc8b..6e5764580cc6c 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: d2551b3225f7d9d15b383a1a3eaeba7c +Signature: 52fedf8b396a44f028596fb0c2aad762 UNUSED LICENSES: From d3874a9ca60eb4fd55d126cc595eb64d2cb86452 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Wed, 24 Oct 2018 11:27:53 -0400 Subject: [PATCH 0070/1537] Roll src/third_party/skia 3b57279fd65a..a7682c8c73e4 (9 commits) (#6652) https://skia.googlesource.com/skia.git/+log/3b57279fd65a..a7682c8c73e4 Created with: gclient setdep -r src/third_party/skia@a7682c8c73e4 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 5 +---- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/DEPS b/DEPS index 5e5cdd25764d1..4d48019311ddf 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '3b57279fd65a91684d5281620f01a25e9639c947', + 'skia_revision': 'a7682c8c73e4d39b27258dc22822dc05fb1970e7', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 6e5764580cc6c..700b9ac3b728e 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 52fedf8b396a44f028596fb0c2aad762 +Signature: d00f21333b18f3c1d8995b8d24855ec8 UNUSED LICENSES: @@ -4476,9 +4476,6 @@ FILE: ../../../third_party/skia/src/gpu/vk/GrVkBufferView.cpp FILE: ../../../third_party/skia/src/gpu/vk/GrVkBufferView.h FILE: ../../../third_party/skia/src/gpu/vk/GrVkSemaphore.cpp FILE: ../../../third_party/skia/src/gpu/vk/GrVkSemaphore.h -FILE: ../../../third_party/skia/src/jumper/SkJumper.cpp -FILE: ../../../third_party/skia/src/jumper/SkJumper.h -FILE: ../../../third_party/skia/src/jumper/SkJumper_misc.h FILE: ../../../third_party/skia/src/opts/SkUtils_opts.h FILE: ../../../third_party/skia/src/pdf/SkKeyedImage.cpp FILE: ../../../third_party/skia/src/pdf/SkKeyedImage.h From e1e60933b23546526c56013ed29c178e3e6f0719 Mon Sep 17 00:00:00 2001 From: Chinmay Garde Date: Wed, 24 Oct 2018 11:33:46 -0700 Subject: [PATCH 0071/1537] Realize kernel asset mappings on a worker thread if one is available. (#6648) --- assets/asset_manager.h | 13 +- lib/ui/text/asset_manager_font_provider.cc | 4 +- lib/ui/text/asset_manager_font_provider.h | 10 +- lib/ui/text/font_collection.cc | 3 +- lib/ui/text/font_collection.h | 2 +- shell/common/engine.cc | 2 +- shell/common/engine.h | 4 +- shell/common/isolate_configuration.cc | 118 ++++++++++++------ shell/common/isolate_configuration.h | 10 +- shell/common/run_configuration.cc | 14 ++- shell/common/run_configuration.h | 10 +- shell/common/shell.cc | 2 +- .../android/platform_view_android_jni.cc | 2 +- shell/testing/tester_main.cc | 2 +- 14 files changed, 128 insertions(+), 68 deletions(-) diff --git a/assets/asset_manager.h b/assets/asset_manager.h index 4ab58ed0f2bf7..41c05ec7f9640 100644 --- a/assets/asset_manager.h +++ b/assets/asset_manager.h @@ -15,9 +15,12 @@ namespace blink { -class AssetManager final : public AssetResolver, - public fml::RefCountedThreadSafe { +class AssetManager final : public AssetResolver { public: + AssetManager(); + + ~AssetManager(); + void PushFront(std::unique_ptr resolver); void PushBack(std::unique_ptr resolver); @@ -32,13 +35,7 @@ class AssetManager final : public AssetResolver, private: std::deque> resolvers_; - AssetManager(); - - ~AssetManager(); - FML_DISALLOW_COPY_AND_ASSIGN(AssetManager); - FML_FRIEND_MAKE_REF_COUNTED(AssetManager); - FML_FRIEND_REF_COUNTED_THREAD_SAFE(AssetManager); }; } // namespace blink diff --git a/lib/ui/text/asset_manager_font_provider.cc b/lib/ui/text/asset_manager_font_provider.cc index b0be57f13e4a9..e247592365526 100644 --- a/lib/ui/text/asset_manager_font_provider.cc +++ b/lib/ui/text/asset_manager_font_provider.cc @@ -21,7 +21,7 @@ void MappingReleaseProc(const void* ptr, void* context) { } // anonymous namespace AssetManagerFontProvider::AssetManagerFontProvider( - fml::RefPtr asset_manager) + std::shared_ptr asset_manager) : asset_manager_(asset_manager) {} AssetManagerFontProvider::~AssetManagerFontProvider() = default; @@ -65,7 +65,7 @@ void AssetManagerFontProvider::RegisterAsset(std::string family_name, } AssetManagerFontStyleSet::AssetManagerFontStyleSet( - fml::RefPtr asset_manager) + std::shared_ptr asset_manager) : asset_manager_(asset_manager) {} AssetManagerFontStyleSet::~AssetManagerFontStyleSet() = default; diff --git a/lib/ui/text/asset_manager_font_provider.h b/lib/ui/text/asset_manager_font_provider.h index a6f9544ab2611..89554b14f527e 100644 --- a/lib/ui/text/asset_manager_font_provider.h +++ b/lib/ui/text/asset_manager_font_provider.h @@ -5,6 +5,7 @@ #ifndef FLUTTER_LIB_UI_TEXT_ASSET_MANAGER_FONT_PROVIDER_H_ #define FLUTTER_LIB_UI_TEXT_ASSET_MANAGER_FONT_PROVIDER_H_ +#include #include #include #include @@ -18,7 +19,7 @@ namespace blink { class AssetManagerFontStyleSet : public SkFontStyleSet { public: - AssetManagerFontStyleSet(fml::RefPtr asset_manager); + AssetManagerFontStyleSet(std::shared_ptr asset_manager); ~AssetManagerFontStyleSet() override; @@ -37,7 +38,7 @@ class AssetManagerFontStyleSet : public SkFontStyleSet { SkTypeface* matchStyle(const SkFontStyle& pattern) override; private: - fml::RefPtr asset_manager_; + std::shared_ptr asset_manager_; struct TypefaceAsset { TypefaceAsset(std::string a) : asset(std::move(a)) {} @@ -51,7 +52,8 @@ class AssetManagerFontStyleSet : public SkFontStyleSet { class AssetManagerFontProvider : public txt::FontAssetProvider { public: - AssetManagerFontProvider(fml::RefPtr asset_manager); + AssetManagerFontProvider(std::shared_ptr asset_manager); + ~AssetManagerFontProvider() override; void RegisterAsset(std::string family_name, std::string asset); @@ -66,7 +68,7 @@ class AssetManagerFontProvider : public txt::FontAssetProvider { SkFontStyleSet* MatchFamily(const std::string& family_name) override; private: - fml::RefPtr asset_manager_; + std::shared_ptr asset_manager_; std::unordered_map registered_families_; std::vector family_names_; diff --git a/lib/ui/text/font_collection.cc b/lib/ui/text/font_collection.cc index 83166f96bbf9d..aee3711a100df 100644 --- a/lib/ui/text/font_collection.cc +++ b/lib/ui/text/font_collection.cc @@ -67,7 +67,8 @@ std::shared_ptr FontCollection::GetFontCollection() const { return collection_; } -void FontCollection::RegisterFonts(fml::RefPtr asset_manager) { +void FontCollection::RegisterFonts( + std::shared_ptr asset_manager) { std::unique_ptr manifest_mapping = asset_manager->GetAsMapping("FontManifest.json"); if (manifest_mapping == nullptr) { diff --git a/lib/ui/text/font_collection.h b/lib/ui/text/font_collection.h index a9bf31d73a2bc..9b0804dcd7d8a 100644 --- a/lib/ui/text/font_collection.h +++ b/lib/ui/text/font_collection.h @@ -29,7 +29,7 @@ class FontCollection { std::shared_ptr GetFontCollection() const; - void RegisterFonts(fml::RefPtr asset_manager); + void RegisterFonts(std::shared_ptr asset_manager); void RegisterTestFonts(); diff --git a/shell/common/engine.cc b/shell/common/engine.cc index 59cff299b7ab0..f6f1553652b61 100644 --- a/shell/common/engine.cc +++ b/shell/common/engine.cc @@ -78,7 +78,7 @@ fml::WeakPtr Engine::GetWeakPtr() const { } bool Engine::UpdateAssetManager( - fml::RefPtr new_asset_manager) { + std::shared_ptr new_asset_manager) { if (asset_manager_ == new_asset_manager) { return false; } diff --git a/shell/common/engine.h b/shell/common/engine.h index 0f79eeeb31c00..2f34dcf3db31d 100644 --- a/shell/common/engine.h +++ b/shell/common/engine.h @@ -75,7 +75,7 @@ class Engine final : public blink::RuntimeDelegate { FML_WARN_UNUSED_RESULT bool Restart(RunConfiguration configuration); - bool UpdateAssetManager(fml::RefPtr asset_manager); + bool UpdateAssetManager(std::shared_ptr asset_manager); void BeginFrame(fml::TimePoint frame_time); @@ -121,7 +121,7 @@ class Engine final : public blink::RuntimeDelegate { std::unique_ptr runtime_controller_; std::string initial_route_; blink::ViewportMetrics viewport_metrics_; - fml::RefPtr asset_manager_; + std::shared_ptr asset_manager_; bool activity_running_; bool have_surface_; blink::FontCollection font_collection_; diff --git a/shell/common/isolate_configuration.cc b/shell/common/isolate_configuration.cc index 57c38bef9f8d8..c3bbc04c653a2 100644 --- a/shell/common/isolate_configuration.cc +++ b/shell/common/isolate_configuration.cc @@ -4,6 +4,7 @@ #include "flutter/shell/common/isolate_configuration.h" +#include "flutter/fml/make_copyable.h" #include "flutter/runtime/dart_vm.h" #ifdef ERROR @@ -61,7 +62,7 @@ class KernelIsolateConfiguration : public IsolateConfiguration { class KernelListIsolateConfiguration final : public IsolateConfiguration { public: KernelListIsolateConfiguration( - std::vector> kernel_pieces) + std::vector>> kernel_pieces) : kernel_pieces_(std::move(kernel_pieces)) {} // |shell::IsolateConfiguration| @@ -72,7 +73,8 @@ class KernelListIsolateConfiguration final : public IsolateConfiguration { for (size_t i = 0; i < kernel_pieces_.size(); i++) { bool last_piece = i + 1 == kernel_pieces_.size(); - if (!isolate.PrepareForRunningFromKernel(std::move(kernel_pieces_[i]), + + if (!isolate.PrepareForRunningFromKernel(kernel_pieces_[i].get(), last_piece)) { return false; } @@ -82,21 +84,81 @@ class KernelListIsolateConfiguration final : public IsolateConfiguration { } private: - std::vector> kernel_pieces_; + std::vector>> kernel_pieces_; FML_DISALLOW_COPY_AND_ASSIGN(KernelListIsolateConfiguration); }; +static std::vector ParseKernelListPaths( + std::unique_ptr kernel_list) { + FML_DCHECK(kernel_list); + + std::vector kernel_pieces_paths; + + const char* kernel_list_str = + reinterpret_cast(kernel_list->GetMapping()); + size_t kernel_list_size = kernel_list->GetSize(); + + size_t piece_path_start = 0; + while (piece_path_start < kernel_list_size) { + size_t piece_path_end = piece_path_start; + while ((piece_path_end < kernel_list_size) && + (kernel_list_str[piece_path_end] != '\n')) { + piece_path_end++; + } + std::string piece_path(&kernel_list_str[piece_path_start], + piece_path_end - piece_path_start); + kernel_pieces_paths.emplace_back(std::move(piece_path)); + + piece_path_start = piece_path_end + 1; + } + + return kernel_pieces_paths; +} + +static std::vector>> +PrepareKernelMappings(std::vector kernel_pieces_paths, + std::shared_ptr asset_manager, + fml::RefPtr io_worker) { + FML_DCHECK(asset_manager); + std::vector>> fetch_futures; + + for (const auto& kernel_pieces_path : kernel_pieces_paths) { + std::promise> fetch_promise; + fetch_futures.push_back(fetch_promise.get_future()); + auto fetch_task = + fml::MakeCopyable([asset_manager, kernel_pieces_path, + fetch_promise = std::move(fetch_promise)]() mutable { + fetch_promise.set_value( + asset_manager->GetAsMapping(kernel_pieces_path)); + }); + // Fulfill the promise on the worker if one is available or the current + // thread if one is not. + if (io_worker) { + io_worker->PostTask(fetch_task); + } else { + fetch_task(); + } + } + + return fetch_futures; +} + std::unique_ptr IsolateConfiguration::InferFromSettings( const blink::Settings& settings, - fml::RefPtr asset_manager) { + std::shared_ptr asset_manager, + fml::RefPtr io_worker) { // Running in AOT mode. if (blink::DartVM::IsRunningPrecompiledCode()) { return CreateForAppSnapshot(); } + if (!asset_manager) { + return nullptr; + } + // Running from kernel snapshot. - if (asset_manager) { + { std::unique_ptr kernel = asset_manager->GetAsMapping(settings.application_kernel_asset); if (kernel) { @@ -105,39 +167,14 @@ std::unique_ptr IsolateConfiguration::InferFromSettings( } // Running from kernel divided into several pieces (for sharing). - // TODO(fuchsia): Use async blobfs API once it becomes available. - if (asset_manager) { + { std::unique_ptr kernel_list = asset_manager->GetAsMapping(settings.application_kernel_list_asset); if (kernel_list) { - const char* kernel_list_str = - reinterpret_cast(kernel_list->GetMapping()); - size_t kernel_list_size = kernel_list->GetSize(); - - std::vector> kernel_pieces; - - size_t piece_path_start = 0; - while (piece_path_start < kernel_list_size) { - size_t piece_path_end = piece_path_start; - while ((piece_path_end < kernel_list_size) && - (kernel_list_str[piece_path_end] != '\n')) { - piece_path_end++; - } - - std::string piece_path(&kernel_list_str[piece_path_start], - piece_path_end - piece_path_start); - std::unique_ptr piece = - asset_manager->GetAsMapping(piece_path); - if (piece == nullptr) { - FML_LOG(ERROR) << "Failed to load: " << piece_path; - return nullptr; - } - - kernel_pieces.emplace_back(std::move(piece)); - - piece_path_start = piece_path_end + 1; - } - return CreateForKernelList(std::move(kernel_pieces)); + auto kernel_pieces_paths = ParseKernelListPaths(std::move(kernel_list)); + auto kernel_mappings = PrepareKernelMappings( + std::move(kernel_pieces_paths), asset_manager, io_worker); + return CreateForKernelList(std::move(kernel_mappings)); } } @@ -156,6 +193,17 @@ std::unique_ptr IsolateConfiguration::CreateForKernel( std::unique_ptr IsolateConfiguration::CreateForKernelList( std::vector> kernel_pieces) { + std::vector>> pieces; + for (auto& piece : kernel_pieces) { + std::promise> promise; + pieces.push_back(promise.get_future()); + promise.set_value(std::move(piece)); + } + return CreateForKernelList(std::move(pieces)); +} + +std::unique_ptr IsolateConfiguration::CreateForKernelList( + std::vector>> kernel_pieces) { return std::make_unique( std::move(kernel_pieces)); } diff --git a/shell/common/isolate_configuration.h b/shell/common/isolate_configuration.h index 7dd54ccf3b3b7..3983d07d61e0c 100644 --- a/shell/common/isolate_configuration.h +++ b/shell/common/isolate_configuration.h @@ -5,6 +5,7 @@ #ifndef FLUTTER_SHELL_COMMON_ISOLATE_CONFIGURATION_H_ #define FLUTTER_SHELL_COMMON_ISOLATE_CONFIGURATION_H_ +#include #include #include @@ -22,13 +23,20 @@ class IsolateConfiguration { public: static std::unique_ptr InferFromSettings( const blink::Settings& settings, - fml::RefPtr asset_manager); + std::shared_ptr asset_manager, + fml::RefPtr io_worker); static std::unique_ptr CreateForAppSnapshot(); static std::unique_ptr CreateForKernel( std::unique_ptr kernel); + static std::unique_ptr CreateForKernelList( + std::vector>> kernel_pieces); + + // TODO(chinmaygarde): Remove this variant in favor of the one using futures + // for parallelizing asset loads. This one is in place for API compatibility + // till Android is updated. static std::unique_ptr CreateForKernelList( std::vector> kernel_pieces); diff --git a/shell/common/run_configuration.cc b/shell/common/run_configuration.cc index 57784a0e08d67..4439d8f57413d 100644 --- a/shell/common/run_configuration.cc +++ b/shell/common/run_configuration.cc @@ -13,8 +13,9 @@ namespace shell { RunConfiguration RunConfiguration::InferFromSettings( - const blink::Settings& settings) { - auto asset_manager = fml::MakeRefCounted(); + const blink::Settings& settings, + fml::RefPtr io_worker) { + auto asset_manager = std::make_shared(); asset_manager->PushBack(std::make_unique( fml::Duplicate(settings.assets_dir))); @@ -23,18 +24,19 @@ RunConfiguration RunConfiguration::InferFromSettings( std::make_unique(fml::OpenDirectory( settings.assets_path.c_str(), false, fml::FilePermission::kRead))); - return {IsolateConfiguration::InferFromSettings(settings, asset_manager), + return {IsolateConfiguration::InferFromSettings(settings, asset_manager, + io_worker), asset_manager}; } RunConfiguration::RunConfiguration( std::unique_ptr configuration) : RunConfiguration(std::move(configuration), - fml::MakeRefCounted()) {} + std::make_shared()) {} RunConfiguration::RunConfiguration( std::unique_ptr configuration, - fml::RefPtr asset_manager) + std::shared_ptr asset_manager) : isolate_configuration_(std::move(configuration)), asset_manager_(std::move(asset_manager)) {} @@ -66,7 +68,7 @@ void RunConfiguration::SetEntrypointAndLibrary(std::string entrypoint, entrypoint_library_ = std::move(library); } -fml::RefPtr RunConfiguration::GetAssetManager() const { +std::shared_ptr RunConfiguration::GetAssetManager() const { return asset_manager_; } diff --git a/shell/common/run_configuration.h b/shell/common/run_configuration.h index bc3b78f52e157..7baeb30b9a55f 100644 --- a/shell/common/run_configuration.h +++ b/shell/common/run_configuration.h @@ -20,12 +20,14 @@ namespace shell { class RunConfiguration { public: - static RunConfiguration InferFromSettings(const blink::Settings& settings); + static RunConfiguration InferFromSettings( + const blink::Settings& settings, + fml::RefPtr io_worker = nullptr); RunConfiguration(std::unique_ptr configuration); RunConfiguration(std::unique_ptr configuration, - fml::RefPtr asset_manager); + std::shared_ptr asset_manager); RunConfiguration(RunConfiguration&&); @@ -39,7 +41,7 @@ class RunConfiguration { void SetEntrypointAndLibrary(std::string entrypoint, std::string library); - fml::RefPtr GetAssetManager() const; + std::shared_ptr GetAssetManager() const; const std::string& GetEntrypoint() const; @@ -49,7 +51,7 @@ class RunConfiguration { private: std::unique_ptr isolate_configuration_; - fml::RefPtr asset_manager_; + std::shared_ptr asset_manager_; std::string entrypoint_ = "main"; std::string entrypoint_library_ = ""; diff --git a/shell/common/shell.cc b/shell/common/shell.cc index 1139be8531c94..178f81488a184 100644 --- a/shell/common/shell.cc +++ b/shell/common/shell.cc @@ -949,7 +949,7 @@ bool Shell::OnServiceProtocolSetAssetBundlePath( auto& allocator = response.GetAllocator(); response.SetObject(); - auto asset_manager = fml::MakeRefCounted(); + auto asset_manager = std::make_shared(); asset_manager->PushFront(std::make_unique( fml::OpenDirectory(params.at("assetDirectory").ToString().c_str(), false, diff --git a/shell/platform/android/platform_view_android_jni.cc b/shell/platform/android/platform_view_android_jni.cc index e84e68737b281..eee6900cb2b11 100644 --- a/shell/platform/android/platform_view_android_jni.cc +++ b/shell/platform/android/platform_view_android_jni.cc @@ -241,7 +241,7 @@ static void RunBundleAndSnapshotFromLibrary(JNIEnv* env, jstring jEntrypoint, jstring jLibraryUrl, jobject jAssetManager) { - auto asset_manager = fml::MakeRefCounted(); + auto asset_manager = std::make_shared(); const auto bundlepath = fml::jni::JavaStringToString(env, jbundlepath); if (bundlepath.size() > 0) { diff --git a/shell/testing/tester_main.cc b/shell/testing/tester_main.cc index 207e35301ff5d..f8c72fad41845 100644 --- a/shell/testing/tester_main.cc +++ b/shell/testing/tester_main.cc @@ -145,7 +145,7 @@ int RunTester(const blink::Settings& settings, bool run_forever) { return EXIT_FAILURE; } - auto asset_manager = fml::MakeRefCounted(); + auto asset_manager = std::make_shared(); asset_manager->PushBack(std::make_unique( fml::Duplicate(settings.assets_dir))); asset_manager->PushBack( From 2bd8c94fca45df960b28dd26c1d637f00e74cba3 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Wed, 24 Oct 2018 14:52:57 -0400 Subject: [PATCH 0072/1537] Roll src/third_party/skia a7682c8c73e4..4f598e8c829a (8 commits) (#6654) https://skia.googlesource.com/skia.git/+log/a7682c8c73e4..4f598e8c829a Created with: gclient setdep -r src/third_party/skia@4f598e8c829a The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 4d48019311ddf..15dfccb98f3ec 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'a7682c8c73e4d39b27258dc22822dc05fb1970e7', + 'skia_revision': '4f598e8c829aeb3300f221cd990e595114dda59a', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 700b9ac3b728e..51eb438bd8a3d 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: d00f21333b18f3c1d8995b8d24855ec8 +Signature: 6191721212cb6d278c3d6d4d1716dd88 UNUSED LICENSES: From 6c2477bd2991175edff736ca394b69faa1dbb0c6 Mon Sep 17 00:00:00 2001 From: Dan Field Date: Wed, 24 Oct 2018 12:31:44 -0700 Subject: [PATCH 0073/1537] fix setter for viewOpaque (#6653) --- .../darwin/ios/framework/Source/FlutterViewController.mm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm b/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm index eeab410c37a0a..3f7422d8df119 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm @@ -187,7 +187,7 @@ - (BOOL)isViewOpaque { return _viewOpaque; } -- (void)viewOpaque:(BOOL)value { +- (void)setViewOpaque:(BOOL)value { _viewOpaque = value; if (_flutterView.get().layer.opaque != value) { _flutterView.get().layer.opaque = value; From 9669b70e1785d6aa79e9e98542c02c56bd8b8964 Mon Sep 17 00:00:00 2001 From: Amir Hardon Date: Wed, 24 Oct 2018 15:07:05 -0700 Subject: [PATCH 0074/1537] Add an iOS PlatformViewsController for creating/disposing UIViews. (#6569) Adds a FlutterPlatformViewFactory protocol - a simple factory protocol to be implemented by plugins that exposes a UIView for embedding in Flutter apps. * Adds a FlutterPlatformView protocol, which is used to associate a dispose callback with a `UIView` created by a FlutterPlatformViewFactory. * Exposes a registerViewFactory method in FlutterPluginRegistrar. * Implements the `flutter/platform_views` system channel on iOS, allowing Dart code to ask for creation/destruction of UIViews. --- ci/licenses_golden/licenses_flutter | 3 + shell/platform/darwin/ios/BUILD.gn | 3 + .../darwin/ios/framework/Headers/Flutter.h | 1 + .../framework/Headers/FlutterPlatformViews.h | 46 ++++++++++ .../ios/framework/Headers/FlutterPlugin.h | 13 +++ .../framework/Source/FlutterPlatformViews.mm | 88 +++++++++++++++++++ .../Source/FlutterPlatformViews_Internal.h | 36 ++++++++ .../framework/Source/FlutterViewController.mm | 14 +++ 8 files changed, 204 insertions(+) create mode 100644 shell/platform/darwin/ios/framework/Headers/FlutterPlatformViews.h create mode 100644 shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm create mode 100644 shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h diff --git a/ci/licenses_golden/licenses_flutter b/ci/licenses_golden/licenses_flutter index acefd7e4a9672..217ad698cafed 100644 --- a/ci/licenses_golden/licenses_flutter +++ b/ci/licenses_golden/licenses_flutter @@ -521,6 +521,8 @@ FILE: ../../../flutter/shell/platform/android/platform_message_response_android. FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterAppDelegate_Internal.h FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterObservatoryPublisher.h FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterObservatoryPublisher.mm +FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm +FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/platform_message_response_darwin.h FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/platform_message_response_darwin.mm FILE: ../../../flutter/shell/platform/embedder/embedder_surface.cc @@ -590,6 +592,7 @@ FILE: ../../../flutter/shell/platform/android/io/flutter/plugin/platform/Virtual FILE: ../../../flutter/shell/platform/android/io/flutter/view/FlutterCallbackInformation.java FILE: ../../../flutter/shell/platform/android/io/flutter/view/FlutterRunArguments.java FILE: ../../../flutter/shell/platform/darwin/ios/framework/Headers/FlutterCallbackCache.h +FILE: ../../../flutter/shell/platform/darwin/ios/framework/Headers/FlutterPlatformViews.h FILE: ../../../flutter/shell/platform/darwin/ios/framework/Headers/FlutterPluginAppLifeCycleDelegate.h FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterCallbackCache.mm FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterCallbackCache_Internal.h diff --git a/shell/platform/darwin/ios/BUILD.gn b/shell/platform/darwin/ios/BUILD.gn index f340f73e0eb6a..d33519ce0b712 100644 --- a/shell/platform/darwin/ios/BUILD.gn +++ b/shell/platform/darwin/ios/BUILD.gn @@ -29,6 +29,7 @@ _flutter_framework_headers = [ "framework/Headers/FlutterHeadlessDartRunner.h", "framework/Headers/FlutterMacros.h", "framework/Headers/FlutterNavigationController.h", + "framework/Headers/FlutterPlatformViews.h", "framework/Headers/FlutterPlugin.h", "framework/Headers/FlutterPluginAppLifeCycleDelegate.h", "framework/Headers/FlutterTexture.h", @@ -57,6 +58,8 @@ shared_library("create_flutter_framework_dylib") { "framework/Source/FlutterObservatoryPublisher.mm", "framework/Source/FlutterPlatformPlugin.h", "framework/Source/FlutterPlatformPlugin.mm", + "framework/Source/FlutterPlatformViews_Internal.h", + "framework/Source/FlutterPlatformViews.mm", "framework/Source/FlutterPluginAppLifeCycleDelegate.mm", "framework/Source/FlutterStandardCodec.mm", "framework/Source/FlutterStandardCodec_Internal.h", diff --git a/shell/platform/darwin/ios/framework/Headers/Flutter.h b/shell/platform/darwin/ios/framework/Headers/Flutter.h index 49464e40dc06b..458db5ed3637b 100644 --- a/shell/platform/darwin/ios/framework/Headers/Flutter.h +++ b/shell/platform/darwin/ios/framework/Headers/Flutter.h @@ -50,6 +50,7 @@ #include "FlutterHeadlessDartRunner.h" #include "FlutterMacros.h" #include "FlutterNavigationController.h" +#include "FlutterPlatformViews.h" #include "FlutterPlugin.h" #include "FlutterPluginAppLifeCycleDelegate.h" #include "FlutterTexture.h" diff --git a/shell/platform/darwin/ios/framework/Headers/FlutterPlatformViews.h b/shell/platform/darwin/ios/framework/Headers/FlutterPlatformViews.h new file mode 100644 index 0000000000000..c077d52cd2a00 --- /dev/null +++ b/shell/platform/darwin/ios/framework/Headers/FlutterPlatformViews.h @@ -0,0 +1,46 @@ +// Copyright 2018 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_FLUTTERPLATFORMVIEWS_H_ +#define FLUTTER_FLUTTERPLATFORMVIEWS_H_ + +#import + +#import "FlutterCodecs.h" +#import "FlutterMacros.h" + +NS_ASSUME_NONNULL_BEGIN + +FLUTTER_EXPORT +@protocol FlutterPlatformViewFactory +/** + * Create a `FlutterPlatformView`. + * + * Implemented by iOS code that expose a `UIView` for embedding in a Flutter app. + * + * The implementation of this method should create a new `UIView` and return it. + * + * @param frame The rectangle for the newly created `UIView` measued in points. + * @param viewIdentifier A unique identifier for this `UIView`. + * @param arguments Parameters for creating the `UIView` sent from the Dart side of the Flutter app. + * If `createArgsCodec` is not implemented, or if no creation arguments were sent from the Dart + * code, this will be null. Otherwise this will be the value sent from the Dart code as decoded by + * `createArgsCodec`. + */ +- (UIView*)createWithFrame:(CGRect)frame + viewIdentifier:(int64_t)viewId + arguments:(id _Nullable)args; + +/** + * Returns the `FlutterMessageCodec` for decoding the args parameter of `createWithFrame`. + * + * Only needs to be implemented if `createWithFrame` needs an arguments parameter. + */ +@optional +- (NSObject*)createArgsCodec; +@end + +NS_ASSUME_NONNULL_END + +#endif // FLUTTER_FLUTTERPLATFORMVIEWS_H_ diff --git a/shell/platform/darwin/ios/framework/Headers/FlutterPlugin.h b/shell/platform/darwin/ios/framework/Headers/FlutterPlugin.h index 799aa90fa0b30..4f6497712b619 100644 --- a/shell/platform/darwin/ios/framework/Headers/FlutterPlugin.h +++ b/shell/platform/darwin/ios/framework/Headers/FlutterPlugin.h @@ -10,6 +10,7 @@ #include "FlutterBinaryMessenger.h" #include "FlutterChannels.h" #include "FlutterCodecs.h" +#include "FlutterPlatformViews.h" #include "FlutterTexture.h" NS_ASSUME_NONNULL_BEGIN @@ -203,6 +204,18 @@ NS_ASSUME_NONNULL_BEGIN */ - (NSObject*)textures; +/** + * Registers a `FlutterPlatformViewFactory` for creation of platfrom views. + * + * Plugins expose `UIView` for embedding in Flutter apps by registering a view factory. + * + * @param factory The view factory that will be registered. + * @param factoryId:: A unique identifier for the factory, the Dart code of the Flutter app can use + * this identifier to request creation of a `UIView` by the registered factory. + */ +- (void)registerViewFactory:(NSObject*)factory + withId:(NSString*)factoryId; + /** Publishes a value for external use of the plugin. diff --git a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm new file mode 100644 index 0000000000000..9da977da8c993 --- /dev/null +++ b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm @@ -0,0 +1,88 @@ +// Copyright 2018 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 +#include +#include + +#include "FlutterPlatformViews_Internal.h" +#include "flutter/fml/platform/darwin/scoped_nsobject.h" +#include "flutter/shell/platform/darwin/ios/framework/Headers/FlutterChannels.h" + +namespace shell { + +FlutterPlatformViewsController::FlutterPlatformViewsController( + NSObject* messenger) { + channel_.reset([[FlutterMethodChannel alloc] + initWithName:@"flutter/platform_views" + binaryMessenger:messenger + codec:[FlutterStandardMethodCodec sharedInstance]]); + [channel_.get() setMethodCallHandler:^(FlutterMethodCall* call, FlutterResult result) { + OnMethodCall(call, result); + }]; +} + +void FlutterPlatformViewsController::OnMethodCall(FlutterMethodCall* call, FlutterResult& result) { + if ([[call method] isEqualToString:@"create"]) { + OnCreate(call, result); + } else if ([[call method] isEqualToString:@"dispose"]) { + OnDispose(call, result); + } else { + result(FlutterMethodNotImplemented); + } +} + +void FlutterPlatformViewsController::OnCreate(FlutterMethodCall* call, FlutterResult& result) { + NSDictionary* args = [call arguments]; + + long viewId = [args[@"id"] longValue]; + std::string viewType([args[@"viewType"] UTF8String]); + + if (views_[viewId] != nil) { + result([FlutterError errorWithCode:@"recreating_view" + message:@"trying to create an already created view" + details:[NSString stringWithFormat:@"view id: '%ld'", viewId]]); + } + + NSObject* factory = factories_[viewType].get(); + if (factory == nil) { + result([FlutterError errorWithCode:@"unregistered_view_type" + message:@"trying to create a view with an unregistered type" + details:[NSString stringWithFormat:@"unregistered view type: '%@'", + args[@"viewType"]]]); + return; + } + + // TODO(amirh): decode and pass the creation args. + views_[viewId] = fml::scoped_nsobject([[factory createWithFrame:CGRectZero + viewIdentifier:viewId + arguments:nil] retain]); + result(nil); +} + +void FlutterPlatformViewsController::OnDispose(FlutterMethodCall* call, FlutterResult& result) { + NSDictionary* args = [call arguments]; + int64_t viewId = [args[@"id"] longLongValue]; + + if (views_[viewId] == nil) { + result([FlutterError errorWithCode:@"unknown_view" + message:@"trying to dispose an unknown" + details:[NSString stringWithFormat:@"view id: '%lld'", viewId]]); + return; + } + + views_.erase(viewId); + result(nil); +} + +void FlutterPlatformViewsController::RegisterViewFactory( + NSObject* factory, + NSString* factoryId) { + std::string idString([factoryId UTF8String]); + FML_CHECK(factories_.count(idString) == 0); + factories_[idString] = + fml::scoped_nsobject>([factory retain]); +} + +} // namespace shell diff --git a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h new file mode 100644 index 0000000000000..620bec26d3ee5 --- /dev/null +++ b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h @@ -0,0 +1,36 @@ +// Copyright 2018 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. + +#ifndef FLUTTER_SHELL_PLATFORM_DARWIN_IOS_FRAMEWORK_SOURCE_FLUTTERPLATFORMVIEWS_INTERNAL_H_ +#define FLUTTER_SHELL_PLATFORM_DARWIN_IOS_FRAMEWORK_SOURCE_FLUTTERPLATFORMVIEWS_INTERNAL_H_ + +#include "flutter/fml/platform/darwin/scoped_nsobject.h" +#include "flutter/shell/common/shell.h" +#include "flutter/shell/platform/darwin/ios/framework/Headers/FlutterBinaryMessenger.h" +#include "flutter/shell/platform/darwin/ios/framework/Headers/FlutterChannels.h" +#include "flutter/shell/platform/darwin/ios/framework/Headers/FlutterPlatformViews.h" + +namespace shell { + +class FlutterPlatformViewsController { + public: + FlutterPlatformViewsController(NSObject* messenger); + + void RegisterViewFactory(NSObject* factory, NSString* factoryId); + + private: + fml::scoped_nsobject channel_; + std::map>> factories_; + std::map> views_; + + void OnMethodCall(FlutterMethodCall* call, FlutterResult& result); + void OnCreate(FlutterMethodCall* call, FlutterResult& result); + void OnDispose(FlutterMethodCall* call, FlutterResult& result); + + FML_DISALLOW_COPY_AND_ASSIGN(FlutterPlatformViewsController); +}; + +} // namespace shell + +#endif // FLUTTER_SHELL_PLATFORM_DARWIN_IOS_FRAMEWORK_SOURCE_FLUTTERPLATFORMVIEWS_INTERNAL_H_ diff --git a/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm b/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm index 3f7422d8df119..76c6229c73ce3 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm @@ -4,6 +4,7 @@ #define FML_USED_ON_EMBEDDER +#import "flutter/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h" #import "flutter/shell/platform/darwin/ios/framework/Source/FlutterViewController_Internal.h" #include @@ -53,6 +54,7 @@ @implementation FlutterViewController { fml::scoped_nsobject _flutterView; fml::scoped_nsobject _splashScreenView; fml::ScopedBlock _flutterViewRenderedCallback; + std::unique_ptr _platformViewsController; UIInterfaceOrientationMask _orientationPreferences; UIStatusBarStyle _statusBarStyle; blink::ViewportMetrics _viewportMetrics; @@ -113,6 +115,7 @@ - (void)performCommonViewControllerInitialization { [self setupChannels]; [self setupNotificationCenterObservers]; + _platformViewsController.reset(new shell::FlutterPlatformViewsController(self)); _pluginPublications = [NSMutableDictionary new]; } } @@ -1091,6 +1094,12 @@ - (void)onPreferredStatusBarStyleUpdated:(NSNotification*)notification { }); } +#pragma mark - Platform views + +- (shell::FlutterPlatformViewsController*)platformViewsController { + return _platformViewsController.get(); +} + #pragma mark - FlutterBinaryMessenger - (void)sendOnChannel:(NSString*)channel message:(NSData*)message { @@ -1197,6 +1206,11 @@ - (void)dealloc { return _flutterViewController; } +- (void)registerViewFactory:(NSObject*)factory + withId:(NSString*)factoryId { + [_flutterViewController platformViewsController] -> RegisterViewFactory(factory, factoryId); +} + - (void)publish:(NSObject*)value { _flutterViewController.pluginPublications[_pluginKey] = value; } From 9f2e2ba7b9d9b7bd831020ab4d055fcd261e9d74 Mon Sep 17 00:00:00 2001 From: Gary Qian Date: Wed, 24 Oct 2018 15:22:32 -0700 Subject: [PATCH 0075/1537] Add/expose API for Paragraph.getBoxesForRange BoxHeightStyle and BoxWidthStyle. (#6644) --- lib/ui/text.dart | 78 +++++++++++++++++++++++++++++++++++++++- lib/ui/text/paragraph.cc | 9 +++-- lib/ui/text/paragraph.h | 5 ++- 3 files changed, 87 insertions(+), 5 deletions(-) diff --git a/lib/ui/text.dart b/lib/ui/text.dart index 664cbaedef276..44d2261db59d0 100644 --- a/lib/ui/text.dart +++ b/lib/ui/text.dart @@ -947,6 +947,67 @@ class ParagraphConstraints { String toString() => '$runtimeType(width: $width)'; } +/// Defines various ways to vertically bound the boxes returned by +/// [Paragraph.getBoxesForRange]. +enum BoxHeightStyle { + /// Provide tight bounding boxes that fit heights per run. This style may result + /// in uneven bounding boxes that do not nicely connect with adjacent boxes. + tight, + + /// The height of the boxes will be the maximum height of all runs in the + /// line. All boxes in the same line will be the same height. This does not + /// guarantee that the boxes will cover the entire vertical height of the line + /// when there is additional line spacing. + /// + /// See [RectHeightStyle.includeLineSpacingTop], [RectHeightStyle.includeLineSpacingMiddle], + /// and [RectHeightStyle.includeLineSpacingBottom] for styles that will cover + /// the entire line. + max, + + /// Extends the top and bottom edge of the bounds to fully cover any line + /// spacing. + /// + /// The top and bottom of each box will cover half of the + /// space above and half of the space below the line. + /// + /// {@template flutter.dart:ui.boxHeightStyle.includeLineSpacing} + /// The top edge of each line should be the same as the bottom edge + /// of the line above. There should be no gaps in vertical coverage given any + /// amount of line spacing. Line spacing is not included above the first line + /// and below the last line due to no additional space present there. + /// {@endtemplate} + includeLineSpacingMiddle, + + /// Extends the top edge of the bounds to fully cover any line spacing. + /// + /// The line spacing will be added to the top of the box. + /// + /// {@macro flutter.dart:ui.rectHeightStyle.includeLineSpacing} + includeLineSpacingTop, + + /// Extends the bottom edge of the bounds to fully cover any line spacing. + /// + /// The line spacing will be added to the bottom of the box. + /// + /// {@macro flutter.dart:ui.boxHeightStyle.includeLineSpacing} + includeLineSpacingBottom, +} + +/// Defines various ways to horizontally bound the boxes returned by +/// [Paragraph.getBoxesForRange]. +enum BoxWidthStyle { + // Provide tight bounding boxes that fit widths to the runs of each line + // independently. + tight, + + /// Adds up to two additional boxes as needed at the beginning and/or end + /// of each line so that the widths of the boxes in line are the same width + /// as the widest line in the paragraph. The additional boxes on each line + /// are only added when the relevant box at the relevant edge of that line + /// does not span the maximum width of the paragraph. + max, +} + /// A paragraph of text. /// /// A paragraph retains the size and position of each glyph in the text and can @@ -1010,7 +1071,22 @@ class Paragraph extends NativeFieldWrapperClass2 { void _layout(double width) native 'Paragraph_layout'; /// Returns a list of text boxes that enclose the given text range. - List getBoxesForRange(int start, int end) native 'Paragraph_getRectsForRange'; + /// + /// The [boxHeightStyle] and [boxWidthStyle] parameters allow customization + /// of how the boxes are bound vertically and horizontally. Both style + /// parameters default to the tight option, which will provide close-fitting + /// boxes and will not account for any line spacing. + /// + /// The [boxHeightStyle] and [boxWidthStyle] parameters must not be null. + /// + /// See [BoxHeightStyle] and [BoxWidthStyle] for full descriptions of each option. + List getBoxesForRange(int start, int end, {BoxHeightStyle boxHeightStyle = BoxHeightStyle.tight, BoxWidthStyle boxWidthStyle = BoxWidthStyle.tight}) { + assert(boxHeightStyle != null); + assert(boxWidthStyle != null); + return _getBoxesForRange(start, end, boxHeightStyle.index, boxWidthStyle.index); + } + + List _getBoxesForRange(int start, int end, int boxHeightStyle, int boxWidthStyle) native 'Paragraph_getRectsForRange'; /// Returns the text position closest to the given offset. TextPosition getPositionForOffset(Offset offset) { diff --git a/lib/ui/text/paragraph.cc b/lib/ui/text/paragraph.cc index 1821bf9dd3a7a..46d30fa7934d0 100644 --- a/lib/ui/text/paragraph.cc +++ b/lib/ui/text/paragraph.cc @@ -84,10 +84,13 @@ void Paragraph::paint(Canvas* canvas, double x, double y) { m_paragraphImpl->paint(canvas, x, y); } -std::vector Paragraph::getRectsForRange(unsigned start, unsigned end) { +std::vector Paragraph::getRectsForRange(unsigned start, + unsigned end, + unsigned boxHeightStyle, + unsigned boxWidthStyle) { return m_paragraphImpl->getRectsForRange( - start, end, txt::Paragraph::RectHeightStyle::kTight, - txt::Paragraph::RectWidthStyle::kTight); + start, end, static_cast(boxHeightStyle), + static_cast(boxWidthStyle)); } Dart_Handle Paragraph::getPositionForOffset(double dx, double dy) { diff --git a/lib/ui/text/paragraph.h b/lib/ui/text/paragraph.h index e5f5e2bddb703..d8c0c4a89d462 100644 --- a/lib/ui/text/paragraph.h +++ b/lib/ui/text/paragraph.h @@ -42,7 +42,10 @@ class Paragraph : public RefCountedDartWrappable { void layout(double width); void paint(Canvas* canvas, double x, double y); - std::vector getRectsForRange(unsigned start, unsigned end); + std::vector getRectsForRange(unsigned start, + unsigned end, + unsigned boxHeightStyle, + unsigned boxWidthStyle); Dart_Handle getPositionForOffset(double dx, double dy); Dart_Handle getWordBoundary(unsigned offset); From 914551bfa46c6938843eca24038f5d6927fbfec8 Mon Sep 17 00:00:00 2001 From: Ben Konyi Date: Wed, 24 Oct 2018 16:29:35 -0700 Subject: [PATCH 0076/1537] Dart SDK roll for 2018-10-24 d8cb60d746 [infra] Improve clone command in analyze-flutter.sh script (#34739) 34d0801008 Generate analysis server protocol consts in analysis_server_client 2c83eb550e [vm] Integrate dart binary with Crashpad on Windows. b9999b6c27 [gardening] Mark co19 LibTest/io/RawDatagramSocket/lastWhere_A01_t02 flaky 0b15595913 [gardening] Mark co19 LibTest/io/Link/rename_A02_t01 flaky 57f895c7a4 Bounds of a generic type alias ensure the body is regular-bounded 6efc58f069 [vm] Pass member name as a symbol in instantiateInvocation. cf0a99a89b [fasta] Check type arguments in method invocations while doing inference d693742648 Specify for all literals whether the object overrides `Object.==`. 5c9060283b Change parameter 'silent' => 'instrumented' e4e82da85d Changed dartLangSpec errors to warnings 4695b5f138 Add "convert to int literal" to dartfix 0009ca7b1b In _matchInterfaceSubtypeOf, account for mixins having null superclass. 1d10e037ef [vm/bytecode] Remove unreachable bytecode 03eafc0b2e Add fromEntries on HashMap and LinkedHashMap 4f2a4e69a8 new convert-to-int-literal assist 58d73e08f4 [vm] Remove incorrect assert in Script::GetSnippet 6134ac8648 Revert "[VM runtime] Support Smi instances in type test cache." 4e49d19bd6 [gardening] Update status for #34901 6ba3e55ecc [VM runtime] Support Smi instances in type test cache. e4566d3dbd LSP: Fix nulls and missing fromJson calls in unions d91e0ad3d7 [VM] Make method extractors call a stub for creation of tear-off closure 4c9684f735 [vm] Ignore compilation errors in CorelibCompileAll b73f7ed3d4 [infra] Add tools/bots/find_base_commit.dart 6443a8036d Remove flaky markers for standalone_2/io tests, MacOS upgrade seemed to have getten rid underlying OS issue --- DEPS | 2 +- ci/licenses_golden/licenses_third_party | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 15dfccb98f3ec..ce3fff3ddd714 100644 --- a/DEPS +++ b/DEPS @@ -31,7 +31,7 @@ vars = { # Dart is: https://github.com/dart-lang/sdk/blob/master/DEPS. # You can use //tools/dart/create_updated_flutter_deps.py to produce # updated revision list of existing dependencies. - 'dart_revision': 'c04215d5f68b93fd513b5f69c04abf401faf5452', + 'dart_revision': 'd8cb60d746e3d34f9ee5e6b0a08bf12104d3f8e3', # WARNING: DO NOT EDIT MANUALLY # The lines between blank lines above and below are generated by a script. See create_updated_flutter_deps.py diff --git a/ci/licenses_golden/licenses_third_party b/ci/licenses_golden/licenses_third_party index a4aa30317b7ab..46d4d68eb4556 100644 --- a/ci/licenses_golden/licenses_third_party +++ b/ci/licenses_golden/licenses_third_party @@ -1,4 +1,4 @@ -Signature: a83c9a206b0a733bd4ca5faafac5edb9 +Signature: 47158c9bb91cfdfceab2d7ce96f52eb0 UNUSED LICENSES: From 08771fe14f99d9e7098718c5ab811c1c21fc68d9 Mon Sep 17 00:00:00 2001 From: liyuqian Date: Wed, 24 Oct 2018 18:32:51 -0700 Subject: [PATCH 0077/1537] Revert dart before engine commit 26e8840de5d6fe801378301dd36d54c92b25bd3b (#6656) * Revert "Dart SDK roll for 2018-10-24" This reverts commit 914551bfa46c6938843eca24038f5d6927fbfec8. * Revert "Dart SDK roll for 2018-10-23" This reverts commit 26e8840de5d6fe801378301dd36d54c92b25bd3b. --- DEPS | 2 +- ci/licenses_golden/licenses_third_party | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index ce3fff3ddd714..08e3e450db113 100644 --- a/DEPS +++ b/DEPS @@ -31,7 +31,7 @@ vars = { # Dart is: https://github.com/dart-lang/sdk/blob/master/DEPS. # You can use //tools/dart/create_updated_flutter_deps.py to produce # updated revision list of existing dependencies. - 'dart_revision': 'd8cb60d746e3d34f9ee5e6b0a08bf12104d3f8e3', + 'dart_revision': '45f9462398ae7d2e80acd79d3f9c32c7ca6f6f97', # WARNING: DO NOT EDIT MANUALLY # The lines between blank lines above and below are generated by a script. See create_updated_flutter_deps.py diff --git a/ci/licenses_golden/licenses_third_party b/ci/licenses_golden/licenses_third_party index 46d4d68eb4556..c5c6fc633659f 100644 --- a/ci/licenses_golden/licenses_third_party +++ b/ci/licenses_golden/licenses_third_party @@ -1,4 +1,4 @@ -Signature: 47158c9bb91cfdfceab2d7ce96f52eb0 +Signature: d91d49f0e8c58eb2fe7be4d8b2ed65eb UNUSED LICENSES: From ff0525f59486306425c2b68dd89a7c1c344ff792 Mon Sep 17 00:00:00 2001 From: sjindel-google Date: Thu, 25 Oct 2018 13:12:05 +0200 Subject: [PATCH 0078/1537] Add missing entry-points. (#6634) * Add missing entry-points. * Fix lint --- lib/ui/compositing.dart | 1 + lib/ui/painting.dart | 6 ++++++ lib/ui/text.dart | 1 + 3 files changed, 8 insertions(+) diff --git a/lib/ui/compositing.dart b/lib/ui/compositing.dart index 935a1665248da..b4e22cf7ab07f 100644 --- a/lib/ui/compositing.dart +++ b/lib/ui/compositing.dart @@ -10,6 +10,7 @@ part of dart.ui; /// /// Scene objects can be displayed on the screen using the /// [Window.render] method. +@pragma('vm:entry-point') class Scene extends NativeFieldWrapperClass2 { /// This class is created by the engine, and should not be instantiated /// or extended directly. diff --git a/lib/ui/painting.dart b/lib/ui/painting.dart index 98a6a4dfb1ad6..032a7047daafa 100644 --- a/lib/ui/painting.dart +++ b/lib/ui/painting.dart @@ -1503,6 +1503,7 @@ class _ImageInfo { /// /// To draw an [Image], use one of the methods on the [Canvas] class, such as /// [Canvas.drawImage]. +@pragma('vm:entry-point') class Image extends NativeFieldWrapperClass2 { /// This class is created by the engine, and should not be instantiated /// or extended directly. @@ -1550,6 +1551,7 @@ typedef ImageDecoderCallback = void Function(Image result); /// /// To obtain an instance of the [FrameInfo] interface, see /// [Codec.getNextFrame]. +@pragma('vm:entry-point') class FrameInfo extends NativeFieldWrapperClass2 { /// This class is created by the engine, and should not be instantiated /// or extended directly. @@ -1568,6 +1570,7 @@ class FrameInfo extends NativeFieldWrapperClass2 { } /// A handle to an image codec. +@pragma('vm:entry-point') class Codec extends NativeFieldWrapperClass2 { /// This class is created by the engine, and should not be instantiated /// or extended directly. @@ -1762,6 +1765,7 @@ enum PathOperation { } /// A handle for the framework to hold and retain an engine layer across frames. +@pragma('vm:entry-point') class EngineLayer extends NativeFieldWrapperClass2 { /// This class is created by the engine, and should not be instantiated /// or extended directly. @@ -1786,6 +1790,7 @@ class EngineLayer extends NativeFieldWrapperClass2 { /// /// Paths can be drawn on canvases using [Canvas.drawPath], and can /// used to create clip regions using [Canvas.clipPath]. +@pragma('vm:entry-point') class Path extends NativeFieldWrapperClass2 { /// Create a new empty [Path] object. @pragma('vm:entry-point') @@ -3580,6 +3585,7 @@ class Canvas extends NativeFieldWrapperClass2 { /// A [Picture] can be placed in a [Scene] using a [SceneBuilder], via /// the [SceneBuilder.addPicture] method. A [Picture] can also be /// drawn into a [Canvas], using the [Canvas.drawPicture] method. +@pragma('vm:entry-point') class Picture extends NativeFieldWrapperClass2 { /// This class is created by the engine, and should not be instantiated /// or extended directly. diff --git a/lib/ui/text.dart b/lib/ui/text.dart index 44d2261db59d0..015d82338a405 100644 --- a/lib/ui/text.dart +++ b/lib/ui/text.dart @@ -1017,6 +1017,7 @@ enum BoxWidthStyle { /// /// Paragraphs can be displayed on a [Canvas] using the [Canvas.drawParagraph] /// method. +@pragma('vm:entry-point') class Paragraph extends NativeFieldWrapperClass2 { /// This class is created by the engine, and should not be instantiated /// or extended directly. From a6e816b2a67c9087d81345da3fab87077bc45c91 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Thu, 25 Oct 2018 09:06:57 -0400 Subject: [PATCH 0079/1537] Roll src/third_party/skia 4f598e8c829a..dfca8f6adb6b (7 commits) (#6658) https://skia.googlesource.com/skia.git/+log/4f598e8c829a..dfca8f6adb6b Created with: gclient setdep -r src/third_party/skia@dfca8f6adb6b The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 6 +++++- sky/packages/sky_engine/LICENSE | 1 + 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 08e3e450db113..82664b322b273 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '4f598e8c829aeb3300f221cd990e595114dda59a', + 'skia_revision': 'dfca8f6adb6bcfdeb250bacf399717dbe3fdac8e', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 51eb438bd8a3d..1f52cef516ffd 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 6191721212cb6d278c3d6d4d1716dd88 +Signature: a9bc8633cae3b1c27947b4be511d34f4 UNUSED LICENSES: @@ -1289,6 +1289,7 @@ LIBRARY: skcms LIBRARY: skia LIBRARY: vulkan LIBRARY: vulkanmemoryallocator +LIBRARY: wuffs ORIGIN: ../../../third_party/skia/bench/ClearBench.cpp + ../../../third_party/skia/LICENSE TYPE: LicenseType.bsd FILE: ../../../third_party/skia/bench/ClearBench.cpp @@ -1399,6 +1400,8 @@ FILE: ../../../third_party/skia/samplecode/SampleNimaActor.h FILE: ../../../third_party/skia/src/android/SkAnimatedImage.cpp FILE: ../../../third_party/skia/src/c/sk_imageinfo.cpp FILE: ../../../third_party/skia/src/codec/SkEncodedInfo.cpp +FILE: ../../../third_party/skia/src/codec/SkWuffsCodec.cpp +FILE: ../../../third_party/skia/src/codec/SkWuffsCodec.h FILE: ../../../third_party/skia/src/compute/common/cl/find_cl.c FILE: ../../../third_party/skia/src/compute/common/cl/find_cl.h FILE: ../../../third_party/skia/src/compute/common/vk/cache_vk.c @@ -1634,6 +1637,7 @@ FILE: ../../../third_party/skia/third_party/skcms/src/Transform_inl.h FILE: ../../../third_party/skia/third_party/vulkan/SkiaVulkan.h FILE: ../../../third_party/skia/third_party/vulkanmemoryallocator/GrVulkanMemoryAllocator.cpp FILE: ../../../third_party/skia/third_party/vulkanmemoryallocator/GrVulkanMemoryAllocator.h +FILE: ../../../third_party/skia/third_party/wuffs/wuffs.c ---------------------------------------------------------------------------------------------------- Copyright 2018 Google Inc. diff --git a/sky/packages/sky_engine/LICENSE b/sky/packages/sky_engine/LICENSE index a49310632e4b2..44b03e07d4355 100644 --- a/sky/packages/sky_engine/LICENSE +++ b/sky/packages/sky_engine/LICENSE @@ -9706,6 +9706,7 @@ skcms skia vulkan vulkanmemoryallocator +wuffs Copyright 2018 Google Inc. From cf75289b6874e965362573c1c0a287c47506458e Mon Sep 17 00:00:00 2001 From: Jonah Williams Date: Thu, 25 Oct 2018 08:37:49 -0700 Subject: [PATCH 0080/1537] TextField is only a live region when it has input focus (#6649) --- .../android/io/flutter/view/AccessibilityBridge.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/shell/platform/android/io/flutter/view/AccessibilityBridge.java b/shell/platform/android/io/flutter/view/AccessibilityBridge.java index cfba87f96a8bf..261c3028a9849 100644 --- a/shell/platform/android/io/flutter/view/AccessibilityBridge.java +++ b/shell/platform/android/io/flutter/view/AccessibilityBridge.java @@ -167,10 +167,10 @@ public AccessibilityNodeInfo createAccessibilityNodeInfo(int virtualViewId) { if (object.textSelectionBase != -1 && object.textSelectionExtent != -1) { result.setTextSelection(object.textSelectionBase, object.textSelectionExtent); } - // Text fields will always be created as a live region, so that updates to - // the label trigger polite announcements. This makes it easy to follow a11y - // guidelines for text fields on Android. - if (Build.VERSION.SDK_INT > Build.VERSION_CODES.JELLY_BEAN_MR2) { + // Text fields will always be created as a live region when they have input focus, + // so that updates to the label trigger polite announcements. This makes it easy to + // follow a11y guidelines for text fields on Android. + if (Build.VERSION.SDK_INT > Build.VERSION_CODES.JELLY_BEAN_MR2 && mA11yFocusedObject != null && mA11yFocusedObject.id == virtualViewId) { result.setLiveRegion(View.ACCESSIBILITY_LIVE_REGION_POLITE); } } From 3edf5fa82307457f154d69ebc2513c0deedd5f6b Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Thu, 25 Oct 2018 12:31:57 -0400 Subject: [PATCH 0081/1537] Roll src/third_party/skia dfca8f6adb6b..a2272ef92640 (4 commits) (#6659) https://skia.googlesource.com/skia.git/+log/dfca8f6adb6b..a2272ef92640 Created with: gclient setdep -r src/third_party/skia@a2272ef92640 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 6 +----- sky/packages/sky_engine/LICENSE | 1 - 3 files changed, 2 insertions(+), 7 deletions(-) diff --git a/DEPS b/DEPS index 82664b322b273..b2f4e91a8754b 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'dfca8f6adb6bcfdeb250bacf399717dbe3fdac8e', + 'skia_revision': 'a2272ef92640c6039baffc3f509854b1f7604a00', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 1f52cef516ffd..037aef2646698 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: a9bc8633cae3b1c27947b4be511d34f4 +Signature: 1a9b21ab02be4e4cfa4167bc50a829fa UNUSED LICENSES: @@ -1289,7 +1289,6 @@ LIBRARY: skcms LIBRARY: skia LIBRARY: vulkan LIBRARY: vulkanmemoryallocator -LIBRARY: wuffs ORIGIN: ../../../third_party/skia/bench/ClearBench.cpp + ../../../third_party/skia/LICENSE TYPE: LicenseType.bsd FILE: ../../../third_party/skia/bench/ClearBench.cpp @@ -1400,8 +1399,6 @@ FILE: ../../../third_party/skia/samplecode/SampleNimaActor.h FILE: ../../../third_party/skia/src/android/SkAnimatedImage.cpp FILE: ../../../third_party/skia/src/c/sk_imageinfo.cpp FILE: ../../../third_party/skia/src/codec/SkEncodedInfo.cpp -FILE: ../../../third_party/skia/src/codec/SkWuffsCodec.cpp -FILE: ../../../third_party/skia/src/codec/SkWuffsCodec.h FILE: ../../../third_party/skia/src/compute/common/cl/find_cl.c FILE: ../../../third_party/skia/src/compute/common/cl/find_cl.h FILE: ../../../third_party/skia/src/compute/common/vk/cache_vk.c @@ -1637,7 +1634,6 @@ FILE: ../../../third_party/skia/third_party/skcms/src/Transform_inl.h FILE: ../../../third_party/skia/third_party/vulkan/SkiaVulkan.h FILE: ../../../third_party/skia/third_party/vulkanmemoryallocator/GrVulkanMemoryAllocator.cpp FILE: ../../../third_party/skia/third_party/vulkanmemoryallocator/GrVulkanMemoryAllocator.h -FILE: ../../../third_party/skia/third_party/wuffs/wuffs.c ---------------------------------------------------------------------------------------------------- Copyright 2018 Google Inc. diff --git a/sky/packages/sky_engine/LICENSE b/sky/packages/sky_engine/LICENSE index 44b03e07d4355..a49310632e4b2 100644 --- a/sky/packages/sky_engine/LICENSE +++ b/sky/packages/sky_engine/LICENSE @@ -9706,7 +9706,6 @@ skcms skia vulkan vulkanmemoryallocator -wuffs Copyright 2018 Google Inc. From 69dced91574079836870f8770145cb2c63f1b421 Mon Sep 17 00:00:00 2001 From: Ben Konyi Date: Thu, 25 Oct 2018 10:32:18 -0700 Subject: [PATCH 0082/1537] Dart SDK roll for 2018-10-25 bf26f760b1 [infra] Ensure that core dump upload triggers on main builders cdf6dde807 [gardening] bigint_test may still time out when interpreted (2nd try). d3498a81be [vm] Cleanup int overflow checking 9e9746a83c [gardening] bigint_test may still time out when interpreted. 7de2510339 [VM interpreter] Do not interpret some Bigint intrinsics (fixes #34901). 816ab3208c Fix versions in spec titles to match the description below c7c81af74e [vm/bytecode] Check for overflow of bytecode limits 655310ddf2 Add ArgumentError.checkNotNull utility 0170b8d529 Revert "[vm/compiler] Use loop framework for AOT inline heuristics" 9aff930924 Move test_methodCallTypeInference_mixinType into mixin_test.dart 3e750a7e79 [vm] Add test for certain cases of unreachable code daae20d32e [vm/compiler] Use loop framework for AOT inline heuristics 28a8fa50f6 Upgrade package:http to 0.12.0. b3055a1482 [gardening] Mark co19 LibTest/io/RawDatagramSocket/any_A01_t03 flaky b8fd29e0bb Remove dartfix dependencies on analysis server 8a5405fc40 [build] Add //third_party/android_tools BUILD file needed by zlib 82c1f2aaa8 [vm] Eliminate dart_zlib_path from BUILD files 11ad25a1c3 Reland "[VM runtime] Support Smi instances in type test cache." 3dc911909b Generate analysis_server_client protocol_generated.dart and related protocol files a902fc351f [gardening] Mark co19 LibTest/io/Stdin/readByteSync_A02_t01 flaky cfecec5eec Fix yet another cloning bug d8cb60d746 [infra] Improve clone command in analyze-flutter.sh script (#34739) 34d0801008 Generate analysis server protocol consts in analysis_server_client 2c83eb550e [vm] Integrate dart binary with Crashpad on Windows. b9999b6c27 [gardening] Mark co19 LibTest/io/RawDatagramSocket/lastWhere_A01_t02 flaky 0b15595913 [gardening] Mark co19 LibTest/io/Link/rename_A02_t01 flaky 57f895c7a4 Bounds of a generic type alias ensure the body is regular-bounded 6efc58f069 [vm] Pass member name as a symbol in instantiateInvocation. cf0a99a89b [fasta] Check type arguments in method invocations while doing inference d693742648 Specify for all literals whether the object overrides `Object.==`. 5c9060283b Change parameter 'silent' => 'instrumented' e4e82da85d Changed dartLangSpec errors to warnings 4695b5f138 Add "convert to int literal" to dartfix 0009ca7b1b In _matchInterfaceSubtypeOf, account for mixins having null superclass. 1d10e037ef [vm/bytecode] Remove unreachable bytecode 03eafc0b2e Add fromEntries on HashMap and LinkedHashMap 4f2a4e69a8 new convert-to-int-literal assist 58d73e08f4 [vm] Remove incorrect assert in Script::GetSnippet 6134ac8648 Revert "[VM runtime] Support Smi instances in type test cache." 4e49d19bd6 [gardening] Update status for #34901 6ba3e55ecc [VM runtime] Support Smi instances in type test cache. e4566d3dbd LSP: Fix nulls and missing fromJson calls in unions d91e0ad3d7 [VM] Make method extractors call a stub for creation of tear-off closure 4c9684f735 [vm] Ignore compilation errors in CorelibCompileAll b73f7ed3d4 [infra] Add tools/bots/find_base_commit.dart 6443a8036d Remove flaky markers for standalone_2/io tests, MacOS upgrade seemed to have getten rid underlying OS issue c04215d5f6 [fasta] Add a test case for issue #34899 03765ed6ec Update old mixin tests. Remove the --super-mixins flag from the tests. a394e4f492 Fix handling of JSON with interfaces nested within Unions 2f90f8d0ef Issue 34896. Verify the superconstraint signature invoked by a mixin, not the mixin's one. b82c1f979f Revert "[VM] Fix for issue 34839 - Dart_Cleanup may hang while shutting down" 289d2b003a [vm] Don't re-enqueue functions after unoptimized compiles 33accb510b [VM] : Cleanup the file modified and service stream callbacks in Dart_Cleanup so that the Flutter engine can restart the VM. 89c845eba2 [VM] Fix for issue 34839 - Dart_Cleanup may hang while shutting down the service isolate. e648d63bed Revert "Compute unlinked API signatures without unlinked summaries." 74792f4b9c Revert "[vm] Revert service isolate setup in main.cc" b4fbf1a065 [vm/bytecode] Wire up bytecode generation in kernel service 914065d80b [vm/compiler] Use loop framework for register allocator 7fd78ed5b6 [infra] Add analyzer branch alias for flutter-analyze builder (#34739) 9406b7b44e [vm/bytecode] Add versioning to bytecode format a82e025739 Move dartfix to its own package 872e90106e Set to publish new analyzer_plugin. 2d14d9a313 Improve how dartfix finds the analysis server pkg root a342cecffd Disable support for the old super mixins cddc2d42e1 Handle generic types in LSP spec parsing 8b6f8969a6 Support post-inference serialization/deserialization 9c3834d41c Remove unused import that shows a warning a1d61371d3 Exposes VM and Isolate Metrics in the API. 2c6eabd3c4 Compute substitution map on kernel objects instead of builders 704a43558d Move getSubstitutionMap to KernelClassBuilder af8e29142b Respecify where type promotion happens. 393fe44f8f Resolve types from the class header earlier 1515d4fe34 [Gardening] Mark LibTest/io/RawDatagramSocket/timeout_A06_t01 as flaky 11adb81a77 Remove the last references to the analyzer package from kernel. 02651515eb Fix identifyWidgetExpression() for Flutter. f5cd6ccfb7 More shared fasta/analyzer error codes cecda9043b Update analyzer docs based on previous feedback ab6eb9332f [VM] Fix flaky crash when unwinding the mutator stack during GC --- DEPS | 4 ++-- ci/licenses_golden/licenses_third_party | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/DEPS b/DEPS index b2f4e91a8754b..077491c3e5407 100644 --- a/DEPS +++ b/DEPS @@ -31,7 +31,7 @@ vars = { # Dart is: https://github.com/dart-lang/sdk/blob/master/DEPS. # You can use //tools/dart/create_updated_flutter_deps.py to produce # updated revision list of existing dependencies. - 'dart_revision': '45f9462398ae7d2e80acd79d3f9c32c7ca6f6f97', + 'dart_revision': 'bf26f760b1bb3d5fea6bda110f6a17b590364120', # WARNING: DO NOT EDIT MANUALLY # The lines between blank lines above and below are generated by a script. See create_updated_flutter_deps.py @@ -56,7 +56,7 @@ vars = { 'dart_http_multi_server_tag': '2.0.5', 'dart_http_parser_tag': '3.1.1', 'dart_http_retry_tag': '0.1.1', - 'dart_http_tag': '0.11.3+17', + 'dart_http_tag': '0.12.0', 'dart_http_throttle_tag': '1.0.2', 'dart_intl_tag': '0.15.7', 'dart_json_rpc_2_tag': '2.0.9', diff --git a/ci/licenses_golden/licenses_third_party b/ci/licenses_golden/licenses_third_party index c5c6fc633659f..7558dd3826319 100644 --- a/ci/licenses_golden/licenses_third_party +++ b/ci/licenses_golden/licenses_third_party @@ -1,4 +1,4 @@ -Signature: d91d49f0e8c58eb2fe7be4d8b2ed65eb +Signature: 0b4495d3d5939970345ed7265c27e7fb UNUSED LICENSES: From 6c2ade9fa2b555899530a31cc8cbd1dff3bf5eea Mon Sep 17 00:00:00 2001 From: Dan Field Date: Thu, 25 Oct 2018 11:29:55 -0700 Subject: [PATCH 0083/1537] Update contributing.md for xcode_backend refactor notes (#6642) * Update contributing.md for xcode_backend refactor notes --- CONTRIBUTING.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 6fe6a92aafd73..5b8c2741257e2 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -171,6 +171,7 @@ Once the artifacts are built, you can start using them in your application by fo * `../../bin/flutter run --local-engine-src-path /path/to/engine/src --local-engine=ios_debug_unopt` or `--local-engine=ios_debug_sim_unopt` for simulator * If you are debugging crashes in the engine, you can connect the `LLDB` debugger from `Xcode` by opening `ios/Runner.xcworkspace` and starting the application by clicking the Run button (CMD + R). * To debug non crashing code, open Xcode with `ios/Runner.xcworkspace`, expand Flutter->Runner->Supporting Files->main.m in the Runner project. Put a breakpoint in main() then set your desired breakpoint in the engine in [lldb](https://lldb.llvm.org/tutorial.html) via `breakpoint set -...`. + * Note that this will set a `$LOCAL_ENGINE` variable in your `Generated.xcconfig` file for the Flutter application. This variable will be set until you run `flutter run` again with either a different `--local-engine` option, or with none at all (which will unset it). This is important to note if you plan to re-run your Flutter `Runner.xcodeproj` directly from Xcode. ### Desktop (Mac and Linux), for tests From 3930b7c0d6451994ede745e03fddd6d63400da99 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Thu, 25 Oct 2018 15:55:57 -0400 Subject: [PATCH 0084/1537] Roll src/third_party/skia a2272ef92640..2cf29ce4dbbf (8 commits) (#6661) https://skia.googlesource.com/skia.git/+log/a2272ef92640..2cf29ce4dbbf Created with: gclient setdep -r src/third_party/skia@2cf29ce4dbbf The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 077491c3e5407..3faec534b1b29 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'a2272ef92640c6039baffc3f509854b1f7604a00', + 'skia_revision': '2cf29ce4dbbf4fdea204029bc8c690f78bff9bf9', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 037aef2646698..a08d5371926ca 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 1a9b21ab02be4e4cfa4167bc50a829fa +Signature: 2d156ae3879077d9fd8c62877e8ed42b UNUSED LICENSES: @@ -1352,6 +1352,7 @@ FILE: ../../../third_party/skia/include/private/SkSafe32.h FILE: ../../../third_party/skia/include/private/SkTo.h FILE: ../../../third_party/skia/include/utils/Sk3D.h FILE: ../../../third_party/skia/include/utils/SkAnimCodecPlayer.h +FILE: ../../../third_party/skia/include/utils/SkTextUtils.h FILE: ../../../third_party/skia/infra/cts/run_testlab.go FILE: ../../../third_party/skia/modules/skottie/include/SkottieProperty.h FILE: ../../../third_party/skia/modules/skottie/src/SkottieAdapter.cpp @@ -1625,6 +1626,7 @@ FILE: ../../../third_party/skia/src/utils/SkAnimCodecPlayer.cpp FILE: ../../../third_party/skia/src/utils/SkCallableTraits.h FILE: ../../../third_party/skia/src/utils/SkJSON.cpp FILE: ../../../third_party/skia/src/utils/SkJSON.h +FILE: ../../../third_party/skia/src/utils/SkTextUtils.cpp FILE: ../../../third_party/skia/src/utils/mac/SkUniqueCFRef.h FILE: ../../../third_party/skia/src/utils/win/SkDWriteNTDDI_VERSION.h FILE: ../../../third_party/skia/third_party/skcms/skcms.cc From 7286e9acd69e4f2806146b705cc0b917242f5e00 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Thu, 25 Oct 2018 21:58:30 -0400 Subject: [PATCH 0085/1537] Roll src/third_party/skia 2cf29ce4dbbf..f5eaee917bb7 (4 commits) (#6664) https://skia.googlesource.com/skia.git/+log/2cf29ce4dbbf..f5eaee917bb7 Created with: gclient setdep -r src/third_party/skia@f5eaee917bb7 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 3faec534b1b29..c03266c88b550 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '2cf29ce4dbbf4fdea204029bc8c690f78bff9bf9', + 'skia_revision': 'f5eaee917bb794057437a98c150c94e94704bb80', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index a08d5371926ca..3d5f6ec071aa0 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 2d156ae3879077d9fd8c62877e8ed42b +Signature: 8f9ff9ac23ec77ea82bacd2f6f3dc5c2 UNUSED LICENSES: From 074e67a7e2480ad757699a629cff84dc652bac1b Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Fri, 26 Oct 2018 01:22:56 -0400 Subject: [PATCH 0086/1537] Roll src/third_party/skia f5eaee917bb7..3f5b4ee4adfd (1 commits) (#6666) https://skia.googlesource.com/skia.git/+log/f5eaee917bb7..3f5b4ee4adfd Created with: gclient setdep -r src/third_party/skia@3f5b4ee4adfd The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index c03266c88b550..55c06ac066f45 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'f5eaee917bb794057437a98c150c94e94704bb80', + 'skia_revision': '3f5b4ee4adfd7859a11d5469924771b5c65a53cf', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 3d5f6ec071aa0..87920de751821 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 8f9ff9ac23ec77ea82bacd2f6f3dc5c2 +Signature: e2382b9d06f2e41b41da83ab5dfa1826 UNUSED LICENSES: From d53c2be11bafdd9485c48124ce18d213948daabc Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Fri, 26 Oct 2018 04:40:57 -0400 Subject: [PATCH 0087/1537] Roll src/third_party/skia 3f5b4ee4adfd..603c5da17491 (1 commits) (#6667) https://skia.googlesource.com/skia.git/+log/3f5b4ee4adfd..603c5da17491 Created with: gclient setdep -r src/third_party/skia@603c5da17491 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index 55c06ac066f45..86b4837954871 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '3f5b4ee4adfd7859a11d5469924771b5c65a53cf', + 'skia_revision': '603c5da17491267cd58ef2ba59600d2ed2ad3a5c', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the From 9c46333e143bb7f0823358811da8ee96e1c13e55 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Fri, 26 Oct 2018 09:09:56 -0400 Subject: [PATCH 0088/1537] Roll src/third_party/skia 603c5da17491..e2fd74b48f6f (1 commits) (#6668) https://skia.googlesource.com/skia.git/+log/603c5da17491..e2fd74b48f6f Created with: gclient setdep -r src/third_party/skia@e2fd74b48f6f The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 86b4837954871..41101178ae8af 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '603c5da17491267cd58ef2ba59600d2ed2ad3a5c', + 'skia_revision': 'e2fd74b48f6f7bc445abbb5f7b6e188d904601bf', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 87920de751821..840ad8b201b69 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: e2382b9d06f2e41b41da83ab5dfa1826 +Signature: 859828e89ddf69532259a86e307faa7a UNUSED LICENSES: From 270b02b89c52087cc3d96583e84f0ef7480b4587 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Fri, 26 Oct 2018 12:29:03 -0400 Subject: [PATCH 0089/1537] Roll src/third_party/skia e2fd74b48f6f..a944142412cd (9 commits) (#6669) https://skia.googlesource.com/skia.git/+log/e2fd74b48f6f..a944142412cd Created with: gclient setdep -r src/third_party/skia@a944142412cd The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 7 +++++-- sky/packages/sky_engine/LICENSE | 1 + 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/DEPS b/DEPS index 41101178ae8af..c2eb9cf5484e5 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'e2fd74b48f6f7bc445abbb5f7b6e188d904601bf', + 'skia_revision': 'a944142412cdb28dfc754f1a922a3678a52ed876', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 840ad8b201b69..6574d2b00a749 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 859828e89ddf69532259a86e307faa7a +Signature: bde06884d55ea0e9a302f2c44ee13732 UNUSED LICENSES: @@ -1289,6 +1289,7 @@ LIBRARY: skcms LIBRARY: skia LIBRARY: vulkan LIBRARY: vulkanmemoryallocator +LIBRARY: wuffs ORIGIN: ../../../third_party/skia/bench/ClearBench.cpp + ../../../third_party/skia/LICENSE TYPE: LicenseType.bsd FILE: ../../../third_party/skia/bench/ClearBench.cpp @@ -1400,6 +1401,8 @@ FILE: ../../../third_party/skia/samplecode/SampleNimaActor.h FILE: ../../../third_party/skia/src/android/SkAnimatedImage.cpp FILE: ../../../third_party/skia/src/c/sk_imageinfo.cpp FILE: ../../../third_party/skia/src/codec/SkEncodedInfo.cpp +FILE: ../../../third_party/skia/src/codec/SkWuffsCodec.cpp +FILE: ../../../third_party/skia/src/codec/SkWuffsCodec.h FILE: ../../../third_party/skia/src/compute/common/cl/find_cl.c FILE: ../../../third_party/skia/src/compute/common/cl/find_cl.h FILE: ../../../third_party/skia/src/compute/common/vk/cache_vk.c @@ -1636,6 +1639,7 @@ FILE: ../../../third_party/skia/third_party/skcms/src/Transform_inl.h FILE: ../../../third_party/skia/third_party/vulkan/SkiaVulkan.h FILE: ../../../third_party/skia/third_party/vulkanmemoryallocator/GrVulkanMemoryAllocator.cpp FILE: ../../../third_party/skia/third_party/vulkanmemoryallocator/GrVulkanMemoryAllocator.h +FILE: ../../../third_party/skia/third_party/wuffs/wuffs.c ---------------------------------------------------------------------------------------------------- Copyright 2018 Google Inc. @@ -3828,7 +3832,6 @@ FILE: ../../../third_party/skia/src/opts/SkBlitMask_opts_arm_neon.cpp FILE: ../../../third_party/skia/src/opts/SkBlitMask_opts_arm_neon.h FILE: ../../../third_party/skia/src/opts/SkBlitRow_opts.h FILE: ../../../third_party/skia/src/opts/SkColor_opts_neon.h -FILE: ../../../third_party/skia/src/opts/SkMorphologyImageFilter_opts.h FILE: ../../../third_party/skia/src/opts/SkNx_neon.h FILE: ../../../third_party/skia/src/opts/SkNx_sse.h FILE: ../../../third_party/skia/src/opts/SkOpts_sse41.cpp diff --git a/sky/packages/sky_engine/LICENSE b/sky/packages/sky_engine/LICENSE index a49310632e4b2..44b03e07d4355 100644 --- a/sky/packages/sky_engine/LICENSE +++ b/sky/packages/sky_engine/LICENSE @@ -9706,6 +9706,7 @@ skcms skia vulkan vulkanmemoryallocator +wuffs Copyright 2018 Google Inc. From dd791f36aca8fc6f13d6e2fa60f20d4ebea89825 Mon Sep 17 00:00:00 2001 From: Stanislav Baranov Date: Fri, 26 Oct 2018 09:39:10 -0700 Subject: [PATCH 0090/1537] Propagate pointer size from Android MotionEvent (#6662) --- lib/ui/hooks.dart | 3 ++- lib/ui/pointer.dart | 10 ++++++++++ lib/ui/window/pointer_data.cc | 2 +- lib/ui/window/pointer_data.h | 1 + .../platform/android/io/flutter/view/FlutterView.java | 4 +++- 5 files changed, 17 insertions(+), 3 deletions(-) diff --git a/lib/ui/hooks.dart b/lib/ui/hooks.dart index d3d81b7f3cc7d..dcd8d6d093c5a 100644 --- a/lib/ui/hooks.dart +++ b/lib/ui/hooks.dart @@ -196,7 +196,7 @@ void _invoke3(void callback(A1 a1, A2 a2, A3 a3), Zone zone, A1 arg1 // // * pointer_data.cc // * FlutterView.java -const int _kPointerDataFieldCount = 19; +const int _kPointerDataFieldCount = 20; PointerDataPacket _unpackPointerDataPacket(ByteData packet) { const int kStride = Int64List.bytesPerElement; @@ -220,6 +220,7 @@ PointerDataPacket _unpackPointerDataPacket(ByteData packet) { pressureMax: packet.getFloat64(kStride * offset++, _kFakeHostEndian), distance: packet.getFloat64(kStride * offset++, _kFakeHostEndian), distanceMax: packet.getFloat64(kStride * offset++, _kFakeHostEndian), + size: packet.getFloat64(kStride * offset++, _kFakeHostEndian), radiusMajor: packet.getFloat64(kStride * offset++, _kFakeHostEndian), radiusMinor: packet.getFloat64(kStride * offset++, _kFakeHostEndian), radiusMin: packet.getFloat64(kStride * offset++, _kFakeHostEndian), diff --git a/lib/ui/pointer.dart b/lib/ui/pointer.dart index 98a4f92385e95..a55086ece63f0 100644 --- a/lib/ui/pointer.dart +++ b/lib/ui/pointer.dart @@ -71,6 +71,7 @@ class PointerData { this.pressureMax: 0.0, this.distance: 0.0, this.distanceMax: 0.0, + this.size: 0.0, this.radiusMajor: 0.0, this.radiusMinor: 0.0, this.radiusMin: 0.0, @@ -137,6 +138,14 @@ class PointerData { /// 0.0. final double distanceMax; + /// The area of the screen being pressed, scaled to a value between 0 and 1. + /// The value of size can be used to determine fat touch events. This value + /// is only set on Android, and is a device specific approximation within + /// the range of detectable values. So, for example, the value of 0.1 could + /// mean a touch with the tip of the finger, 0.2 a touch with full finger, + /// and 0.3 the full palm. + final double size; + /// The radius of the contact ellipse along the major axis, in logical pixels. final double radiusMajor; @@ -208,6 +217,7 @@ class PointerData { 'pressureMax: $pressureMax, ' 'distance: $distance, ' 'distanceMax: $distanceMax, ' + 'size: $size, ' 'radiusMajor: $radiusMajor, ' 'radiusMinor: $radiusMinor, ' 'radiusMin: $radiusMin, ' diff --git a/lib/ui/window/pointer_data.cc b/lib/ui/window/pointer_data.cc index c85a1a50b8e72..e657460cf293a 100644 --- a/lib/ui/window/pointer_data.cc +++ b/lib/ui/window/pointer_data.cc @@ -9,7 +9,7 @@ namespace blink { // If this value changes, update the pointer data unpacking code in hooks.dart. -static constexpr int kPointerDataFieldCount = 19; +static constexpr int kPointerDataFieldCount = 20; static_assert(sizeof(PointerData) == sizeof(int64_t) * kPointerDataFieldCount, "PointerData has the wrong size"); diff --git a/lib/ui/window/pointer_data.h b/lib/ui/window/pointer_data.h index 6a23c3d689d2e..1d7fe09cea7a8 100644 --- a/lib/ui/window/pointer_data.h +++ b/lib/ui/window/pointer_data.h @@ -43,6 +43,7 @@ struct alignas(8) PointerData { double pressure_max; double distance; double distance_max; + double size; double radius_major; double radius_minor; double radius_min; diff --git a/shell/platform/android/io/flutter/view/FlutterView.java b/shell/platform/android/io/flutter/view/FlutterView.java index eadd2247f8d83..a2c12cc78543d 100644 --- a/shell/platform/android/io/flutter/view/FlutterView.java +++ b/shell/platform/android/io/flutter/view/FlutterView.java @@ -488,6 +488,8 @@ private void addPointerForIndex(MotionEvent event, int pointerIndex, ByteBuffer packet.putDouble(0.0); // distance_max } + packet.putDouble(event.getSize(pointerIndex)); // size + packet.putDouble(event.getToolMajor(pointerIndex)); // radius_major packet.putDouble(event.getToolMinor(pointerIndex)); // radius_minor @@ -519,7 +521,7 @@ public boolean onTouchEvent(MotionEvent event) { } // These values must match the unpacking code in hooks.dart. - final int kPointerDataFieldCount = 19; + final int kPointerDataFieldCount = 20; final int kBytePerField = 8; int pointerCount = event.getPointerCount(); From 3236b49ceac563d3561f464b5a849e90367fc4a0 Mon Sep 17 00:00:00 2001 From: Mehmet Fidanboylu Date: Fri, 26 Oct 2018 10:16:56 -0700 Subject: [PATCH 0091/1537] Add missing includes (#6670) --- lib/ui/isolate_name_server/isolate_name_server_natives.h | 1 + lib/ui/text/asset_manager_font_provider.h | 1 + third_party/txt/src/minikin/GraphemeBreak.h | 3 +++ 3 files changed, 5 insertions(+) diff --git a/lib/ui/isolate_name_server/isolate_name_server_natives.h b/lib/ui/isolate_name_server/isolate_name_server_natives.h index 2ebbe6e445010..79ce0c5c5c0f2 100644 --- a/lib/ui/isolate_name_server/isolate_name_server_natives.h +++ b/lib/ui/isolate_name_server/isolate_name_server_natives.h @@ -5,6 +5,7 @@ #ifndef FLUTTER_LIB_UI_ISOLATE_NAME_SERVER_NATIVES_H_ #define FLUTTER_LIB_UI_ISOLATE_NAME_SERVER_NATIVES_H_ +#include #include "third_party/dart/runtime/include/dart_api.h" namespace tonic { diff --git a/lib/ui/text/asset_manager_font_provider.h b/lib/ui/text/asset_manager_font_provider.h index 89554b14f527e..cb858e5a5caa7 100644 --- a/lib/ui/text/asset_manager_font_provider.h +++ b/lib/ui/text/asset_manager_font_provider.h @@ -13,6 +13,7 @@ #include "flutter/assets/asset_manager.h" #include "flutter/fml/macros.h" #include "third_party/skia/include/core/SkFontMgr.h" +#include "third_party/skia/include/core/SkTypeface.h" #include "txt/font_asset_provider.h" namespace blink { diff --git a/third_party/txt/src/minikin/GraphemeBreak.h b/third_party/txt/src/minikin/GraphemeBreak.h index 233ec15c76766..62b9d59aa9344 100644 --- a/third_party/txt/src/minikin/GraphemeBreak.h +++ b/third_party/txt/src/minikin/GraphemeBreak.h @@ -17,6 +17,9 @@ #ifndef MINIKIN_GRAPHEME_BREAK_H #define MINIKIN_GRAPHEME_BREAK_H +#include +#include + namespace minikin { class GraphemeBreak { From 162b2e98c036a8f8c355fd475dbe0db4f4bc886c Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Fri, 26 Oct 2018 15:52:56 -0400 Subject: [PATCH 0092/1537] Roll src/third_party/skia a944142412cd..3b79aa3a5ad0 (15 commits) (#6671) https://skia.googlesource.com/skia.git/+log/a944142412cd..3b79aa3a5ad0 Created with: gclient setdep -r src/third_party/skia@3b79aa3a5ad0 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/DEPS b/DEPS index c2eb9cf5484e5..5db5bd3f24f88 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'a944142412cdb28dfc754f1a922a3678a52ed876', + 'skia_revision': '3b79aa3a5ad0c6cff8495e14fca0c5e6f4ff9b9b', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 6574d2b00a749..6ad3e5a36564b 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: bde06884d55ea0e9a302f2c44ee13732 +Signature: ae7ffdd1abacf6ba5359005187a0e034 UNUSED LICENSES: @@ -718,7 +718,6 @@ FILE: ../../../third_party/skia/bench/ImageCacheBudgetBench.cpp FILE: ../../../third_party/skia/bench/PDFBench.cpp FILE: ../../../third_party/skia/bench/QuickRejectBench.cpp FILE: ../../../third_party/skia/bench/ShapesBench.cpp -FILE: ../../../third_party/skia/bench/SkRasterPipelineBench.cpp FILE: ../../../third_party/skia/bench/StreamBench.cpp FILE: ../../../third_party/skia/bench/SwizzleBench.cpp FILE: ../../../third_party/skia/bench/TileImageFilterBench.cpp @@ -993,7 +992,6 @@ FILE: ../../../third_party/skia/src/core/SkNormalSource.cpp FILE: ../../../third_party/skia/src/core/SkNormalSource.h FILE: ../../../third_party/skia/src/core/SkOverdrawCanvas.cpp FILE: ../../../third_party/skia/src/core/SkPM4f.h -FILE: ../../../third_party/skia/src/core/SkPM4fPriv.h FILE: ../../../third_party/skia/src/core/SkPathMeasurePriv.h FILE: ../../../third_party/skia/src/core/SkRasterPipeline.cpp FILE: ../../../third_party/skia/src/core/SkRasterPipeline.h @@ -1592,6 +1590,8 @@ FILE: ../../../third_party/skia/src/gpu/ops/GrClearStencilClipOp.cpp FILE: ../../../third_party/skia/src/gpu/ops/GrDebugMarkerOp.cpp FILE: ../../../third_party/skia/src/gpu/ops/GrDrawableOp.cpp FILE: ../../../third_party/skia/src/gpu/ops/GrDrawableOp.h +FILE: ../../../third_party/skia/src/gpu/ops/GrQuadPerEdgeAA.cpp +FILE: ../../../third_party/skia/src/gpu/ops/GrQuadPerEdgeAA.h FILE: ../../../third_party/skia/src/gpu/text/GrAtlasManager.cpp FILE: ../../../third_party/skia/src/gpu/text/GrAtlasManager.h FILE: ../../../third_party/skia/src/gpu/text/GrSDFMaskFilter.cpp From 2bfb893cf39ef8455bf5cb87fbf3e14c410ad71a Mon Sep 17 00:00:00 2001 From: Dan Field Date: Fri, 26 Oct 2018 13:00:12 -0700 Subject: [PATCH 0093/1537] iOS Embedding Refactor (#6447) * Create FlutterEngine to manage a Shell to support maintaining execution state across instances of FlutterViewControllers * Refactor PlatformViewIOS to support adding or removing a FlutterViewController dynamically * Refactor FlutterDartHeadlessCodeRunner to implement FlutterEngine * Refactor FlutterViewController to accept a FlutterEngine at initialization or to create one for backwards compatibility; any Shell related responsibilities are now passed through to the Engine instance * Remove FlutterNavigationController (unused) * Update all public Objective C doc comments to be consistent and formatable * Add public documentation to all public headers --- ci/licenses_golden/licenses_flutter | 7 +- shell/platform/darwin/ios/BUILD.gn | 7 +- .../darwin/ios/framework/Headers/Flutter.h | 9 +- .../framework/Headers/FlutterAppDelegate.h | 9 +- .../Headers/FlutterBinaryMessenger.h | 85 ++- .../framework/Headers/FlutterCallbackCache.h | 37 +- .../ios/framework/Headers/FlutterChannels.h | 452 ++++++++------- .../ios/framework/Headers/FlutterCodecs.h | 359 ++++++------ .../framework/Headers/FlutterDartProject.h | 43 +- .../ios/framework/Headers/FlutterEngine.h | 171 ++++++ .../Headers/FlutterHeadlessDartRunner.h | 61 +- .../ios/framework/Headers/FlutterMacros.h | 18 +- .../Headers/FlutterNavigationController.h | 9 - .../framework/Headers/FlutterPlatformViews.h | 4 +- .../ios/framework/Headers/FlutterPlugin.h | 2 +- .../FlutterPluginAppLifeCycleDelegate.h | 103 ++-- .../ios/framework/Headers/FlutterTexture.h | 4 +- .../framework/Headers/FlutterViewController.h | 123 ++-- .../framework/Source/FlutterDartProject.mm | 19 +- .../Source/FlutterDartProject_Internal.h | 3 + .../ios/framework/Source/FlutterEngine.mm | 531 ++++++++++++++++++ .../framework/Source/FlutterEngine_Internal.h | 45 ++ .../Source/FlutterHeadlessDartRunner.mm | 125 +---- .../Source/FlutterNavigationController.mm | 14 - .../framework/Source/FlutterPlatformPlugin.h | 6 +- .../framework/Source/FlutterPlatformPlugin.mm | 19 +- .../Source/FlutterTextInputDelegate.h | 2 +- .../framework/Source/FlutterTextInputPlugin.h | 2 +- .../framework/Source/FlutterViewController.mm | 470 +++------------- .../Source/FlutterViewController_Internal.h | 9 +- .../framework/Source/accessibility_bridge.mm | 16 +- .../Source/accessibility_text_entry.h | 4 +- .../Source/accessibility_text_entry.mm | 9 +- .../Source/flutter_codecs_unittest.mm | 2 +- .../darwin/ios/headless_platform_view_ios.h | 38 -- .../darwin/ios/headless_platform_view_ios.mm | 20 - .../darwin/ios/ios_external_texture_gl.h | 7 +- shell/platform/darwin/ios/ios_gl_context.mm | 2 + .../darwin/ios/ios_surface_software.h | 3 +- shell/platform/darwin/ios/platform_view_ios.h | 32 +- .../platform/darwin/ios/platform_view_ios.mm | 65 ++- 41 files changed, 1672 insertions(+), 1274 deletions(-) create mode 100644 shell/platform/darwin/ios/framework/Headers/FlutterEngine.h delete mode 100644 shell/platform/darwin/ios/framework/Headers/FlutterNavigationController.h create mode 100644 shell/platform/darwin/ios/framework/Source/FlutterEngine.mm create mode 100644 shell/platform/darwin/ios/framework/Source/FlutterEngine_Internal.h delete mode 100644 shell/platform/darwin/ios/framework/Source/FlutterNavigationController.mm delete mode 100644 shell/platform/darwin/ios/headless_platform_view_ios.h delete mode 100644 shell/platform/darwin/ios/headless_platform_view_ios.mm diff --git a/ci/licenses_golden/licenses_flutter b/ci/licenses_golden/licenses_flutter index 217ad698cafed..3c40ce365f34d 100644 --- a/ci/licenses_golden/licenses_flutter +++ b/ci/licenses_golden/licenses_flutter @@ -118,13 +118,11 @@ FILE: ../../../flutter/shell/platform/darwin/ios/framework/Headers/FlutterBinary FILE: ../../../flutter/shell/platform/darwin/ios/framework/Headers/FlutterChannels.h FILE: ../../../flutter/shell/platform/darwin/ios/framework/Headers/FlutterCodecs.h FILE: ../../../flutter/shell/platform/darwin/ios/framework/Headers/FlutterHeadlessDartRunner.h -FILE: ../../../flutter/shell/platform/darwin/ios/framework/Headers/FlutterNavigationController.h FILE: ../../../flutter/shell/platform/darwin/ios/framework/Headers/FlutterPlugin.h FILE: ../../../flutter/shell/platform/darwin/ios/framework/Headers/FlutterTexture.h FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterChannels.mm FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterCodecs.mm FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterHeadlessDartRunner.mm -FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterNavigationController.mm FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterStandardCodec.mm FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterStandardCodec_Internal.h FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterUmbrellaImport.m @@ -203,7 +201,6 @@ FILE: ../../../flutter/shell/platform/android/io/flutter/plugin/common/JSONUtil. FILE: ../../../flutter/shell/platform/darwin/ios/framework/Flutter.podspec FILE: ../../../flutter/shell/platform/darwin/ios/framework/Info.plist FILE: ../../../flutter/shell/platform/darwin/ios/framework/module.modulemap -FILE: ../../../flutter/shell/platform/darwin/ios/headless_platform_view_ios.mm FILE: ../../../flutter/shell/platform/embedder/assets/EmbedderInfo.plist FILE: ../../../flutter/shell/platform/embedder/assets/embedder.modulemap FILE: ../../../flutter/shell/platform/embedder/fixtures/simple_main.dart @@ -518,7 +515,10 @@ FILE: ../../../flutter/shell/platform/android/android_shell_holder.cc FILE: ../../../flutter/shell/platform/android/android_shell_holder.h FILE: ../../../flutter/shell/platform/android/platform_message_response_android.cc FILE: ../../../flutter/shell/platform/android/platform_message_response_android.h +FILE: ../../../flutter/shell/platform/darwin/ios/framework/Headers/FlutterEngine.h FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterAppDelegate_Internal.h +FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterEngine.mm +FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterEngine_Internal.h FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterObservatoryPublisher.h FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterObservatoryPublisher.mm FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm @@ -599,7 +599,6 @@ FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterCallbac FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterPluginAppLifeCycleDelegate.mm FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/accessibility_text_entry.h FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/accessibility_text_entry.mm -FILE: ../../../flutter/shell/platform/darwin/ios/headless_platform_view_ios.h ---------------------------------------------------------------------------------------------------- Copyright 2018 The Chromium Authors. All rights reserved. diff --git a/shell/platform/darwin/ios/BUILD.gn b/shell/platform/darwin/ios/BUILD.gn index d33519ce0b712..15a14ad82bea4 100644 --- a/shell/platform/darwin/ios/BUILD.gn +++ b/shell/platform/darwin/ios/BUILD.gn @@ -26,9 +26,9 @@ _flutter_framework_headers = [ "framework/Headers/FlutterChannels.h", "framework/Headers/FlutterCodecs.h", "framework/Headers/FlutterDartProject.h", + "framework/Headers/FlutterEngine.h", "framework/Headers/FlutterHeadlessDartRunner.h", "framework/Headers/FlutterMacros.h", - "framework/Headers/FlutterNavigationController.h", "framework/Headers/FlutterPlatformViews.h", "framework/Headers/FlutterPlugin.h", "framework/Headers/FlutterPluginAppLifeCycleDelegate.h", @@ -52,8 +52,9 @@ shared_library("create_flutter_framework_dylib") { "framework/Source/FlutterCodecs.mm", "framework/Source/FlutterDartProject.mm", "framework/Source/FlutterDartProject_Internal.h", + "framework/Source/FlutterEngine.mm", + "framework/Source/FlutterEngine_Internal.h", "framework/Source/FlutterHeadlessDartRunner.mm", - "framework/Source/FlutterNavigationController.mm", "framework/Source/FlutterObservatoryPublisher.h", "framework/Source/FlutterObservatoryPublisher.mm", "framework/Source/FlutterPlatformPlugin.h", @@ -80,8 +81,6 @@ shared_library("create_flutter_framework_dylib") { "framework/Source/platform_message_router.mm", "framework/Source/vsync_waiter_ios.h", "framework/Source/vsync_waiter_ios.mm", - "headless_platform_view_ios.h", - "headless_platform_view_ios.mm", "ios_external_texture_gl.h", "ios_external_texture_gl.mm", "ios_gl_context.h", diff --git a/shell/platform/darwin/ios/framework/Headers/Flutter.h b/shell/platform/darwin/ios/framework/Headers/Flutter.h index 458db5ed3637b..0d2f831d8a1fe 100644 --- a/shell/platform/darwin/ios/framework/Headers/Flutter.h +++ b/shell/platform/darwin/ios/framework/Headers/Flutter.h @@ -8,6 +8,13 @@ /** BREAKING CHANGES: + October 5, 2018: + - Removed FlutterNavigationController.h/.mm + - Changed return signature of `FlutterDartHeadlessCodeRunner.run*` from void + to bool + - Removed HeadlessPlatformViewIOS + - Marked FlutterDartHeadlessCodeRunner deprecated + August 31, 2018: Marked -[FlutterDartProject initFromDefaultSourceForConfiguration] and FlutterStandardBigInteger as unavailable. @@ -47,9 +54,9 @@ #include "FlutterChannels.h" #include "FlutterCodecs.h" #include "FlutterDartProject.h" +#include "FlutterEngine.h" #include "FlutterHeadlessDartRunner.h" #include "FlutterMacros.h" -#include "FlutterNavigationController.h" #include "FlutterPlatformViews.h" #include "FlutterPlugin.h" #include "FlutterPluginAppLifeCycleDelegate.h" diff --git a/shell/platform/darwin/ios/framework/Headers/FlutterAppDelegate.h b/shell/platform/darwin/ios/framework/Headers/FlutterAppDelegate.h index f175ea2925826..05c934b072c72 100644 --- a/shell/platform/darwin/ios/framework/Headers/FlutterAppDelegate.h +++ b/shell/platform/darwin/ios/framework/Headers/FlutterAppDelegate.h @@ -11,11 +11,11 @@ #include "FlutterPlugin.h" /** - * UIApplicationDelegate subclass for simple apps that want default behavior. + * `UIApplicationDelegate` subclass for simple apps that want default behavior. * - * This class provides the following behaviors: + * This class implements the following behaviors: * * Status bar touches are forwarded to the key window's root view - * FlutterViewController, in order to trigger scroll to top. + * `FlutterViewController`, in order to trigger scroll to top. * * Keeps the Flutter connection open in debug mode when the phone screen * locks. * @@ -24,7 +24,8 @@ * code as necessary from FlutterAppDelegate.mm. */ FLUTTER_EXPORT -@interface FlutterAppDelegate : UIResponder +@interface FlutterAppDelegate + : UIResponder @property(strong, nonatomic) UIWindow* window; diff --git a/shell/platform/darwin/ios/framework/Headers/FlutterBinaryMessenger.h b/shell/platform/darwin/ios/framework/Headers/FlutterBinaryMessenger.h index 606c131349cc4..341aae91cdc5f 100644 --- a/shell/platform/darwin/ios/framework/Headers/FlutterBinaryMessenger.h +++ b/shell/platform/darwin/ios/framework/Headers/FlutterBinaryMessenger.h @@ -11,72 +11,67 @@ NS_ASSUME_NONNULL_BEGIN /** - A message reply callback. - - Used for submitting a binary reply back to a Flutter message sender. Also used - in the dual capacity for handling a binary message reply received from Flutter. - - - Parameters: - - reply: The reply. + * A message reply callback. + * + * Used for submitting a binary reply back to a Flutter message sender. Also used + * in for handling a binary message reply received from Flutter. + * + * @param reply The reply. */ typedef void (^FlutterBinaryReply)(NSData* _Nullable reply); /** - A strategy for handling incoming binary messages from Flutter and to send - asynchronous replies back to Flutter. - - - Parameters: - - message: The message. - - reply: A callback for submitting a reply to the sender. + * A strategy for handling incoming binary messages from Flutter and to send + * asynchronous replies back to Flutter. + * + * @param message The message. + * @param reply A callback for submitting an asynchronous reply to the sender. */ typedef void (^FlutterBinaryMessageHandler)(NSData* _Nullable message, FlutterBinaryReply reply); /** - A facility for communicating with the Flutter side using asynchronous message - passing with binary messages. - - - SeeAlso: - - `FlutterBasicMessageChannel`, which supports communication using structured - messages. - - `FlutterMethodChannel`, which supports communication using asynchronous - method calls. - - `FlutterEventChannel`, which supports commuication using event streams. + * A facility for communicating with the Flutter side using asynchronous message + * passing with binary messages. + * + * Implementated by: + * - `FlutterBasicMessageChannel`, which supports communication using structured + * messages. + * - `FlutterMethodChannel`, which supports communication using asynchronous + * method calls. + * - `FlutterEventChannel`, which supports commuication using event streams. */ FLUTTER_EXPORT -@protocol FlutterBinaryMessenger +@protocol FlutterBinaryMessenger /** - Sends a binary message to the Flutter side on the specified channel, expecting - no reply. - - - Parameters: - - channel: The channel name. - - message: The message. + * Sends a binary message to the Flutter side on the specified channel, expecting + * no reply. + * + * @param channel The channel name. + * @param message The message. */ - (void)sendOnChannel:(NSString*)channel message:(NSData* _Nullable)message; /** - Sends a binary message to the Flutter side on the specified channel, expecting - an asynchronous reply. - - - Parameters: - - channel: The channel name. - - message: The message. - - callback: A callback for receiving a reply. + * Sends a binary message to the Flutter side on the specified channel, expecting + * an asynchronous reply. + * + * @param channel The channel name. + * @param message The message. + * @param callback A callback for receiving a reply. */ - (void)sendOnChannel:(NSString*)channel message:(NSData* _Nullable)message binaryReply:(FlutterBinaryReply _Nullable)callback; /** - Registers a message handler for incoming binary messages from the Flutter side - on the specified channel. - - Replaces any existing handler. Use a `nil` handler for unregistering the - existing handler. - - - Parameters: - - channel: The channel name. - - handler: The message handler. + * Registers a message handler for incoming binary messages from the Flutter side + * on the specified channel. + * + * Replaces any existing handler. Use a `nil` handler for unregistering the + * existing handler. + * + * @param channel The channel name. + * @param handler The message handler. */ - (void)setMessageHandlerOnChannel:(NSString*)channel binaryMessageHandler:(FlutterBinaryMessageHandler _Nullable)handler; diff --git a/shell/platform/darwin/ios/framework/Headers/FlutterCallbackCache.h b/shell/platform/darwin/ios/framework/Headers/FlutterCallbackCache.h index 7150838fafbb3..8931d7e7b19fc 100644 --- a/shell/platform/darwin/ios/framework/Headers/FlutterCallbackCache.h +++ b/shell/platform/darwin/ios/framework/Headers/FlutterCallbackCache.h @@ -9,26 +9,43 @@ #include "FlutterMacros.h" +/** + * An object containing the result of `FlutterCallbackCache`'s `lookupCallbackInformation` + * method. + */ FLUTTER_EXPORT @interface FlutterCallbackInformation : NSObject +/** + * The name of the callback. + */ @property(retain) NSString* callbackName; +/** + * The class name of the callback. + */ @property(retain) NSString* callbackClassName; +/** + * The library path of the callback. + */ @property(retain) NSString* callbackLibraryPath; @end +/** + * The cache containing callback information for spawning a + * `FlutterHeadlessDartRunner`. + */ FLUTTER_EXPORT @interface FlutterCallbackCache : NSObject /** - Returns the callback information for the given callback handle. - This callback information can be used when spawning a - FlutterHeadlessDartRunner. - - - Parameter handle: The handle for a callback, provided by the - Dart method `PluginUtilities.getCallbackHandle`. - - Returns: A FlutterCallbackInformation object which contains the name of the - callback, the name of the class in which the callback is defined, and the - path of the library which contains the callback. If the provided handle is - invalid, nil is returned. + * Returns the callback information for the given callback handle. + * This callback information can be used when spawning a + * `FlutterHeadlessDartRunner`. + * + * @param handle The handle for a callback, provided by the + * Dart method `PluginUtilities.getCallbackHandle`. + * @return A `FlutterCallbackInformation` object which contains the name of the + * callback, the name of the class in which the callback is defined, and the + * path of the library which contains the callback. If the provided handle is + * invalid, nil is returned. */ + (FlutterCallbackInformation*)lookupCallbackInformation:(int64_t)handle; diff --git a/shell/platform/darwin/ios/framework/Headers/FlutterChannels.h b/shell/platform/darwin/ios/framework/Headers/FlutterChannels.h index 2e6cf4a4fd825..373f32293d609 100644 --- a/shell/platform/darwin/ios/framework/Headers/FlutterChannels.h +++ b/shell/platform/darwin/ios/framework/Headers/FlutterChannels.h @@ -10,373 +10,359 @@ NS_ASSUME_NONNULL_BEGIN /** - A message reply callback. - - Used for submitting a reply back to a Flutter message sender. Also used in - the dual capacity for handling a message reply received from Flutter. - - - Parameter reply: The reply. + * A message reply callback. + * + * Used for submitting a reply back to a Flutter message sender. Also used in + * the dual capacity for handling a message reply received from Flutter. + * + * @param reply The reply. */ typedef void (^FlutterReply)(id _Nullable reply); /** - A strategy for handling incoming messages from Flutter and to send - asynchronous replies back to Flutter. - - - Parameters: - - message: The message. - - reply: A callback for submitting a reply to the sender. + * A strategy for handling incoming messages from Flutter and to send + * asynchronous replies back to Flutter. + * + * @param message The message. + * @param callback A callback for submitting a reply to the sender. */ typedef void (^FlutterMessageHandler)(id _Nullable message, FlutterReply callback); /** - A channel for communicating with the Flutter side using basic, asynchronous - message passing. + * A channel for communicating with the Flutter side using basic, asynchronous + * message passing. */ FLUTTER_EXPORT @interface FlutterBasicMessageChannel : NSObject /** - Creates a `FlutterBasicMessageChannel` with the specified name and binary - messenger. - - The channel name logically identifies the channel; identically named channels - interfere with each other's communication. - - The binary messenger is a facility for sending raw, binary messages to the - Flutter side. This protocol is implemented by `FlutterViewController`. - - The channel uses `FlutterStandardMessageCodec` to encode and decode messages. - - - Parameters: - - name: The channel name. - - messenger: The binary messenger. + * Creates a `FlutterBasicMessageChannel` with the specified name and binary + * messenger. + * + * The channel name logically identifies the channel; identically named channels + * interfere with each other's communication. + * + * The binary messenger is a facility for sending raw, binary messages to the + * Flutter side. This protocol is implemented by `FlutterEngine` and `FlutterViewController`. + * + * The channel uses `FlutterStandardMessageCodec` to encode and decode messages. + * + * @param name The channel name. + * @param messenger The binary messenger. */ + (instancetype)messageChannelWithName:(NSString*)name binaryMessenger:(NSObject*)messenger; /** - Creates a `FlutterBasicMessageChannel` with the specified name, binary - messenger, - and message codec. - - The channel name logically identifies the channel; identically named channels - interfere with each other's communication. - - The binary messenger is a facility for sending raw, binary messages to the - Flutter side. This protocol is implemented by `FlutterViewController`. - - - Parameters: - - name: The channel name. - - messenger: The binary messenger. - - codec: The message codec. + * Creates a `FlutterBasicMessageChannel` with the specified name, binary + * messenger, and message codec. + * + * The channel name logically identifies the channel; identically named channels + * interfere with each other's communication. + * + * The binary messenger is a facility for sending raw, binary messages to the + * Flutter side. This protocol is implemented by `FlutterEngine` and `FlutterViewController`. + * + * @param name The channel name. + * @param messenger The binary messenger. + * @param codec The message codec. */ + (instancetype)messageChannelWithName:(NSString*)name binaryMessenger:(NSObject*)messenger codec:(NSObject*)codec; /** - Initializes a `FlutterBasicMessageChannel` with the specified name, binary - messenger, and message codec. - - The channel name logically identifies the channel; identically named channels - interfere with each other's communication. - - The binary messenger is a facility for sending raw, binary messages to the - Flutter side. This protocol is implemented by `FlutterViewController`. - - - Parameters: - - name: The channel name. - - messenger: The binary messenger. - - codec: The message codec. + * Initializes a `FlutterBasicMessageChannel` with the specified name, binary + * messenger, and message codec. + * + * The channel name logically identifies the channel; identically named channels + * interfere with each other's communication. + * + * The binary messenger is a facility for sending raw, binary messages to the + * Flutter side. This protocol is implemented by `FlutterEngine` and `FlutterViewController`. + * + * @param name The channel name. + * @param messenger The binary messenger. + * @param codec The message codec. */ - (instancetype)initWithName:(NSString*)name binaryMessenger:(NSObject*)messenger codec:(NSObject*)codec; /** - Sends the specified message to the Flutter side, ignoring any reply. - - - Parameter message: The message. Must be supported by the codec of this - channel. + * Sends the specified message to the Flutter side, ignoring any reply. + * + * @param message The message. Must be supported by the codec of this + * channel. */ - (void)sendMessage:(id _Nullable)message; /** - Sends the specified message to the Flutter side, expecting an asynchronous - reply. - - - Parameters: - - message: The message. Must be supported by the codec of this channel. - - callback: A callback to be invoked with the message reply from Flutter. + * Sends the specified message to the Flutter side, expecting an asynchronous + * reply. + * + * @param message The message. Must be supported by the codec of this channel. + * @param callback A callback to be invoked with the message reply from Flutter. */ - (void)sendMessage:(id _Nullable)message reply:(FlutterReply _Nullable)callback; /** - Registers a message handler with this channel. - - Replaces any existing handler. Use a `nil` handler for unregistering the - existing handler. - - - Parameter handler: The message handler. + * Registers a message handler with this channel. + * + * Replaces any existing handler. Use a `nil` handler for unregistering the + * existing handler. + * + * @param handler The message handler. */ - (void)setMessageHandler:(FlutterMessageHandler _Nullable)handler; @end /** - A method call result callback. - - Used for submitting a method call result back to a Flutter caller. Also used in - the dual capacity for handling a method call result received from Flutter. - - - Parameter result: The result. + * A method call result callback. + * + * Used for submitting a method call result back to a Flutter caller. Also used in + * the dual capacity for handling a method call result received from Flutter. + * + * @param result The result. */ typedef void (^FlutterResult)(id _Nullable result); /** - A strategy for handling method calls. - - - Parameters: - - call: The incoming method call. - - result: A callback to asynchronously submit the result of the call. - Invoke the callback with a `FlutterError` to indicate that the call failed. - Invoke the callback with `FlutterMethodNotImplemented` to indicate that the - method was unknown. Any other values, including `nil`, are interpreted as - successful results. + * A strategy for handling method calls. + * + * @param call The incoming method call. + * @param result A callback to asynchronously submit the result of the call. + * Invoke the callback with a `FlutterError` to indicate that the call failed. + * Invoke the callback with `FlutterMethodNotImplemented` to indicate that the + * method was unknown. Any other values, including `nil`, are interpreted as + * successful results. */ typedef void (^FlutterMethodCallHandler)(FlutterMethodCall* call, FlutterResult result); /** - A constant used with `FlutterMethodCallHandler` to respond to the call of an - unknown method. + * A constant used with `FlutterMethodCallHandler` to respond to the call of an + * unknown method. */ FLUTTER_EXPORT extern NSObject const* FlutterMethodNotImplemented; /** - A channel for communicating with the Flutter side using invocation of - asynchronous methods. + * A channel for communicating with the Flutter side using invocation of + * asynchronous methods. */ FLUTTER_EXPORT @interface FlutterMethodChannel : NSObject /** - Creates a `FlutterMethodChannel` with the specified name and binary messenger. - - The channel name logically identifies the channel; identically named channels - interfere with each other's communication. - - The binary messenger is a facility for sending raw, binary messages to the - Flutter side. This protocol is implemented by `FlutterViewController`. - - The channel uses `FlutterStandardMethodCodec` to encode and decode method calls - and result envelopes. - - - Parameters: - - name: The channel name. - - messenger: The binary messenger. + * Creates a `FlutterMethodChannel` with the specified name and binary messenger. + * + * The channel name logically identifies the channel; identically named channels + * interfere with each other's communication. + * + * The binary messenger is a facility for sending raw, binary messages to the + * Flutter side. This protocol is implemented by `FlutterEngine` and `FlutterViewController`. + * + * The channel uses `FlutterStandardMethodCodec` to encode and decode method calls + * and result envelopes. + * + * @param name The channel name. + * @param messenger The binary messenger. */ + (instancetype)methodChannelWithName:(NSString*)name binaryMessenger:(NSObject*)messenger; /** - Creates a `FlutterMethodChannel` with the specified name, binary messenger, and - method codec. - - The channel name logically identifies the channel; identically named channels - interfere with each other's communication. - - The binary messenger is a facility for sending raw, binary messages to the - Flutter side. This protocol is implemented by `FlutterViewController`. - - - Parameters: - - name: The channel name. - - messenger: The binary messenger. - - codec: The method codec. + * Creates a `FlutterMethodChannel` with the specified name, binary messenger, and + * method codec. + * + * The channel name logically identifies the channel; identically named channels + * interfere with each other's communication. + * + * The binary messenger is a facility for sending raw, binary messages to the + * Flutter side. This protocol is implemented by `FlutterEngine` and `FlutterViewController`. + * + * @param name The channel name. + * @param messenger The binary messenger. + * @param codec The method codec. */ + (instancetype)methodChannelWithName:(NSString*)name binaryMessenger:(NSObject*)messenger codec:(NSObject*)codec; /** - Initializes a `FlutterMethodChannel` with the specified name, binary messenger, - and method codec. - - The channel name logically identifies the channel; identically named channels - interfere with each other's communication. - - The binary messenger is a facility for sending raw, binary messages to the - Flutter side. This protocol is implemented by `FlutterViewController`. - - - Parameters: - - name: The channel name. - - messenger: The binary messenger. - - codec: The method codec. + * Initializes a `FlutterMethodChannel` with the specified name, binary messenger, + * and method codec. + * + * The channel name logically identifies the channel; identically named channels + * interfere with each other's communication. + * + * The binary messenger is a facility for sending raw, binary messages to the + * Flutter side. This protocol is implemented by `FlutterEngine` and `FlutterViewController`. + * + * @param name The channel name. + * @param messenger The binary messenger. + * @param codec The method codec. */ - (instancetype)initWithName:(NSString*)name binaryMessenger:(NSObject*)messenger codec:(NSObject*)codec; +// clang-format off /** - Invokes the specified Flutter method with the specified arguments, expecting - no results. See - [MethodChannel.setMethodCallHandler](https://docs.flutter.io/flutter/services/MethodChannel/setMethodCallHandler.html). - - - Parameters: - - method: The name of the method to invoke. - - arguments: The arguments. Must be a value supported by the codec of this - channel. + * Invokes the specified Flutter method with the specified arguments, expecting + * no results. + * + * @see [MethodChannel.setMethodCallHandler](https://docs.flutter.io/flutter/services/MethodChannel/setMethodCallHandler.html) + * + * @param method The name of the method to invoke. + * @param arguments The arguments. Must be a value supported by the codec of this + * channel. */ +// clang-format on - (void)invokeMethod:(NSString*)method arguments:(id _Nullable)arguments; /** - Invokes the specified Flutter method with the specified arguments, expecting - an asynchronous result. - - - Parameters: - - method: The name of the method to invoke. - - arguments: The arguments. Must be a value supported by the codec of this - channel. - - result: A callback that will be invoked with the asynchronous result. - The result will be a `FlutterError` instance, if the method call resulted - in an error on the Flutter side. Will be `FlutterMethodNotImplemented`, if - the method called was not implemented on the Flutter side. Any other value, - including `nil`, should be interpreted as successful results. + * Invokes the specified Flutter method with the specified arguments, expecting + * an asynchronous result. + * + * @param method The name of the method to invoke. + * @param arguments The arguments. Must be a value supported by the codec of this + * channel. + * @param callback A callback that will be invoked with the asynchronous result. + * The result will be a `FlutterError` instance, if the method call resulted + * in an error on the Flutter side. Will be `FlutterMethodNotImplemented`, if + * the method called was not implemented on the Flutter side. Any other value, + * including `nil`, should be interpreted as successful results. */ - (void)invokeMethod:(NSString*)method arguments:(id _Nullable)arguments result:(FlutterResult _Nullable)callback; /** - Registers a handler for method calls from the Flutter side. - - Replaces any existing handler. Use a `nil` handler for unregistering the - existing handler. - - - Parameter handler: The method call handler. + * Registers a handler for method calls from the Flutter side. + * + * Replaces any existing handler. Use a `nil` handler for unregistering the + * existing handler. + * + * @param handler The method call handler. */ - (void)setMethodCallHandler:(FlutterMethodCallHandler _Nullable)handler; @end /** - An event sink callback. - - - Parameter event: The event. + * An event sink callback. + * + * @param event The event. */ typedef void (^FlutterEventSink)(id _Nullable event); /** - A strategy for exposing an event stream to the Flutter side. + * A strategy for exposing an event stream to the Flutter side. */ FLUTTER_EXPORT @protocol FlutterStreamHandler /** - Sets up an event stream and begin emitting events. - - Invoked when the first listener is registered with the Stream associated to - this channel on the Flutter side. - - - Parameters: - - arguments: Arguments for the stream. - - events: A callback to asynchronously emit events. Invoke the - callback with a `FlutterError` to emit an error event. Invoke the - callback with `FlutterEndOfEventStream` to indicate that no more - events will be emitted. Any other value, including `nil` are emitted as - successful events. - - Returns: A FlutterError instance, if setup fails. + * Sets up an event stream and begin emitting events. + * + * Invoked when the first listener is registered with the Stream associated to + * this channel on the Flutter side. + * + * @param arguments Arguments for the stream. + * @param events A callback to asynchronously emit events. Invoke the + * callback with a `FlutterError` to emit an error event. Invoke the + * callback with `FlutterEndOfEventStream` to indicate that no more + * events will be emitted. Any other value, including `nil` are emitted as + * successful events. + * @return A FlutterError instance, if setup fails. */ - (FlutterError* _Nullable)onListenWithArguments:(id _Nullable)arguments eventSink:(FlutterEventSink)events; /** - Tears down an event stream. - - Invoked when the last listener is deregistered from the Stream associated to - this channel on the Flutter side. - - The channel implementation may call this method with `nil` arguments - to separate a pair of two consecutive set up requests. Such request pairs - may occur during Flutter hot restart. - - - Parameter arguments: Arguments for the stream. - - Returns: A FlutterError instance, if teardown fails. + * Tears down an event stream. + * + * Invoked when the last listener is deregistered from the Stream associated to + * this channel on the Flutter side. + * + * The channel implementation may call this method with `nil` arguments + * to separate a pair of two consecutive set up requests. Such request pairs + * may occur during Flutter hot restart. + * + * @param arguments Arguments for the stream. + * @return A FlutterError instance, if teardown fails. */ - (FlutterError* _Nullable)onCancelWithArguments:(id _Nullable)arguments; @end /** - A constant used with `FlutterEventChannel` to indicate end of stream. + * A constant used with `FlutterEventChannel` to indicate end of stream. */ FLUTTER_EXPORT extern NSObject const* FlutterEndOfEventStream; /** - A channel for communicating with the Flutter side using event streams. + * A channel for communicating with the Flutter side using event streams. */ FLUTTER_EXPORT @interface FlutterEventChannel : NSObject /** - Creates a `FlutterEventChannel` with the specified name and binary messenger. - - The channel name logically identifies the channel; identically named channels - interfere with each other's communication. - - The binary messenger is a facility for sending raw, binary messages to the - Flutter side. This protocol is implemented by `FlutterViewController`. - - The channel uses `FlutterStandardMethodCodec` to decode stream setup and - teardown requests, and to encode event envelopes. - - - Parameters: - - name: The channel name. - - messenger: The binary messenger. - - codec: The method codec. + * Creates a `FlutterEventChannel` with the specified name and binary messenger. + * + * The channel name logically identifies the channel; identically named channels + * interfere with each other's communication. + * + * The binary messenger is a facility for sending raw, binary messages to the + * Flutter side. This protocol is implemented by `FlutterViewController`. + * + * The channel uses `FlutterStandardMethodCodec` to decode stream setup and + * teardown requests, and to encode event envelopes. + * + * @param name The channel name. + * @param messenger The binary messenger. */ + (instancetype)eventChannelWithName:(NSString*)name binaryMessenger:(NSObject*)messenger; /** - Creates a `FlutterEventChannel` with the specified name, binary messenger, - and method codec. - - The channel name logically identifies the channel; identically named channels - interfere with each other's communication. - - The binary messenger is a facility for sending raw, binary messages to the - Flutter side. This protocol is implemented by `FlutterViewController`. - - - Parameters: - - name: The channel name. - - messenger: The binary messenger. - - codec: The method codec. + * Creates a `FlutterEventChannel` with the specified name, binary messenger, + * and method codec. + * + * The channel name logically identifies the channel; identically named channels + * interfere with each other's communication. + * + * The binary messenger is a facility for sending raw, binary messages to the + * Flutter side. This protocol is implemented by `FlutterViewController`. + * + * @param name The channel name. + * @param messenger The binary messenger. + * @param codec The method codec. */ + (instancetype)eventChannelWithName:(NSString*)name binaryMessenger:(NSObject*)messenger codec:(NSObject*)codec; /** - Initializes a `FlutterEventChannel` with the specified name, binary messenger, - and method codec. - - The channel name logically identifies the channel; identically named channels - interfere with each other's communication. - - The binary messenger is a facility for sending raw, binary messages to the - Flutter side. This protocol is implemented by `FlutterViewController`. - - - Parameters: - - name: The channel name. - - messenger: The binary messenger. - - codec: The method codec. + * Initializes a `FlutterEventChannel` with the specified name, binary messenger, + * and method codec. + * + * The channel name logically identifies the channel; identically named channels + * interfere with each other's communication. + * + * The binary messenger is a facility for sending raw, binary messages to the + * Flutter side. This protocol is implemented by `FlutterEngine` and `FlutterViewController`. + * + * @param name The channel name. + * @param messenger The binary messenger. + * @param codec The method codec. */ - (instancetype)initWithName:(NSString*)name binaryMessenger:(NSObject*)messenger codec:(NSObject*)codec; /** - Registers a handler for stream setup requests from the Flutter side. - - Replaces any existing handler. Use a `nil` handler for unregistering the - existing handler. - - - Parameter handler: The stream handler. + * Registers a handler for stream setup requests from the Flutter side. + * + * Replaces any existing handler. Use a `nil` handler for unregistering the + * existing handler. + * + * @param handler The stream handler. */ - (void)setStreamHandler:(NSObject* _Nullable)handler; @end diff --git a/shell/platform/darwin/ios/framework/Headers/FlutterCodecs.h b/shell/platform/darwin/ios/framework/Headers/FlutterCodecs.h index 54d7eeca54fda..4a8e0775ac0ae 100644 --- a/shell/platform/darwin/ios/framework/Headers/FlutterCodecs.h +++ b/shell/platform/darwin/ios/framework/Headers/FlutterCodecs.h @@ -16,76 +16,76 @@ NS_ASSUME_NONNULL_BEGIN FLUTTER_EXPORT @protocol FlutterMessageCodec /** - Returns a shared instance of this `FlutterMessageCodec`. + * Returns a shared instance of this `FlutterMessageCodec`. */ + (instancetype)sharedInstance; /** - Encodes the specified message into binary. - - - Parameter message: The message. - - Returns: The binary encoding, or `nil`, if `message` was `nil`. + * Encodes the specified message into binary. + * + * @param message The message. + * @return The binary encoding, or `nil`, if `message` was `nil`. */ - (NSData* _Nullable)encode:(id _Nullable)message; /** - Decodes the specified message from binary. - - - Parameter message: The message. - - Returns: The decoded message, or `nil`, if `message` was `nil`. + * Decodes the specified message from binary. + * + * @param message The message. + * @return The decoded message, or `nil`, if `message` was `nil`. */ - (id _Nullable)decode:(NSData* _Nullable)message; @end /** - A `FlutterMessageCodec` using unencoded binary messages, represented as - `NSData` instances. - - This codec is guaranteed to be compatible with the corresponding - [BinaryCodec](https://docs.flutter.io/flutter/services/BinaryCodec-class.html) - on the Dart side. These parts of the Flutter SDK are evolved synchronously. - - On the Dart side, messages are represented using `ByteData`. + * A `FlutterMessageCodec` using unencoded binary messages, represented as + * `NSData` instances. + * + * This codec is guaranteed to be compatible with the corresponding + * [BinaryCodec](https://docs.flutter.io/flutter/services/BinaryCodec-class.html) + * on the Dart side. These parts of the Flutter SDK are evolved synchronously. + * + * On the Dart side, messages are represented using `ByteData`. */ FLUTTER_EXPORT @interface FlutterBinaryCodec : NSObject @end /** - A `FlutterMessageCodec` using UTF-8 encoded `NSString` messages. - - This codec is guaranteed to be compatible with the corresponding - [StringCodec](https://docs.flutter.io/flutter/services/StringCodec-class.html) - on the Dart side. These parts of the Flutter SDK are evolved synchronously. + * A `FlutterMessageCodec` using UTF-8 encoded `NSString` messages. + * + * This codec is guaranteed to be compatible with the corresponding + * [StringCodec](https://docs.flutter.io/flutter/services/StringCodec-class.html) + * on the Dart side. These parts of the Flutter SDK are evolved synchronously. */ FLUTTER_EXPORT @interface FlutterStringCodec : NSObject @end /** - A `FlutterMessageCodec` using UTF-8 encoded JSON messages. - - This codec is guaranteed to be compatible with the corresponding - [JSONMessageCodec](https://docs.flutter.io/flutter/services/JSONMessageCodec-class.html) - on the Dart side. These parts of the Flutter SDK are evolved synchronously. - - Supports values accepted by `NSJSONSerialization` plus top-level - `nil`, `NSNumber`, and `NSString`. - - On the Dart side, JSON messages are handled by the JSON facilities of the - [`dart:convert`](https://api.dartlang.org/stable/dart-convert/JSON-constant.html) - package. + * A `FlutterMessageCodec` using UTF-8 encoded JSON messages. + * + * This codec is guaranteed to be compatible with the corresponding + * [JSONMessageCodec](https://docs.flutter.io/flutter/services/JSONMessageCodec-class.html) + * on the Dart side. These parts of the Flutter SDK are evolved synchronously. + * + * Supports values accepted by `NSJSONSerialization` plus top-level + * `nil`, `NSNumber`, and `NSString`. + * + * On the Dart side, JSON messages are handled by the JSON facilities of the + * [`dart:convert`](https://api.dartlang.org/stable/dart-convert/JSON-constant.html) + * package. */ FLUTTER_EXPORT @interface FlutterJSONMessageCodec : NSObject @end /** - A writer of the Flutter standard binary encoding. - - See `FlutterStandardMessageCodec` for details on the encoding. - - The encoding is extensible via subclasses overriding `writeValue`. + * A writer of the Flutter standard binary encoding. + * + * See `FlutterStandardMessageCodec` for details on the encoding. + * + * The encoding is extensible via subclasses overriding `writeValue`. */ FLUTTER_EXPORT @interface FlutterStandardWriter : NSObject @@ -100,11 +100,11 @@ FLUTTER_EXPORT @end /** - A reader of the Flutter standard binary encoding. - - See `FlutterStandardMessageCodec` for details on the encoding. - - The encoding is extensible via subclasses overriding `readValueOfType`. + * A reader of the Flutter standard binary encoding. + * + * See `FlutterStandardMessageCodec` for details on the encoding. + * + * The encoding is extensible via subclasses overriding `readValueOfType`. */ FLUTTER_EXPORT @interface FlutterStandardReader : NSObject @@ -121,8 +121,8 @@ FLUTTER_EXPORT @end /** - A factory of compatible reader/writer instances using the Flutter standard - binary encoding or extensions thereof. + * A factory of compatible reader/writer instances using the Flutter standard + * binary encoding or extensions thereof. */ FLUTTER_EXPORT @interface FlutterStandardReaderWriter : NSObject @@ -131,29 +131,29 @@ FLUTTER_EXPORT @end /** - A `FlutterMessageCodec` using the Flutter standard binary encoding. - - This codec is guaranteed to be compatible with the corresponding - [StandardMessageCodec](https://docs.flutter.io/flutter/services/StandardMessageCodec-class.html) - on the Dart side. These parts of the Flutter SDK are evolved synchronously. - - Supported messages are acyclic values of these forms: - - - `nil` or `NSNull` - - `NSNumber` (including their representation of Boolean values) - - `NSString` - - `FlutterStandardTypedData` - - `NSArray` of supported values - - `NSDictionary` with supported keys and values - - On the Dart side, these values are represented as follows: - - - `nil` or `NSNull`: null - - `NSNumber`: `bool`, `int`, or `double`, depending on the contained value. - - `NSString`: `String` - - `FlutterStandardTypedData`: `Uint8List`, `Int32List`, `Int64List`, or `Float64List` - - `NSArray`: `List` - - `NSDictionary`: `Map` + * A `FlutterMessageCodec` using the Flutter standard binary encoding. + * + * This codec is guaranteed to be compatible with the corresponding + * [StandardMessageCodec](https://docs.flutter.io/flutter/services/StandardMessageCodec-class.html) + * on the Dart side. These parts of the Flutter SDK are evolved synchronously. + * + * Supported messages are acyclic values of these forms: + * + * - `nil` or `NSNull` + * - `NSNumber` (including their representation of Boolean values) + * - `NSString` + * - `FlutterStandardTypedData` + * - `NSArray` of supported values + * - `NSDictionary` with supported keys and values + * + * On the Dart side, these values are represented as follows: + * + * - `nil` or `NSNull`: null + * - `NSNumber`: `bool`, `int`, or `double`, depending on the contained value. + * - `NSString`: `String` + * - `FlutterStandardTypedData`: `Uint8List`, `Int32List`, `Int64List`, or `Float64List` + * - `NSArray`: `List` + * - `NSDictionary`: `Map` */ FLUTTER_EXPORT @interface FlutterStandardMessageCodec : NSObject @@ -166,39 +166,37 @@ FLUTTER_EXPORT FLUTTER_EXPORT @interface FlutterMethodCall : NSObject /** - Creates a method call for invoking the specified named method with the - specified arguments. - - - Parameters: - - method: the name of the method to call. - - arguments: the arguments value. + * Creates a method call for invoking the specified named method with the + * specified arguments. + * + * @param method the name of the method to call. + * @param arguments the arguments value. */ + (instancetype)methodCallWithMethodName:(NSString*)method arguments:(id _Nullable)arguments; /** - The method name. + * The method name. */ @property(readonly, nonatomic) NSString* method; /** - The arguments. + * The arguments. */ @property(readonly, nonatomic, nullable) id arguments; @end /** - Error object representing an unsuccessful outcome of invoking a method - on a `FlutterMethodChannel`, or an error event on a `FlutterEventChannel`. + * Error object representing an unsuccessful outcome of invoking a method + * on a `FlutterMethodChannel`, or an error event on a `FlutterEventChannel`. */ FLUTTER_EXPORT @interface FlutterError : NSObject /** - Creates a `FlutterError` with the specified error code, message, and details. - - - Parameters: - - code: An error code string for programmatic use. - - message: A human-readable error message. - - details: Custom error details. + * Creates a `FlutterError` with the specified error code, message, and details. + * + * @param code An error code string for programmatic use. + * @param message A human-readable error message. + * @param details Custom error details. */ + (instancetype)errorWithCode:(NSString*)code message:(NSString* _Nullable)message @@ -220,12 +218,12 @@ FLUTTER_EXPORT @end /** - Type of numeric data items encoded in a `FlutterStandardDataType`. - - - FlutterStandardDataTypeUInt8: plain bytes - - FlutterStandardDataTypeInt32: 32-bit signed integers - - FlutterStandardDataTypeInt64: 64-bit signed integers - - FlutterStandardDataTypeFloat64: 64-bit floats + * Type of numeric data items encoded in a `FlutterStandardDataType`. + * + * - FlutterStandardDataTypeUInt8: plain bytes + * - FlutterStandardDataTypeInt32: 32-bit signed integers + * - FlutterStandardDataTypeInt64: 64-bit signed integers + * - FlutterStandardDataTypeFloat64: 64-bit floats */ typedef NS_ENUM(NSInteger, FlutterStandardDataType) { FlutterStandardDataTypeUInt8, @@ -235,174 +233,173 @@ typedef NS_ENUM(NSInteger, FlutterStandardDataType) { }; /** - A byte buffer holding `UInt8`, `SInt32`, `SInt64`, or `Float64` values, used - with `FlutterStandardMessageCodec` and `FlutterStandardMethodCodec`. - - Two's complement encoding is used for signed integers. IEEE754 - double-precision representation is used for floats. The platform's native - endianness is assumed. + * A byte buffer holding `UInt8`, `SInt32`, `SInt64`, or `Float64` values, used + * with `FlutterStandardMessageCodec` and `FlutterStandardMethodCodec`. + * + * Two's complement encoding is used for signed integers. IEEE754 + * double-precision representation is used for floats. The platform's native + * endianness is assumed. */ FLUTTER_EXPORT @interface FlutterStandardTypedData : NSObject /** - Creates a `FlutterStandardTypedData` which interprets the specified data - as plain bytes. - - - Parameter data: the byte data. + * Creates a `FlutterStandardTypedData` which interprets the specified data + * as plain bytes. + * + * @param data the byte data. */ + (instancetype)typedDataWithBytes:(NSData*)data; /** - Creates a `FlutterStandardTypedData` which interprets the specified data - as 32-bit signed integers. - - - Parameter data: the byte data. The length must be divisible by 4. + * Creates a `FlutterStandardTypedData` which interprets the specified data + * as 32-bit signed integers. + * + * @param data the byte data. The length must be divisible by 4. */ + (instancetype)typedDataWithInt32:(NSData*)data; /** - Creates a `FlutterStandardTypedData` which interprets the specified data - as 64-bit signed integers. - - - Parameter data: the byte data. The length must be divisible by 8. + * Creates a `FlutterStandardTypedData` which interprets the specified data + * as 64-bit signed integers. + * + * @param data the byte data. The length must be divisible by 8. */ + (instancetype)typedDataWithInt64:(NSData*)data; /** - Creates a `FlutterStandardTypedData` which interprets the specified data - as 64-bit floats. - - - Parameter data: the byte data. The length must be divisible by 8. + * Creates a `FlutterStandardTypedData` which interprets the specified data + * as 64-bit floats. + * + * @param data the byte data. The length must be divisible by 8. */ + (instancetype)typedDataWithFloat64:(NSData*)data; /** - The raw underlying data buffer. + * The raw underlying data buffer. */ @property(readonly, nonatomic) NSData* data; /** - The type of the encoded values. + * The type of the encoded values. */ @property(readonly, nonatomic) FlutterStandardDataType type; /** - The number of value items encoded. + * The number of value items encoded. */ @property(readonly, nonatomic) UInt32 elementCount; /** - The number of bytes used by the encoding of a single value item. + * The number of bytes used by the encoding of a single value item. */ @property(readonly, nonatomic) UInt8 elementSize; @end /** - An arbitrarily large integer value, used with `FlutterStandardMessageCodec` - and `FlutterStandardMethodCodec`. + * An arbitrarily large integer value, used with `FlutterStandardMessageCodec` + * and `FlutterStandardMethodCodec`. */ FLUTTER_EXPORT -FLUTTER_UNAVAILABLE( - "Unavailable on 2018-08-31. Deprecated on 2018-01-09. " - "FlutterStandardBigInteger was needed because the Dart 1.0 int type had no " - "size limit. With Dart 2.0, the int type is a fixed-size, 64-bit signed " - "integer. If you need to communicate larger integers, use NSString encoding " - "instead.") +FLUTTER_UNAVAILABLE("Unavailable on 2018-08-31. Deprecated on 2018-01-09. " + "FlutterStandardBigInteger was needed because the Dart 1.0 int type had no " + "size limit. With Dart 2.0, the int type is a fixed-size, 64-bit signed " + "integer. If you need to communicate larger integers, use NSString encoding " + "instead.") @interface FlutterStandardBigInteger : NSObject @end /** - A codec for method calls and enveloped results. - - Method calls are encoded as binary messages with enough structure that the - codec can extract a method name `NSString` and an arguments `NSObject`, - possibly `nil`. These data items are used to populate a `FlutterMethodCall`. - - Result envelopes are encoded as binary messages with enough structure that - the codec can determine whether the result was successful or an error. In - the former case, the codec can extract the result `NSObject`, possibly `nil`. - In the latter case, the codec can extract an error code `NSString`, a - human-readable `NSString` error message (possibly `nil`), and a custom - error details `NSObject`, possibly `nil`. These data items are used to - populate a `FlutterError`. + * A codec for method calls and enveloped results. + * + * Method calls are encoded as binary messages with enough structure that the + * codec can extract a method name `NSString` and an arguments `NSObject`, + * possibly `nil`. These data items are used to populate a `FlutterMethodCall`. + * + * Result envelopes are encoded as binary messages with enough structure that + * the codec can determine whether the result was successful or an error. In + * the former case, the codec can extract the result `NSObject`, possibly `nil`. + * In the latter case, the codec can extract an error code `NSString`, a + * human-readable `NSString` error message (possibly `nil`), and a custom + * error details `NSObject`, possibly `nil`. These data items are used to + * populate a `FlutterError`. */ FLUTTER_EXPORT @protocol FlutterMethodCodec /** - Provides access to a shared instance this codec. - - - Returns: The shared instance. + * Provides access to a shared instance this codec. + * + * @return The shared instance. */ + (instancetype)sharedInstance; /** - Encodes the specified method call into binary. - - - Parameter methodCall: The method call. The arguments value - must be supported by this codec. - - Returns: The binary encoding. + * Encodes the specified method call into binary. + * + * @param methodCall The method call. The arguments value + * must be supported by this codec. + * @return The binary encoding. */ - (NSData*)encodeMethodCall:(FlutterMethodCall*)methodCall; /** - Decodes the specified method call from binary. - - - Parameter methodCall: The method call to decode. - - Returns: The decoded method call. + * Decodes the specified method call from binary. + * + * @param methodCall The method call to decode. + * @return The decoded method call. */ - (FlutterMethodCall*)decodeMethodCall:(NSData*)methodCall; /** - Encodes the specified successful result into binary. - - - Parameter result: The result. Must be a value supported by this codec. - - Returns: The binary encoding. + * Encodes the specified successful result into binary. + * + * @param result The result. Must be a value supported by this codec. + * @return The binary encoding. */ - (NSData*)encodeSuccessEnvelope:(id _Nullable)result; /** - Encodes the specified error result into binary. - - - Parameter error: The error object. The error details value must be supported - by this codec. - - Returns: The binary encoding. + * Encodes the specified error result into binary. + * + * @param error The error object. The error details value must be supported + * by this codec. + * @return The binary encoding. */ - (NSData*)encodeErrorEnvelope:(FlutterError*)error; /** - Deccodes the specified result envelope from binary. - - - Parameter error: The error object. - - Returns: The result value, if the envelope represented a successful result, - or a `FlutterError` instance, if not. + * Deccodes the specified result envelope from binary. + * + * @param envelope The error object. + * @return The result value, if the envelope represented a successful result, + * or a `FlutterError` instance, if not. */ - (id _Nullable)decodeEnvelope:(NSData*)envelope; @end /** - A `FlutterMethodCodec` using UTF-8 encoded JSON method calls and result - envelopes. - - This codec is guaranteed to be compatible with the corresponding - [JSONMethodCodec](https://docs.flutter.io/flutter/services/JSONMethodCodec-class.html) - on the Dart side. These parts of the Flutter SDK are evolved synchronously. - - Values supported as methods arguments and result payloads are - those supported as top-level or leaf values by `FlutterJSONMessageCodec`. + * A `FlutterMethodCodec` using UTF-8 encoded JSON method calls and result + * envelopes. + * + * This codec is guaranteed to be compatible with the corresponding + * [JSONMethodCodec](https://docs.flutter.io/flutter/services/JSONMethodCodec-class.html) + * on the Dart side. These parts of the Flutter SDK are evolved synchronously. + * + * Values supported as methods arguments and result payloads are + * those supported as top-level or leaf values by `FlutterJSONMessageCodec`. */ FLUTTER_EXPORT @interface FlutterJSONMethodCodec : NSObject @end /** - A `FlutterMethodCodec` using the Flutter standard binary encoding. - - This codec is guaranteed to be compatible with the corresponding - [StandardMethodCodec](https://docs.flutter.io/flutter/services/StandardMethodCodec-class.html) - on the Dart side. These parts of the Flutter SDK are evolved synchronously. - - Values supported as method arguments and result payloads are those supported by - `FlutterStandardMessageCodec`. + * A `FlutterMethodCodec` using the Flutter standard binary encoding. + * + * This codec is guaranteed to be compatible with the corresponding + * [StandardMethodCodec](https://docs.flutter.io/flutter/services/StandardMethodCodec-class.html) + * on the Dart side. These parts of the Flutter SDK are evolved synchronously. + * + * Values supported as method arguments and result payloads are those supported by + * `FlutterStandardMessageCodec`. */ FLUTTER_EXPORT @interface FlutterStandardMethodCodec : NSObject diff --git a/shell/platform/darwin/ios/framework/Headers/FlutterDartProject.h b/shell/platform/darwin/ios/framework/Headers/FlutterDartProject.h index bef67aa04a937..de491405fe601 100644 --- a/shell/platform/darwin/ios/framework/Headers/FlutterDartProject.h +++ b/shell/platform/darwin/ios/framework/Headers/FlutterDartProject.h @@ -9,43 +9,58 @@ #include "FlutterMacros.h" +/** + * A set of Flutter and Dart assets used by a `FlutterEngine` to initialize execution. + */ FLUTTER_EXPORT @interface FlutterDartProject : NSObject +/** + * Initializes with a specific + */ - (instancetype)initWithPrecompiledDartBundle:(NSBundle*)bundle NS_DESIGNATED_INITIALIZER; +/** + * Initializes with a specific set of Flutter Assets, with a specified location of + * main() and Dart packages. + */ - (instancetype)initWithFlutterAssets:(NSURL*)flutterAssetsURL dartMain:(NSURL*)dartMainURL packages:(NSURL*)dartPackages NS_DESIGNATED_INITIALIZER; +/** + * Initializes from a specific set of Flutter Assets. + */ - (instancetype)initWithFlutterAssetsWithScriptSnapshot:(NSURL*)flutterAssetsURL NS_DESIGNATED_INITIALIZER; +/** + * Unavailable - use `init` instead. + */ - (instancetype)initFromDefaultSourceForConfiguration FLUTTER_UNAVAILABLE("Use -init instead."); /** - Returns the file name for the given asset. - The returned file name can be used to access the asset in the application's main bundle. - - - Parameter asset: The name of the asset. The name can be hierarchical. - - Returns: the file name to be used for lookup in the main bundle. + * Returns the file name for the given asset. + * The returned file name can be used to access the asset in the application's main bundle. + * + * @param asset The name of the asset. The name can be hierarchical. + * @return the file name to be used for lookup in the main bundle. */ + (NSString*)lookupKeyForAsset:(NSString*)asset; /** - Returns the file name for the given asset which originates from the specified package. - The returned file name can be used to access the asset in the application's main bundle. - - - Parameters: - - asset: The name of the asset. The name can be hierarchical. - - package: The name of the package from which the asset originates. - - Returns: the file name to be used for lookup in the main bundle. + * Returns the file name for the given asset which originates from the specified package. + * The returned file name can be used to access the asset in the application's main bundle. + * + * @param asset The name of the asset. The name can be hierarchical. + * @param package The name of the package from which the asset originates. + * @return the file name to be used for lookup in the main bundle. */ + (NSString*)lookupKeyForAsset:(NSString*)asset fromPackage:(NSString*)package; /** - Returns the default identifier for the bundle where we expect to find the Flutter Dart - application. + * Returns the default identifier for the bundle where we expect to find the Flutter Dart + * application. */ + (NSString*)defaultBundleIdentifier; diff --git a/shell/platform/darwin/ios/framework/Headers/FlutterEngine.h b/shell/platform/darwin/ios/framework/Headers/FlutterEngine.h new file mode 100644 index 0000000000000..52e8017a299af --- /dev/null +++ b/shell/platform/darwin/ios/framework/Headers/FlutterEngine.h @@ -0,0 +1,171 @@ +// Copyright 2018 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. + +#ifndef FLUTTER_FLUTTERENGINE_H_ +#define FLUTTER_FLUTTERENGINE_H_ + +#import +#import + +#include "FlutterBinaryMessenger.h" +#include "FlutterDartProject.h" +#include "FlutterMacros.h" +#include "FlutterPlugin.h" +#include "FlutterTexture.h" + +@class FlutterViewController; + +/** + * The FlutterEngine class coordinates a single instance of execution for a + * `FlutterDartProject`. It may have zero or one `FlutterViewController` at a + * time, which can be specified via `-setViewController:`. + * `FlutterViewController`'s `initWithEngine` initializer will automatically call + * `-setViewController:` for itself. + * + * A FlutterEngine can be created independently of a `FlutterViewController` for + * headless execution. It can also persist across the lifespan of multiple + * `FlutterViewController` instances to maintain state and/or asynchronous tasks + * (such as downloading a large file). + * + * Alternatively, you can simply create a new `FlutterViewController` with only a + * `FlutterDartProject`. That `FlutterViewController` will internally manage its + * own instance of a FlutterEngine, but will not guarantee survival of the engine + * beyond the life of the ViewController. + * + * A newly initialized FlutterEngine will not actually run a Dart Isolate until + * either `-runWithEntrypoint:` or `-runWithEntrypoint:libraryURI` is invoked. + * One of these methods must be invoked before calling `-setViewController:`. + */ +FLUTTER_EXPORT +@interface FlutterEngine + : NSObject +/** + * Initialize this FlutterEngine with a `FlutterDartProject`. + * + * If the FlutterDartProject is not specified, the FlutterEngine will attempt to locate + * the project in a default location (the flutter_assets folder in the iOS application + * bundle). + * + * A newly initialized engine will not run the `FlutterDartProject` until either + * `-runWithEntrypoint:` or `-runWithEntrypoint:libraryURI:` is called. + * + * @param labelPrefix The label prefix used to identify threads for this instance. Should + * be unique across FlutterEngine instances, and is used in instrumentation to label + * the threads used by this FlutterEngine. + * @param projectOrNil The `FlutterDartProject` to run. + */ +- (instancetype)initWithName:(NSString*)labelPrefix + project:(FlutterDartProject*)projectOrNil NS_DESIGNATED_INITIALIZER; + +/** + * The default initializer is not available for this object. + * Callers must use `-[FlutterEngine initWithName:project:]`. + */ +- (instancetype)init NS_UNAVAILABLE; + +/** + * Runs a Dart program on an Isolate from the main Dart library (i.e. the library that + * contains `main()`). + * + * The first call to this method will create a new Isolate. Subsequent calls will return + * immediately. + * + * @param entrypoint The name of a top-level function from the same Dart + * library that contains the app's main() function. If this is nil, it will + * default to `main()`. If it is not the app's main() function, that function + * must be decorated with `@pragma(vm:entry-point)` to ensure the method is not + * tree-shaken by the Dart compiler. + * @return YES if the call succeeds in creating and running a Flutter Engine instance; NO otherwise. + */ +- (bool)runWithEntrypoint:(NSString*)entrypoint; + +/** + * Runs a Dart program on an Isolate using the specified entrypoint and Dart library, + * which may not be the same as the library containing the Dart program's `main()` function. + * + * The first call to this method will create a new Isolate. Subsequent calls will return + * immediately. + * + * @param entrypoint The name of a top-level function from a Dart library. If nil, this will + * default to `main()`. If it is not the app's main() function, that function + * must be decorated with `@pragma(vm:entry-point)` to ensure the method is not + * tree-shaken by the Dart compiler. + * @param uri The URI of the Dart library which contains the entrypoint method. IF nil, + * this will default to the same library as the `main()` function in the Dart program. + * @return YES if the call succeeds in creating and running a Flutter Engine instance; NO otherwise. + */ +- (bool)runWithEntrypoint:(NSString*)entrypoint libraryURI:(NSString*)uri; + +/** + * Sets the `FlutterViewController` for this instance. The FlutterEngine must be + * running (e.g. a successful call to `-runWithEntrypoint:` or `-runWithEntrypoint:libraryURI`) + * before calling this method. Callers may pass nil to remove the viewController + * and have the engine run headless in the current process. + * + * A FlutterEngine can only have one `FlutterViewController` at a time. If there is + * already a `FlutterViewController` associated with this instance, this method will replace + * the engine's current viewController with the newly specified one. + * + * Setting the viewController will signal the engine to start animations and drawing, and unsetting + * it will signal the engine to stop animations and drawing. However, neither will impact the state + * of the Dart program's execution. + */ +@property(nonatomic, weak) FlutterViewController* viewController; + +/** + * The `FlutterMethodChannel` used for localization related platform messages, such as + * setting the locale. + */ +@property(nonatomic, readonly) FlutterMethodChannel* localizationChannel; +/** + * The `FlutterMethodChannel` used for navigation related platform messages. + * + * @see [Navigation + * Channel](https://docs.flutter.io/flutter/services/SystemChannels/navigation-constant.html) + * @see [Navigator Widget](https://docs.flutter.io/flutter/widgets/Navigator-class.html) + */ +@property(nonatomic, readonly) FlutterMethodChannel* navigationChannel; + +/** + * The `FlutterMethodChannel` used for core platform messages, such as + * information about the screen orientation. + */ +@property(nonatomic, readonly) FlutterMethodChannel* platformChannel; + +/** + * The `FlutterMethodChannel` used to communicate text input events to the + * Dart Isolate. + * + * @see [Text Input + * Channel](https://docs.flutter.io/flutter/services/SystemChannels/textInput-constant.html) + */ +@property(nonatomic, readonly) FlutterMethodChannel* textInputChannel; + +/** + * The `FlutterBasicMessageChannel` used to communicate app lifecycle events + * to the Dart Isolate. + * + * @see [Lifecycle + * Channel](https://docs.flutter.io/flutter/services/SystemChannels/lifecycle-constant.html) + */ +@property(nonatomic, readonly) FlutterBasicMessageChannel* lifecycleChannel; + +/** + * The `FlutterBasicMessageChannel` used for communicating system events, such as + * memory pressure events. + * + * @see [System + * Channel](https://docs.flutter.io/flutter/services/SystemChannels/system-constant.html) + */ +@property(nonatomic, readonly) FlutterBasicMessageChannel* systemChannel; + +/** + * The `FlutterBasicMessageChannel` used for communicating user settings such as + * clock format and text scale. + */ +@property(nonatomic, readonly) FlutterBasicMessageChannel* settingsChannel; + +@end + +#endif // FLUTTER_FLUTTERENGINE_H_ diff --git a/shell/platform/darwin/ios/framework/Headers/FlutterHeadlessDartRunner.h b/shell/platform/darwin/ios/framework/Headers/FlutterHeadlessDartRunner.h index f6f37248364ed..eed2219fd821b 100644 --- a/shell/platform/darwin/ios/framework/Headers/FlutterHeadlessDartRunner.h +++ b/shell/platform/darwin/ios/framework/Headers/FlutterHeadlessDartRunner.h @@ -9,44 +9,51 @@ #include "FlutterBinaryMessenger.h" #include "FlutterDartProject.h" +#include "FlutterEngine.h" #include "FlutterMacros.h" /** -A callback for when FlutterHeadlessDartRunner has attempted to start a Dart -Isolate in the background. - -- Parameter success: YES if the Isolate was started and run successfully, NO - otherwise. -*/ + * A callback for when FlutterHeadlessDartRunner has attempted to start a Dart + * Isolate in the background. + * + * @param success YES if the Isolate was started and run successfully, NO + * otherwise. + */ typedef void (^FlutterHeadlessDartRunnerCallback)(BOOL success); /** - The FlutterHeadlessDartRunner runs Flutter Dart code with a null rasterizer, - and no native drawing surface. It is appropriate for use in running Dart - code e.g. in the background from a plugin. -*/ + * The FlutterHeadlessDartRunner runs Flutter Dart code with a null rasterizer, + * and no native drawing surface. It is appropriate for use in running Dart + * code e.g. in the background from a plugin. + * + * Most callers should prefer using `FlutterEngine` directly; this interface exists + * for legacy support. + */ FLUTTER_EXPORT -@interface FlutterHeadlessDartRunner : NSObject +FLUTTER_DEPRECATED("FlutterEngine should be used rather than FlutterHeadlessDartRunner") +@interface FlutterHeadlessDartRunner : FlutterEngine /** - Runs a Dart function on an Isolate that is not the main application's Isolate. - The first call will create a new Isolate. Subsequent calls will return - immediately. - - - Parameter entrypoint: The name of a top-level function from the same Dart - library that contains the app's main() function. -*/ -- (void)runWithEntrypoint:(NSString*)entrypoint; + * Iniitalize this FlutterHeadlessDartRunner with a `FlutterDartProject`. + * + * If the FlutterDartProject is not specified, the FlutterHeadlessDartRunner will attempt to locate + * the project in a default location. + * + * A newly initialized engine will not run the `FlutterDartProject` until either + * `-runWithEntrypoint:` or `-runWithEntrypoint:libraryURI` is called. + * + * @param labelPrefix The label prefix used to identify threads for this instance. Should + * be unique across FlutterEngine instances + * @param projectOrNil The `FlutterDartProject` to run. + */ +- (instancetype)initWithName:(NSString*)labelPrefix + project:(FlutterDartProject*)projectOrNil NS_DESIGNATED_INITIALIZER; /** - Runs a Dart function on an Isolate that is not the main application's Isolate. - The first call will create a new Isolate. Subsequent calls will return - immediately. - - - Parameter entrypoint: The name of a top-level function from a Dart library. - - Parameter uri: The URI of the Dart library which contains entrypoint. -*/ -- (void)runWithEntrypointAndLibraryUri:(NSString*)entrypoint libraryUri:(NSString*)uri; + * Not recommended for use - will initialize with a default label ("io.flutter.headless") + * and the default FlutterDartProject. + */ +- (instancetype)init; @end diff --git a/shell/platform/darwin/ios/framework/Headers/FlutterMacros.h b/shell/platform/darwin/ios/framework/Headers/FlutterMacros.h index e3050963192e1..d950856c73c5b 100644 --- a/shell/platform/darwin/ios/framework/Headers/FlutterMacros.h +++ b/shell/platform/darwin/ios/framework/Headers/FlutterMacros.h @@ -21,19 +21,19 @@ #endif // defined(NS_ASSUME_NONNULL_BEGIN) /** - Indicates that the API has been deprecated for the specified reason. Code that - uses the deprecated API will continue to work as before. However, the API will - soon become unavailable and users are encouraged to immediately take the - appropriate action mentioned in the deprecation message and the BREAKING - CHANGES section present in the Flutter.h umbrella header. + * Indicates that the API has been deprecated for the specified reason. Code + * that uses the deprecated API will continue to work as before. However, the + * API will soon become unavailable and users are encouraged to immediately take + * the appropriate action mentioned in the deprecation message and the BREAKING + * CHANGES section present in the Flutter.h umbrella header. */ #define FLUTTER_DEPRECATED(msg) __attribute__((__deprecated__(msg))) /** - Indicates that the previously deprecated API is now unavailable. Code that - uses the API will not work and the declaration of the API is only a stub meant - to display the given message detailing the actions for the user to take - immediately. + * Indicates that the previously deprecated API is now unavailable. Code that + * uses the API will not work and the declaration of the API is only a stub + * meant to display the given message detailing the actions for the user to take + * immediately. */ #define FLUTTER_UNAVAILABLE(msg) __attribute__((__unavailable__(msg))) diff --git a/shell/platform/darwin/ios/framework/Headers/FlutterNavigationController.h b/shell/platform/darwin/ios/framework/Headers/FlutterNavigationController.h deleted file mode 100644 index 1ff0911bd685d..0000000000000 --- a/shell/platform/darwin/ios/framework/Headers/FlutterNavigationController.h +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright 2017 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. - -#import - -@interface FlutterNavigationController : UINavigationController - -@end diff --git a/shell/platform/darwin/ios/framework/Headers/FlutterPlatformViews.h b/shell/platform/darwin/ios/framework/Headers/FlutterPlatformViews.h index c077d52cd2a00..2e3f85c6054e0 100644 --- a/shell/platform/darwin/ios/framework/Headers/FlutterPlatformViews.h +++ b/shell/platform/darwin/ios/framework/Headers/FlutterPlatformViews.h @@ -22,8 +22,8 @@ FLUTTER_EXPORT * The implementation of this method should create a new `UIView` and return it. * * @param frame The rectangle for the newly created `UIView` measued in points. - * @param viewIdentifier A unique identifier for this `UIView`. - * @param arguments Parameters for creating the `UIView` sent from the Dart side of the Flutter app. + * @param viewId A unique identifier for this `UIView`. + * @param args Parameters for creating the `UIView` sent from the Dart side of the Flutter app. * If `createArgsCodec` is not implemented, or if no creation arguments were sent from the Dart * code, this will be null. Otherwise this will be the value sent from the Dart code as decoded by * `createArgsCodec`. diff --git a/shell/platform/darwin/ios/framework/Headers/FlutterPlugin.h b/shell/platform/darwin/ios/framework/Headers/FlutterPlugin.h index 4f6497712b619..a116a95efda51 100644 --- a/shell/platform/darwin/ios/framework/Headers/FlutterPlugin.h +++ b/shell/platform/darwin/ios/framework/Headers/FlutterPlugin.h @@ -210,7 +210,7 @@ NS_ASSUME_NONNULL_BEGIN * Plugins expose `UIView` for embedding in Flutter apps by registering a view factory. * * @param factory The view factory that will be registered. - * @param factoryId:: A unique identifier for the factory, the Dart code of the Flutter app can use + * @param factoryId A unique identifier for the factory, the Dart code of the Flutter app can use * this identifier to request creation of a `UIView` by the registered factory. */ - (void)registerViewFactory:(NSObject*)factory diff --git a/shell/platform/darwin/ios/framework/Headers/FlutterPluginAppLifeCycleDelegate.h b/shell/platform/darwin/ios/framework/Headers/FlutterPluginAppLifeCycleDelegate.h index 8c9c0358669ed..aa93e905cb2b9 100644 --- a/shell/platform/darwin/ios/framework/Headers/FlutterPluginAppLifeCycleDelegate.h +++ b/shell/platform/darwin/ios/framework/Headers/FlutterPluginAppLifeCycleDelegate.h @@ -10,139 +10,140 @@ NS_ASSUME_NONNULL_BEGIN /** - Propagates `UIAppDelegate` callbacks to registered plugins. -*/ + * Propagates `UIAppDelegate` callbacks to registered plugins. + */ FLUTTER_EXPORT @interface FlutterPluginAppLifeCycleDelegate : NSObject /** - Registers `delegate` to receive life cycle callbacks via this FlutterPluginAppLifecycleDelegate as - long as it is alive. - - `delegate` will only referenced weakly. -*/ + * Registers `delegate` to receive life cycle callbacks via this FlutterPluginAppLifecycleDelegate + * as long as it is alive. + * + * `delegate` will only referenced weakly. + */ - (void)addDelegate:(NSObject*)delegate; /** - Calls all plugins registered for `UIApplicationDelegate` callbacks. - - - Returns: `NO` if any plugin vetoes application launch. + * Calls all plugins registered for `UIApplicationDelegate` callbacks. + * + * @return `NO` if any plugin vetoes application launch. */ - (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions; /** - Calls all plugins registered for `UIApplicationDelegate` callbacks. - - - Returns: `NO` if any plugin vetoes application launch. + * Calls all plugins registered for `UIApplicationDelegate` callbacks. + * + * @return `NO` if any plugin vetoes application launch. */ - (BOOL)application:(UIApplication*)application willFinishLaunchingWithOptions:(NSDictionary*)launchOptions; /** - Calls all plugins registered for `UIApplicationDelegate` callbacks. + * Calls all plugins registered for `UIApplicationDelegate` callbacks. */ - (void)applicationDidBecomeActive:(UIApplication*)application; /** - Calls all plugins registered for `UIApplicationDelegate` callbacks. + * Calls all plugins registered for `UIApplicationDelegate` callbacks. */ - (void)applicationWillResignActive:(UIApplication*)application; /** - Calls all plugins registered for `UIApplicationDelegate` callbacks. + * Calls all plugins registered for `UIApplicationDelegate` callbacks. */ - (void)applicationDidEnterBackground:(UIApplication*)application; /** - Calls all plugins registered for `UIApplicationDelegate` callbacks. + * Calls all plugins registered for `UIApplicationDelegate` callbacks. */ - (void)applicationWillEnterForeground:(UIApplication*)application; /** - Calls all plugins registered for `UIApplicationDelegate` callbacks. + * Calls all plugins registered for `UIApplicationDelegate` callbacks. */ - (void)applicationWillTerminate:(UIApplication*)application; /** - Called if this plugin has been registered for `UIApplicationDelegate` callbacks. + * Called if this plugin has been registered for `UIApplicationDelegate` callbacks. */ - (void)application:(UIApplication*)application didRegisterUserNotificationSettings:(UIUserNotificationSettings*)notificationSettings; /** - Calls all plugins registered for `UIApplicationDelegate` callbacks. + * Calls all plugins registered for `UIApplicationDelegate` callbacks. */ - (void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken; /** - Calls all plugins registered for `UIApplicationDelegate` callbacks. + * Calls all plugins registered for `UIApplicationDelegate` callbacks. */ - (void)application:(UIApplication*)application didReceiveRemoteNotification:(NSDictionary*)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))completionHandler; /** - Calls all plugins registered for `UIApplicationDelegate` callbacks in order of registration until - some plugin handles the request. - - - Returns: `YES` if any plugin handles the request. -*/ + * Calls all plugins registered for `UIApplicationDelegate` callbacks in order of registration until + * some plugin handles the request. + * + * @return `YES` if any plugin handles the request. + */ - (BOOL)application:(UIApplication*)application openURL:(NSURL*)url options:(NSDictionary*)options; /** - Calls all plugins registered for `UIApplicationDelegate` callbacks in order of registration until - some plugin handles the request. - - - Returns: `YES` if any plugin handles the request. + * Calls all plugins registered for `UIApplicationDelegate` callbacks in order of registration until + * some plugin handles the request. + * + * @return `YES` if any plugin handles the request. */ - (BOOL)application:(UIApplication*)application handleOpenURL:(NSURL*)url; /** - Calls all plugins registered for `UIApplicationDelegate` callbacks in order of registration until - some plugin handles the request. - - - Returns: `YES` if any plugin handles the request. -*/ + * Calls all plugins registered for `UIApplicationDelegate` callbacks in order of registration until + * some plugin handles the request. + * + * @return `YES` if any plugin handles the request. + */ - (BOOL)application:(UIApplication*)application openURL:(NSURL*)url sourceApplication:(NSString*)sourceApplication annotation:(id)annotation; /** - Calls all plugins registered for `UIApplicationDelegate` callbacks. -*/ + * Calls all plugins registered for `UIApplicationDelegate` callbacks. + */ - (void)application:(UIApplication*)application performActionForShortcutItem:(UIApplicationShortcutItem*)shortcutItem completionHandler:(void (^)(BOOL succeeded))completionHandler API_AVAILABLE(ios(9.0)); /** - Calls all plugins registered for `UIApplicationDelegate` callbacks in order of registration until - some plugin handles the request. - - - Returns: `YES` if any plugin handles the request. -*/ + * Calls all plugins registered for `UIApplicationDelegate` callbacks in order of registration until + * some plugin handles the request. + * + * @return `YES` if any plugin handles the request. + */ - (BOOL)application:(UIApplication*)application handleEventsForBackgroundURLSession:(nonnull NSString*)identifier completionHandler:(nonnull void (^)(void))completionHandler; /** - Calls all plugins registered for `UIApplicationDelegate` callbacks in order of registration until - some plugin handles the request. - - - Returns: `YES` if any plugin handles the request. -*/ + * Calls all plugins registered for `UIApplicationDelegate` callbacks in order of registration until + * some plugin handles the request. + * + * @returns `YES` if any plugin handles the request. + */ - (BOOL)application:(UIApplication*)application performFetchWithCompletionHandler:(void (^)(UIBackgroundFetchResult result))completionHandler; /** - Calls all plugins registered for `UIApplicationDelegate` callbacks in order of registration until - some plugin handles the request. - - Returns: `YES` if any plugin handles the request. -*/ + * Calls all plugins registered for `UIApplicationDelegate` callbacks in order of registration until + * some plugin handles the request. + * + * @return `YES` if any plugin handles the request. + */ - (BOOL)application:(UIApplication*)application continueUserActivity:(NSUserActivity*)userActivity restorationHandler:(void (^)(NSArray*))restorationHandler; diff --git a/shell/platform/darwin/ios/framework/Headers/FlutterTexture.h b/shell/platform/darwin/ios/framework/Headers/FlutterTexture.h index f2b8670a8a9e2..9fe5887593b73 100644 --- a/shell/platform/darwin/ios/framework/Headers/FlutterTexture.h +++ b/shell/platform/darwin/ios/framework/Headers/FlutterTexture.h @@ -13,12 +13,12 @@ NS_ASSUME_NONNULL_BEGIN FLUTTER_EXPORT -@protocol FlutterTexture +@protocol FlutterTexture - (CVPixelBufferRef _Nullable)copyPixelBuffer; @end FLUTTER_EXPORT -@protocol FlutterTextureRegistry +@protocol FlutterTextureRegistry - (int64_t)registerTexture:(NSObject*)texture; - (void)textureFrameAvailable:(int64_t)textureId; - (void)unregisterTexture:(int64_t)textureId; diff --git a/shell/platform/darwin/ios/framework/Headers/FlutterViewController.h b/shell/platform/darwin/ios/framework/Headers/FlutterViewController.h index 27b7330ba3457..a53f14244cea9 100644 --- a/shell/platform/darwin/ios/framework/Headers/FlutterViewController.h +++ b/shell/platform/darwin/ios/framework/Headers/FlutterViewController.h @@ -10,14 +10,52 @@ #include "FlutterBinaryMessenger.h" #include "FlutterDartProject.h" +#include "FlutterEngine.h" #include "FlutterMacros.h" #include "FlutterPlugin.h" #include "FlutterTexture.h" +@class FlutterEngine; + +/** + * A `UIViewController` implementation for Flutter views. + * + * Dart execution, channel communication, texture registration, and plugin registration + * are all handled by `FlutterEngine`. Calls on this class to those members all proxy + * through to the `FlutterEngine` attached FlutterViewController. + * + * A FlutterViewController can be initialized either with an already-running `FlutterEngine`, + * or it can be initialized with a `FlutterDartProject` that will be used to spin up + * a new `FlutterEngine`. Developers looking to present and hide FlutterViewControllers + * in native iOS applications will usually want to maintain the `FlutterEngine` instance + * so as not to lose Dart-related state and asynchronous tasks when navigating back and + * forth between a FlutterViewController and other `UIViewController`s. + */ FLUTTER_EXPORT @interface FlutterViewController : UIViewController +/** + * Initializes this FlutterViewController with the specified `FlutterEngine`. + * + * The initialized viewcontroller will attach itself to the engine as part of this process. + * + * @param engine The `FlutterEngine` instance to attach to. + * @param nibNameOrNil The NIB name to initialize this UIViewController with. + * @param nibBundleOrNil The NIB bundle. + */ +- (instancetype)initWithEngine:(FlutterEngine*)engine + nibName:(NSString*)nibNameOrNil + bundle:(NSBundle*)nibBundleOrNil NS_DESIGNATED_INITIALIZER; + +/** + * Initializes a new FlutterViewController and `FlutterEngine` with the specified + * `FlutterDartProject`. + * + * @param projectOrNil The `FlutterDartProject` to initialize the `FlutterEngine` with. + * @param nibNameOrNil The NIB name to initialize this UIViewController with. + * @param nibBundleOrNil The NIB bundle. + */ - (instancetype)initWithProject:(FlutterDartProject*)projectOrNil nibName:(NSString*)nibNameOrNil bundle:(NSBundle*)nibBundleOrNil NS_DESIGNATED_INITIALIZER; @@ -25,71 +63,78 @@ FLUTTER_EXPORT - (void)handleStatusBarTouches:(UIEvent*)event; /** - Registers a callback that will be invoked when the Flutter view has been rendered. - The callback will be fired only once. - - Replaces an existing callback. Use a `nil` callback to unregister the existing one. + * Registers a callback that will be invoked when the Flutter view has been rendered. + * The callback will be fired only once. + * + * Replaces an existing callback. Use a `nil` callback to unregister the existing one. */ - (void)setFlutterViewDidRenderCallback:(void (^)(void))callback; /** - Returns the file name for the given asset. - The returned file name can be used to access the asset in the application's main bundle. - - - Parameter asset: The name of the asset. The name can be hierarchical. - - Returns: the file name to be used for lookup in the main bundle. + * Returns the file name for the given asset. + * The returned file name can be used to access the asset in the application's + * main bundle. + * + * @param asset The name of the asset. The name can be hierarchical. + * @return The file name to be used for lookup in the main bundle. */ - (NSString*)lookupKeyForAsset:(NSString*)asset; /** - Returns the file name for the given asset which originates from the specified package. - The returned file name can be used to access the asset in the application's main bundle. - - - Parameters: - - asset: The name of the asset. The name can be hierarchical. - - package: The name of the package from which the asset originates. - - Returns: the file name to be used for lookup in the main bundle. + * Returns the file name for the given asset which originates from the specified + * package. + * The returned file name can be used to access the asset in the application's + * main bundle. + * + * @param asset The name of the asset. The name can be hierarchical. + * @param package The name of the package from which the asset originates. + * @returns: The file name to be used for lookup in the main bundle. */ - (NSString*)lookupKeyForAsset:(NSString*)asset fromPackage:(NSString*)package; /** - Sets the first route that the Flutter app shows. The default is "/". - This method will guarnatee that the initial route is delivered, even if the - Flutter window hasn't been created yet when called. It cannot be used to update - the current route being shown in a visible FlutterViewController (see pushRoute - and popRoute). - - - Parameter route: The name of the first route to show. + * Sets the first route that the Flutter app shows. The default is "/". + * This method will guarnatee that the initial route is delivered, even if the + * Flutter window hasn't been created yet when called. It cannot be used to update + * the current route being shown in a visible FlutterViewController (see pushRoute + * and popRoute). + * + * @param route The name of the first route to show. */ - (void)setInitialRoute:(NSString*)route; /** - Instructs the Flutter Navigator (if any) to go back. + * Instructs the Flutter Navigator (if any) to go back. */ - (void)popRoute; /** - Instructs the Flutter Navigator (if any) to push a route on to the navigation - stack. The setInitialRoute method should be prefered if this is called before the - FlutterViewController has come into view. - - - Parameter route: The name of the route to push to the navigation stack. + * Instructs the Flutter Navigator (if any) to push a route on to the navigation + * stack. The setInitialRoute method should be prefered if this is called before the + * FlutterViewController has come into view. + * + * @param route The name of the route to push to the navigation stack. */ - (void)pushRoute:(NSString*)route; +/** + * The `FlutterPluginRegistry` used by this FlutterViewController. + */ - (id)pluginRegistry; /** - Specifies the view to use as a splash screen. Flutter's rendering is asynchronous, so the first - frame rendered by the Flutter application might not immediately appear when the Flutter view is - initially placed in the view hierarchy. The splash screen view will be used as a replacement - until the first frame is rendered. - - The view used should be appropriate for multiple sizes; an autoresizing mask to have a flexible - width and height will be applied automatically. - - If not specified, uses a view generated from `UILaunchStoryboardName` from the main bundle's - `Info.plist` file. + * Specifies the view to use as a splash screen. Flutter's rendering is asynchronous, so the first + * frame rendered by the Flutter application might not immediately appear when theFlutter view is + * initially placed in the view hierarchy. The splash screen view will be used as + * a replacement until the first frame is rendered. + * + * The view used should be appropriate for multiple sizes; an autoresizing mask to + * have a flexible + * width and height will be applied automatically. + * + * If not specified, uses a view generated from `UILaunchStoryboardName` from the + * main bundle's + * `Info.plist` file. */ @property(strong, nonatomic) UIView* splashScreenView; diff --git a/shell/platform/darwin/ios/framework/Source/FlutterDartProject.mm b/shell/platform/darwin/ios/framework/Source/FlutterDartProject.mm index 22d39950d93f1..24ad9d97ff7a4 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterDartProject.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterDartProject.mm @@ -193,7 +193,24 @@ - (instancetype)initWithFlutterAssetsWithScriptSnapshot:(NSURL*)flutterAssetsURL } - (shell::RunConfiguration)runConfiguration { - return shell::RunConfiguration::InferFromSettings(_settings); + return [self runConfigurationForEntrypoint:nil]; +} + +- (shell::RunConfiguration)runConfigurationForEntrypoint:(NSString*)entrypointOrNil { + return [self runConfigurationForEntrypoint:entrypointOrNil libraryOrNil:nil]; +} + +- (shell::RunConfiguration)runConfigurationForEntrypoint:(NSString*)entrypointOrNil + libraryOrNil:(NSString*)dartLibraryOrNil { + shell::RunConfiguration config = shell::RunConfiguration::InferFromSettings(_settings); + if (dartLibraryOrNil && entrypointOrNil) { + config.SetEntrypointAndLibrary(std::string([entrypointOrNil UTF8String]), + std::string([dartLibraryOrNil UTF8String])); + + } else if (entrypointOrNil) { + config.SetEntrypoint(std::string([entrypointOrNil UTF8String])); + } + return config; } #pragma mark - Assets-related utilities diff --git a/shell/platform/darwin/ios/framework/Source/FlutterDartProject_Internal.h b/shell/platform/darwin/ios/framework/Source/FlutterDartProject_Internal.h index 155f3c8ef4533..32a2c50c1d80f 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterDartProject_Internal.h +++ b/shell/platform/darwin/ios/framework/Source/FlutterDartProject_Internal.h @@ -14,6 +14,9 @@ - (const blink::Settings&)settings; - (shell::RunConfiguration)runConfiguration; +- (shell::RunConfiguration)runConfigurationForEntrypoint:(NSString*)entrypointOrNil; +- (shell::RunConfiguration)runConfigurationForEntrypoint:(NSString*)entrypointOrNil + libraryOrNil:(NSString*)dartLibraryOrNil; + (NSString*)flutterAssetsName:(NSBundle*)bundle; diff --git a/shell/platform/darwin/ios/framework/Source/FlutterEngine.mm b/shell/platform/darwin/ios/framework/Source/FlutterEngine.mm new file mode 100644 index 0000000000000..ef82e14e5f813 --- /dev/null +++ b/shell/platform/darwin/ios/framework/Source/FlutterEngine.mm @@ -0,0 +1,531 @@ +// Copyright 2018 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. + +#define FML_USED_ON_EMBEDDER + +#import "flutter/shell/platform/darwin/ios/framework/Source/FlutterEngine_Internal.h" + +#include + +#include "flutter/fml/message_loop.h" +#include "flutter/fml/platform/darwin/platform_version.h" +#include "flutter/shell/common/engine.h" +#include "flutter/shell/common/platform_view.h" +#include "flutter/shell/common/shell.h" +#include "flutter/shell/common/switches.h" +#include "flutter/shell/common/thread_host.h" +#include "flutter/shell/platform/darwin/common/command_line.h" +#include "flutter/shell/platform/darwin/ios/framework/Source/FlutterDartProject_Internal.h" +#include "flutter/shell/platform/darwin/ios/framework/Source/FlutterObservatoryPublisher.h" +#include "flutter/shell/platform/darwin/ios/framework/Source/FlutterPlatformPlugin.h" +#include "flutter/shell/platform/darwin/ios/framework/Source/FlutterTextInputDelegate.h" +#include "flutter/shell/platform/darwin/ios/framework/Source/FlutterViewController_Internal.h" +#include "flutter/shell/platform/darwin/ios/framework/Source/platform_message_response_darwin.h" +#include "flutter/shell/platform/darwin/ios/platform_view_ios.h" + +@interface FlutterEngine () +// Maintains a dictionary of plugin names that have registered with the engine. Used by +// FlutterEngineRegistrar to implement a FlutterPluginRegistrar. +@property(nonatomic, readonly) NSMutableDictionary* pluginPublications; +@end + +@interface FlutterEngineRegistrar : NSObject +- (instancetype)initWithPlugin:(NSString*)pluginKey flutterEngine:(FlutterEngine*)flutterEngine; +@end + +@implementation FlutterEngine { + fml::scoped_nsobject _dartProject; + shell::ThreadHost _threadHost; + std::unique_ptr _shell; + NSString* _labelPrefix; + std::unique_ptr> _weakFactory; + + fml::WeakPtr _viewController; + fml::scoped_nsobject _publisher; + + // Channels + fml::scoped_nsobject _platformPlugin; + fml::scoped_nsobject _textInputPlugin; + fml::scoped_nsobject _localizationChannel; + fml::scoped_nsobject _navigationChannel; + fml::scoped_nsobject _platformChannel; + fml::scoped_nsobject _textInputChannel; + fml::scoped_nsobject _lifecycleChannel; + fml::scoped_nsobject _systemChannel; + fml::scoped_nsobject _settingsChannel; + + int64_t _nextTextureId; +} + +- (instancetype)initWithName:(NSString*)labelPrefix project:(FlutterDartProject*)projectOrNil { + self = [super init]; + NSAssert(self, @"Super init cannot be nil"); + NSAssert(labelPrefix, @"labelPrefix is required"); + _labelPrefix = [labelPrefix copy]; + + _weakFactory = std::make_unique>(self); + + if (projectOrNil == nil) + _dartProject.reset([[FlutterDartProject alloc] init]); + else + _dartProject.reset([projectOrNil retain]); + + _pluginPublications = [NSMutableDictionary new]; + _publisher.reset([[FlutterObservatoryPublisher alloc] init]); + + [self setupChannels]; + + return self; +} + +- (void)dealloc { + [_pluginPublications release]; + [super dealloc]; +} + +- (shell::Shell&)shell { + FML_DCHECK(_shell); + return *_shell; +} + +- (fml::WeakPtr)getWeakPtr { + return _weakFactory->GetWeakPtr(); +} + +- (void)updateViewportMetrics:(blink::ViewportMetrics)viewportMetrics { + self.shell.GetTaskRunners().GetUITaskRunner()->PostTask( + [engine = self.shell.GetEngine(), metrics = viewportMetrics]() { + if (engine) { + engine->SetViewportMetrics(std::move(metrics)); + } + }); +} + +- (void)dispatchPointerDataPacket:(std::unique_ptr)packet { + self.shell.GetTaskRunners().GetUITaskRunner()->PostTask( + fml::MakeCopyable([engine = self.shell.GetEngine(), packet = std::move(packet)] { + if (engine) { + engine->DispatchPointerDataPacket(*packet); + } + })); +} + +- (fml::WeakPtr)platformView { + FML_DCHECK(_shell); + return _shell->GetPlatformView(); +} + +- (shell::PlatformViewIOS*)iosPlatformView { + FML_DCHECK(_shell); + return static_cast(_shell->GetPlatformView().get()); +} + +- (fml::RefPtr)platformTaskRunner { + FML_DCHECK(_shell); + return _shell->GetTaskRunners().GetPlatformTaskRunner(); +} + +- (void)setViewController:(FlutterViewController*)viewController { + FML_DCHECK(self.iosPlatformView); + _viewController = [viewController getWeakPtr]; + self.iosPlatformView->SetOwnerViewController(_viewController); + [self maybeSetupPlatformViewChannels]; +} + +- (FlutterViewController*)viewController { + if (!_viewController) { + return nil; + } + return _viewController.get(); +} + +- (FlutterPlatformPlugin*)platformPlugin { + return _platformPlugin.get(); +} +- (FlutterTextInputPlugin*)textInputPlugin { + return _textInputPlugin.get(); +} +- (FlutterMethodChannel*)localizationChannel { + return _localizationChannel.get(); +} +- (FlutterMethodChannel*)navigationChannel { + return _navigationChannel.get(); +} +- (FlutterMethodChannel*)platformChannel { + return _platformChannel.get(); +} +- (FlutterMethodChannel*)textInputChannel { + return _textInputChannel.get(); +} +- (FlutterBasicMessageChannel*)lifecycleChannel { + return _lifecycleChannel.get(); +} +- (FlutterBasicMessageChannel*)systemChannel { + return _systemChannel.get(); +} +- (FlutterBasicMessageChannel*)settingsChannel { + return _settingsChannel.get(); +} + +- (void)setupChannels { + _localizationChannel.reset([[FlutterMethodChannel alloc] + initWithName:@"flutter/localization" + binaryMessenger:self + codec:[FlutterJSONMethodCodec sharedInstance]]); + + _navigationChannel.reset([[FlutterMethodChannel alloc] + initWithName:@"flutter/navigation" + binaryMessenger:self + codec:[FlutterJSONMethodCodec sharedInstance]]); + + _platformChannel.reset([[FlutterMethodChannel alloc] + initWithName:@"flutter/platform" + binaryMessenger:self + codec:[FlutterJSONMethodCodec sharedInstance]]); + + _textInputChannel.reset([[FlutterMethodChannel alloc] + initWithName:@"flutter/textinput" + binaryMessenger:self + codec:[FlutterJSONMethodCodec sharedInstance]]); + + _lifecycleChannel.reset([[FlutterBasicMessageChannel alloc] + initWithName:@"flutter/lifecycle" + binaryMessenger:self + codec:[FlutterStringCodec sharedInstance]]); + + _systemChannel.reset([[FlutterBasicMessageChannel alloc] + initWithName:@"flutter/system" + binaryMessenger:self + codec:[FlutterJSONMessageCodec sharedInstance]]); + + _settingsChannel.reset([[FlutterBasicMessageChannel alloc] + initWithName:@"flutter/settings" + binaryMessenger:self + codec:[FlutterJSONMessageCodec sharedInstance]]); + + _textInputPlugin.reset([[FlutterTextInputPlugin alloc] init]); + _textInputPlugin.get().textInputDelegate = self; + + _platformPlugin.reset([[FlutterPlatformPlugin alloc] initWithEngine:[self getWeakPtr]]); + + [self maybeSetupPlatformViewChannels]; +} + +- (void)maybeSetupPlatformViewChannels { + if (_shell && self.shell.IsSetup()) { + [_platformChannel.get() setMethodCallHandler:^(FlutterMethodCall* call, FlutterResult result) { + [_platformPlugin.get() handleMethodCall:call result:result]; + }]; + + [_textInputChannel.get() setMethodCallHandler:^(FlutterMethodCall* call, FlutterResult result) { + [_textInputPlugin.get() handleMethodCall:call result:result]; + }]; + self.iosPlatformView->SetTextInputPlugin(_textInputPlugin); + } +} + +- (shell::Rasterizer::Screenshot)screenshot:(shell::Rasterizer::ScreenshotType)type + base64Encode:(bool)base64Encode { + return self.shell.Screenshot(type, base64Encode); +} + +- (void)launchEngine:(NSString*)entrypoint libraryURI:(NSString*)libraryOrNil { + // Launch the Dart application with the inferred run configuration. + self.shell.GetTaskRunners().GetUITaskRunner()->PostTask(fml::MakeCopyable( + [engine = _shell->GetEngine(), + config = [_dartProject.get() runConfigurationForEntrypoint:entrypoint + libraryOrNil:libraryOrNil] // + ]() mutable { + if (engine) { + auto result = engine->Run(std::move(config)); + if (result == shell::Engine::RunStatus::Failure) { + FML_LOG(ERROR) << "Could not launch engine with configuration."; + } + } + })); +} + +- (bool)runWithEntrypoint:(NSString*)entrypoint libraryURI:(NSString*)libraryURI { + if (_shell != nullptr) { + FML_LOG(WARNING) << "This FlutterEngine was already invoked."; + return false; + } + + static size_t shellCount = 1; + + auto settings = [_dartProject.get() settings]; + + if (libraryURI) { + FML_DCHECK(entrypoint) << "Must specify entrypoint if specifying library"; + settings.advisory_script_entrypoint = entrypoint.UTF8String; + settings.advisory_script_uri = libraryURI.UTF8String; + } else if (entrypoint) { + settings.advisory_script_entrypoint = entrypoint.UTF8String; + settings.advisory_script_entrypoint = std::string("main.dart"); + } else { + settings.advisory_script_entrypoint = std::string("main"); + settings.advisory_script_entrypoint = std::string("main.dart"); + } + + const auto threadLabel = [NSString stringWithFormat:@"%@.%zu", _labelPrefix, shellCount++]; + FML_DLOG(INFO) << "Creating threadHost for " << threadLabel.UTF8String; + // The current thread will be used as the platform thread. Ensure that the message loop is + // initialized. + fml::MessageLoop::EnsureInitializedForCurrentThread(); + + _threadHost = { + threadLabel.UTF8String, // label + shell::ThreadHost::Type::UI | shell::ThreadHost::Type::GPU | shell::ThreadHost::Type::IO}; + + blink::TaskRunners task_runners(threadLabel.UTF8String, // label + fml::MessageLoop::GetCurrent().GetTaskRunner(), // platform + _threadHost.gpu_thread->GetTaskRunner(), // gpu + _threadHost.ui_thread->GetTaskRunner(), // ui + _threadHost.io_thread->GetTaskRunner() // io + ); + + // Lambda captures by pointers to ObjC objects are fine here because the + // create call is + // synchronous. + shell::Shell::CreateCallback on_create_platform_view = + [](shell::Shell& shell) { + return std::make_unique(shell, shell.GetTaskRunners()); + }; + + shell::Shell::CreateCallback on_create_rasterizer = [](shell::Shell& shell) { + return std::make_unique(shell.GetTaskRunners()); + }; + + // Create the shell. This is a blocking operation. + _shell = shell::Shell::Create(std::move(task_runners), // task runners + std::move(settings), // settings + on_create_platform_view, // platform view creation + on_create_rasterizer // rasterzier creation + ); + + if (_shell == nullptr) { + FML_LOG(ERROR) << "Could not start a shell FlutterEngine with entrypoint: " + << entrypoint.UTF8String; + } else { + [self maybeSetupPlatformViewChannels]; + [self launchEngine:entrypoint libraryURI:libraryURI]; + } + + return _shell != nullptr; +} + +- (bool)runWithEntrypoint:(NSString*)entrypoint { + return [self runWithEntrypoint:entrypoint libraryURI:nil]; +} + +#pragma mark - Text input delegate + +- (void)updateEditingClient:(int)client withState:(NSDictionary*)state { + [_textInputChannel.get() invokeMethod:@"TextInputClient.updateEditingState" + arguments:@[ @(client), state ]]; +} + +- (void)performAction:(FlutterTextInputAction)action withClient:(int)client { + NSString* actionString; + switch (action) { + case FlutterTextInputActionUnspecified: + // Where did the term "unspecified" come from? iOS has a "default" and Android + // has "unspecified." These 2 terms seem to mean the same thing but we need + // to pick just one. "unspecified" was chosen because "default" is often a + // reserved word in languages with switch statements (dart, java, etc). + actionString = @"TextInputAction.unspecified"; + break; + case FlutterTextInputActionDone: + actionString = @"TextInputAction.done"; + break; + case FlutterTextInputActionGo: + actionString = @"TextInputAction.go"; + break; + case FlutterTextInputActionSend: + actionString = @"TextInputAction.send"; + break; + case FlutterTextInputActionSearch: + actionString = @"TextInputAction.search"; + break; + case FlutterTextInputActionNext: + actionString = @"TextInputAction.next"; + break; + case FlutterTextInputActionContinue: + actionString = @"TextInputAction.continue"; + break; + case FlutterTextInputActionJoin: + actionString = @"TextInputAction.join"; + break; + case FlutterTextInputActionRoute: + actionString = @"TextInputAction.route"; + break; + case FlutterTextInputActionEmergencyCall: + actionString = @"TextInputAction.emergencyCall"; + break; + case FlutterTextInputActionNewline: + actionString = @"TextInputAction.newline"; + break; + } + [_textInputChannel.get() invokeMethod:@"TextInputClient.performAction" + arguments:@[ @(client), actionString ]]; +} + +#pragma mark - Screenshot Delegate + +- (shell::Rasterizer::Screenshot)takeScreenshot:(shell::Rasterizer::ScreenshotType)type + asBase64Encoded:(BOOL)base64Encode { + FML_DCHECK(_shell) << "Cannot takeScreenshot without a shell"; + return _shell->Screenshot(type, base64Encode); +} + +#pragma mark - FlutterBinaryMessenger + +- (void)sendOnChannel:(NSString*)channel message:(NSData*)message { + [self sendOnChannel:channel message:message binaryReply:nil]; +} + +- (void)sendOnChannel:(NSString*)channel + message:(NSData*)message + binaryReply:(FlutterBinaryReply)callback { + NSAssert(channel, @"The channel must not be null"); + fml::RefPtr response = + (callback == nil) ? nullptr + : fml::MakeRefCounted( + ^(NSData* reply) { + callback(reply); + }, + _shell->GetTaskRunners().GetPlatformTaskRunner()); + fml::RefPtr platformMessage = + (message == nil) ? fml::MakeRefCounted(channel.UTF8String, response) + : fml::MakeRefCounted( + channel.UTF8String, shell::GetVectorFromNSData(message), response); + + _shell->GetPlatformView()->DispatchPlatformMessage(platformMessage); +} + +- (void)setMessageHandlerOnChannel:(NSString*)channel + binaryMessageHandler:(FlutterBinaryMessageHandler)handler { + NSAssert(channel, @"The channel must not be null"); + FML_DCHECK(_shell && _shell->IsSetup()); + self.iosPlatformView->GetPlatformMessageRouter().SetMessageHandler(channel.UTF8String, handler); +} + +#pragma mark - FlutterTextureRegistry + +- (int64_t)registerTexture:(NSObject*)texture { + int64_t textureId = _nextTextureId++; + self.iosPlatformView->RegisterExternalTexture(textureId, texture); + return textureId; +} + +- (void)unregisterTexture:(int64_t)textureId { + _shell->GetPlatformView()->UnregisterTexture(textureId); +} + +- (void)textureFrameAvailable:(int64_t)textureId { + _shell->GetPlatformView()->MarkTextureFrameAvailable(textureId); +} + +- (NSString*)lookupKeyForAsset:(NSString*)asset { + return [FlutterDartProject lookupKeyForAsset:asset]; +} + +- (NSString*)lookupKeyForAsset:(NSString*)asset fromPackage:(NSString*)package { + return [FlutterDartProject lookupKeyForAsset:asset fromPackage:package]; +} + +- (id)pluginRegistry { + return self; +} + +#pragma mark - FlutterPluginRegistry + +- (NSObject*)registrarForPlugin:(NSString*)pluginKey { + NSAssert(self.pluginPublications[pluginKey] == nil, @"Duplicate plugin key: %@", pluginKey); + self.pluginPublications[pluginKey] = [NSNull null]; + return [[FlutterEngineRegistrar alloc] initWithPlugin:pluginKey flutterEngine:self]; +} + +- (BOOL)hasPlugin:(NSString*)pluginKey { + return _pluginPublications[pluginKey] != nil; +} + +- (NSObject*)valuePublishedByPlugin:(NSString*)pluginKey { + return _pluginPublications[pluginKey]; +} + +@end + +@implementation FlutterEngineRegistrar { + NSString* _pluginKey; + FlutterEngine* _flutterEngine; +} + +- (instancetype)initWithPlugin:(NSString*)pluginKey flutterEngine:(FlutterEngine*)flutterEngine { + self = [super init]; + NSAssert(self, @"Super init cannot be nil"); + _pluginKey = [pluginKey retain]; + _flutterEngine = [flutterEngine retain]; + return self; +} + +- (void)dealloc { + [_pluginKey release]; + [_flutterEngine release]; + [super dealloc]; +} + +- (NSObject*)messenger { + return _flutterEngine; +} + +- (NSObject*)textures { + return _flutterEngine; +} + +- (void)publish:(NSObject*)value { + _flutterEngine.pluginPublications[_pluginKey] = value; +} + +- (void)addMethodCallDelegate:(NSObject*)delegate + channel:(FlutterMethodChannel*)channel { + [channel setMethodCallHandler:^(FlutterMethodCall* call, FlutterResult result) { + [delegate handleMethodCall:call result:result]; + }]; +} + +- (void)addApplicationDelegate:(NSObject*)delegate { + id appDelegate = [[UIApplication sharedApplication] delegate]; + if ([appDelegate conformsToProtocol:@protocol(FlutterAppLifeCycleProvider)]) { + id lifeCycleProvider = + (id)appDelegate; + [lifeCycleProvider addApplicationLifeCycleDelegate:delegate]; + } +} + +- (NSString*)lookupKeyForAsset:(NSString*)asset { + return [_flutterEngine lookupKeyForAsset:asset]; +} + +- (NSString*)lookupKeyForAsset:(NSString*)asset fromPackage:(NSString*)package { + return [_flutterEngine lookupKeyForAsset:asset fromPackage:package]; +} + +- (void)registerViewFactory:(NSObject*)factory + withId:(NSString*)factoryId { + // TODO(amirh/dnfield): this shouldn't need to fail - PlatformViewsController should be + // independent. Dev builds of engine should just fail here. We don't want to fail in release mode + // because this shouldn't ordinarily happen. + FML_DCHECK([_flutterEngine viewController]) + << "Cannot register a view factory on a headless engine."; + if ([_flutterEngine viewController]) { + [[_flutterEngine viewController] platformViewsController]->RegisterViewFactory(factory, + factoryId); + } else { + // Shouldn't ordinarily happen, but at least give warning if it does. + FML_LOG(ERROR) << "Cannot register a view factory on a headless engine."; + } +} + +@end diff --git a/shell/platform/darwin/ios/framework/Source/FlutterEngine_Internal.h b/shell/platform/darwin/ios/framework/Source/FlutterEngine_Internal.h new file mode 100644 index 0000000000000..5162f9c3ce078 --- /dev/null +++ b/shell/platform/darwin/ios/framework/Source/FlutterEngine_Internal.h @@ -0,0 +1,45 @@ +// Copyright 2018 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. + +#ifndef FLUTTER_SHELL_PLATFORM_DARWIN_IOS_FRAMEWORK_SOURCE_FLUTTERENGINE_INTERNAL_H_ +#define FLUTTER_SHELL_PLATFORM_DARWIN_IOS_FRAMEWORK_SOURCE_FLUTTERENGINE_INTERNAL_H_ + +#import "flutter/shell/platform/darwin/ios/framework/Headers/FlutterEngine.h" + +#include "flutter/fml/memory/weak_ptr.h" +#include "flutter/fml/task_runner.h" +#include "flutter/lib/ui/window/pointer_data_packet.h" +#include "flutter/lib/ui/window/viewport_metrics.h" +#include "flutter/shell/common/platform_view.h" +#include "flutter/shell/common/rasterizer.h" +#include "flutter/shell/common/shell.h" +#include "flutter/shell/platform/darwin/ios/framework/Source/FlutterDartProject_Internal.h" +#include "flutter/shell/platform/darwin/ios/framework/Source/FlutterPlatformPlugin.h" +#include "flutter/shell/platform/darwin/ios/framework/Source/FlutterTextInputDelegate.h" +#include "flutter/shell/platform/darwin/ios/framework/Source/FlutterTextInputPlugin.h" +#include "flutter/shell/platform/darwin/ios/platform_view_ios.h" + +#include "flutter/shell/platform/darwin/ios/framework/Headers/FlutterEngine.h" + +@interface FlutterEngine () + +- (shell::Shell&)shell; + +- (void)updateViewportMetrics:(blink::ViewportMetrics)viewportMetrics; +- (void)dispatchPointerDataPacket:(std::unique_ptr)packet; + +- (fml::RefPtr)platformTaskRunner; + +- (fml::WeakPtr)platformView; + +- (shell::Rasterizer::Screenshot)screenshot:(shell::Rasterizer::ScreenshotType)type + base64Encode:(bool)base64Encode; + +- (FlutterPlatformPlugin*)platformPlugin; +- (FlutterTextInputPlugin*)textInputPlugin; +- (void)launchEngine:(NSString*)entrypoint libraryURI:(NSString*)libraryOrNil; + +@end + +#endif // FLUTTER_SHELL_PLATFORM_DARWIN_IOS_FRAMEWORK_SOURCE_FLUTTERENGINE_INTERNAL_H_ diff --git a/shell/platform/darwin/ios/framework/Source/FlutterHeadlessDartRunner.mm b/shell/platform/darwin/ios/framework/Source/FlutterHeadlessDartRunner.mm index 5d0f42af6c1e0..34c854ada5885 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterHeadlessDartRunner.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterHeadlessDartRunner.mm @@ -4,11 +4,11 @@ #define FML_USED_ON_EMBEDDER +#import "flutter/shell/platform/darwin/ios/framework/Source/FlutterEngine_Internal.h" + #import "flutter/shell/platform/darwin/ios/framework/Headers/FlutterHeadlessDartRunner.h" -#include #include -#include #include "flutter/fml/make_copyable.h" #include "flutter/fml/message_loop.h" @@ -22,128 +22,15 @@ #include "flutter/shell/platform/darwin/ios/framework/Headers/FlutterPlugin.h" #include "flutter/shell/platform/darwin/ios/framework/Source/FlutterDartProject_Internal.h" #include "flutter/shell/platform/darwin/ios/framework/Source/platform_message_response_darwin.h" -#include "flutter/shell/platform/darwin/ios/headless_platform_view_ios.h" #include "flutter/shell/platform/darwin/ios/platform_view_ios.h" -static std::unique_ptr CreateHeadlessPlatformView( - shell::Shell& shell) { - return std::make_unique(shell, shell.GetTaskRunners()); -} - -static std::unique_ptr CreateHeadlessRasterizer(shell::Shell& shell) { - return std::make_unique(shell.GetTaskRunners()); -} - -static std::string CreateShellLabel() { - static size_t count = 1; - std::stringstream stream; - stream << "io.flutter.headless."; - stream << count++; - return stream.str(); -} - @implementation FlutterHeadlessDartRunner { - shell::ThreadHost _threadHost; - std::unique_ptr _shell; } -- (void)runWithEntrypointAndLibraryUri:(NSString*)entrypoint libraryUri:(NSString*)uri { - if (_shell != nullptr || entrypoint.length == 0) { - FML_LOG(ERROR) << "This headless dart runner was already used to run some code."; - return; - } - - const auto label = CreateShellLabel(); - - // Create the threads to run the shell on. - _threadHost = { - label, // native thread label - shell::ThreadHost::Type::UI // managed threads to create - }; - - // Configure shell task runners. - auto current_task_runner = fml::MessageLoop::GetCurrent().GetTaskRunner(); - auto single_task_runner = _threadHost.ui_thread->GetTaskRunner(); - blink::TaskRunners task_runners(label, // dart thread label - current_task_runner, // platform - single_task_runner, // gpu - single_task_runner, // ui - single_task_runner // io - ); - - auto settings = shell::SettingsFromCommandLine(shell::CommandLineFromNSProcessInfo()); - - // These values set the name of the isolate for debugging. - settings.advisory_script_entrypoint = entrypoint.UTF8String; - settings.advisory_script_uri = uri.UTF8String; - - // Create the shell. This is a blocking operation. - _shell = shell::Shell::Create( - std::move(task_runners), // task runners - std::move(settings), // settings - std::bind(&CreateHeadlessPlatformView, std::placeholders::_1), // platform view creation - std::bind(&CreateHeadlessRasterizer, std::placeholders::_1) // rasterzier creation - ); - - if (_shell == nullptr) { - FML_LOG(ERROR) << "Could not start a shell for the headless dart runner with entrypoint: " - << entrypoint.UTF8String; - return; - } - - FlutterDartProject* project = [[[FlutterDartProject alloc] init] autorelease]; - - auto config = project.runConfiguration; - config.SetEntrypointAndLibrary(entrypoint.UTF8String, uri.UTF8String); - - // Override the default run configuration with the specified entrypoint. - _shell->GetTaskRunners().GetUITaskRunner()->PostTask( - fml::MakeCopyable([engine = _shell->GetEngine(), config = std::move(config)]() mutable { - BOOL success = NO; - FML_LOG(INFO) << "Attempting to launch background engine configuration..."; - if (!engine || engine->Run(std::move(config)) == shell::Engine::RunStatus::Failure) { - FML_LOG(ERROR) << "Could not launch engine with configuration."; - } else { - FML_LOG(INFO) << "Background Isolate successfully started and run."; - success = YES; - } - })); +- (instancetype)initWithName:(NSString*)labelPrefix project:(FlutterDartProject*)projectOrNil { + return [super initWithName:labelPrefix project:projectOrNil]; } - -- (void)runWithEntrypoint:(NSString*)entrypoint { - [self runWithEntrypointAndLibraryUri:entrypoint libraryUri:nil]; -} - -#pragma mark - FlutterBinaryMessenger - -- (void)sendOnChannel:(NSString*)channel message:(NSData*)message { - [self sendOnChannel:channel message:message binaryReply:nil]; +- (instancetype)init { + return [self initWithName:@"io.flutter.headless" project:nil]; } - -- (void)sendOnChannel:(NSString*)channel - message:(NSData*)message - binaryReply:(FlutterBinaryReply)callback { - NSAssert(channel, @"The channel must not be null"); - fml::RefPtr response = - (callback == nil) ? nullptr - : fml::MakeRefCounted( - ^(NSData* reply) { - callback(reply); - }, - _shell->GetTaskRunners().GetPlatformTaskRunner()); - fml::RefPtr platformMessage = - (message == nil) ? fml::MakeRefCounted(channel.UTF8String, response) - : fml::MakeRefCounted( - channel.UTF8String, shell::GetVectorFromNSData(message), response); - - _shell->GetPlatformView()->DispatchPlatformMessage(platformMessage); -} - -- (void)setMessageHandlerOnChannel:(NSString*)channel - binaryMessageHandler:(FlutterBinaryMessageHandler)handler { - reinterpret_cast(_shell->GetPlatformView().get()) - ->GetPlatformMessageRouter() - .SetMessageHandler(channel.UTF8String, handler); -} - @end diff --git a/shell/platform/darwin/ios/framework/Source/FlutterNavigationController.mm b/shell/platform/darwin/ios/framework/Source/FlutterNavigationController.mm deleted file mode 100644 index 2ca2978a548f1..0000000000000 --- a/shell/platform/darwin/ios/framework/Source/FlutterNavigationController.mm +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2017 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. - -#import "flutter/shell/platform/darwin/ios/framework/Headers/FlutterNavigationController.h" - -@implementation FlutterNavigationController - -- (void)viewWillAppear:(BOOL)animated { - [self setNavigationBarHidden:YES]; - [super viewWillAppear:animated]; -} - -@end diff --git a/shell/platform/darwin/ios/framework/Source/FlutterPlatformPlugin.h b/shell/platform/darwin/ios/framework/Source/FlutterPlatformPlugin.h index 09bdfa8b0ea47..23d86c04c299f 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterPlatformPlugin.h +++ b/shell/platform/darwin/ios/framework/Source/FlutterPlatformPlugin.h @@ -7,13 +7,11 @@ #include "flutter/fml/memory/weak_ptr.h" #include "flutter/shell/platform/darwin/ios/framework/Headers/FlutterChannels.h" - -#include +#include "flutter/shell/platform/darwin/ios/framework/Headers/FlutterEngine.h" @interface FlutterPlatformPlugin : NSObject - (instancetype)init NS_UNAVAILABLE; -- (instancetype)initWithViewController:(fml::WeakPtr)viewController - NS_DESIGNATED_INITIALIZER; +- (instancetype)initWithEngine:(fml::WeakPtr)engine NS_DESIGNATED_INITIALIZER; - (void)handleMethodCall:(FlutterMethodCall*)call result:(FlutterResult)result; @end diff --git a/shell/platform/darwin/ios/framework/Source/FlutterPlatformPlugin.mm b/shell/platform/darwin/ios/framework/Source/FlutterPlatformPlugin.mm index 54873532ae18b..fb52763303e08 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterPlatformPlugin.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterPlatformPlugin.mm @@ -33,21 +33,21 @@ using namespace shell; @implementation FlutterPlatformPlugin { - fml::WeakPtr _viewController; + fml::WeakPtr _engine; } - (instancetype)init { - @throw([NSException exceptionWithName:@"FlutterPlatformPlugin must initWithViewController" + @throw([NSException exceptionWithName:@"FlutterPlatformPlugin must initWithEngine" reason:nil userInfo:nil]); } -- (instancetype)initWithViewController:(fml::WeakPtr)viewController { - FML_DCHECK(viewController) << "viewController must be set"; +- (instancetype)initWithEngine:(fml::WeakPtr)engine { + FML_DCHECK(engine) << "engine must be set"; self = [super init]; if (self) { - _viewController = viewController; + _engine = engine; } return self; @@ -203,8 +203,13 @@ - (void)popSystemNavigator { UIViewController* viewController = [UIApplication sharedApplication].keyWindow.rootViewController; if ([viewController isKindOfClass:[UINavigationController class]]) { [((UINavigationController*)viewController) popViewControllerAnimated:NO]; - } else if (viewController != _viewController.get()) { - [_viewController.get() dismissViewControllerAnimated:NO completion:nil]; + [_engine.get() setViewController:nil]; + } else { + auto engineViewController = static_cast([_engine.get() viewController]); + if (engineViewController != viewController) { + [engineViewController dismissViewControllerAnimated:NO completion:nil]; + [_engine.get() setViewController:nil]; + } } } diff --git a/shell/platform/darwin/ios/framework/Source/FlutterTextInputDelegate.h b/shell/platform/darwin/ios/framework/Source/FlutterTextInputDelegate.h index 3136eb08ccafe..4c3cea566fc76 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterTextInputDelegate.h +++ b/shell/platform/darwin/ios/framework/Source/FlutterTextInputDelegate.h @@ -21,7 +21,7 @@ typedef NS_ENUM(NSInteger, FlutterTextInputAction) { FlutterTextInputActionNewline, }; -@protocol FlutterTextInputDelegate +@protocol FlutterTextInputDelegate - (void)updateEditingClient:(int)client withState:(NSDictionary*)state; - (void)performAction:(FlutterTextInputAction)action withClient:(int)client; diff --git a/shell/platform/darwin/ios/framework/Source/FlutterTextInputPlugin.h b/shell/platform/darwin/ios/framework/Source/FlutterTextInputPlugin.h index 198381e4ebbce..06e5b68b69ed2 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterTextInputPlugin.h +++ b/shell/platform/darwin/ios/framework/Source/FlutterTextInputPlugin.h @@ -36,7 +36,7 @@ @end /** A range of text in the buffer of a Flutter text editing widget. */ -@interface FlutterTextRange : UITextRange +@interface FlutterTextRange : UITextRange @property(nonatomic, readonly) NSRange range; diff --git a/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm b/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm index 76c6229c73ce3..ea56bfc2dfca7 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm @@ -14,8 +14,7 @@ #include "flutter/fml/platform/darwin/platform_version.h" #include "flutter/fml/platform/darwin/scoped_nsobject.h" #include "flutter/shell/common/thread_host.h" -#include "flutter/shell/platform/darwin/ios/framework/Source/FlutterDartProject_Internal.h" -#include "flutter/shell/platform/darwin/ios/framework/Source/FlutterObservatoryPublisher.h" +#include "flutter/shell/platform/darwin/ios/framework/Source/FlutterEngine_Internal.h" #include "flutter/shell/platform/darwin/ios/framework/Source/FlutterPlatformPlugin.h" #include "flutter/shell/platform/darwin/ios/framework/Source/FlutterTextInputDelegate.h" #include "flutter/shell/platform/darwin/ios/framework/Source/FlutterTextInputPlugin.h" @@ -23,31 +22,9 @@ #include "flutter/shell/platform/darwin/ios/framework/Source/platform_message_response_darwin.h" #include "flutter/shell/platform/darwin/ios/platform_view_ios.h" -@interface FlutterViewController () -@property(nonatomic, readonly) NSMutableDictionary* pluginPublications; -@end - -@interface FlutterViewControllerRegistrar : NSObject -- (instancetype)initWithPlugin:(NSString*)pluginKey - flutterViewController:(FlutterViewController*)flutterViewController; -@end - @implementation FlutterViewController { - fml::scoped_nsobject _dartProject; - shell::ThreadHost _threadHost; - std::unique_ptr _shell; std::unique_ptr> _weakFactory; - - // Channels - fml::scoped_nsobject _platformPlugin; - fml::scoped_nsobject _textInputPlugin; - fml::scoped_nsobject _localizationChannel; - fml::scoped_nsobject _navigationChannel; - fml::scoped_nsobject _platformChannel; - fml::scoped_nsobject _textInputChannel; - fml::scoped_nsobject _lifecycleChannel; - fml::scoped_nsobject _systemChannel; - fml::scoped_nsobject _settingsChannel; + fml::scoped_nsobject _engine; // We keep a separate reference to this and create it ahead of time because we want to be able to // setup a shell along with its platform view before the view has to appear. @@ -58,27 +35,41 @@ @implementation FlutterViewController { UIInterfaceOrientationMask _orientationPreferences; UIStatusBarStyle _statusBarStyle; blink::ViewportMetrics _viewportMetrics; - int64_t _nextTextureId; BOOL _initialized; BOOL _viewOpaque; - - fml::scoped_nsobject _publisher; } #pragma mark - Manage and override all designated initializers +- (instancetype)initWithEngine:(FlutterEngine*)engine + nibName:(NSString*)nibNameOrNil + bundle:(NSBundle*)nibBundleOrNil { + NSAssert(engine != nil, @"Engine is required"); + self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; + if (self) { + _viewOpaque = YES; + _engine.reset([engine retain]); + _flutterView.reset([[FlutterView alloc] initWithDelegate:_engine opaque:self.isViewOpaque]); + _weakFactory = std::make_unique>(self); + + [self performCommonViewControllerInitialization]; + [engine setViewController:self]; + } + + return self; +} + - (instancetype)initWithProject:(FlutterDartProject*)projectOrNil nibName:(NSString*)nibNameOrNil bundle:(NSBundle*)nibBundleOrNil { self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if (self) { + _viewOpaque = YES; _weakFactory = std::make_unique>(self); - if (projectOrNil == nil) - _dartProject.reset([[FlutterDartProject alloc] init]); - else - _dartProject.reset([projectOrNil retain]); - - self.viewOpaque = YES; + _engine.reset([[FlutterEngine alloc] initWithName:@"io.flutter" project:projectOrNil]); + _flutterView.reset([[FlutterView alloc] initWithDelegate:_engine opaque:self.isViewOpaque]); + [_engine.get() runWithEntrypoint:nil]; + [_engine.get() setViewController:self]; [self performCommonViewControllerInitialization]; } @@ -98,6 +89,18 @@ - (instancetype)init { return [self initWithProject:nil nibName:nil bundle:nil]; } +- (BOOL)isViewOpaque { + return _viewOpaque; +} + +- (void)setViewOpaque:(BOOL)value { + _viewOpaque = value; + if (_flutterView.get().layer.opaque != value) { + _flutterView.get().layer.opaque = value; + [_flutterView.get().layer setNeedsLayout]; + } +} + #pragma mark - Common view controller initialization tasks - (void)performCommonViewControllerInitialization { @@ -106,147 +109,19 @@ - (void)performCommonViewControllerInitialization { _initialized = YES; - _publisher.reset([[FlutterObservatoryPublisher alloc] init]); - _orientationPreferences = UIInterfaceOrientationMaskAll; _statusBarStyle = UIStatusBarStyleDefault; - if ([self setupShell]) { - [self setupChannels]; - [self setupNotificationCenterObservers]; - - _platformViewsController.reset(new shell::FlutterPlatformViewsController(self)); - _pluginPublications = [NSMutableDictionary new]; - } + [self setupNotificationCenterObservers]; + _platformViewsController.reset(new shell::FlutterPlatformViewsController(_engine.get())); } -- (shell::Shell&)shell { - FML_DCHECK(_shell); - return *_shell; +- (fml::scoped_nsobject)engine { + return _engine; } -- (fml::WeakPtr)iosPlatformView { - FML_DCHECK(_shell); - return _shell->GetPlatformView(); -} - -- (BOOL)setupShell { - FML_DCHECK(_shell == nullptr); - - static size_t shell_count = 1; - - auto threadLabel = [NSString stringWithFormat:@"io.flutter.%zu", shell_count++]; - - _threadHost = { - threadLabel.UTF8String, // label - shell::ThreadHost::Type::UI | shell::ThreadHost::Type::GPU | shell::ThreadHost::Type::IO}; - - // The current thread will be used as the platform thread. Ensure that the message loop is - // initialized. - fml::MessageLoop::EnsureInitializedForCurrentThread(); - - blink::TaskRunners task_runners(threadLabel.UTF8String, // label - fml::MessageLoop::GetCurrent().GetTaskRunner(), // platform - _threadHost.gpu_thread->GetTaskRunner(), // gpu - _threadHost.ui_thread->GetTaskRunner(), // ui - _threadHost.io_thread->GetTaskRunner() // io - ); - - _flutterView.reset([[FlutterView alloc] initWithDelegate:self opaque:self.isViewOpaque]); - - // Lambda captures by pointers to ObjC objects are fine here because the create call is - // synchronous. - shell::Shell::CreateCallback on_create_platform_view = - [flutter_view_controller = self, flutter_view = _flutterView.get()](shell::Shell& shell) { - auto platform_view_ios = std::make_unique( - shell, // delegate - shell.GetTaskRunners(), // task runners - flutter_view_controller, // flutter view controller owner - flutter_view // flutter view owner - ); - return platform_view_ios; - }; - - shell::Shell::CreateCallback on_create_rasterizer = [](shell::Shell& shell) { - return std::make_unique(shell.GetTaskRunners()); - }; - - // Create the shell. - _shell = shell::Shell::Create(std::move(task_runners), // - [_dartProject settings], // - on_create_platform_view, // - on_create_rasterizer // - ); - - if (!_shell) { - FML_LOG(ERROR) << "Could not setup a shell to run the Dart application."; - return false; - } - - return true; -} - -- (BOOL)isViewOpaque { - return _viewOpaque; -} - -- (void)setViewOpaque:(BOOL)value { - _viewOpaque = value; - if (_flutterView.get().layer.opaque != value) { - _flutterView.get().layer.opaque = value; - [_flutterView.get().layer setNeedsLayout]; - } -} - -- (void)setupChannels { - _localizationChannel.reset([[FlutterMethodChannel alloc] - initWithName:@"flutter/localization" - binaryMessenger:self - codec:[FlutterJSONMethodCodec sharedInstance]]); - - _navigationChannel.reset([[FlutterMethodChannel alloc] - initWithName:@"flutter/navigation" - binaryMessenger:self - codec:[FlutterJSONMethodCodec sharedInstance]]); - - _platformChannel.reset([[FlutterMethodChannel alloc] - initWithName:@"flutter/platform" - binaryMessenger:self - codec:[FlutterJSONMethodCodec sharedInstance]]); - - _textInputChannel.reset([[FlutterMethodChannel alloc] - initWithName:@"flutter/textinput" - binaryMessenger:self - codec:[FlutterJSONMethodCodec sharedInstance]]); - - _lifecycleChannel.reset([[FlutterBasicMessageChannel alloc] - initWithName:@"flutter/lifecycle" - binaryMessenger:self - codec:[FlutterStringCodec sharedInstance]]); - - _systemChannel.reset([[FlutterBasicMessageChannel alloc] - initWithName:@"flutter/system" - binaryMessenger:self - codec:[FlutterJSONMessageCodec sharedInstance]]); - - _settingsChannel.reset([[FlutterBasicMessageChannel alloc] - initWithName:@"flutter/settings" - binaryMessenger:self - codec:[FlutterJSONMessageCodec sharedInstance]]); - - _platformPlugin.reset( - [[FlutterPlatformPlugin alloc] initWithViewController:_weakFactory->GetWeakPtr()]); - [_platformChannel.get() setMethodCallHandler:^(FlutterMethodCall* call, FlutterResult result) { - [_platformPlugin.get() handleMethodCall:call result:result]; - }]; - - _textInputPlugin.reset([[FlutterTextInputPlugin alloc] init]); - _textInputPlugin.get().textInputDelegate = self; - [_textInputChannel.get() setMethodCallHandler:^(FlutterMethodCall* call, FlutterResult result) { - [_textInputPlugin.get() handleMethodCall:call result:result]; - }]; - static_cast(_shell->GetPlatformView().get()) - ->SetTextInputPlugin(_textInputPlugin); +- (fml::WeakPtr)getWeakPtr { + return _weakFactory->GetWeakPtr(); } - (void)setupNotificationCenterObservers { @@ -338,15 +213,15 @@ - (void)setupNotificationCenterObservers { } - (void)setInitialRoute:(NSString*)route { - [_navigationChannel.get() invokeMethod:@"setInitialRoute" arguments:route]; + [[_engine.get() navigationChannel] invokeMethod:@"setInitialRoute" arguments:route]; } - (void)popRoute { - [_navigationChannel.get() invokeMethod:@"popRoute" arguments:nil]; + [[_engine.get() navigationChannel] invokeMethod:@"popRoute" arguments:nil]; } - (void)pushRoute:(NSString*)route { - [_navigationChannel.get() invokeMethod:@"pushRoute" arguments:route]; + [[_engine.get() navigationChannel] invokeMethod:@"pushRoute" arguments:route]; } #pragma mark - Loading the view @@ -399,33 +274,36 @@ - (void)removeSplashScreenViewIfPresent { } - (void)installSplashScreenViewCallback { - if (!_shell || !_splashScreenView) { + if (!_splashScreenView) { return; } - auto weak_platform_view = _shell->GetPlatformView(); + auto weak_platform_view = [_engine.get() platformView]; if (!weak_platform_view) { return; } __unsafe_unretained auto weak_flutter_view_controller = self; // This is on the platform thread. - weak_platform_view->SetNextFrameCallback( - [weak_platform_view, weak_flutter_view_controller, - task_runner = _shell->GetTaskRunners().GetPlatformTaskRunner()]() { - // This is on the GPU thread. - task_runner->PostTask([weak_platform_view, weak_flutter_view_controller]() { - // We check if the weak platform view is alive. If it is alive, then the view controller - // also has to be alive since the view controller owns the platform view via the shell - // association. Thus, we are not convinced that the unsafe unretained weak object is in - // fact alive. - if (weak_platform_view) { - [weak_flutter_view_controller removeSplashScreenViewIfPresent]; - } - }); - }); + weak_platform_view->SetNextFrameCallback([weak_platform_view, weak_flutter_view_controller, + task_runner = [_engine.get() platformTaskRunner]]() { + // This is on the GPU thread. + task_runner->PostTask([weak_platform_view, weak_flutter_view_controller]() { + // We check if the weak platform view is alive. If it is alive, then the view controller + // also has to be alive since the view controller owns the platform view via the shell + // association. Thus, we are not convinced that the unsafe unretained weak object is in + // fact alive. + if (weak_platform_view) { + [weak_flutter_view_controller removeSplashScreenViewIfPresent]; + } + }); + }); } #pragma mark - Properties +- (FlutterView*)flutterView { + return _flutterView; +} + - (UIView*)splashScreenView { if (_splashScreenView == nullptr) { NSString* launchscreenName = @@ -481,10 +359,10 @@ - (void)surfaceUpdated:(BOOL)appeared { // NotifyCreated/NotifyDestroyed are synchronous and require hops between the UI and GPU thread. if (appeared) { [self installSplashScreenViewCallback]; - _shell->GetPlatformView()->NotifyCreated(); + [_engine.get() platformView] -> NotifyCreated(); } else { - _shell->GetPlatformView()->NotifyDestroyed(); + [_engine.get() platformView] -> NotifyDestroyed(); } } @@ -493,24 +371,11 @@ - (void)surfaceUpdated:(BOOL)appeared { - (void)viewWillAppear:(BOOL)animated { TRACE_EVENT0("flutter", "viewWillAppear"); - // Launch the Dart application with the inferred run configuration. - _shell->GetTaskRunners().GetUITaskRunner()->PostTask( - fml::MakeCopyable([engine = _shell->GetEngine(), // - config = [_dartProject.get() runConfiguration] // - ]() mutable { - if (engine) { - auto result = engine->Run(std::move(config)); - if (result == shell::Engine::RunStatus::Failure) { - FML_LOG(ERROR) << "Could not launch engine with configuration."; - } - } - })); - // Only recreate surface on subsequent appearances when viewport metrics are known. // First time surface creation is done on viewDidLayoutSubviews. if (_viewportMetrics.physical_width) [self surfaceUpdated:YES]; - [_lifecycleChannel.get() sendMessage:@"AppLifecycleState.inactive"]; + [[_engine.get() lifecycleChannel] sendMessage:@"AppLifecycleState.inactive"]; [super viewWillAppear:animated]; } @@ -520,14 +385,14 @@ - (void)viewDidAppear:(BOOL)animated { [self onLocaleUpdated:nil]; [self onUserSettingsChanged:nil]; [self onAccessibilityStatusChanged:nil]; - [_lifecycleChannel.get() sendMessage:@"AppLifecycleState.resumed"]; + [[_engine.get() lifecycleChannel] sendMessage:@"AppLifecycleState.resumed"]; [super viewDidAppear:animated]; } - (void)viewWillDisappear:(BOOL)animated { TRACE_EVENT0("flutter", "viewWillDisappear"); - [_lifecycleChannel.get() sendMessage:@"AppLifecycleState.inactive"]; + [[_engine.get() lifecycleChannel] sendMessage:@"AppLifecycleState.inactive"]; [super viewWillDisappear:animated]; } @@ -535,14 +400,13 @@ - (void)viewWillDisappear:(BOOL)animated { - (void)viewDidDisappear:(BOOL)animated { TRACE_EVENT0("flutter", "viewDidDisappear"); [self surfaceUpdated:NO]; - [_lifecycleChannel.get() sendMessage:@"AppLifecycleState.paused"]; + [[_engine.get() lifecycleChannel] sendMessage:@"AppLifecycleState.paused"]; [super viewDidDisappear:animated]; } - (void)dealloc { [[NSNotificationCenter defaultCenter] removeObserver:self]; - [_pluginPublications release]; [super dealloc]; } @@ -550,25 +414,25 @@ - (void)dealloc { - (void)applicationBecameActive:(NSNotification*)notification { TRACE_EVENT0("flutter", "applicationBecameActive"); - [_lifecycleChannel.get() sendMessage:@"AppLifecycleState.resumed"]; + [[_engine.get() lifecycleChannel] sendMessage:@"AppLifecycleState.resumed"]; } - (void)applicationWillResignActive:(NSNotification*)notification { TRACE_EVENT0("flutter", "applicationWillResignActive"); - [_lifecycleChannel.get() sendMessage:@"AppLifecycleState.inactive"]; + [[_engine.get() lifecycleChannel] sendMessage:@"AppLifecycleState.inactive"]; } - (void)applicationDidEnterBackground:(NSNotification*)notification { TRACE_EVENT0("flutter", "applicationDidEnterBackground"); [self surfaceUpdated:NO]; - [_lifecycleChannel.get() sendMessage:@"AppLifecycleState.paused"]; + [[_engine.get() lifecycleChannel] sendMessage:@"AppLifecycleState.paused"]; } - (void)applicationWillEnterForeground:(NSNotification*)notification { TRACE_EVENT0("flutter", "applicationWillEnterForeground"); if (_viewportMetrics.physical_width) [self surfaceUpdated:YES]; - [_lifecycleChannel.get() sendMessage:@"AppLifecycleState.inactive"]; + [[_engine.get() lifecycleChannel] sendMessage:@"AppLifecycleState.inactive"]; } #pragma mark - Touch event handling @@ -694,12 +558,7 @@ - (void)dispatchTouches:(NSSet*)touches packet->SetPointerData(pointer_index++, pointer_data); } - _shell->GetTaskRunners().GetUITaskRunner()->PostTask( - fml::MakeCopyable([engine = _shell->GetEngine(), packet = std::move(packet)] { - if (engine) { - engine->DispatchPointerDataPacket(*packet); - } - })); + [_engine.get() dispatchPointerDataPacket:std::move(packet)]; } - (void)touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event { @@ -721,12 +580,7 @@ - (void)touchesCancelled:(NSSet*)touches withEvent:(UIEvent*)event { #pragma mark - Handle view resizing - (void)updateViewportMetrics { - _shell->GetTaskRunners().GetUITaskRunner()->PostTask( - [engine = _shell->GetEngine(), metrics = _viewportMetrics]() { - if (engine) { - engine->SetViewportMetrics(std::move(metrics)); - } - }); + [_engine.get() updateViewportMetrics:_viewportMetrics]; } - (CGFloat)statusBarPadding { @@ -806,66 +660,6 @@ - (void)keyboardWillBeHidden:(NSNotification*)notification { [self updateViewportMetrics]; } -#pragma mark - Text input delegate - -- (void)updateEditingClient:(int)client withState:(NSDictionary*)state { - [_textInputChannel.get() invokeMethod:@"TextInputClient.updateEditingState" - arguments:@[ @(client), state ]]; -} - -- (void)performAction:(FlutterTextInputAction)action withClient:(int)client { - NSString* actionString; - switch (action) { - case FlutterTextInputActionUnspecified: - // Where did the term "unspecified" come from? iOS has a "default" and Android - // has "unspecified." These 2 terms seem to mean the same thing but we need - // to pick just one. "unspecified" was chosen because "default" is often a - // reserved word in languages with switch statements (dart, java, etc). - actionString = @"TextInputAction.unspecified"; - break; - case FlutterTextInputActionDone: - actionString = @"TextInputAction.done"; - break; - case FlutterTextInputActionGo: - actionString = @"TextInputAction.go"; - break; - case FlutterTextInputActionSend: - actionString = @"TextInputAction.send"; - break; - case FlutterTextInputActionSearch: - actionString = @"TextInputAction.search"; - break; - case FlutterTextInputActionNext: - actionString = @"TextInputAction.next"; - break; - case FlutterTextInputActionContinue: - actionString = @"TextInputAction.continue"; - break; - case FlutterTextInputActionJoin: - actionString = @"TextInputAction.join"; - break; - case FlutterTextInputActionRoute: - actionString = @"TextInputAction.route"; - break; - case FlutterTextInputActionEmergencyCall: - actionString = @"TextInputAction.emergencyCall"; - break; - case FlutterTextInputActionNewline: - actionString = @"TextInputAction.newline"; - break; - } - [_textInputChannel.get() invokeMethod:@"TextInputClient.performAction" - arguments:@[ @(client), actionString ]]; -} - -#pragma mark - Screenshot Delegate - -- (shell::Rasterizer::Screenshot)takeScreenshot:(shell::Rasterizer::ScreenshotType)type - asBase64Encoded:(BOOL)base64Encode { - FML_DCHECK(_shell) << "Cannot takeScreenshot without a shell"; - return _shell->Screenshot(type, base64Encode); -} - #pragma mark - Orientation updates - (void)onOrientationPreferencesUpdated:(NSNotification*)notification { @@ -899,7 +693,7 @@ - (NSUInteger)supportedInterfaceOrientations { #pragma mark - Accessibility - (void)onAccessibilityStatusChanged:(NSNotification*)notification { - auto platformView = _shell->GetPlatformView(); + auto platformView = [_engine.get() platformView]; int32_t flags = 0; if (UIAccessibilityIsInvertColorsEnabled()) flags ^= static_cast(blink::AccessibilityFeatureFlag::kInvertColors); @@ -925,7 +719,7 @@ - (void)onAccessibilityStatusChanged:(NSNotification*)notification { #pragma mark - Memory Notifications - (void)onMemoryWarning:(NSNotification*)notification { - [_systemChannel.get() sendMessage:@{@"type" : @"memoryPressure"}]; + [[_engine.get() systemChannel] sendMessage:@{@"type" : @"memoryPressure"}]; } #pragma mark - Locale updates @@ -950,13 +744,13 @@ - (void)onLocaleUpdated:(NSNotification*)notification { if (data.count == 0) { return; } - [_localizationChannel.get() invokeMethod:@"setLocale" arguments:data]; + [[_engine.get() localizationChannel] invokeMethod:@"setLocale" arguments:data]; } #pragma mark - Set user settings - (void)onUserSettingsChanged:(NSNotification*)notification { - [_settingsChannel.get() sendMessage:@{ + [[_engine.get() settingsChannel] sendMessage:@{ @"textScaleFactor" : @([self textScaleFactor]), @"alwaysUse24HourFormat" : @([self isAlwaysUse24HourFormat]), }]; @@ -1103,49 +897,34 @@ - (void)onPreferredStatusBarStyleUpdated:(NSNotification*)notification { #pragma mark - FlutterBinaryMessenger - (void)sendOnChannel:(NSString*)channel message:(NSData*)message { - [self sendOnChannel:channel message:message binaryReply:nil]; + [_engine.get() sendOnChannel:channel message:message]; } - (void)sendOnChannel:(NSString*)channel message:(NSData*)message binaryReply:(FlutterBinaryReply)callback { NSAssert(channel, @"The channel must not be null"); - fml::RefPtr response = - (callback == nil) ? nullptr - : fml::MakeRefCounted( - ^(NSData* reply) { - callback(reply); - }, - _shell->GetTaskRunners().GetPlatformTaskRunner()); - fml::RefPtr platformMessage = - (message == nil) ? fml::MakeRefCounted(channel.UTF8String, response) - : fml::MakeRefCounted( - channel.UTF8String, shell::GetVectorFromNSData(message), response); - - _shell->GetPlatformView()->DispatchPlatformMessage(platformMessage); + [_engine.get() sendOnChannel:channel message:message binaryReply:callback]; } - (void)setMessageHandlerOnChannel:(NSString*)channel binaryMessageHandler:(FlutterBinaryMessageHandler)handler { NSAssert(channel, @"The channel must not be null"); - [self iosPlatformView] -> GetPlatformMessageRouter().SetMessageHandler(channel.UTF8String, - handler); + [_engine.get() setMessageHandlerOnChannel:channel binaryMessageHandler:handler]; } #pragma mark - FlutterTextureRegistry - (int64_t)registerTexture:(NSObject*)texture { - int64_t textureId = _nextTextureId++; - [self iosPlatformView] -> RegisterExternalTexture(textureId, texture); - return textureId; + return [_engine.get() registerTexture:texture]; } - (void)unregisterTexture:(int64_t)textureId { - _shell->GetPlatformView()->UnregisterTexture(textureId); + [_engine.get() unregisterTexture:textureId]; } - (void)textureFrameAvailable:(int64_t)textureId { - _shell->GetPlatformView()->MarkTextureFrameAvailable(textureId); + [_engine.get() textureFrameAvailable:textureId]; } - (NSString*)lookupKeyForAsset:(NSString*)asset { @@ -1157,86 +936,21 @@ - (NSString*)lookupKeyForAsset:(NSString*)asset fromPackage:(NSString*)package { } - (id)pluginRegistry { - return self; + return _engine; } #pragma mark - FlutterPluginRegistry - (NSObject*)registrarForPlugin:(NSString*)pluginKey { - NSAssert(self.pluginPublications[pluginKey] == nil, @"Duplicate plugin key: %@", pluginKey); - self.pluginPublications[pluginKey] = [NSNull null]; - return [[FlutterViewControllerRegistrar alloc] initWithPlugin:pluginKey - flutterViewController:self]; + return [_engine.get() registrarForPlugin:pluginKey]; } - (BOOL)hasPlugin:(NSString*)pluginKey { - return _pluginPublications[pluginKey] != nil; + return [_engine.get() hasPlugin:pluginKey]; } - (NSObject*)valuePublishedByPlugin:(NSString*)pluginKey { - return _pluginPublications[pluginKey]; -} -@end - -@implementation FlutterViewControllerRegistrar { - NSString* _pluginKey; - FlutterViewController* _flutterViewController; -} - -- (instancetype)initWithPlugin:(NSString*)pluginKey - flutterViewController:(FlutterViewController*)flutterViewController { - self = [super init]; - NSAssert(self, @"Super init cannot be nil"); - _pluginKey = [pluginKey retain]; - _flutterViewController = [flutterViewController retain]; - return self; -} - -- (void)dealloc { - [_pluginKey release]; - [_flutterViewController release]; - [super dealloc]; -} - -- (NSObject*)messenger { - return _flutterViewController; -} - -- (NSObject*)textures { - return _flutterViewController; -} - -- (void)registerViewFactory:(NSObject*)factory - withId:(NSString*)factoryId { - [_flutterViewController platformViewsController] -> RegisterViewFactory(factory, factoryId); -} - -- (void)publish:(NSObject*)value { - _flutterViewController.pluginPublications[_pluginKey] = value; -} - -- (void)addMethodCallDelegate:(NSObject*)delegate - channel:(FlutterMethodChannel*)channel { - [channel setMethodCallHandler:^(FlutterMethodCall* call, FlutterResult result) { - [delegate handleMethodCall:call result:result]; - }]; -} - -- (void)addApplicationDelegate:(NSObject*)delegate { - id appDelegate = [[UIApplication sharedApplication] delegate]; - if ([appDelegate conformsToProtocol:@protocol(FlutterAppLifeCycleProvider)]) { - id lifeCycleProvider = - (id)appDelegate; - [lifeCycleProvider addApplicationLifeCycleDelegate:delegate]; - } -} - -- (NSString*)lookupKeyForAsset:(NSString*)asset { - return [_flutterViewController lookupKeyForAsset:asset]; -} - -- (NSString*)lookupKeyForAsset:(NSString*)asset fromPackage:(NSString*)package { - return [_flutterViewController lookupKeyForAsset:asset fromPackage:package]; + return [_engine.get() valuePublishedByPlugin:pluginKey]; } -@end +@end \ No newline at end of file diff --git a/shell/platform/darwin/ios/framework/Source/FlutterViewController_Internal.h b/shell/platform/darwin/ios/framework/Source/FlutterViewController_Internal.h index 482379c8f17eb..75e820907cc0a 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterViewController_Internal.h +++ b/shell/platform/darwin/ios/framework/Source/FlutterViewController_Internal.h @@ -5,12 +5,17 @@ #ifndef FLUTTER_SHELL_PLATFORM_DARWIN_IOS_FRAMEWORK_SOURCE_FLUTTERVIEWCONTROLLER_INTERNAL_H_ #define FLUTTER_SHELL_PLATFORM_DARWIN_IOS_FRAMEWORK_SOURCE_FLUTTERVIEWCONTROLLER_INTERNAL_H_ -#include "flutter/shell/common/shell.h" +#include "flutter/fml/memory/weak_ptr.h" +#include "flutter/fml/platform/darwin/scoped_nsobject.h" #include "flutter/shell/platform/darwin/ios/framework/Headers/FlutterViewController.h" +#include "flutter/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h" @interface FlutterViewController () -- (shell::Shell&)shell; +- (fml::WeakPtr)getWeakPtr; +- (shell::FlutterPlatformViewsController*)platformViewsController; + +@property(readonly) fml::scoped_nsobject engine; @end diff --git a/shell/platform/darwin/ios/framework/Source/accessibility_bridge.mm b/shell/platform/darwin/ios/framework/Source/accessibility_bridge.mm index 6b60bc6b3ba68..b094579c9f408 100644 --- a/shell/platform/darwin/ios/framework/Source/accessibility_bridge.mm +++ b/shell/platform/darwin/ios/framework/Source/accessibility_bridge.mm @@ -257,7 +257,7 @@ - (CGRect)globalRect { // `rect` is in the physical pixel coordinate system. iOS expects the accessibility frame in // the logical pixel coordinate system. Therefore, we divide by the `scale` (pixel ratio) to // convert. - CGFloat scale = [[[self bridge] -> view() window] screen].scale; + CGFloat scale = [[[self bridge]->view() window] screen].scale; auto result = CGRectMake(rect.x() / scale, rect.y() / scale, rect.width() / scale, rect.height() / scale); return UIAccessibilityConvertFrameToScreenCoordinates(result, [self bridge] -> view()); @@ -268,8 +268,8 @@ - (CGRect)globalRect { - (id)accessibilityContainer { if ([self hasChildren] || [self uid] == kRootNodeId) { if (_container == nil) - _container = - [[SemanticsObjectContainer alloc] initWithSemanticsObject:self bridge:[self bridge]]; + _container = [[SemanticsObjectContainer alloc] initWithSemanticsObject:self + bridge:[self bridge]]; return _container; } if ([self parent] == nil) { @@ -498,7 +498,7 @@ - (BOOL)accessibilityScroll:(UIAccessibilityScrollDirection)direction { previous_routes_({}) { accessibility_channel_.reset([[FlutterBasicMessageChannel alloc] initWithName:@"flutter/accessibility" - binaryMessenger:platform_view->GetOwnerViewController() + binaryMessenger:platform_view->GetOwnerViewController().get() codec:[FlutterStandardMessageCodec sharedInstance]]); [accessibility_channel_.get() setMessageHandler:^(id message, FlutterReply reply) { HandleEvent((NSDictionary*)message); @@ -654,11 +654,11 @@ - (BOOL)accessibilityScroll:(UIAccessibilityScrollDirection)direction { [objects_ removeObjectForKey:@(node.id)]; if (isTextField) { // Text fields are backed by objects that implement UITextInput. - object = - [[[TextInputSemanticsObject alloc] initWithBridge:GetWeakPtr() uid:uid] autorelease]; + object = [[[TextInputSemanticsObject alloc] initWithBridge:GetWeakPtr() + uid:uid] autorelease]; } else { - object = - [[[FlutterSemanticsObject alloc] initWithBridge:GetWeakPtr() uid:uid] autorelease]; + object = [[[FlutterSemanticsObject alloc] initWithBridge:GetWeakPtr() + uid:uid] autorelease]; } [object.parent.children replaceObjectAtIndex:positionInChildlist withObject:object]; objects_.get()[@(node.id)] = object; diff --git a/shell/platform/darwin/ios/framework/Source/accessibility_text_entry.h b/shell/platform/darwin/ios/framework/Source/accessibility_text_entry.h index bcdebfc689deb..ecc26a240a159 100644 --- a/shell/platform/darwin/ios/framework/Source/accessibility_text_entry.h +++ b/shell/platform/darwin/ios/framework/Source/accessibility_text_entry.h @@ -11,7 +11,7 @@ * * This class is used by `TextInputSemanticsObject`. */ -@interface FlutterInactiveTextInput : UIView +@interface FlutterInactiveTextInput : UIView @property(nonatomic, copy) NSString* text; @property(nonatomic, readonly) NSMutableString* markedText; @@ -30,7 +30,7 @@ * field that currently owns input focus. Delegates to * `FlutterInactiveTextInput` otherwise. */ -@interface TextInputSemanticsObject : SemanticsObject +@interface TextInputSemanticsObject : SemanticsObject @end #endif // SHELL_PLATFORM_IOS_FRAMEWORK_SOURCE_ACCESSIBILITY_TEXT_ENTRY_H_ diff --git a/shell/platform/darwin/ios/framework/Source/accessibility_text_entry.mm b/shell/platform/darwin/ios/framework/Source/accessibility_text_entry.mm index ec98c5d003204..c5b63d3d39644 100644 --- a/shell/platform/darwin/ios/framework/Source/accessibility_text_entry.mm +++ b/shell/platform/darwin/ios/framework/Source/accessibility_text_entry.mm @@ -343,8 +343,9 @@ - (UITextPosition*)positionFromPosition:(UITextPosition*)position offset:(NSInte - (UITextPosition*)positionFromPosition:(UITextPosition*)position inDirection:(UITextLayoutDirection)direction offset:(NSInteger)offset { - return - [[self textInputSurrogate] positionFromPosition:position inDirection:direction offset:offset]; + return [[self textInputSurrogate] positionFromPosition:position + inDirection:direction + offset:offset]; } - (NSComparisonResult)comparePosition:(UITextPosition*)position toPosition:(UITextPosition*)other { @@ -362,8 +363,8 @@ - (UITextPosition*)positionWithinRange:(UITextRange*)range - (UITextRange*)characterRangeByExtendingPosition:(UITextPosition*)position inDirection:(UITextLayoutDirection)direction { - return - [[self textInputSurrogate] characterRangeByExtendingPosition:position inDirection:direction]; + return [[self textInputSurrogate] characterRangeByExtendingPosition:position + inDirection:direction]; } - (UITextWritingDirection)baseWritingDirectionForPosition:(UITextPosition*)position diff --git a/shell/platform/darwin/ios/framework/Source/flutter_codecs_unittest.mm b/shell/platform/darwin/ios/framework/Source/flutter_codecs_unittest.mm index b94793d39e812..502df4b55ee80 100644 --- a/shell/platform/darwin/ios/framework/Source/flutter_codecs_unittest.mm +++ b/shell/platform/darwin/ios/framework/Source/flutter_codecs_unittest.mm @@ -56,7 +56,7 @@ } TEST(FlutterJSONCodec, CanEncodeAndDecodeDictionary) { - NSDictionary* value = @{ @"a" : @3.14, @"b" : @47, @"c" : [NSNull null], @"d" : @[ @"nested" ] }; + NSDictionary* value = @{@"a" : @3.14, @"b" : @47, @"c" : [NSNull null], @"d" : @[ @"nested" ]}; FlutterJSONMessageCodec* codec = [FlutterJSONMessageCodec sharedInstance]; NSData* encoded = [codec encode:value]; NSDictionary* decoded = [codec decode:encoded]; diff --git a/shell/platform/darwin/ios/headless_platform_view_ios.h b/shell/platform/darwin/ios/headless_platform_view_ios.h deleted file mode 100644 index 940e2ade4af58..0000000000000 --- a/shell/platform/darwin/ios/headless_platform_view_ios.h +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2018 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 SHELL_PLATFORM_IOS_HEADLESS_PLATFORM_VIEW_IOS_H_ -#define SHELL_PLATFORM_IOS_HEADLESS_PLATFORM_VIEW_IOS_H_ - -#include - -#include "flutter/fml/closure.h" -#include "flutter/fml/macros.h" -#include "flutter/fml/memory/weak_ptr.h" -#include "flutter/fml/platform/darwin/scoped_nsobject.h" -#include "flutter/shell/common/platform_view.h" -#include "flutter/shell/platform/darwin/ios/framework/Source/platform_message_router.h" - -namespace shell { - -class HeadlessPlatformViewIOS : public PlatformView { - public: - explicit HeadlessPlatformViewIOS(Delegate& delegate, - blink::TaskRunners task_runners); - virtual ~HeadlessPlatformViewIOS(); - - PlatformMessageRouter& GetPlatformMessageRouter(); - - private: - PlatformMessageRouter platform_message_router_; - - // |shell::PlatformView| - void HandlePlatformMessage(fml::RefPtr message); - - FML_DISALLOW_COPY_AND_ASSIGN(HeadlessPlatformViewIOS); -}; - -} // namespace shell - -#endif // SHELL_PLATFORM_IOS_HEADLESS_PLATFORM_VIEW_IOS_H_ diff --git a/shell/platform/darwin/ios/headless_platform_view_ios.mm b/shell/platform/darwin/ios/headless_platform_view_ios.mm deleted file mode 100644 index c496253494398..0000000000000 --- a/shell/platform/darwin/ios/headless_platform_view_ios.mm +++ /dev/null @@ -1,20 +0,0 @@ - -#include "flutter/shell/platform/darwin/ios/headless_platform_view_ios.h" - -namespace shell { - -HeadlessPlatformViewIOS::HeadlessPlatformViewIOS(PlatformView::Delegate& delegate, - blink::TaskRunners task_runners) - : PlatformView(delegate, std::move(task_runners)) {} - -HeadlessPlatformViewIOS::~HeadlessPlatformViewIOS() = default; - -PlatformMessageRouter& HeadlessPlatformViewIOS::GetPlatformMessageRouter() { - return platform_message_router_; -} - -// |shell::PlatformView| -void HeadlessPlatformViewIOS::HandlePlatformMessage(fml::RefPtr message) { - platform_message_router_.HandlePlatformMessage(std::move(message)); -} -} diff --git a/shell/platform/darwin/ios/ios_external_texture_gl.h b/shell/platform/darwin/ios/ios_external_texture_gl.h index 0ad69483385f2..1a1fa997f8f4b 100644 --- a/shell/platform/darwin/ios/ios_external_texture_gl.h +++ b/shell/platform/darwin/ios/ios_external_texture_gl.h @@ -13,15 +13,12 @@ namespace shell { class IOSExternalTextureGL : public flow::Texture { public: - IOSExternalTextureGL(int64_t textureId, - NSObject* externalTexture); + IOSExternalTextureGL(int64_t textureId, NSObject* externalTexture); ~IOSExternalTextureGL() override; // Called from GPU thread. - virtual void Paint(SkCanvas& canvas, - const SkRect& bounds, - bool freeze) override; + virtual void Paint(SkCanvas& canvas, const SkRect& bounds, bool freeze) override; virtual void OnGrContextCreated() override; diff --git a/shell/platform/darwin/ios/ios_gl_context.mm b/shell/platform/darwin/ios/ios_gl_context.mm index 765e3c3650589..b3debd6f64372 100644 --- a/shell/platform/darwin/ios/ios_gl_context.mm +++ b/shell/platform/darwin/ios/ios_gl_context.mm @@ -127,6 +127,8 @@ TRACE_EVENT_INSTANT0("flutter", "IOSGLContext::UpdateStorageSizeIfNecessary"); FML_DLOG(INFO) << "Updating render buffer storage size."; + FML_DCHECK(glGetError() == GL_NO_ERROR); + if (![EAGLContext setCurrentContext:context_]) { return false; } diff --git a/shell/platform/darwin/ios/ios_surface_software.h b/shell/platform/darwin/ios/ios_surface_software.h index 154f057489f48..25ab355b91cf2 100644 --- a/shell/platform/darwin/ios/ios_surface_software.h +++ b/shell/platform/darwin/ios/ios_surface_software.h @@ -14,8 +14,7 @@ namespace shell { -class IOSSurfaceSoftware final : public IOSSurface, - public GPUSurfaceSoftwareDelegate { +class IOSSurfaceSoftware final : public IOSSurface, public GPUSurfaceSoftwareDelegate { public: IOSSurfaceSoftware(fml::scoped_nsobject layer); diff --git a/shell/platform/darwin/ios/platform_view_ios.h b/shell/platform/darwin/ios/platform_view_ios.h index 014f045f70c77..50e8fa7a1ec35 100644 --- a/shell/platform/darwin/ios/platform_view_ios.h +++ b/shell/platform/darwin/ios/platform_view_ios.h @@ -16,38 +16,41 @@ #include "flutter/shell/platform/darwin/ios/framework/Headers/FlutterViewController.h" #include "flutter/shell/platform/darwin/ios/framework/Source/FlutterView.h" #include "flutter/shell/platform/darwin/ios/framework/Source/accessibility_bridge.h" -#include "flutter/shell/platform/darwin/ios/headless_platform_view_ios.h" +#include "flutter/shell/platform/darwin/ios/framework/Source/platform_message_router.h" #include "flutter/shell/platform/darwin/ios/ios_surface.h" +@class FlutterViewController; + namespace shell { -class PlatformViewIOS final : public HeadlessPlatformViewIOS { +class PlatformViewIOS final : public PlatformView { public: - explicit PlatformViewIOS(PlatformView::Delegate& delegate, - blink::TaskRunners task_runners, - FlutterViewController* owner_controller_, - FlutterView* owner_view_); + explicit PlatformViewIOS(PlatformView::Delegate& delegate, blink::TaskRunners task_runners); + + ~PlatformViewIOS(); - ~PlatformViewIOS() override; + PlatformMessageRouter& GetPlatformMessageRouter(); - FlutterViewController* GetOwnerViewController() const; + fml::WeakPtr GetOwnerViewController() const; + void SetOwnerViewController(fml::WeakPtr owner_controller); void RegisterExternalTexture(int64_t id, NSObject* texture); fml::scoped_nsprotocol GetTextInputPlugin() const; - void SetTextInputPlugin( - fml::scoped_nsprotocol plugin); + void SetTextInputPlugin(fml::scoped_nsprotocol plugin); private: - FlutterViewController* owner_controller_; // weak reference. - FlutterView* owner_view_; // weak reference. + fml::WeakPtr owner_controller_; std::unique_ptr ios_surface_; PlatformMessageRouter platform_message_router_; std::unique_ptr accessibility_bridge_; fml::scoped_nsprotocol text_input_plugin_; fml::closure firstFrameCallback_; + // |shell::PlatformView| + void HandlePlatformMessage(fml::RefPtr message) override; + // |shell::PlatformView| std::unique_ptr CreateRenderingSurface() override; @@ -61,9 +64,8 @@ class PlatformViewIOS final : public HeadlessPlatformViewIOS { void SetAccessibilityFeatures(int32_t flags) override; // |shell::PlatformView| - void UpdateSemantics( - blink::SemanticsNodeUpdates update, - blink::CustomAccessibilityActionUpdates actions) override; + void UpdateSemantics(blink::SemanticsNodeUpdates update, + blink::CustomAccessibilityActionUpdates actions) override; // |shell::PlatformView| std::unique_ptr CreateVSyncWaiter() override; diff --git a/shell/platform/darwin/ios/platform_view_ios.mm b/shell/platform/darwin/ios/platform_view_ios.mm index 7bf0895589346..6a701d06669da 100644 --- a/shell/platform/darwin/ios/platform_view_ios.mm +++ b/shell/platform/darwin/ios/platform_view_ios.mm @@ -17,25 +17,46 @@ namespace shell { -PlatformViewIOS::PlatformViewIOS(PlatformView::Delegate& delegate, - blink::TaskRunners task_runners, - FlutterViewController* owner_controller, - FlutterView* owner_view) - : HeadlessPlatformViewIOS(delegate, std::move(task_runners)), - owner_controller_(owner_controller), - owner_view_(owner_view), - ios_surface_(owner_view_.createSurface) { - FML_DCHECK(ios_surface_ != nullptr); - FML_DCHECK(owner_controller_ != nullptr); - FML_DCHECK(owner_view_ != nullptr); -} +PlatformViewIOS::PlatformViewIOS(PlatformView::Delegate& delegate, blink::TaskRunners task_runners) + : PlatformView(delegate, std::move(task_runners)) {} PlatformViewIOS::~PlatformViewIOS() = default; -FlutterViewController* PlatformViewIOS::GetOwnerViewController() const { +PlatformMessageRouter& PlatformViewIOS::GetPlatformMessageRouter() { + return platform_message_router_; +} + +// |shell::PlatformView| +void PlatformViewIOS::HandlePlatformMessage(fml::RefPtr message) { + platform_message_router_.HandlePlatformMessage(std::move(message)); +} + +fml::WeakPtr PlatformViewIOS::GetOwnerViewController() const { return owner_controller_; } +void PlatformViewIOS::SetOwnerViewController(fml::WeakPtr owner_controller) { + if (ios_surface_ || !owner_controller) { + NotifyDestroyed(); + ios_surface_.reset(); + accessibility_bridge_.reset(); + } + owner_controller_ = owner_controller; + if (owner_controller_) { + ios_surface_ = static_cast(owner_controller.get().view).createSurface; + FML_DCHECK(ios_surface_ != nullptr); + + if (accessibility_bridge_) { + accessibility_bridge_.reset( + new AccessibilityBridge(static_cast(owner_controller_.get().view), this)); + } + // Do not call `NotifyCreated()` here - let FlutterViewController take care + // of that when its Viewport is sized. If `NotifyCreated()` is called here, + // it can occasionally get invoked before the viewport is sized resulting in + // a framebuffer that will not be able to completely attach. + } +} + void PlatformViewIOS::RegisterExternalTexture(int64_t texture_id, NSObject* texture) { RegisterTexture(std::make_shared(texture_id, texture)); @@ -43,13 +64,19 @@ // |shell::PlatformView| std::unique_ptr PlatformViewIOS::CreateRenderingSurface() { + if (!ios_surface_) { + FML_DLOG(INFO) << "Could not CreateRenderingSurface, this PlatformViewIOS " + "has no ViewController."; + return nullptr; + } return ios_surface_->CreateGPUSurface(); } // |shell::PlatformView| sk_sp PlatformViewIOS::CreateResourceContext() const { - if (!ios_surface_->ResourceContextMakeCurrent()) { - FML_DLOG(INFO) << "Could not make resource context current on IO thread. Async texture uploads " + if (!ios_surface_ || !ios_surface_->ResourceContextMakeCurrent()) { + FML_DLOG(INFO) << "Could not make resource context current on IO thread. " + "Async texture uploads " "will be disabled."; return nullptr; } @@ -59,8 +86,14 @@ // |shell::PlatformView| void PlatformViewIOS::SetSemanticsEnabled(bool enabled) { + if (!owner_controller_) { + FML_DLOG(WARNING) << "Could not set semantics to enabled, this " + "PlatformViewIOS has no ViewController."; + return; + } if (enabled && !accessibility_bridge_) { - accessibility_bridge_ = std::make_unique(owner_view_, this); + accessibility_bridge_ = std::make_unique( + static_cast(owner_controller_.get().view), this); } else if (!enabled && accessibility_bridge_) { accessibility_bridge_.reset(); } From df85722fa0efdd7ea00317158134297de9b6f408 Mon Sep 17 00:00:00 2001 From: Amir Hardon Date: Fri, 26 Oct 2018 14:26:59 -0700 Subject: [PATCH 0094/1537] Plumb the iOS PlatformViewsController into flow. (#6603) For flow to manipulate the embedded UIViews during the paint traversal it needs some hook in PaintContext. This PR introduces a ViewEmbeder interface that is implemented by the iOS PlatformViewsController and plumbs it into PaintContext. The ViewEmbedder interface is mainly a place holder at this point, as this PR is focused on just the plumbing. --- ci/licenses_golden/licenses_flutter | 1 + flow/BUILD.gn | 1 + flow/compositor_context.cc | 12 +++---- flow/compositor_context.h | 6 ++++ flow/embedded_views.h | 34 +++++++++++++++++++ flow/layers/layer.h | 2 ++ flow/layers/layer_tree.cc | 4 ++- flow/layers/platform_view_layer.cc | 11 ++++-- flow/raster_cache.cc | 1 + shell/common/rasterizer.cc | 13 ++++--- shell/common/surface.cc | 4 +++ shell/common/surface.h | 3 ++ shell/gpu/gpu_surface_gl.cc | 5 +++ shell/gpu/gpu_surface_gl.h | 8 +++++ shell/gpu/gpu_surface_software.cc | 10 ++++++ shell/gpu/gpu_surface_software.h | 6 ++++ .../framework/Source/FlutterPlatformViews.mm | 5 +++ .../Source/FlutterPlatformViews_Internal.h | 5 ++- .../darwin/ios/framework/Source/FlutterView.h | 1 + .../ios/framework/Source/FlutterView.mm | 25 ++++++++++++-- .../framework/Source/FlutterViewController.mm | 6 +++- .../Source/FlutterViewController_Internal.h | 4 +++ shell/platform/darwin/ios/ios_surface.h | 2 ++ shell/platform/darwin/ios/ios_surface_gl.h | 8 ++++- shell/platform/darwin/ios/ios_surface_gl.mm | 8 ++++- .../darwin/ios/ios_surface_software.h | 7 +++- .../darwin/ios/ios_surface_software.mm | 9 +++-- 27 files changed, 178 insertions(+), 23 deletions(-) create mode 100644 flow/embedded_views.h diff --git a/ci/licenses_golden/licenses_flutter b/ci/licenses_golden/licenses_flutter index 3c40ce365f34d..e854c429bbde8 100644 --- a/ci/licenses_golden/licenses_flutter +++ b/ci/licenses_golden/licenses_flutter @@ -11,6 +11,7 @@ ORIGIN: ../../../flutter/flow/layers/physical_shape_layer.cc + ../../../LICENSE TYPE: LicenseType.bsd FILE: ../../../flutter/flow/debug_print.cc FILE: ../../../flutter/flow/debug_print.h +FILE: ../../../flutter/flow/embedded_views.h FILE: ../../../flutter/flow/export_node.h FILE: ../../../flutter/flow/layers/physical_shape_layer.cc FILE: ../../../flutter/flow/layers/physical_shape_layer.h diff --git a/flow/BUILD.gn b/flow/BUILD.gn index c476b4c5bdf48..3613ad9a29bbd 100644 --- a/flow/BUILD.gn +++ b/flow/BUILD.gn @@ -8,6 +8,7 @@ source_set("flow") { "compositor_context.h", "debug_print.cc", "debug_print.h", + "embedded_views.h", "instrumentation.cc", "instrumentation.h", "layers/backdrop_filter_layer.cc", diff --git a/flow/compositor_context.cc b/flow/compositor_context.cc index e5a725ef6478c..ba74a8de27bfe 100644 --- a/flow/compositor_context.cc +++ b/flow/compositor_context.cc @@ -32,25 +32,25 @@ void CompositorContext::EndFrame(ScopedFrame& frame, std::unique_ptr CompositorContext::AcquireFrame( GrContext* gr_context, SkCanvas* canvas, + ExternalViewEmbedder* view_embedder, const SkMatrix& root_surface_transformation, bool instrumentation_enabled) { - return std::make_unique(*this, // - gr_context, // - canvas, // - root_surface_transformation, // - instrumentation_enabled // - ); + return std::make_unique(*this, gr_context, canvas, view_embedder, + root_surface_transformation, + instrumentation_enabled); } CompositorContext::ScopedFrame::ScopedFrame( CompositorContext& context, GrContext* gr_context, SkCanvas* canvas, + ExternalViewEmbedder* view_embedder, const SkMatrix& root_surface_transformation, bool instrumentation_enabled) : context_(context), gr_context_(gr_context), canvas_(canvas), + view_embedder_(view_embedder), root_surface_transformation_(root_surface_transformation), instrumentation_enabled_(instrumentation_enabled) { context_.BeginFrame(*this, instrumentation_enabled_); diff --git a/flow/compositor_context.h b/flow/compositor_context.h index 522c5359934ff..ca35dc4f609ce 100644 --- a/flow/compositor_context.h +++ b/flow/compositor_context.h @@ -8,6 +8,7 @@ #include #include +#include "flutter/flow/embedded_views.h" #include "flutter/flow/instrumentation.h" #include "flutter/flow/raster_cache.h" #include "flutter/flow/texture.h" @@ -26,6 +27,7 @@ class CompositorContext { ScopedFrame(CompositorContext& context, GrContext* gr_context, SkCanvas* canvas, + ExternalViewEmbedder* view_embedder, const SkMatrix& root_surface_transformation, bool instrumentation_enabled); @@ -33,6 +35,8 @@ class CompositorContext { SkCanvas* canvas() { return canvas_; } + ExternalViewEmbedder* view_embedder() { return view_embedder_; } + CompositorContext& context() const { return context_; } const SkMatrix& root_surface_transformation() const { @@ -47,6 +51,7 @@ class CompositorContext { CompositorContext& context_; GrContext* gr_context_; SkCanvas* canvas_; + ExternalViewEmbedder* view_embedder_; const SkMatrix& root_surface_transformation_; const bool instrumentation_enabled_; @@ -60,6 +65,7 @@ class CompositorContext { virtual std::unique_ptr AcquireFrame( GrContext* gr_context, SkCanvas* canvas, + ExternalViewEmbedder* view_embedder, const SkMatrix& root_surface_transformation, bool instrumentation_enabled); diff --git a/flow/embedded_views.h b/flow/embedded_views.h new file mode 100644 index 0000000000000..577922f42133f --- /dev/null +++ b/flow/embedded_views.h @@ -0,0 +1,34 @@ +// Copyright 2017 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_FLOW_EMBEDDED_VIEWS_H_ +#define FLUTTER_FLOW_EMBEDDED_VIEWS_H_ + +#include "flutter/fml/memory/ref_counted.h" + +namespace flow { + +class EmbeddedViewParams { + public: +}; + +// This is only used on iOS when running in a non headless mode, +// in this case ViewEmbedded is a reference to the +// FlutterPlatformViewsController which is owned by FlutterViewController. +class ExternalViewEmbedder { + public: + ExternalViewEmbedder() = default; + + // Must be called on the UI thread. + virtual void CompositeEmbeddedView(int view_id, + const EmbeddedViewParams& params) {} + + virtual ~ExternalViewEmbedder() = default; + + FML_DISALLOW_COPY_AND_ASSIGN(ExternalViewEmbedder); +}; + +} // namespace flow + +#endif // FLUTTER_FLOW_EMBEDDED_VIEWS_H_ diff --git a/flow/layers/layer.h b/flow/layers/layer.h index 50fd3b63b277d..dbd101d6cc9b8 100644 --- a/flow/layers/layer.h +++ b/flow/layers/layer.h @@ -8,6 +8,7 @@ #include #include +#include "flutter/flow/embedded_views.h" #include "flutter/flow/instrumentation.h" #include "flutter/flow/raster_cache.h" #include "flutter/flow/texture.h" @@ -64,6 +65,7 @@ class Layer { struct PaintContext { SkCanvas& canvas; + ExternalViewEmbedder* view_embedder; const Stopwatch& frame_time; const Stopwatch& engine_time; TextureRegistry& texture_registry; diff --git a/flow/layers/layer_tree.cc b/flow/layers/layer_tree.cc index de28918193576..6896bb112b6a1 100644 --- a/flow/layers/layer_tree.cc +++ b/flow/layers/layer_tree.cc @@ -68,6 +68,7 @@ void LayerTree::Paint(CompositorContext::ScopedFrame& frame, TRACE_EVENT0("flutter", "LayerTree::Paint"); Layer::PaintContext context = { *frame.canvas(), + frame.view_embedder(), frame.context().frame_time(), frame.context().engine_time(), frame.context().texture_registry(), @@ -106,7 +107,8 @@ sk_sp LayerTree::Flatten(const SkRect& bounds) { }; Layer::PaintContext paint_context = { - *canvas, // canvas + *canvas, // canvas + nullptr, unused_stopwatch, // frame time (dont care) unused_stopwatch, // engine time (dont care) unused_texture_registry, // texture registry (not supported) diff --git a/flow/layers/platform_view_layer.cc b/flow/layers/platform_view_layer.cc index 0a6a17244e0df..42fdd91954b62 100644 --- a/flow/layers/platform_view_layer.cc +++ b/flow/layers/platform_view_layer.cc @@ -16,6 +16,13 @@ void PlatformViewLayer::Preroll(PrerollContext* context, size_.height())); } -void PlatformViewLayer::Paint(PaintContext& context) const {} - +void PlatformViewLayer::Paint(PaintContext& context) const { + if (context.view_embedder == nullptr) { + FML_LOG(ERROR) << "Trying to embed a platform view but the PaintContext " + "does not support embedding"; + return; + } + EmbeddedViewParams params; + context.view_embedder->CompositeEmbeddedView(view_id_, params); +} } // namespace flow diff --git a/flow/raster_cache.cc b/flow/raster_cache.cc index a9246227fa107..017b907e161f7 100644 --- a/flow/raster_cache.cc +++ b/flow/raster_cache.cc @@ -158,6 +158,7 @@ void RasterCache::Prepare(PrerollContext* context, [layer, context](SkCanvas* canvas) { Layer::PaintContext paintContext = { *canvas, + nullptr, context->frame_time, context->engine_time, context->texture_registry, diff --git a/shell/common/rasterizer.cc b/shell/common/rasterizer.cc index 9a870326dd2d5..47fcdf024760c 100644 --- a/shell/common/rasterizer.cc +++ b/shell/common/rasterizer.cc @@ -167,7 +167,8 @@ bool Rasterizer::DrawToSurface(flow::LayerTree& layer_tree) { auto canvas = frame->SkiaCanvas(); auto compositor_frame = compositor_context_->AcquireFrame( - surface_->GetContext(), canvas, surface_->GetRootTransformation(), true); + surface_->GetContext(), canvas, surface_->GetExternalViewEmbedder(), + surface_->GetRootTransformation(), true); if (canvas) { canvas->clear(SK_ColorTRANSPARENT); @@ -197,9 +198,11 @@ static sk_sp ScreenshotLayerTreeAsPicture( SkMatrix root_surface_transformation; root_surface_transformation.reset(); - auto frame = - compositor_context.AcquireFrame(nullptr, recorder.getRecordingCanvas(), - root_surface_transformation, false); + // TODO(amirh): figure out how to take a screenshot with embedded UIView. + // https://github.com/flutter/flutter/issues/23435 + auto frame = compositor_context.AcquireFrame( + nullptr, recorder.getRecordingCanvas(), nullptr, + root_surface_transformation, false); frame->Raster(*tree, true); @@ -249,7 +252,7 @@ static sk_sp ScreenshotLayerTreeAsImage( root_surface_transformation.reset(); auto frame = compositor_context.AcquireFrame( - surface_context, canvas, root_surface_transformation, false); + surface_context, canvas, nullptr, root_surface_transformation, false); canvas->clear(SK_ColorTRANSPARENT); frame->Raster(*tree, true); canvas->flush(); diff --git a/shell/common/surface.cc b/shell/common/surface.cc index f0b3ba19d93ab..54fc364fa96fa 100644 --- a/shell/common/surface.cc +++ b/shell/common/surface.cc @@ -64,4 +64,8 @@ Surface::Surface() = default; Surface::~Surface() = default; +flow::ExternalViewEmbedder* Surface::GetExternalViewEmbedder() { + return nullptr; +} + } // namespace shell diff --git a/shell/common/surface.h b/shell/common/surface.h index beef9765da490..324ef4cb6df42 100644 --- a/shell/common/surface.h +++ b/shell/common/surface.h @@ -8,6 +8,7 @@ #include #include "flutter/flow/compositor_context.h" +#include "flutter/flow/embedded_views.h" #include "flutter/fml/macros.h" #include "third_party/skia/include/core/SkCanvas.h" @@ -55,6 +56,8 @@ class Surface { virtual GrContext* GetContext() = 0; + virtual flow::ExternalViewEmbedder* GetExternalViewEmbedder(); + private: FML_DISALLOW_COPY_AND_ASSIGN(Surface); }; diff --git a/shell/gpu/gpu_surface_gl.cc b/shell/gpu/gpu_surface_gl.cc index 153f68073ba0d..4a421b9dae38b 100644 --- a/shell/gpu/gpu_surface_gl.cc +++ b/shell/gpu/gpu_surface_gl.cc @@ -340,4 +340,9 @@ GrContext* GPUSurfaceGL::GetContext() { return context_.get(); } +// |shell::Surface| +flow::ExternalViewEmbedder* GPUSurfaceGL::GetExternalViewEmbedder() { + return delegate_->GetExternalViewEmbedder(); +} + } // namespace shell diff --git a/shell/gpu/gpu_surface_gl.h b/shell/gpu/gpu_surface_gl.h index 26184141bfd67..1b768c18cbb1a 100644 --- a/shell/gpu/gpu_surface_gl.h +++ b/shell/gpu/gpu_surface_gl.h @@ -8,6 +8,7 @@ #include #include +#include "flutter/flow/embedded_views.h" #include "flutter/fml/macros.h" #include "flutter/fml/memory/weak_ptr.h" #include "flutter/shell/common/surface.h" @@ -35,6 +36,10 @@ class GPUSurfaceGLDelegate { return matrix; } + virtual flow::ExternalViewEmbedder* GetExternalViewEmbedder() { + return nullptr; + } + using GLProcResolver = std::function; virtual GLProcResolver GetGLProcResolver() const { return nullptr; } @@ -58,6 +63,9 @@ class GPUSurfaceGL : public Surface { // |shell::Surface| GrContext* GetContext() override; + // |shell::Surface| + flow::ExternalViewEmbedder* GetExternalViewEmbedder() override; + private: GPUSurfaceGLDelegate* delegate_; GPUSurfaceGLDelegate::GLProcResolver proc_resolver_; diff --git a/shell/gpu/gpu_surface_software.cc b/shell/gpu/gpu_surface_software.cc index 7598aa243d33e..3678f7ad28264 100644 --- a/shell/gpu/gpu_surface_software.cc +++ b/shell/gpu/gpu_surface_software.cc @@ -9,6 +9,11 @@ namespace shell { +flow::ExternalViewEmbedder* +GPUSurfaceSoftwareDelegate::GetExternalViewEmbedder() { + return nullptr; +} + GPUSurfaceSoftware::GPUSurfaceSoftware(GPUSurfaceSoftwareDelegate* delegate) : delegate_(delegate), weak_factory_(this) {} @@ -75,4 +80,9 @@ GrContext* GPUSurfaceSoftware::GetContext() { return nullptr; } +// |shell::Surface| +flow::ExternalViewEmbedder* GPUSurfaceSoftware::GetExternalViewEmbedder() { + return delegate_->GetExternalViewEmbedder(); +} + } // namespace shell diff --git a/shell/gpu/gpu_surface_software.h b/shell/gpu/gpu_surface_software.h index 95940c4702454..29ddb126eb6b3 100644 --- a/shell/gpu/gpu_surface_software.h +++ b/shell/gpu/gpu_surface_software.h @@ -5,6 +5,7 @@ #ifndef FLUTTER_SHELL_GPU_GPU_SURFACE_SOFTWARE_H_ #define FLUTTER_SHELL_GPU_GPU_SURFACE_SOFTWARE_H_ +#include "flutter/flow/embedded_views.h" #include "flutter/fml/macros.h" #include "flutter/fml/memory/weak_ptr.h" #include "flutter/shell/common/surface.h" @@ -17,6 +18,8 @@ class GPUSurfaceSoftwareDelegate { virtual sk_sp AcquireBackingStore(const SkISize& size) = 0; virtual bool PresentBackingStore(sk_sp backing_store) = 0; + + virtual flow::ExternalViewEmbedder* GetExternalViewEmbedder(); }; class GPUSurfaceSoftware : public Surface { @@ -37,6 +40,9 @@ class GPUSurfaceSoftware : public Surface { // |shell::Surface| GrContext* GetContext() override; + // |shell::Surface| + flow::ExternalViewEmbedder* GetExternalViewEmbedder() override; + private: GPUSurfaceSoftwareDelegate* delegate_; fml::WeakPtrFactory weak_factory_; diff --git a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm index 9da977da8c993..9b63070c6f9d9 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm @@ -85,4 +85,9 @@ fml::scoped_nsobject>([factory retain]); } +void FlutterPlatformViewsController::CompositeEmbeddedView(int view_id, + const flow::EmbeddedViewParams& params) { + // TODO(amirh): implement this. +} + } // namespace shell diff --git a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h index 620bec26d3ee5..9c9d80435606d 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h +++ b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h @@ -5,6 +5,7 @@ #ifndef FLUTTER_SHELL_PLATFORM_DARWIN_IOS_FRAMEWORK_SOURCE_FLUTTERPLATFORMVIEWS_INTERNAL_H_ #define FLUTTER_SHELL_PLATFORM_DARWIN_IOS_FRAMEWORK_SOURCE_FLUTTERPLATFORMVIEWS_INTERNAL_H_ +#include "flutter/flow/embedded_views.h" #include "flutter/fml/platform/darwin/scoped_nsobject.h" #include "flutter/shell/common/shell.h" #include "flutter/shell/platform/darwin/ios/framework/Headers/FlutterBinaryMessenger.h" @@ -13,12 +14,14 @@ namespace shell { -class FlutterPlatformViewsController { +class FlutterPlatformViewsController : public flow::ExternalViewEmbedder { public: FlutterPlatformViewsController(NSObject* messenger); void RegisterViewFactory(NSObject* factory, NSString* factoryId); + void CompositeEmbeddedView(int view_id, const flow::EmbeddedViewParams& params); + private: fml::scoped_nsobject channel_; std::map>> factories_; diff --git a/shell/platform/darwin/ios/framework/Source/FlutterView.h b/shell/platform/darwin/ios/framework/Source/FlutterView.h index e9cd37281e63a..8b4bb5a010217 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterView.h +++ b/shell/platform/darwin/ios/framework/Source/FlutterView.h @@ -9,6 +9,7 @@ #include +#include "flutter/flow/embedded_views.h" #include "flutter/fml/memory/weak_ptr.h" #include "flutter/shell/common/shell.h" #include "flutter/shell/platform/darwin/ios/ios_surface.h" diff --git a/shell/platform/darwin/ios/framework/Source/FlutterView.mm b/shell/platform/darwin/ios/framework/Source/FlutterView.mm index 63ee05acc832c..60e51501d55ed 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterView.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterView.mm @@ -12,6 +12,7 @@ #include "flutter/fml/trace_event.h" #include "flutter/shell/common/platform_view.h" #include "flutter/shell/common/rasterizer.h" +#include "flutter/shell/platform/darwin/ios/framework/Source/FlutterViewController_Internal.h" #include "flutter/shell/platform/darwin/ios/ios_surface_gl.h" #include "flutter/shell/platform/darwin/ios/ios_surface_software.h" #include "third_party/skia/include/utils/mac/SkCGUtils.h" @@ -54,6 +55,23 @@ - (instancetype)initWithDelegate:(id)delegate opaque: return self; } +- (FlutterViewController*)flutterViewController { + // Find the first view controller in the responder chain and see if it is a FlutterViewController. + for (UIResponder* responder = self.nextResponder; responder != nil; + responder = responder.nextResponder) { + if ([responder isKindOfClass:[UIViewController class]]) { + if ([responder isKindOfClass:[FlutterViewController class]]) { + return reinterpret_cast(responder); + } else { + // Should only happen if a non-FlutterViewController tries to somehow (via dynamic class + // resolution or reparenting) set a FlutterView as its view. + return nil; + } + } + } + return nil; +} + - (void)layoutSubviews { if ([self.layer isKindOfClass:[CAEAGLLayer class]]) { CAEAGLLayer* layer = reinterpret_cast(self.layer); @@ -75,13 +93,16 @@ + (Class)layerClass { } - (std::unique_ptr)createSurface { + ::shell::GetExternalViewEmbedder get_view_embedder = [[^() { + return [[self flutterViewController] viewEmbedder]; + } copy] autorelease]; if ([self.layer isKindOfClass:[CAEAGLLayer class]]) { fml::scoped_nsobject eagl_layer( reinterpret_cast([self.layer retain])); - return std::make_unique(std::move(eagl_layer)); + return std::make_unique(std::move(eagl_layer), get_view_embedder); } else { fml::scoped_nsobject layer(reinterpret_cast([self.layer retain])); - return std::make_unique(std::move(layer)); + return std::make_unique(std::move(layer), get_view_embedder); } } diff --git a/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm b/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm index ea56bfc2dfca7..3636899fa4700 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm @@ -124,6 +124,10 @@ - (void)performCommonViewControllerInitialization { return _weakFactory->GetWeakPtr(); } +- (flow::ExternalViewEmbedder*)viewEmbedder { + return _platformViewsController.get(); +} + - (void)setupNotificationCenterObservers { NSNotificationCenter* center = [NSNotificationCenter defaultCenter]; [center addObserver:self @@ -953,4 +957,4 @@ - (NSObject*)valuePublishedByPlugin:(NSString*)pluginKey { return [_engine.get() valuePublishedByPlugin:pluginKey]; } -@end \ No newline at end of file +@end diff --git a/shell/platform/darwin/ios/framework/Source/FlutterViewController_Internal.h b/shell/platform/darwin/ios/framework/Source/FlutterViewController_Internal.h index 75e820907cc0a..38c2c9040dd33 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterViewController_Internal.h +++ b/shell/platform/darwin/ios/framework/Source/FlutterViewController_Internal.h @@ -5,8 +5,10 @@ #ifndef FLUTTER_SHELL_PLATFORM_DARWIN_IOS_FRAMEWORK_SOURCE_FLUTTERVIEWCONTROLLER_INTERNAL_H_ #define FLUTTER_SHELL_PLATFORM_DARWIN_IOS_FRAMEWORK_SOURCE_FLUTTERVIEWCONTROLLER_INTERNAL_H_ +#include "flutter/flow/embedded_views.h" #include "flutter/fml/memory/weak_ptr.h" #include "flutter/fml/platform/darwin/scoped_nsobject.h" +#include "flutter/shell/common/shell.h" #include "flutter/shell/platform/darwin/ios/framework/Headers/FlutterViewController.h" #include "flutter/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h" @@ -17,6 +19,8 @@ @property(readonly) fml::scoped_nsobject engine; +- (flow::ExternalViewEmbedder*)viewEmbedder; + @end #endif // FLUTTER_SHELL_PLATFORM_DARWIN_IOS_FRAMEWORK_SOURCE_FLUTTERVIEWCONTROLLER_INTERNAL_H_ diff --git a/shell/platform/darwin/ios/ios_surface.h b/shell/platform/darwin/ios/ios_surface.h index 8011905db4d68..c756aae4fba08 100644 --- a/shell/platform/darwin/ios/ios_surface.h +++ b/shell/platform/darwin/ios/ios_surface.h @@ -13,6 +13,8 @@ namespace shell { +typedef flow::ExternalViewEmbedder* (^GetExternalViewEmbedder)(void); + class IOSSurface { public: IOSSurface(); diff --git a/shell/platform/darwin/ios/ios_surface_gl.h b/shell/platform/darwin/ios/ios_surface_gl.h index 1a3fc3ed3b406..b7b604adb86f7 100644 --- a/shell/platform/darwin/ios/ios_surface_gl.h +++ b/shell/platform/darwin/ios/ios_surface_gl.h @@ -17,7 +17,8 @@ namespace shell { class IOSSurfaceGL : public IOSSurface, public GPUSurfaceGLDelegate { public: - IOSSurfaceGL(fml::scoped_nsobject layer); + IOSSurfaceGL(fml::scoped_nsobject layer, + ::shell::GetExternalViewEmbedder get_view_embedder); ~IOSSurfaceGL() override; @@ -39,9 +40,14 @@ class IOSSurfaceGL : public IOSSurface, public GPUSurfaceGLDelegate { bool UseOffscreenSurface() const override; + // |shell::GPUSurfaceGLDelegate| + flow::ExternalViewEmbedder* GetExternalViewEmbedder() override; + private: IOSGLContext context_; + fml::scoped_nsprotocol<::shell::GetExternalViewEmbedder> get_view_embedder_; + FML_DISALLOW_COPY_AND_ASSIGN(IOSSurfaceGL); }; diff --git a/shell/platform/darwin/ios/ios_surface_gl.mm b/shell/platform/darwin/ios/ios_surface_gl.mm index 253531c4800aa..e834e352afec0 100644 --- a/shell/platform/darwin/ios/ios_surface_gl.mm +++ b/shell/platform/darwin/ios/ios_surface_gl.mm @@ -9,7 +9,9 @@ namespace shell { -IOSSurfaceGL::IOSSurfaceGL(fml::scoped_nsobject layer) : context_(std::move(layer)) {} +IOSSurfaceGL::IOSSurfaceGL(fml::scoped_nsobject layer, + ::shell::GetExternalViewEmbedder get_view_embedder) + : context_(std::move(layer)), get_view_embedder_([get_view_embedder retain]) {} IOSSurfaceGL::~IOSSurfaceGL() = default; @@ -56,4 +58,8 @@ return IsValid() ? context_.PresentRenderBuffer() : false; } +flow::ExternalViewEmbedder* IOSSurfaceGL::GetExternalViewEmbedder() { + return get_view_embedder_.get()(); +} + } // namespace shell diff --git a/shell/platform/darwin/ios/ios_surface_software.h b/shell/platform/darwin/ios/ios_surface_software.h index 25ab355b91cf2..d0d9ce4049e8a 100644 --- a/shell/platform/darwin/ios/ios_surface_software.h +++ b/shell/platform/darwin/ios/ios_surface_software.h @@ -16,7 +16,8 @@ namespace shell { class IOSSurfaceSoftware final : public IOSSurface, public GPUSurfaceSoftwareDelegate { public: - IOSSurfaceSoftware(fml::scoped_nsobject layer); + IOSSurfaceSoftware(fml::scoped_nsobject layer, + ::shell::GetExternalViewEmbedder get_view_embedder); ~IOSSurfaceSoftware() override; @@ -38,8 +39,12 @@ class IOSSurfaceSoftware final : public IOSSurface, public GPUSurfaceSoftwareDel // |shell::GPUSurfaceSoftwareDelegate| bool PresentBackingStore(sk_sp backing_store) override; + // |shell::GPUSurfaceSoftwareDelegate| + flow::ExternalViewEmbedder* GetExternalViewEmbedder() override; + private: fml::scoped_nsobject layer_; + fml::scoped_nsprotocol<::shell::GetExternalViewEmbedder> get_view_embedder_; sk_sp sk_surface_; FML_DISALLOW_COPY_AND_ASSIGN(IOSSurfaceSoftware); diff --git a/shell/platform/darwin/ios/ios_surface_software.mm b/shell/platform/darwin/ios/ios_surface_software.mm index dba1fd7ce1fe9..c79ce8215f7bc 100644 --- a/shell/platform/darwin/ios/ios_surface_software.mm +++ b/shell/platform/darwin/ios/ios_surface_software.mm @@ -15,8 +15,9 @@ namespace shell { -IOSSurfaceSoftware::IOSSurfaceSoftware(fml::scoped_nsobject layer) - : layer_(std::move(layer)) { +IOSSurfaceSoftware::IOSSurfaceSoftware(fml::scoped_nsobject layer, + ::shell::GetExternalViewEmbedder get_view_embedder) + : layer_(std::move(layer)), get_view_embedder_([get_view_embedder retain]) { UpdateStorageSizeIfNecessary(); } @@ -125,4 +126,8 @@ return true; } +flow::ExternalViewEmbedder* IOSSurfaceSoftware::GetExternalViewEmbedder() { + return get_view_embedder_.get()(); +} + } // namespace shell From f7970048dd5f9aca7cece6440050c9f661e612ce Mon Sep 17 00:00:00 2001 From: Amir Hardon Date: Fri, 26 Oct 2018 14:45:17 -0700 Subject: [PATCH 0095/1537] Attach and position embedded UIVIews (#6614) --- flow/embedded_views.h | 4 ++++ flow/layers/platform_view_layer.cc | 5 +++++ .../framework/Source/FlutterPlatformViews.mm | 20 +++++++++++++++++-- .../Source/FlutterPlatformViews_Internal.h | 5 ++++- .../framework/Source/FlutterViewController.mm | 3 ++- 5 files changed, 33 insertions(+), 4 deletions(-) diff --git a/flow/embedded_views.h b/flow/embedded_views.h index 577922f42133f..10740f6d0e23d 100644 --- a/flow/embedded_views.h +++ b/flow/embedded_views.h @@ -6,11 +6,15 @@ #define FLUTTER_FLOW_EMBEDDED_VIEWS_H_ #include "flutter/fml/memory/ref_counted.h" +#include "third_party/skia/include/core/SkPoint.h" +#include "third_party/skia/include/core/SkSize.h" namespace flow { class EmbeddedViewParams { public: + SkPoint offsetPixels; + SkSize sizePoints; }; // This is only used on iOS when running in a non headless mode, diff --git a/flow/layers/platform_view_layer.cc b/flow/layers/platform_view_layer.cc index 42fdd91954b62..19057fbfd4b9c 100644 --- a/flow/layers/platform_view_layer.cc +++ b/flow/layers/platform_view_layer.cc @@ -23,6 +23,11 @@ void PlatformViewLayer::Paint(PaintContext& context) const { return; } EmbeddedViewParams params; + SkMatrix transform = context.canvas.getTotalMatrix(); + params.offsetPixels = + SkPoint::Make(transform.getTranslateX(), transform.getTranslateY()); + params.sizePoints = size_; + context.view_embedder->CompositeEmbeddedView(view_id_, params); } } // namespace flow diff --git a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm index 9b63070c6f9d9..48e175ef04e80 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm @@ -13,7 +13,9 @@ namespace shell { FlutterPlatformViewsController::FlutterPlatformViewsController( - NSObject* messenger) { + NSObject* messenger, + FlutterView* flutter_view) + : flutter_view_([flutter_view retain]) { channel_.reset([[FlutterMethodChannel alloc] initWithName:@"flutter/platform_views" binaryMessenger:messenger @@ -58,6 +60,9 @@ views_[viewId] = fml::scoped_nsobject([[factory createWithFrame:CGRectZero viewIdentifier:viewId arguments:nil] retain]); + + FlutterView* flutter_view = flutter_view_.get(); + [flutter_view addSubview:views_[viewId].get()]; result(nil); } @@ -72,6 +77,8 @@ return; } + UIView* view = views_[viewId].get(); + [view removeFromSuperview]; views_.erase(viewId); result(nil); } @@ -87,7 +94,16 @@ void FlutterPlatformViewsController::CompositeEmbeddedView(int view_id, const flow::EmbeddedViewParams& params) { - // TODO(amirh): implement this. + // TODO(amirh): assert that this is running on the platform thread once we support the iOS + // embedded views thread configuration. + // TODO(amirh): do nothing if the params didn't change. + CGFloat screenScale = [[UIScreen mainScreen] scale]; + CGRect rect = + CGRectMake(params.offsetPixels.x() / screenScale, params.offsetPixels.y() / screenScale, + params.sizePoints.width(), params.sizePoints.height()); + + UIView* view = views_[view_id]; + [view setFrame:rect]; } } // namespace shell diff --git a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h index 9c9d80435606d..494d1fe5f1c16 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h +++ b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h @@ -5,6 +5,7 @@ #ifndef FLUTTER_SHELL_PLATFORM_DARWIN_IOS_FRAMEWORK_SOURCE_FLUTTERPLATFORMVIEWS_INTERNAL_H_ #define FLUTTER_SHELL_PLATFORM_DARWIN_IOS_FRAMEWORK_SOURCE_FLUTTERPLATFORMVIEWS_INTERNAL_H_ +#include "FlutterView.h" #include "flutter/flow/embedded_views.h" #include "flutter/fml/platform/darwin/scoped_nsobject.h" #include "flutter/shell/common/shell.h" @@ -16,7 +17,8 @@ namespace shell { class FlutterPlatformViewsController : public flow::ExternalViewEmbedder { public: - FlutterPlatformViewsController(NSObject* messenger); + FlutterPlatformViewsController(NSObject* messenger, + FlutterView* flutter_view); void RegisterViewFactory(NSObject* factory, NSString* factoryId); @@ -24,6 +26,7 @@ class FlutterPlatformViewsController : public flow::ExternalViewEmbedder { private: fml::scoped_nsobject channel_; + fml::scoped_nsobject flutter_view_; std::map>> factories_; std::map> views_; diff --git a/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm b/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm index 3636899fa4700..31c91871f88f0 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm @@ -113,7 +113,8 @@ - (void)performCommonViewControllerInitialization { _statusBarStyle = UIStatusBarStyleDefault; [self setupNotificationCenterObservers]; - _platformViewsController.reset(new shell::FlutterPlatformViewsController(_engine.get())); + _platformViewsController.reset( + new shell::FlutterPlatformViewsController(_engine.get(), _flutterView.get())); } - (fml::scoped_nsobject)engine { From 55e12993a0b4e4e1350ced66cb036a68cf58a158 Mon Sep 17 00:00:00 2001 From: Dan Field Date: Fri, 26 Oct 2018 14:54:33 -0700 Subject: [PATCH 0096/1537] Update FlutterPlugin.h docs, suppress warning for older API (#6672) * Update FlutterPlugin.h docs, suppress warning for older API --- .../ios/framework/Headers/FlutterPlugin.h | 286 +++++++++--------- .../FlutterPluginAppLifeCycleDelegate.h | 3 + .../framework/Source/FlutterAppDelegate.mm | 3 + .../FlutterPluginAppLifeCycleDelegate.mm | 3 + 4 files changed, 152 insertions(+), 143 deletions(-) diff --git a/shell/platform/darwin/ios/framework/Headers/FlutterPlugin.h b/shell/platform/darwin/ios/framework/Headers/FlutterPlugin.h index a116a95efda51..8c15214a48a73 100644 --- a/shell/platform/darwin/ios/framework/Headers/FlutterPlugin.h +++ b/shell/platform/darwin/ios/framework/Headers/FlutterPlugin.h @@ -17,75 +17,73 @@ NS_ASSUME_NONNULL_BEGIN @protocol FlutterPluginRegistrar; /** - Implemented by the iOS part of a Flutter plugin. - - Defines a set of optional callback methods and a method to set up the plugin - and register it to be called by other application components. + * Implemented by the iOS part of a Flutter plugin. + * + * Defines a set of optional callback methods and a method to set up the plugin + * and register it to be called by other application components. */ @protocol FlutterPlugin @required /** - Registers this plugin using the context information and callback registration - methods exposed by the given registrar. - - The registrar is obtained from a `FlutterPluginRegistry` which keeps track of - the identity of registered plugins and provides basic support for cross-plugin - coordination. - - The caller of this method, a plugin registrant, is usually autogenerated by - Flutter tooling based on declared plugin dependencies. The generated registrant - asks the registry for a registrar for each plugin, and calls this method to - allow the plugin to initialize itself and register callbacks with application - objects available through the registrar protocol. - - - Parameters: - - registrar: A helper providing application context and methods for - registering callbacks. + * Registers this plugin using the context information and callback registration + * methods exposed by the given registrar. + * + * The registrar is obtained from a `FlutterPluginRegistry` which keeps track of + * the identity of registered plugins and provides basic support for cross-plugin + * coordination. + * + * The caller of this method, a plugin registrant, is usually autogenerated by + * Flutter tooling based on declared plugin dependencies. The generated registrant + * asks the registry for a registrar for each plugin, and calls this method to + * allow the plugin to initialize itself and register callbacks with application + * objects available through the registrar protocol. + * + * @param registrar A helper providing application context and methods for + * registering callbacks. */ + (void)registerWithRegistrar:(NSObject*)registrar; @optional /** - Called if this plugin has been registered to receive `FlutterMethodCall`s. - - - Parameters: - - call: The method call command object. - - result: A callback for submitting the result of the call. + * Called if this plugin has been registered to receive `FlutterMethodCall`s. + * + * @param call The method call command object. + * @param result A callback for submitting the result of the call. */ - (void)handleMethodCall:(FlutterMethodCall*)call result:(FlutterResult)result; /** - Called if this plugin has been registered for `UIApplicationDelegate` callbacks. - - - Returns: `NO` if this plugin vetoes application launch. + * Called if this plugin has been registered for `UIApplicationDelegate` callbacks. + * + * @return `NO` if this plugin vetoes application launch. */ - (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions; /** - Called if this plugin has been registered for `UIApplicationDelegate` callbacks. - - - Returns: `NO` if this plugin vetoes application launch. + * Called if this plugin has been registered for `UIApplicationDelegate` callbacks. + * + * @return `NO` if this plugin vetoes application launch. */ - (BOOL)application:(UIApplication*)application willFinishLaunchingWithOptions:(NSDictionary*)launchOptions; /** - Called if this plugin has been registered for `UIApplicationDelegate` callbacks. + * Called if this plugin has been registered for `UIApplicationDelegate` callbacks. */ - (void)applicationDidBecomeActive:(UIApplication*)application; /** - Called if this plugin has been registered for `UIApplicationDelegate` callbacks. + * Called if this plugin has been registered for `UIApplicationDelegate` callbacks. */ - (void)applicationWillResignActive:(UIApplication*)application; /** - Called if this plugin has been registered for `UIApplicationDelegate` callbacks. + * Called if this plugin has been registered for `UIApplicationDelegate` callbacks. */ - (void)applicationDidEnterBackground:(UIApplication*)application; /** - Called if this plugin has been registered for `UIApplicationDelegate` callbacks. + * Called if this plugin has been registered for `UIApplicationDelegate` callbacks. */ - (void)applicationWillEnterForeground:(UIApplication*)application; @@ -95,83 +93,86 @@ NS_ASSUME_NONNULL_BEGIN - (void)applicationWillTerminate:(UIApplication*)application; /** - Called if this plugin has been registered for `UIApplicationDelegate` callbacks. + * Called if this plugin has been registered for `UIApplicationDelegate` callbacks. */ +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" - (void)application:(UIApplication*)application didRegisterUserNotificationSettings:(UIUserNotificationSettings*)notificationSettings; +#pragma GCC diagnostic pop /** - Called if this plugin has been registered for `UIApplicationDelegate` callbacks. + * Called if this plugin has been registered for `UIApplicationDelegate` callbacks. */ - (void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken; /** - Called if this plugin has been registered for `UIApplicationDelegate` callbacks. - - - Returns: `YES` if this plugin handles the request. + * Called if this plugin has been registered for `UIApplicationDelegate` callbacks. + * + * @return `YES` if this plugin handles the request. */ - (BOOL)application:(UIApplication*)application didReceiveRemoteNotification:(NSDictionary*)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))completionHandler; /** - Called if this plugin has been registered for `UIApplicationDelegate` callbacks. - - - Returns: `YES` if this plugin handles the request. -*/ + * Called if this plugin has been registered for `UIApplicationDelegate` callbacks. + * + * @return `YES` if this plugin handles the request. + */ - (BOOL)application:(UIApplication*)application openURL:(NSURL*)url options:(NSDictionary*)options; /** - Called if this plugin has been registered for `UIApplicationDelegate` callbacks. - - - Returns: `YES` if this plugin handles the request. + * Called if this plugin has been registered for `UIApplicationDelegate` callbacks. + * + * @return `YES` if this plugin handles the request. */ - (BOOL)application:(UIApplication*)application handleOpenURL:(NSURL*)url; /** - Called if this plugin has been registered for `UIApplicationDelegate` callbacks. - - - Returns: `YES` if this plugin handles the request. -*/ + * Called if this plugin has been registered for `UIApplicationDelegate` callbacks. + * + * @return `YES` if this plugin handles the request. + */ - (BOOL)application:(UIApplication*)application openURL:(NSURL*)url sourceApplication:(NSString*)sourceApplication annotation:(id)annotation; /** - Called if this plugin has been registered for `UIApplicationDelegate` callbacks. - - - Returns: `YES` if this plugin handles the request. -*/ + * Called if this plugin has been registered for `UIApplicationDelegate` callbacks. + * + * @return `YES` if this plugin handles the request. + */ - (BOOL)application:(UIApplication*)application performActionForShortcutItem:(UIApplicationShortcutItem*)shortcutItem completionHandler:(void (^)(BOOL succeeded))completionHandler API_AVAILABLE(ios(9.0)); /** - Called if this plugin has been registered for `UIApplicationDelegate` callbacks. - - - Returns: `YES` if this plugin handles the request. + * Called if this plugin has been registered for `UIApplicationDelegate` callbacks. + * + * @return `YES` if this plugin handles the request. */ - (BOOL)application:(UIApplication*)application handleEventsForBackgroundURLSession:(nonnull NSString*)identifier completionHandler:(nonnull void (^)(void))completionHandler; /** - Called if this plugin has been registered for `UIApplicationDelegate` callbacks. - - - Returns: `YES` if this plugin handles the request. + * Called if this plugin has been registered for `UIApplicationDelegate` callbacks. + * + * @return `YES` if this plugin handles the request. */ - (BOOL)application:(UIApplication*)application performFetchWithCompletionHandler:(void (^)(UIBackgroundFetchResult result))completionHandler; /** - Called if this plugin has been registered for `UIApplicationDelegate` callbacks. - - - Returns: `YES` if this plugin handles the request. + * Called if this plugin has been registered for `UIApplicationDelegate` callbacks. + * + * @return `YES` if this plugin handles the request. */ - (BOOL)application:(UIApplication*)application continueUserActivity:(NSUserActivity*)userActivity @@ -179,28 +180,28 @@ NS_ASSUME_NONNULL_BEGIN @end /** - Registration context for a single `FlutterPlugin`, providing a one stop shop - for the plugin to access contextual information and register callbacks for - various application events. - - Registrars are obtained from a `FlutterPluginRegistry` which keeps track of - the identity of registered plugins and provides basic support for cross-plugin - coordination. + *Registration context for a single `FlutterPlugin`, providing a one stop shop + *for the plugin to access contextual information and register callbacks for + *various application events. + * + *Registrars are obtained from a `FlutterPluginRegistry` which keeps track of + *the identity of registered plugins and provides basic support for cross-plugin + *coordination. */ @protocol FlutterPluginRegistrar /** - Returns a `FlutterBinaryMessenger` for creating Dart/iOS communication - channels to be used by the plugin. - - - Returns: The messenger. + * Returns a `FlutterBinaryMessenger` for creating Dart/iOS communication + * channels to be used by the plugin. + * + * @return The messenger. */ - (NSObject*)messenger; /** - Returns a `FlutterTextureRegistry` for registering textures - provided by the plugin. - - - Returns: The texture registry. + * Returns a `FlutterTextureRegistry` for registering textures + * provided by the plugin. + * + * @return The texture registry. */ - (NSObject*)textures; @@ -217,107 +218,106 @@ NS_ASSUME_NONNULL_BEGIN withId:(NSString*)factoryId; /** - Publishes a value for external use of the plugin. - - Plugins may publish a single value, such as an instance of the - plugin's main class, for situations where external control or - interaction is needed. - - The published value will be available from the `FlutterPluginRegistry`. - Repeated calls overwrite any previous publication. - - - Parameter value: The value to be published. + * Publishes a value for external use of the plugin. + * + * Plugins may publish a single value, such as an instance of the + * plugin's main class, for situations where external control or + * interaction is needed. + * + * The published value will be available from the `FlutterPluginRegistry`. + * Repeated calls overwrite any previous publication. + * + * @param value The value to be published. */ - (void)publish:(NSObject*)value; /** - Registers the plugin as a receiver of incoming method calls from the Dart side - on the specified `FlutterMethodChannel`. - - - Parameters: - - delegate: The receiving object, such as the plugin's main class. - - channel: The channel + * Registers the plugin as a receiver of incoming method calls from the Dart side + * on the specified `FlutterMethodChannel`. + * + * @param delegate The receiving object, such as the plugin's main class. + * @param channel The channel */ - (void)addMethodCallDelegate:(NSObject*)delegate channel:(FlutterMethodChannel*)channel; /** - Registers the plugin as a receiver of `UIApplicationDelegate` calls. - - - Parameters delegate: The receiving object, such as the plugin's main class. + * Registers the plugin as a receiver of `UIApplicationDelegate` calls. + * + * @param delegate The receiving object, such as the plugin's main class. */ - (void)addApplicationDelegate:(NSObject*)delegate; /** - Returns the file name for the given asset. - The returned file name can be used to access the asset in the application's main bundle. - - - Parameter asset: The name of the asset. The name can be hierarchical. - - Returns: the file name to be used for lookup in the main bundle. + * Returns the file name for the given asset. + * The returned file name can be used to access the asset in the application's main bundle. + * + * @param asset The name of the asset. The name can be hierarchical. + * @return the file name to be used for lookup in the main bundle. */ - (NSString*)lookupKeyForAsset:(NSString*)asset; /** - Returns the file name for the given asset which originates from the specified package. - The returned file name can be used to access the asset in the application's main bundle. - - - Parameters: - - asset: The name of the asset. The name can be hierarchical. - - package: The name of the package from which the asset originates. - - Returns: the file name to be used for lookup in the main bundle. + * Returns the file name for the given asset which originates from the specified package. + * The returned file name can be used to access the asset in the application's main bundle. + * + * + * @param asset The name of the asset. The name can be hierarchical. + * @param package The name of the package from which the asset originates. + * @return the file name to be used for lookup in the main bundle. */ - (NSString*)lookupKeyForAsset:(NSString*)asset fromPackage:(NSString*)package; @end /** - A registry of Flutter iOS plugins. - - Plugins are identified by unique string keys, typically the name of the - plugin's main class. The registry tracks plugins by this key, mapping it to - a value published by the plugin during registration, if any. This provides a - very basic means of cross-plugin coordination with loose coupling between - unrelated plugins. - - Plugins typically need contextual information and the ability to register - callbacks for various application events. To keep the API of the registry - focused, these facilities are not provided directly by the registry, but by - a `FlutterPluginRegistrar`, created by the registry in exchange for the unique - key of the plugin. - - There is no implied connection between the registry and the registrar. - Specifically, callbacks registered by the plugin via the registrar may be - relayed directly to the underlying iOS application objects. + * A registry of Flutter iOS plugins. + * + * Plugins are identified by unique string keys, typically the name of the + * plugin's main class. The registry tracks plugins by this key, mapping it to + * a value published by the plugin during registration, if any. This provides a + * very basic means of cross-plugin coordination with loose coupling between + * unrelated plugins. + * + * Plugins typically need contextual information and the ability to register + * callbacks for various application events. To keep the API of the registry + * focused, these facilities are not provided directly by the registry, but by + * a `FlutterPluginRegistrar`, created by the registry in exchange for the unique + * key of the plugin. + * + * There is no implied connection between the registry and the registrar. + * Specifically, callbacks registered by the plugin via the registrar may be + * relayed directly to the underlying iOS application objects. */ @protocol FlutterPluginRegistry /** - Returns a registrar for registering a plugin. - - - Parameter pluginKey: The unique key identifying the plugin. + * Returns a registrar for registering a plugin. + * + * @param pluginKey The unique key identifying the plugin. */ - (NSObject*)registrarForPlugin:(NSString*)pluginKey; /** - Returns whether the specified plugin has been registered. - - - Parameter pluginKey: The unique key identifying the plugin. - - Returns: `YES` if `registrarForPlugin` has been called with `pluginKey`. + * Returns whether the specified plugin has been registered. + * + * @param pluginKey The unique key identifying the plugin. + * @return `YES` if `registrarForPlugin` has been called with `pluginKey`. */ - (BOOL)hasPlugin:(NSString*)pluginKey; /** - Returns a value published by the specified plugin. - - - Parameter pluginKey: The unique key identifying the plugin. - - Returns: An object published by the plugin, if any. Will be `NSNull` if - nothing has been published. Will be `nil` if the plugin has not been - registered. + * Returns a value published by the specified plugin. + * + * @param pluginKey The unique key identifying the plugin. + * @return An object published by the plugin, if any. Will be `NSNull` if + * nothing has been published. Will be `nil` if the plugin has not been + * registered. */ - (NSObject*)valuePublishedByPlugin:(NSString*)pluginKey; @end /** - Implement this in the `UIAppDelegate` of your app to enable Flutter plugins to register themselves - to the application life cycle events. -*/ + * Implement this in the `UIAppDelegate` of your app to enable Flutter plugins to register + * themselves to the application life cycle events. + */ @protocol FlutterAppLifeCycleProvider - (void)addApplicationLifeCycleDelegate:(NSObject*)delegate; @end diff --git a/shell/platform/darwin/ios/framework/Headers/FlutterPluginAppLifeCycleDelegate.h b/shell/platform/darwin/ios/framework/Headers/FlutterPluginAppLifeCycleDelegate.h index aa93e905cb2b9..1b389b3e58dc9 100644 --- a/shell/platform/darwin/ios/framework/Headers/FlutterPluginAppLifeCycleDelegate.h +++ b/shell/platform/darwin/ios/framework/Headers/FlutterPluginAppLifeCycleDelegate.h @@ -66,8 +66,11 @@ FLUTTER_EXPORT /** * Called if this plugin has been registered for `UIApplicationDelegate` callbacks. */ +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" - (void)application:(UIApplication*)application didRegisterUserNotificationSettings:(UIUserNotificationSettings*)notificationSettings; +#pragma GCC diagnostic pop /** * Calls all plugins registered for `UIApplicationDelegate` callbacks. diff --git a/shell/platform/darwin/ios/framework/Source/FlutterAppDelegate.mm b/shell/platform/darwin/ios/framework/Source/FlutterAppDelegate.mm index a7921be5c6d32..601a787809ab9 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterAppDelegate.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterAppDelegate.mm @@ -71,11 +71,14 @@ - (void)applicationWillTerminate:(UIApplication*)application { [_lifeCycleDelegate applicationWillTerminate:application]; } +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" - (void)application:(UIApplication*)application didRegisterUserNotificationSettings:(UIUserNotificationSettings*)notificationSettings { [_lifeCycleDelegate application:application didRegisterUserNotificationSettings:notificationSettings]; } +#pragma GCC diagnostic pop - (void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken { diff --git a/shell/platform/darwin/ios/framework/Source/FlutterPluginAppLifeCycleDelegate.mm b/shell/platform/darwin/ios/framework/Source/FlutterPluginAppLifeCycleDelegate.mm index e4d9c03cf9fe1..2ed844b23ecfd 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterPluginAppLifeCycleDelegate.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterPluginAppLifeCycleDelegate.mm @@ -158,6 +158,8 @@ - (void)applicationWillTerminate:(UIApplication*)application { } } +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" - (void)application:(UIApplication*)application didRegisterUserNotificationSettings:(UIUserNotificationSettings*)notificationSettings { for (id plugin in _pluginDelegates) { @@ -169,6 +171,7 @@ - (void)application:(UIApplication*)application } } } +#pragma GCC diagnostic pop - (void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken { From 6c2a0b3a6d93e52d31667bf0f834d390d917ee6e Mon Sep 17 00:00:00 2001 From: Amir Hardon Date: Fri, 26 Oct 2018 16:06:39 -0700 Subject: [PATCH 0097/1537] Undefine ERROR in platform_view_layer.cc (#6675) On Windows the ERROR macro is defined by some headers which breaks the FML_LOG(ERROR). --- flow/layers/platform_view_layer.cc | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/flow/layers/platform_view_layer.cc b/flow/layers/platform_view_layer.cc index 19057fbfd4b9c..2d4b6d295fe92 100644 --- a/flow/layers/platform_view_layer.cc +++ b/flow/layers/platform_view_layer.cc @@ -4,6 +4,10 @@ #include "flutter/flow/layers/platform_view_layer.h" +#ifdef ERROR +#undef ERROR +#endif + namespace flow { PlatformViewLayer::PlatformViewLayer() = default; From 505d2a9238950348f3aaab72b5f4785456c00fb9 Mon Sep 17 00:00:00 2001 From: Chinmay Garde Date: Fri, 26 Oct 2018 16:31:59 -0700 Subject: [PATCH 0098/1537] Roll buildroot to pick up updates to custom toolchains. (#6674) --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index 5db5bd3f24f88..4f3f4c08949b3 100644 --- a/DEPS +++ b/DEPS @@ -117,7 +117,7 @@ allowed_hosts = [ ] deps = { - 'src': 'https://github.com/flutter/buildroot.git' + '@' + '378efdc3507cef3204a164132cdeab04ea8e907e', + 'src': 'https://github.com/flutter/buildroot.git' + '@' + '58c5b8dbeaf13dfc6e0efa6db2451d389df55777', # Fuchsia compatibility # From ba8f6aa71cad3eb4e9582bb29ad0617edd7c55d6 Mon Sep 17 00:00:00 2001 From: Chinmay Garde Date: Fri, 26 Oct 2018 16:47:14 -0700 Subject: [PATCH 0099/1537] Handle Windows headers defining ERROR to 0 in log levels. (#6677) --- assets/asset_manager.cc | 4 ---- flow/layers/platform_view_layer.cc | 4 ---- fml/log_level.h | 7 +++++++ lib/ui/painting/codec.cc | 4 ---- lib/ui/painting/image_encoding.cc | 4 ---- runtime/dart_isolate.cc | 4 ---- runtime/dart_vm.cc | 4 ---- runtime/runtime_controller.cc | 4 ---- shell/common/engine.cc | 4 ---- shell/common/isolate_configuration.cc | 4 ---- shell/common/rasterizer.cc | 4 ---- shell/common/shell.cc | 4 ---- shell/gpu/gpu_surface_gl.cc | 4 ---- shell/platform/embedder/embedder_engine.cc | 4 ---- shell/platform/embedder/embedder_surface_gl.cc | 4 ---- shell/platform/embedder/embedder_surface_software.cc | 4 ---- shell/platform/embedder/platform_view_embedder.cc | 4 ---- shell/testing/tester_main.cc | 4 ---- 18 files changed, 7 insertions(+), 68 deletions(-) diff --git a/assets/asset_manager.cc b/assets/asset_manager.cc index 2155d24a78a26..31b4db4230b4f 100644 --- a/assets/asset_manager.cc +++ b/assets/asset_manager.cc @@ -7,10 +7,6 @@ #include "flutter/assets/directory_asset_bundle.h" #include "flutter/fml/trace_event.h" -#ifdef ERROR -#undef ERROR -#endif - namespace blink { AssetManager::AssetManager() = default; diff --git a/flow/layers/platform_view_layer.cc b/flow/layers/platform_view_layer.cc index 2d4b6d295fe92..19057fbfd4b9c 100644 --- a/flow/layers/platform_view_layer.cc +++ b/flow/layers/platform_view_layer.cc @@ -4,10 +4,6 @@ #include "flutter/flow/layers/platform_view_layer.h" -#ifdef ERROR -#undef ERROR -#endif - namespace flow { PlatformViewLayer::PlatformViewLayer() = default; diff --git a/fml/log_level.h b/fml/log_level.h index 737e80db2ff68..8bed172db9ff8 100644 --- a/fml/log_level.h +++ b/fml/log_level.h @@ -16,6 +16,13 @@ constexpr LogSeverity LOG_ERROR = 2; constexpr LogSeverity LOG_FATAL = 3; constexpr LogSeverity LOG_NUM_SEVERITIES = 4; +// One of the Windows headers defines ERROR to 0. This makes the token +// concatenation in FML_LOG(ERROR) to resolve to LOG_0. We define this back to +// the appropriate log level. +#ifdef _WIN32 +#define LOG_0 LOG_ERROR +#endif + // LOG_DFATAL is LOG_FATAL in debug mode, ERROR in normal mode #ifdef NDEBUG const LogSeverity LOG_DFATAL = LOG_ERROR; diff --git a/lib/ui/painting/codec.cc b/lib/ui/painting/codec.cc index 7287966c6b122..3262338d5563c 100644 --- a/lib/ui/painting/codec.cc +++ b/lib/ui/painting/codec.cc @@ -17,10 +17,6 @@ #include "third_party/tonic/logging/dart_invoke.h" #include "third_party/tonic/typed_data/uint8_list.h" -#ifdef ERROR -#undef ERROR -#endif - using tonic::DartInvoke; using tonic::DartPersistentValue; using tonic::ToDart; diff --git a/lib/ui/painting/image_encoding.cc b/lib/ui/painting/image_encoding.cc index b689269cf492b..be8b3f7e47b68 100644 --- a/lib/ui/painting/image_encoding.cc +++ b/lib/ui/painting/image_encoding.cc @@ -25,10 +25,6 @@ using tonic::DartInvoke; using tonic::DartPersistentValue; using tonic::ToDart; -#ifdef ERROR -#undef ERROR -#endif - namespace blink { namespace { diff --git a/runtime/dart_isolate.cc b/runtime/dart_isolate.cc index 784f650f6fdb0..4eef86398afc7 100644 --- a/runtime/dart_isolate.cc +++ b/runtime/dart_isolate.cc @@ -26,10 +26,6 @@ #include "third_party/tonic/scopes/dart_api_scope.h" #include "third_party/tonic/scopes/dart_isolate_scope.h" -#ifdef ERROR -#undef ERROR -#endif - namespace blink { std::weak_ptr DartIsolate::CreateRootIsolate( diff --git a/runtime/dart_vm.cc b/runtime/dart_vm.cc index 35bc542432411..c7b9b97110b8f 100644 --- a/runtime/dart_vm.cc +++ b/runtime/dart_vm.cc @@ -33,10 +33,6 @@ #include "third_party/tonic/scopes/dart_api_scope.h" #include "third_party/tonic/typed_data/uint8_list.h" -#ifdef ERROR -#undef ERROR -#endif - namespace dart { namespace observatory { diff --git a/runtime/runtime_controller.cc b/runtime/runtime_controller.cc index ace1b9b7a2183..ffc544aa10329 100644 --- a/runtime/runtime_controller.cc +++ b/runtime/runtime_controller.cc @@ -12,10 +12,6 @@ #include "flutter/runtime/runtime_delegate.h" #include "third_party/tonic/dart_message_handler.h" -#ifdef ERROR -#undef ERROR -#endif - namespace blink { RuntimeController::RuntimeController( diff --git a/shell/common/engine.cc b/shell/common/engine.cc index f6f1553652b61..7b830a5616498 100644 --- a/shell/common/engine.cc +++ b/shell/common/engine.cc @@ -26,10 +26,6 @@ #include "third_party/skia/include/core/SkCanvas.h" #include "third_party/skia/include/core/SkPictureRecorder.h" -#ifdef ERROR -#undef ERROR -#endif - namespace shell { static constexpr char kAssetChannel[] = "flutter/assets"; diff --git a/shell/common/isolate_configuration.cc b/shell/common/isolate_configuration.cc index c3bbc04c653a2..2d2323199128b 100644 --- a/shell/common/isolate_configuration.cc +++ b/shell/common/isolate_configuration.cc @@ -7,10 +7,6 @@ #include "flutter/fml/make_copyable.h" #include "flutter/runtime/dart_vm.h" -#ifdef ERROR -#undef ERROR -#endif - namespace shell { IsolateConfiguration::IsolateConfiguration() = default; diff --git a/shell/common/rasterizer.cc b/shell/common/rasterizer.cc index 47fcdf024760c..e393959bc990a 100644 --- a/shell/common/rasterizer.cc +++ b/shell/common/rasterizer.cc @@ -14,10 +14,6 @@ #include "third_party/skia/include/core/SkSurfaceCharacterization.h" #include "third_party/skia/include/utils/SkBase64.h" -#ifdef ERROR -#undef ERROR -#endif - namespace shell { Rasterizer::Rasterizer(blink::TaskRunners task_runners) diff --git a/shell/common/shell.cc b/shell/common/shell.cc index 178f81488a184..7fad4aef95d0e 100644 --- a/shell/common/shell.cc +++ b/shell/common/shell.cc @@ -31,10 +31,6 @@ #include "third_party/skia/include/core/SkGraphics.h" #include "third_party/tonic/common/log.h" -#ifdef ERROR -#undef ERROR -#endif - namespace shell { std::unique_ptr Shell::CreateShellOnPlatformThread( diff --git a/shell/gpu/gpu_surface_gl.cc b/shell/gpu/gpu_surface_gl.cc index 4a421b9dae38b..7cc8892f88ef4 100644 --- a/shell/gpu/gpu_surface_gl.cc +++ b/shell/gpu/gpu_surface_gl.cc @@ -24,10 +24,6 @@ #define GPU_GL_RGB565 0x8D62 #define GPU_GL_VERSION 0x1F02 -#ifdef ERROR -#undef ERROR -#endif - namespace shell { // Default maximum number of budgeted resources in the cache. diff --git a/shell/platform/embedder/embedder_engine.cc b/shell/platform/embedder/embedder_engine.cc index 1f4dc3402b72c..8c701c99bae00 100644 --- a/shell/platform/embedder/embedder_engine.cc +++ b/shell/platform/embedder/embedder_engine.cc @@ -6,10 +6,6 @@ #include "flutter/fml/make_copyable.h" -#ifdef ERROR -#undef ERROR -#endif - namespace shell { EmbedderEngine::EmbedderEngine( diff --git a/shell/platform/embedder/embedder_surface_gl.cc b/shell/platform/embedder/embedder_surface_gl.cc index 1ee37c0615564..c54978e22f37e 100644 --- a/shell/platform/embedder/embedder_surface_gl.cc +++ b/shell/platform/embedder/embedder_surface_gl.cc @@ -6,10 +6,6 @@ #include "flutter/shell/common/io_manager.h" -#ifdef ERROR -#undef ERROR -#endif - namespace shell { EmbedderSurfaceGL::EmbedderSurfaceGL(GLDispatchTable gl_dispatch_table, diff --git a/shell/platform/embedder/embedder_surface_software.cc b/shell/platform/embedder/embedder_surface_software.cc index 103257745b359..edc855b276116 100644 --- a/shell/platform/embedder/embedder_surface_software.cc +++ b/shell/platform/embedder/embedder_surface_software.cc @@ -7,10 +7,6 @@ #include "flutter/fml/trace_event.h" #include "third_party/skia/include/gpu/GrContext.h" -#ifdef ERROR -#undef ERROR -#endif - namespace shell { EmbedderSurfaceSoftware::EmbedderSurfaceSoftware( diff --git a/shell/platform/embedder/platform_view_embedder.cc b/shell/platform/embedder/platform_view_embedder.cc index 07f6c8dc1ff95..47b83813d974b 100644 --- a/shell/platform/embedder/platform_view_embedder.cc +++ b/shell/platform/embedder/platform_view_embedder.cc @@ -4,10 +4,6 @@ #include "flutter/shell/platform/embedder/platform_view_embedder.h" -#ifdef ERROR -#undef ERROR -#endif - namespace shell { PlatformViewEmbedder::PlatformViewEmbedder( diff --git a/shell/testing/tester_main.cc b/shell/testing/tester_main.cc index f8c72fad41845..4fcf7ed7f8b1c 100644 --- a/shell/testing/tester_main.cc +++ b/shell/testing/tester_main.cc @@ -21,10 +21,6 @@ #include "flutter/shell/common/thread_host.h" #include "third_party/dart/runtime/include/bin/dart_io_api.h" -#ifdef ERROR -#undef ERROR -#endif - namespace shell { // Checks whether the engine's main Dart isolate has no pending work. If so, From c4f50611d872f4bdf712f1e5f4f1dc32e5cbca4c Mon Sep 17 00:00:00 2001 From: Chinmay Garde Date: Fri, 26 Oct 2018 17:55:18 -0700 Subject: [PATCH 0100/1537] Roll buildroot to pick up Mac toolchain updates. (#6678) --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index 4f3f4c08949b3..b85fb3dc6598d 100644 --- a/DEPS +++ b/DEPS @@ -117,7 +117,7 @@ allowed_hosts = [ ] deps = { - 'src': 'https://github.com/flutter/buildroot.git' + '@' + '58c5b8dbeaf13dfc6e0efa6db2451d389df55777', + 'src': 'https://github.com/flutter/buildroot.git' + '@' + '8b75164b0d336a16da67bed187d05dcef4b8f99d', # Fuchsia compatibility # From 236661cd87d620f604f65d8617e4622b0ffeb854 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Sun, 28 Oct 2018 10:47:56 -0400 Subject: [PATCH 0101/1537] Roll src/third_party/skia 3b79aa3a5ad0..b53f1f46982d (13 commits) (#6679) https://skia.googlesource.com/skia.git/+log/3b79aa3a5ad0..b53f1f46982d Created with: gclient setdep -r src/third_party/skia@b53f1f46982d The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/DEPS b/DEPS index b85fb3dc6598d..7bd970ecc7b3f 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '3b79aa3a5ad0c6cff8495e14fca0c5e6f4ff9b9b', + 'skia_revision': 'b53f1f46982d1e036759d8c16ada66d083c06c49', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 6ad3e5a36564b..5ebc1c8fda60d 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: ae7ffdd1abacf6ba5359005187a0e034 +Signature: 46b87ef04ca4a45358079566b16016b7 UNUSED LICENSES: @@ -1590,8 +1590,6 @@ FILE: ../../../third_party/skia/src/gpu/ops/GrClearStencilClipOp.cpp FILE: ../../../third_party/skia/src/gpu/ops/GrDebugMarkerOp.cpp FILE: ../../../third_party/skia/src/gpu/ops/GrDrawableOp.cpp FILE: ../../../third_party/skia/src/gpu/ops/GrDrawableOp.h -FILE: ../../../third_party/skia/src/gpu/ops/GrQuadPerEdgeAA.cpp -FILE: ../../../third_party/skia/src/gpu/ops/GrQuadPerEdgeAA.h FILE: ../../../third_party/skia/src/gpu/text/GrAtlasManager.cpp FILE: ../../../third_party/skia/src/gpu/text/GrAtlasManager.h FILE: ../../../third_party/skia/src/gpu/text/GrSDFMaskFilter.cpp From a1d7cad70c81ba5dbbeb2863eb913a11b26cc45c Mon Sep 17 00:00:00 2001 From: Mehmet Fidanboylu Date: Sun, 28 Oct 2018 11:40:26 -0700 Subject: [PATCH 0102/1537] Fix inconsistent include syntax (#6680) --- shell/platform/darwin/ios/ios_surface.mm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/shell/platform/darwin/ios/ios_surface.mm b/shell/platform/darwin/ios/ios_surface.mm index b0b9cc3245183..b3fe77bb38462 100644 --- a/shell/platform/darwin/ios/ios_surface.mm +++ b/shell/platform/darwin/ios/ios_surface.mm @@ -6,8 +6,8 @@ #include -#include -#include +#include "flutter/shell/platform/darwin/ios/ios_surface_gl.h" +#include "flutter/shell/platform/darwin/ios/ios_surface_software.h" namespace shell { From 2f06a53a8d197e5948f84dc584a80fb3162dcaaf Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Sun, 28 Oct 2018 16:20:56 -0400 Subject: [PATCH 0103/1537] Roll src/third_party/skia b53f1f46982d..38e4fd0c5654 (1 commits) (#6681) https://skia.googlesource.com/skia.git/+log/b53f1f46982d..38e4fd0c5654 Created with: gclient setdep -r src/third_party/skia@38e4fd0c5654 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 7bd970ecc7b3f..6f76578876076 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'b53f1f46982d1e036759d8c16ada66d083c06c49', + 'skia_revision': '38e4fd0c5654ff74509c0a94d57112db28dabcab', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 5ebc1c8fda60d..7eede63b78669 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 46b87ef04ca4a45358079566b16016b7 +Signature: c01f726e1d4129229ffa16a9a5f527f4 UNUSED LICENSES: From 3dac47e4d21bf53b37417b6801d97b8253f6822d Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Mon, 29 Oct 2018 00:35:56 -0400 Subject: [PATCH 0104/1537] Roll src/third_party/skia 38e4fd0c5654..79c96811863f (1 commits) (#6682) https://skia.googlesource.com/skia.git/+log/38e4fd0c5654..79c96811863f Created with: gclient setdep -r src/third_party/skia@79c96811863f The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 6f76578876076..1a228fd5cb612 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '38e4fd0c5654ff74509c0a94d57112db28dabcab', + 'skia_revision': '79c96811863fbf2e1ffcb15b329d0d18cde4c833', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 7eede63b78669..3b498e0b5fdd5 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: c01f726e1d4129229ffa16a9a5f527f4 +Signature: 07b01474e4f1b84ef13aad94402345b7 UNUSED LICENSES: From 7352251ebec6f0686bf942407029b7038124a208 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Mon, 29 Oct 2018 03:59:56 -0400 Subject: [PATCH 0105/1537] Roll src/third_party/skia 79c96811863f..797197a772b8 (1 commits) (#6683) https://skia.googlesource.com/skia.git/+log/79c96811863f..797197a772b8 Created with: gclient setdep -r src/third_party/skia@797197a772b8 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 1a228fd5cb612..d5d7b56f5c154 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '79c96811863fbf2e1ffcb15b329d0d18cde4c833', + 'skia_revision': '797197a772b8c9774faae855be07996398b8bb79', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 3b498e0b5fdd5..9b97de5f94978 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 07b01474e4f1b84ef13aad94402345b7 +Signature: a8bd1c6301c5997c5894126c6e95cb3a UNUSED LICENSES: From c4aa8d34385213b6f184b6b9e1b51c1c81441091 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Mon, 29 Oct 2018 07:24:01 -0400 Subject: [PATCH 0106/1537] Roll src/third_party/skia 797197a772b8..1de48d8040aa (2 commits) (#6684) https://skia.googlesource.com/skia.git/+log/797197a772b8..1de48d8040aa Created with: gclient setdep -r src/third_party/skia@1de48d8040aa The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index d5d7b56f5c154..fe09cdad559f0 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '797197a772b8c9774faae855be07996398b8bb79', + 'skia_revision': '1de48d8040aa263d4f79c023f9c31445310432a9', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 9b97de5f94978..a756ac35aa298 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: a8bd1c6301c5997c5894126c6e95cb3a +Signature: aac0a9475456a7cee4e197075613c60e UNUSED LICENSES: From ab782faa77114bae9d56f232c0883cfb53b3a4b4 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Mon, 29 Oct 2018 10:49:57 -0400 Subject: [PATCH 0107/1537] Roll src/third_party/skia 1de48d8040aa..68825776f4b4 (1 commits) (#6685) https://skia.googlesource.com/skia.git/+log/1de48d8040aa..68825776f4b4 Created with: gclient setdep -r src/third_party/skia@68825776f4b4 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index fe09cdad559f0..8fecb3a0a21e7 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '1de48d8040aa263d4f79c023f9c31445310432a9', + 'skia_revision': '68825776f4b4226dde4bbe13b07077e9448a9a3b', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index a756ac35aa298..f3a1913724151 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: aac0a9475456a7cee4e197075613c60e +Signature: 2db9344acf0f42c388f138fae3ed6879 UNUSED LICENSES: From cc686d7aebad986cdd8bab7fd7fbb4af3b137259 Mon Sep 17 00:00:00 2001 From: Amir Hardon Date: Mon, 29 Oct 2018 10:38:04 -0700 Subject: [PATCH 0108/1537] Don't populate the external view embedder in PaintContext. (#6686) The platform views embedding is still WIP, and until we dynamically merge the gpu and platform threads based on the presence of an embedded view in the scene fetching the view embedder is not thread safe. This PR essentially disables iOS platform views embedding, we will re-enable once dynamic thread merging is supported. --- shell/common/rasterizer.cc | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/shell/common/rasterizer.cc b/shell/common/rasterizer.cc index e393959bc990a..b9737c7e1ca36 100644 --- a/shell/common/rasterizer.cc +++ b/shell/common/rasterizer.cc @@ -162,8 +162,19 @@ bool Rasterizer::DrawToSurface(flow::LayerTree& layer_tree) { auto canvas = frame->SkiaCanvas(); + // External view embedding required that the gpu and platform threads are the + // same. The dynamic merging of these threads is WIP so for now we don't + // populate the view embedder. Once we can merge the threads, we should + // populate the view embedded here with surface_->GetExternalViewEmbedder() if + // the scene contains an external view (and we can probably assert that the + // gpu and platform threads are the same). + // + // TODO(amirh): populate the view embedder once we dynamically merge the + // threads for embedded platform views. + auto external_view_embedder = nullptr; + auto compositor_frame = compositor_context_->AcquireFrame( - surface_->GetContext(), canvas, surface_->GetExternalViewEmbedder(), + surface_->GetContext(), canvas, external_view_embedder, surface_->GetRootTransformation(), true); if (canvas) { From 0e9defbd6c327ee2e674bddb0f56279f77e094bd Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Mon, 29 Oct 2018 14:14:57 -0400 Subject: [PATCH 0109/1537] Roll src/third_party/skia 68825776f4b4..ab18c8e6cc20 (11 commits) (#6688) https://skia.googlesource.com/skia.git/+log/68825776f4b4..ab18c8e6cc20 Created with: gclient setdep -r src/third_party/skia@ab18c8e6cc20 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 12 +++++++----- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/DEPS b/DEPS index 8fecb3a0a21e7..1c25dda927e91 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '68825776f4b4226dde4bbe13b07077e9448a9a3b', + 'skia_revision': 'ab18c8e6cc20e17d568a55b3333af4e6cc30b554', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index f3a1913724151..c9ae72f5915e7 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 2db9344acf0f42c388f138fae3ed6879 +Signature: 8091adfa7932f89b3b0394c79ff1ddb5 UNUSED LICENSES: @@ -1590,6 +1590,8 @@ FILE: ../../../third_party/skia/src/gpu/ops/GrClearStencilClipOp.cpp FILE: ../../../third_party/skia/src/gpu/ops/GrDebugMarkerOp.cpp FILE: ../../../third_party/skia/src/gpu/ops/GrDrawableOp.cpp FILE: ../../../third_party/skia/src/gpu/ops/GrDrawableOp.h +FILE: ../../../third_party/skia/src/gpu/ops/GrQuadPerEdgeAA.cpp +FILE: ../../../third_party/skia/src/gpu/ops/GrQuadPerEdgeAA.h FILE: ../../../third_party/skia/src/gpu/text/GrAtlasManager.cpp FILE: ../../../third_party/skia/src/gpu/text/GrAtlasManager.h FILE: ../../../third_party/skia/src/gpu/text/GrSDFMaskFilter.cpp @@ -3080,6 +3082,7 @@ FILE: ../../../third_party/skia/include/gpu/GrResourceKey.h FILE: ../../../third_party/skia/include/gpu/gl/GrGLAssembleInterface.h FILE: ../../../third_party/skia/include/ports/SkFontMgr_indirect.h FILE: ../../../third_party/skia/include/ports/SkRemotableFontMgr.h +FILE: ../../../third_party/skia/include/private/SkHalf.h FILE: ../../../third_party/skia/samplecode/SampleHT.cpp FILE: ../../../third_party/skia/samplecode/SampleIdentityScale.cpp FILE: ../../../third_party/skia/samplecode/SampleRectanizer.cpp @@ -3099,7 +3102,6 @@ FILE: ../../../third_party/skia/src/core/SkDrawable.cpp FILE: ../../../third_party/skia/src/core/SkFont.cpp FILE: ../../../third_party/skia/src/core/SkForceCPlusPlusLinking.cpp FILE: ../../../third_party/skia/src/core/SkHalf.cpp -FILE: ../../../third_party/skia/src/core/SkHalf.h FILE: ../../../third_party/skia/src/core/SkImageGenerator.cpp FILE: ../../../third_party/skia/src/core/SkMaskCache.cpp FILE: ../../../third_party/skia/src/core/SkMaskCache.h @@ -3585,6 +3587,9 @@ FILE: ../../../third_party/skia/include/ports/SkFontMgr_empty.h FILE: ../../../third_party/skia/include/ports/SkFontMgr_fontconfig.h FILE: ../../../third_party/skia/include/private/SkAtomics.h FILE: ../../../third_party/skia/include/private/SkMutex.h +FILE: ../../../third_party/skia/include/private/SkNx.h +FILE: ../../../third_party/skia/include/private/SkNx_neon.h +FILE: ../../../third_party/skia/include/private/SkNx_sse.h FILE: ../../../third_party/skia/include/private/SkSemaphore.h FILE: ../../../third_party/skia/include/private/SkSpinlock.h FILE: ../../../third_party/skia/include/private/SkTHash.h @@ -3663,7 +3668,6 @@ FILE: ../../../third_party/skia/src/core/SkLocalMatrixImageFilter.cpp FILE: ../../../third_party/skia/src/core/SkMiniRecorder.cpp FILE: ../../../third_party/skia/src/core/SkMiniRecorder.h FILE: ../../../third_party/skia/src/core/SkNextID.h -FILE: ../../../third_party/skia/src/core/SkNx.h FILE: ../../../third_party/skia/src/core/SkOpts.cpp FILE: ../../../third_party/skia/src/core/SkOpts.h FILE: ../../../third_party/skia/src/core/SkPathPriv.h @@ -3830,8 +3834,6 @@ FILE: ../../../third_party/skia/src/opts/SkBlitMask_opts_arm_neon.cpp FILE: ../../../third_party/skia/src/opts/SkBlitMask_opts_arm_neon.h FILE: ../../../third_party/skia/src/opts/SkBlitRow_opts.h FILE: ../../../third_party/skia/src/opts/SkColor_opts_neon.h -FILE: ../../../third_party/skia/src/opts/SkNx_neon.h -FILE: ../../../third_party/skia/src/opts/SkNx_sse.h FILE: ../../../third_party/skia/src/opts/SkOpts_sse41.cpp FILE: ../../../third_party/skia/src/opts/SkOpts_ssse3.cpp FILE: ../../../third_party/skia/src/opts/SkXfermode_opts.h From 96bbd2b360b9b649f4a4f5955a433751a0ce24cf Mon Sep 17 00:00:00 2001 From: Michael Goderbauer Date: Mon, 29 Oct 2018 11:29:59 -0700 Subject: [PATCH 0110/1537] Roll buildroot to 11a934e99eaa4aa8e278cd2772aff4f51f1f3c41 (#6687) This reverts a change in buildroot that caused regressions (see https://github.com/flutter/flutter/issues/23678). --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index 1c25dda927e91..ed54bc606c6be 100644 --- a/DEPS +++ b/DEPS @@ -117,7 +117,7 @@ allowed_hosts = [ ] deps = { - 'src': 'https://github.com/flutter/buildroot.git' + '@' + '8b75164b0d336a16da67bed187d05dcef4b8f99d', + 'src': 'https://github.com/flutter/buildroot.git' + '@' + '11a934e99eaa4aa8e278cd2772aff4f51f1f3c41', # Fuchsia compatibility # From 3b17cfb684ff6061493f29d73c59724a7b72cee6 Mon Sep 17 00:00:00 2001 From: Gary Qian Date: Mon, 29 Oct 2018 14:06:04 -0700 Subject: [PATCH 0111/1537] Flutter tester default locales (#6689) --- shell/testing/tester_main.cc | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/shell/testing/tester_main.cc b/shell/testing/tester_main.cc index 4fcf7ed7f8b1c..da61239bdda15 100644 --- a/shell/testing/tester_main.cc +++ b/shell/testing/tester_main.cc @@ -125,6 +125,19 @@ int RunTester(const blink::Settings& settings, bool run_forever) { return EXIT_FAILURE; } + // Initialize default testing locales. There is no platform to + // pass locales on the tester, so to retain expected locale behavior, + // we emulate it in here by passing in 'en_US' and 'zh_CN' as test locales. + const char* locale_json = + "{\"method\":\"setLocale\",\"args\":[\"en\",\"US\",\"\",\"\",\"zh\"," + "\"CN\",\"\",\"\"]}"; + std::vector locale_bytes(locale_json, + locale_json + std::strlen(locale_json)); + fml::RefPtr response; + shell->GetPlatformView()->DispatchPlatformMessage( + fml::MakeRefCounted("flutter/localization", + locale_bytes, response)); + std::initializer_list protection = { fml::FileMapping::Protection::kRead}; auto main_dart_file_mapping = std::make_unique( From 58c8e30e55aef116bc2472e958135bbea8869324 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Mon, 29 Oct 2018 17:33:56 -0400 Subject: [PATCH 0112/1537] Roll src/third_party/skia ab18c8e6cc20..d48b7a881b24 (5 commits) (#6690) https://skia.googlesource.com/skia.git/+log/ab18c8e6cc20..d48b7a881b24 Created with: gclient setdep -r src/third_party/skia@d48b7a881b24 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index ed54bc606c6be..9b43273cfeb67 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'ab18c8e6cc20e17d568a55b3333af4e6cc30b554', + 'skia_revision': 'd48b7a881b24d7ca2e082f440cac11b784b66e4d', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index c9ae72f5915e7..45a4f1b65065c 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 8091adfa7932f89b3b0394c79ff1ddb5 +Signature: 79a3320a5a5d4cc66c99bbec3dee2682 UNUSED LICENSES: From 2b2fbf0f6474c99feca7e31d17e7687a032bd407 Mon Sep 17 00:00:00 2001 From: hugovdm Date: Mon, 29 Oct 2018 22:48:59 +0100 Subject: [PATCH 0113/1537] Add Locale.fromSubtags and support for scriptCode. (#6518) * Add Locale.fromComponents. * Change toString from underscores to dashes. Expand the unit tests. * Rename 'fromComponents' to 'create'. Change variants from String to List. * Use default for language parameter. Use hashCode/hashList. * Have toString() stick with old (underscore) behaviour. * Demonstrate empty-list bug in assert code. * Fix empty-list assert bug. * Add ignores for lint issues. Unsure about 71340 though. * Fix operator== via _listEquals. * Remove length-checking asserts: we're anyway not checking characters in fields. * Documentation update. * Change reasoning for ignore:prefer_initializing_formals. * Try 'fromSubtags' as new constructor name. * Documentation improvements based on Pull Request review. * Assert-fail for invalid-length subtags and drop bad subtags in production code. * Revert "Assert-fail for invalid-length subtags and drop bad subtags in production code." This reverts commit d6f06f5e7b3537d60000c47641580475ef16abbe. * Re-fix Locale.toString() for variants=[]. * Tear out variants, in case we want to have one fewer pointer in the future. * Make named parameters' names consistent with member names. * Also remove _listEquals: no longer in use. * Lint fix. * Fix code review nits. * Lint fix for assert, and a couple more not-zero-length-string asserts. * Code Review: two of three nits addressed... * Review fix: change 'should' to 'must' for subtag prescriptions. * Assert-check that countryCode is never ''. --- lib/ui/window.dart | 120 +++++++++++++++++++++++++++------- testing/dart/locale_test.dart | 28 +++++++- 2 files changed, 121 insertions(+), 27 deletions(-) diff --git a/lib/ui/window.dart b/lib/ui/window.dart index 28f91372460f2..fff5eb46206bc 100644 --- a/lib/ui/window.dart +++ b/lib/ui/window.dart @@ -116,9 +116,11 @@ class WindowPadding { } } -/// An identifier used to select a user's language and formatting preferences, -/// consisting of a language and a country. This is a subset of locale -/// identifiers as defined by BCP 47. +/// An identifier used to select a user's language and formatting preferences. +/// +/// This represents a [Unicode Language +/// Identifier](https://www.unicode.org/reports/tr35/#Unicode_language_identifier) +/// (i.e. without Locale extensions), except variants are not supported. /// /// Locales are canonicalized according to the "preferred value" entries in the /// [IANA Language Subtag @@ -145,16 +147,58 @@ class Locale { /// The primary language subtag must not be null. The region subtag is /// optional. /// - /// The values are _case sensitive_, and should match the case of the relevant - /// subtags in the [IANA Language Subtag - /// Registry](https://www.iana.org/assignments/language-subtag-registry/language-subtag-registry). - /// Typically this means the primary language subtag should be lowercase and - /// the region subtag should be uppercase. - const Locale(this._languageCode, [ this._countryCode ]) : assert(_languageCode != null), assert(_languageCode != ''); + /// The subtag values are _case sensitive_ and must be one of the valid + /// subtags according to CLDR supplemental data: + /// [language](http://unicode.org/cldr/latest/common/validity/language.xml), + /// [region](http://unicode.org/cldr/latest/common/validity/region.xml). The + /// primary language subtag must be at least two and at most eight lowercase + /// letters, but not four letters. The region region subtag must be two + /// uppercase letters or three digits. See the [Unicode Language + /// Identifier](https://www.unicode.org/reports/tr35/#Unicode_language_identifier) + /// specification. + /// + /// Validity is not checked by default, but some methods may throw away + /// invalid data. + /// + /// See also: + /// + /// * [new Locale.fromSubtags], which also allows a [scriptCode] to be + /// specified. + const Locale( + this._languageCode, [ + this._countryCode, + ]) : assert(_languageCode != null), + assert(_languageCode != ''), + scriptCode = null, + assert(_countryCode != ''); + + /// Creates a new Locale object. + /// + /// The keyword arguments specify the subtags of the Locale. + /// + /// The subtag values are _case sensitive_ and must be valid subtags according + /// to CLDR supplemental data: + /// [language](http://unicode.org/cldr/latest/common/validity/language.xml), + /// [script](http://unicode.org/cldr/latest/common/validity/script.xml) and + /// [region](http://unicode.org/cldr/latest/common/validity/region.xml) for + /// each of languageCode, scriptCode and countryCode respectively. + /// + /// Validity is not checked by default, but some methods may throw away + /// invalid data. + const Locale.fromSubtags({ + String languageCode = 'und', + this.scriptCode, + String countryCode, + }) : assert(languageCode != null), + assert(languageCode != ''), + _languageCode = languageCode, + assert(scriptCode != ''), + assert(countryCode != ''), + _countryCode = countryCode; /// The primary language subtag for the locale. /// - /// This must not be null. + /// This must not be null. It may be 'und', representing 'undefined'. /// /// This is expected to be string registered in the [IANA Language Subtag /// Registry](https://www.iana.org/assignments/language-subtag-registry/language-subtag-registry) @@ -166,10 +210,19 @@ class Locale { /// Locale('he')` and `const Locale('iw')` are equal, and both have the /// [languageCode] `he`, because `iw` is a deprecated language subtag that was /// replaced by the subtag `he`. - String get languageCode => _canonicalizeLanguageCode(_languageCode); + /// + /// This must be a valid Unicode Language subtag as listed in [Unicode CLDR + /// supplemental + /// data](http://unicode.org/cldr/latest/common/validity/language.xml). + /// + /// See also: + /// + /// * [new Locale.fromSubtags], which describes the conventions for creating + /// [Locale] objects. + String get languageCode => _replaceDeprecatedLanguageSubtag(_languageCode); final String _languageCode; - static String _canonicalizeLanguageCode(String languageCode) { + static String _replaceDeprecatedLanguageSubtag(String languageCode) { // This switch statement is generated by //flutter/tools/gen_locale.dart // Mappings generated for language subtag registry as of 2018-08-08. switch (languageCode) { @@ -255,9 +308,23 @@ class Locale { } } + /// The script subtag for the locale. + /// + /// This may be null, indicating that there is no specified script subtag. + /// + /// This must be a valid Unicode Language Identifier script subtag as listed + /// in [Unicode CLDR supplemental + /// data](http://unicode.org/cldr/latest/common/validity/script.xml). + /// + /// See also: + /// + /// * [new Locale.fromSubtags], which describes the conventions for creating + /// [Locale] objects. + final String scriptCode; + /// The region subtag for the locale. /// - /// This can be null. + /// This may be null, indicating that there is no specified region subtag. /// /// This is expected to be string registered in the [IANA Language Subtag /// Registry](https://www.iana.org/assignments/language-subtag-registry/language-subtag-registry) @@ -269,10 +336,15 @@ class Locale { /// 'DE')` and `const Locale('de', 'DD')` are equal, and both have the /// [countryCode] `DE`, because `DD` is a deprecated language subtag that was /// replaced by the subtag `DE`. - String get countryCode => _canonicalizeRegionCode(_countryCode); + /// + /// See also: + /// + /// * [new Locale.fromSubtags], which describes the conventions for creating + /// [Locale] objects. + String get countryCode => _replaceDeprecatedRegionSubtag(_countryCode); final String _countryCode; - static String _canonicalizeRegionCode(String regionCode) { + static String _replaceDeprecatedRegionSubtag(String regionCode) { // This switch statement is generated by //flutter/tools/gen_locale.dart // Mappings generated for language subtag registry as of 2018-08-08. switch (regionCode) { @@ -294,23 +366,21 @@ class Locale { return false; final Locale typedOther = other; return languageCode == typedOther.languageCode + && scriptCode == typedOther.scriptCode && countryCode == typedOther.countryCode; } @override - int get hashCode { - int result = 373; - result = 37 * result + languageCode.hashCode; - if (_countryCode != null) - result = 37 * result + countryCode.hashCode; - return result; - } + int get hashCode => hashValues(languageCode, scriptCode, countryCode); @override String toString() { - if (_countryCode == null) - return languageCode; - return '${languageCode}_$countryCode'; + final StringBuffer out = StringBuffer(languageCode); + if (scriptCode != null) + out.write('_$scriptCode'); + if (_countryCode != null) + out.write('_$countryCode'); + return out.toString(); } } diff --git a/testing/dart/locale_test.dart b/testing/dart/locale_test.dart index 60a7bf99fe2af..4613a707510c4 100644 --- a/testing/dart/locale_test.dart +++ b/testing/dart/locale_test.dart @@ -12,11 +12,35 @@ void main() { expect(const Locale('en').toString(), 'en'); expect(const Locale('en'), new Locale('en', $null)); expect(const Locale('en').hashCode, new Locale('en', $null).hashCode); - expect(const Locale('en'), isNot(new Locale('en', ''))); - expect(const Locale('en').hashCode, isNot(new Locale('en', '').hashCode)); expect(const Locale('en', 'US').toString(), 'en_US'); expect(const Locale('iw').toString(), 'he'); expect(const Locale('iw', 'DD').toString(), 'he_DE'); expect(const Locale('iw', 'DD'), const Locale('he', 'DE')); }); + + test('Locale.fromSubtags', () { + expect(const Locale.fromSubtags().languageCode, 'und'); + expect(const Locale.fromSubtags().scriptCode, null); + expect(const Locale.fromSubtags().countryCode, null); + + expect(const Locale.fromSubtags(languageCode: 'en').toString(), 'en'); + expect(const Locale.fromSubtags(languageCode: 'en').languageCode, 'en'); + expect(const Locale.fromSubtags(scriptCode: 'Latn').toString(), 'und_Latn'); + expect(const Locale.fromSubtags(scriptCode: 'Latn').scriptCode, 'Latn'); + expect(const Locale.fromSubtags(countryCode: 'US').toString(), 'und_US'); + expect(const Locale.fromSubtags(countryCode: 'US').countryCode, 'US'); + + expect(Locale.fromSubtags(languageCode: 'es', countryCode: '419').toString(), 'es_419'); + expect(Locale.fromSubtags(languageCode: 'es', countryCode: '419').languageCode, 'es'); + expect(Locale.fromSubtags(languageCode: 'es', countryCode: '419').countryCode, '419'); + + expect(Locale.fromSubtags(languageCode: 'zh', scriptCode: 'Hans', countryCode: 'CN').toString(), 'zh_Hans_CN'); + }); + + test('Locale equality', () { + expect(Locale.fromSubtags(languageCode: 'en'), + isNot(Locale.fromSubtags(languageCode: 'en', scriptCode: 'Latn'))); + expect(Locale.fromSubtags(languageCode: 'en').hashCode, + isNot(Locale.fromSubtags(languageCode: 'en', scriptCode: 'Latn').hashCode)); + }); } From 91a019cfd37121aa160b3751651afcb4a81e27cd Mon Sep 17 00:00:00 2001 From: Dan Field Date: Mon, 29 Oct 2018 16:36:28 -0700 Subject: [PATCH 0114/1537] Fix popSystemNavigator (#6691) --- .../darwin/ios/framework/Source/FlutterPlatformPlugin.mm | 2 -- 1 file changed, 2 deletions(-) diff --git a/shell/platform/darwin/ios/framework/Source/FlutterPlatformPlugin.mm b/shell/platform/darwin/ios/framework/Source/FlutterPlatformPlugin.mm index fb52763303e08..71940926f4a3d 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterPlatformPlugin.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterPlatformPlugin.mm @@ -203,12 +203,10 @@ - (void)popSystemNavigator { UIViewController* viewController = [UIApplication sharedApplication].keyWindow.rootViewController; if ([viewController isKindOfClass:[UINavigationController class]]) { [((UINavigationController*)viewController) popViewControllerAnimated:NO]; - [_engine.get() setViewController:nil]; } else { auto engineViewController = static_cast([_engine.get() viewController]); if (engineViewController != viewController) { [engineViewController dismissViewControllerAnimated:NO completion:nil]; - [_engine.get() setViewController:nil]; } } } From 7be0217d6796954694753647b7a757b8e3907f64 Mon Sep 17 00:00:00 2001 From: Gary Qian Date: Mon, 29 Oct 2018 17:27:12 -0700 Subject: [PATCH 0115/1537] Roll back _countryCode assert - breaking change (#6693) * Roll back _countryCode assert - breaking change * Add tests back in --- lib/ui/window.dart | 3 +-- testing/dart/locale_test.dart | 2 ++ 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/ui/window.dart b/lib/ui/window.dart index fff5eb46206bc..57b40bf1cdffa 100644 --- a/lib/ui/window.dart +++ b/lib/ui/window.dart @@ -169,8 +169,7 @@ class Locale { this._countryCode, ]) : assert(_languageCode != null), assert(_languageCode != ''), - scriptCode = null, - assert(_countryCode != ''); + scriptCode = null; /// Creates a new Locale object. /// diff --git a/testing/dart/locale_test.dart b/testing/dart/locale_test.dart index 4613a707510c4..66fd537a72444 100644 --- a/testing/dart/locale_test.dart +++ b/testing/dart/locale_test.dart @@ -12,6 +12,8 @@ void main() { expect(const Locale('en').toString(), 'en'); expect(const Locale('en'), new Locale('en', $null)); expect(const Locale('en').hashCode, new Locale('en', $null).hashCode); + expect(const Locale('en'), isNot(new Locale('en', ''))); + expect(const Locale('en').hashCode, isNot(new Locale('en', '').hashCode)); expect(const Locale('en', 'US').toString(), 'en_US'); expect(const Locale('iw').toString(), 'he'); expect(const Locale('iw', 'DD').toString(), 'he_DE'); From d7e2be279fce77a4e3e64bd79d7caa97969be234 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Mon, 29 Oct 2018 20:59:02 -0400 Subject: [PATCH 0116/1537] Roll src/third_party/skia d48b7a881b24..ca44d5d85895 (3 commits) (#6694) https://skia.googlesource.com/skia.git/+log/d48b7a881b24..ca44d5d85895 Created with: gclient setdep -r src/third_party/skia@ca44d5d85895 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 9b43273cfeb67..2a5cd9880b4b1 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'd48b7a881b24d7ca2e082f440cac11b784b66e4d', + 'skia_revision': 'ca44d5d85895bf470bace7663e02ef945d1f8811', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 45a4f1b65065c..e0309c72fd5de 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 79a3320a5a5d4cc66c99bbec3dee2682 +Signature: caead00e78ca66680aea52e7cd538fd5 UNUSED LICENSES: From ab92772e88bef7cdbb2263e4dc788230d8632de6 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Tue, 30 Oct 2018 00:22:56 -0400 Subject: [PATCH 0117/1537] Roll src/third_party/skia ca44d5d85895..14768f64fba3 (1 commits) (#6695) https://skia.googlesource.com/skia.git/+log/ca44d5d85895..14768f64fba3 Created with: gclient setdep -r src/third_party/skia@14768f64fba3 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 2a5cd9880b4b1..838d2ba0df90d 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'ca44d5d85895bf470bace7663e02ef945d1f8811', + 'skia_revision': '14768f64fba34ab6b7bc0ed853c9cfdb1ab965ca', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index e0309c72fd5de..c3aaa86771860 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: caead00e78ca66680aea52e7cd538fd5 +Signature: 93e33f6abc5b8f626c51438a4c74fabb UNUSED LICENSES: From 3a67757300287bae92ae4482efdc6e5500dbf895 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Tue, 30 Oct 2018 03:46:56 -0400 Subject: [PATCH 0118/1537] Roll src/third_party/skia 14768f64fba3..dde307f14273 (3 commits) (#6697) https://skia.googlesource.com/skia.git/+log/14768f64fba3..dde307f14273 Created with: gclient setdep -r src/third_party/skia@dde307f14273 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 838d2ba0df90d..d128b35ab32e6 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '14768f64fba34ab6b7bc0ed853c9cfdb1ab965ca', + 'skia_revision': 'dde307f14273944120308681fa9748877ae57875', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index c3aaa86771860..3e12f5e0d3292 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 93e33f6abc5b8f626c51438a4c74fabb +Signature: 22a5c30cb3ee74ad174f93c9c41a956a UNUSED LICENSES: From 48f26625d089e5057871e0d9b60e38347d9c266a Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Tue, 30 Oct 2018 07:13:29 -0400 Subject: [PATCH 0119/1537] Roll src/third_party/skia dde307f14273..5785405afa1b (1 commits) (#6698) https://skia.googlesource.com/skia.git/+log/dde307f14273..5785405afa1b Created with: gclient setdep -r src/third_party/skia@5785405afa1b The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index d128b35ab32e6..e75dda39a85c4 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'dde307f14273944120308681fa9748877ae57875', + 'skia_revision': '5785405afa1b3c17678b48be639139f365d8d17f', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 3e12f5e0d3292..761a5f0df5b71 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 22a5c30cb3ee74ad174f93c9c41a956a +Signature: 56518db0f3e50b624295396501e364ef UNUSED LICENSES: From f5d571a060652a9b77f84db058e875e63971b628 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Tue, 30 Oct 2018 10:38:57 -0400 Subject: [PATCH 0120/1537] Roll src/third_party/skia 5785405afa1b..52a715455181 (5 commits) (#6699) https://skia.googlesource.com/skia.git/+log/5785405afa1b..52a715455181 Created with: gclient setdep -r src/third_party/skia@52a715455181 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index e75dda39a85c4..27b1e276991a7 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '5785405afa1b3c17678b48be639139f365d8d17f', + 'skia_revision': '52a715455181a491d895dc4f3bf700c93dda3851', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 761a5f0df5b71..d5d0ee8f67c72 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 56518db0f3e50b624295396501e364ef +Signature: 7cbb84dfa470cc7f298b1185c3b6a29e UNUSED LICENSES: From e56c3b7009625134fc9a689da5e6eedc736acaaf Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Tue, 30 Oct 2018 14:03:57 -0400 Subject: [PATCH 0121/1537] Roll src/third_party/skia 52a715455181..78252fedaab9 (6 commits) (#6700) https://skia.googlesource.com/skia.git/+log/52a715455181..78252fedaab9 Created with: gclient setdep -r src/third_party/skia@78252fedaab9 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/DEPS b/DEPS index 27b1e276991a7..66506ece20e9a 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '52a715455181a491d895dc4f3bf700c93dda3851', + 'skia_revision': '78252fedaab9e644311f5b4b0cb562dd8197ad27', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index d5d0ee8f67c72..0ac06fc79a811 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 7cbb84dfa470cc7f298b1185c3b6a29e +Signature: 704e64d4334e7d077da8202028e3bf0a UNUSED LICENSES: @@ -826,7 +826,6 @@ FILE: ../../../third_party/skia/include/core/SkOverdrawCanvas.h FILE: ../../../third_party/skia/include/core/SkRasterHandleAllocator.h FILE: ../../../third_party/skia/include/core/SkSwizzle.h FILE: ../../../third_party/skia/include/core/SkYUVASizeInfo.h -FILE: ../../../third_party/skia/include/core/SkYUVSizeInfo.h FILE: ../../../third_party/skia/include/effects/SkArithmeticImageFilter.h FILE: ../../../third_party/skia/include/effects/SkOverdrawColorFilter.h FILE: ../../../third_party/skia/include/effects/SkPaintImageFilter.h @@ -1460,7 +1459,7 @@ FILE: ../../../third_party/skia/src/core/SkSurfaceCharacterization.cpp FILE: ../../../third_party/skia/src/core/SkTextBlobPriv.h FILE: ../../../third_party/skia/src/core/SkTypeface_remote.cpp FILE: ../../../third_party/skia/src/core/SkTypeface_remote.h -FILE: ../../../third_party/skia/src/core/SkYUVSizeInfo.cpp +FILE: ../../../third_party/skia/src/core/SkYUVASizeInfo.cpp FILE: ../../../third_party/skia/src/effects/SkOpPE.h FILE: ../../../third_party/skia/src/effects/SkOpPathEffect.cpp FILE: ../../../third_party/skia/src/effects/SkShaderMaskFilter.cpp From d9c2b215abda84e161ce239f38dd018e96b7193f Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Tue, 30 Oct 2018 17:26:57 -0400 Subject: [PATCH 0122/1537] Roll src/third_party/skia 78252fedaab9..4c169456061d (12 commits) (#6701) https://skia.googlesource.com/skia.git/+log/78252fedaab9..4c169456061d Created with: gclient setdep -r src/third_party/skia@4c169456061d The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/DEPS b/DEPS index 66506ece20e9a..b7b9f6fe47f65 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '78252fedaab9e644311f5b4b0cb562dd8197ad27', + 'skia_revision': '4c169456061daf50379cb6990c215bd332c885c6', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 0ac06fc79a811..b11c66aab5d66 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 704e64d4334e7d077da8202028e3bf0a +Signature: 94a5ce9605513ed58d7fe3352102c2aa UNUSED LICENSES: @@ -1297,6 +1297,8 @@ FILE: ../../../third_party/skia/bench/ImageCycleBench.cpp FILE: ../../../third_party/skia/bench/JSONBench.cpp FILE: ../../../third_party/skia/bench/PolyUtilsBench.cpp FILE: ../../../third_party/skia/bench/ShaderMaskFilterBench.cpp +FILE: ../../../third_party/skia/experimental/nima/NimaActor.cpp +FILE: ../../../third_party/skia/experimental/nima/NimaActor.h FILE: ../../../third_party/skia/fuzz/FuzzCommon.cpp FILE: ../../../third_party/skia/fuzz/FuzzPathMeasure.cpp FILE: ../../../third_party/skia/fuzz/FuzzRegionOp.cpp @@ -1393,8 +1395,6 @@ FILE: ../../../third_party/skia/samplecode/SampleCusp.cpp FILE: ../../../third_party/skia/samplecode/SampleFlutterAnimate.cpp FILE: ../../../third_party/skia/samplecode/SampleGlyphTransform.cpp FILE: ../../../third_party/skia/samplecode/SampleNima.cpp -FILE: ../../../third_party/skia/samplecode/SampleNimaActor.cpp -FILE: ../../../third_party/skia/samplecode/SampleNimaActor.h FILE: ../../../third_party/skia/src/android/SkAnimatedImage.cpp FILE: ../../../third_party/skia/src/c/sk_imageinfo.cpp FILE: ../../../third_party/skia/src/codec/SkEncodedInfo.cpp From d8672baaa265af69650dee6e0d9b40767f42effa Mon Sep 17 00:00:00 2001 From: Dan Field Date: Tue, 30 Oct 2018 18:04:18 -0700 Subject: [PATCH 0123/1537] Ensure Simulator publishes mDNS records (#6696) * Ensure Simulator publishes mDNS records on loopback interface. --- .../Source/FlutterObservatoryPublisher.mm | 81 ++++++++++++++++--- 1 file changed, 68 insertions(+), 13 deletions(-) diff --git a/shell/platform/darwin/ios/framework/Source/FlutterObservatoryPublisher.mm b/shell/platform/darwin/ios/framework/Source/FlutterObservatoryPublisher.mm index 495a7c72ac8f3..73490540a61b9 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterObservatoryPublisher.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterObservatoryPublisher.mm @@ -4,6 +4,16 @@ #define FML_USED_ON_EMBEDDER +#import + +// NSNetService works fine on physical devices, but doesn't expose the services to regular mDNS +// queries on the Simulator. We can work around this by using the lower level C API, but that's +// only available from iOS 9.3+/macOS 10.11.4+. +#if TARGET_IPHONE_SIMULATOR +#include // nogncheck +#include // nogncheck +#endif // TARGET_IPHONE_SIMLUATOR + #import "FlutterObservatoryPublisher.h" #include "flutter/fml/logging.h" @@ -26,7 +36,11 @@ @interface FlutterObservatoryPublisher () @end @implementation FlutterObservatoryPublisher { +#if TARGET_IPHONE_SIMULATOR + DNSServiceRef _dnsServiceRef; +#else // TARGET_IPHONE_SIMULATOR fml::scoped_nsobject _netService; +#endif // TARGET_IPHONE_SIMULATOR blink::DartServiceIsolate::CallbackHandle _callbackHandle; std::unique_ptr> _weakFactory; @@ -54,14 +68,29 @@ - (instancetype)init { } - (void)dealloc { +#if TARGET_IPHONE_SIMULATOR + if (_dnsServiceRef) { + DNSServiceRefDeallocate(_dnsServiceRef); + _dnsServiceRef = NULL; + } +#else // TARGET_IPHONE_SIMULATOR [_netService.get() stop]; +#endif // TARGET_IPHONE_SIMULATOR + blink::DartServiceIsolate::RemoveServerStatusCallback(std::move(_callbackHandle)); [super dealloc]; } - (void)publishServiceProtocolPort:(std::string)uri { +#if TARGET_IPHONE_SIMULATOR + if (_dnsServiceRef) { + DNSServiceRefDeallocate(_dnsServiceRef); + _dnsServiceRef = NULL; + } +#else // TARGET_IPHONE_SIMULATOR + [_netService.get() stop]; +#endif // TARGET_IPHONE_SIMULATOR if (uri.empty()) { - [_netService.get() stop]; return; } // uri comes in as something like 'http://127.0.0.1:XXXXX/' where XXXXX is the port @@ -69,28 +98,37 @@ - (void)publishServiceProtocolPort:(std::string)uri { NSURL* url = [[[NSURL alloc] initWithString:[NSString stringWithUTF8String:uri.c_str()]] autorelease]; - // DNS name has to be a max of 63 bytes. Prefer to cut off the app name rather than - // the device hostName. e.g. 'io.flutter.example@someones-iphone', or - // 'ongAppNameBecauseThisCouldHappenAtSomePoint@somelongname-iphone' - NSString* serviceName = [NSString - stringWithFormat:@"%@@%@", - [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleIdentifier"], - [NSProcessInfo processInfo].hostName]; - if ([serviceName length] > 63) { - serviceName = [serviceName substringFromIndex:[serviceName length] - 63]; - } + NSString* serviceName = + [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleIdentifier"]; +#if TARGET_IPHONE_SIMULATOR + DNSServiceFlags flags = kDNSServiceFlagsDefault; + uint32_t interfaceIndex = if_nametoindex("lo0"); + const char* registrationType = "_dartobservatory._tcp"; + const char* domain = "local."; // default domain + uint16_t port = [[url port] intValue]; + + int err = DNSServiceRegister(&_dnsServiceRef, flags, interfaceIndex, [serviceName UTF8String], + registrationType, domain, NULL, htons(port), 0, NULL, + registrationCallback, NULL); + + if (err != 0) { + FML_LOG(ERROR) << "Failed to register observatory port with mDNS."; + } else { + DNSServiceProcessResult(_dnsServiceRef); + } +#else // TARGET_IPHONE_SIMULATOR _netService.reset([[NSNetService alloc] initWithDomain:@"local." type:@"_dartobservatory._tcp." name:serviceName port:[[url port] intValue]]); - [_netService.get() setDelegate:self]; [_netService.get() publish]; +#endif // TARGET_IPHONE_SIMULATOR } - (void)netServiceDidPublish:(NSNetService*)sender { - FML_DLOG(INFO) << "FlutterObservatoryPublisher is ready!"; + FML_LOG(INFO) << "FlutterObservatoryPublisher is ready!"; } - (void)netService:(NSNetService*)sender didNotPublish:(NSDictionary*)errorDict { @@ -98,6 +136,23 @@ - (void)netService:(NSNetService*)sender didNotPublish:(NSDictionary*)errorDict "network settings and relaunch the application."; } +#if TARGET_IPHONE_SIMULATOR +static void DNSSD_API registrationCallback(DNSServiceRef sdRef, + DNSServiceFlags flags, + DNSServiceErrorType errorCode, + const char* name, + const char* regType, + const char* domain, + void* context) { + if (errorCode == kDNSServiceErr_NoError) { + FML_LOG(ERROR) << "FlutterObservatoryPublisher is ready!"; + } else { + FML_LOG(ERROR) << "Could not register as server for FlutterObservatoryPublisher. Check your " + "network settings and relaunch the application."; + } +} +#endif // TARGET_IPHONE_SIMULATOR + #endif // FLUTTER_RUNTIME_MODE != FLUTTER_RUNTIME_MODE_RELEASE && FLUTTER_RUNTIME_MODE != // FLUTTER_RUNTIME_MODE_DYNAMIC_RELEASE From 605ae5d8839e66a0954c0903c87bd23f0d4d2d67 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Tue, 30 Oct 2018 21:38:56 -0400 Subject: [PATCH 0124/1537] Roll src/third_party/skia 4c169456061d..1801b94e85b4 (2 commits) (#6703) https://skia.googlesource.com/skia.git/+log/4c169456061d..1801b94e85b4 Created with: gclient setdep -r src/third_party/skia@1801b94e85b4 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index b7b9f6fe47f65..8dafc2f72331c 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '4c169456061daf50379cb6990c215bd332c885c6', + 'skia_revision': '1801b94e85b4e1239b0ef4dad6226e220cc113f7', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index b11c66aab5d66..1f39813aa737f 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 94a5ce9605513ed58d7fe3352102c2aa +Signature: 9ab6486906f31af3236dcf1a509f7b16 UNUSED LICENSES: From 059876ea9ab06a478161770d01577fed301de80f Mon Sep 17 00:00:00 2001 From: Amir Hardon Date: Tue, 30 Oct 2018 20:16:56 -0700 Subject: [PATCH 0125/1537] Delay embedded UIViews touch events until the framework says so. (#6665) This allows the framework to decide whether and when a touch event sequence arrives to the embedded view. Which gives the framework the ability to manage hit testing and gesture disambiguation for embedded UIViews. We achieve this by wrapping each embedded UIView with another UIView that has a custom UIGestureRecognizer that delays touch events from being delivered, and another UIGestureRecognizer that makes sure to let Flutter know of events that are hit tested to the embedded view. --- .../framework/Source/FlutterPlatformViews.mm | 162 +++++++++++++++++- .../Source/FlutterPlatformViews_Internal.h | 15 +- 2 files changed, 173 insertions(+), 4 deletions(-) diff --git a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm index 48e175ef04e80..6e9895ce07626 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm @@ -10,6 +10,8 @@ #include "flutter/fml/platform/darwin/scoped_nsobject.h" #include "flutter/shell/platform/darwin/ios/framework/Headers/FlutterChannels.h" +#import + namespace shell { FlutterPlatformViewsController::FlutterPlatformViewsController( @@ -30,6 +32,8 @@ OnCreate(call, result); } else if ([[call method] isEqualToString:@"dispose"]) { OnDispose(call, result); + } else if ([[call method] isEqualToString:@"acceptGesture"]) { + OnAcceptGesture(call, result); } else { result(FlutterMethodNotImplemented); } @@ -57,9 +61,10 @@ } // TODO(amirh): decode and pass the creation args. - views_[viewId] = fml::scoped_nsobject([[factory createWithFrame:CGRectZero - viewIdentifier:viewId - arguments:nil] retain]); + FlutterTouchInterceptingView* view = [[[FlutterTouchInterceptingView alloc] + initWithEmbeddedView:[factory createWithFrame:CGRectZero viewIdentifier:viewId arguments:nil] + flutterView:flutter_view_] autorelease]; + views_[viewId] = fml::scoped_nsobject([view retain]); FlutterView* flutter_view = flutter_view_.get(); [flutter_view addSubview:views_[viewId].get()]; @@ -83,6 +88,24 @@ result(nil); } +void FlutterPlatformViewsController::OnAcceptGesture(FlutterMethodCall* call, + FlutterResult& result) { + NSDictionary* args = [call arguments]; + int64_t viewId = [args[@"id"] longLongValue]; + + if (views_[viewId] == nil) { + result([FlutterError errorWithCode:@"unknown_view" + message:@"trying to set gesture state for an unknown view" + details:[NSString stringWithFormat:@"view id: '%lld'", viewId]]); + return; + } + + FlutterTouchInterceptingView* view = views_[viewId].get(); + [view releaseGesture]; + + result(nil); +} + void FlutterPlatformViewsController::RegisterViewFactory( NSObject* factory, NSString* factoryId) { @@ -107,3 +130,136 @@ } } // namespace shell + +// This recognizers delays touch events from being dispatched to the responder chain until it failed +// recognizing a gesture. +// +// We only fail this recognizer when asked to do so by the Flutter framework (which does so by +// invoking an acceptGesture method on the platform_views channel). And this is how we allow the +// Flutter framework to delay or prevent the embedded view from getting a touch sequence. +@interface DelayingGestureRecognizer : UIGestureRecognizer +@end + +// While the DelayingGestureRecognizer is preventing touches from hitting the responder chain +// the touch events are not arriving to the FlutterView (and thus not arriving to the Flutter +// framework). We use this gesture recognizer to dispatch the events directly to the FlutterView +// while during this phase. +// +// If the Flutter framework decides to dispatch events to the embedded view, we fail the +// DelayingGestureRecognizer which sends the events up the responder chain. But since the events +// are handled by the embedded view they are not delivered to the Flutter framework in this phase +// as well. So during this phase as well the ForwardingGestureRecognizer dispatched the events +// directly to the FlutterView. +@interface ForwardingGestureRecognizer : UIGestureRecognizer +- (instancetype)initWithTarget:(id)target flutterView:(UIView*)flutterView; +@end + +@implementation FlutterTouchInterceptingView { + fml::scoped_nsobject _delayingRecognizer; +} +- (instancetype)initWithEmbeddedView:(UIView*)embeddedView flutterView:(UIView*)flutterView { + self = [super initWithFrame:embeddedView.frame]; + if (self) { + self.multipleTouchEnabled = YES; + embeddedView.autoresizingMask = + (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight); + + [self addSubview:embeddedView]; + + ForwardingGestureRecognizer* forwardingRecognizer = + [[[ForwardingGestureRecognizer alloc] initWithTarget:self + flutterView:flutterView] autorelease]; + + _delayingRecognizer.reset([[DelayingGestureRecognizer alloc] initWithTarget:self action:nil]); + + [self addGestureRecognizer:_delayingRecognizer.get()]; + [self addGestureRecognizer:forwardingRecognizer]; + } + return self; +} + +- (void)releaseGesture { + _delayingRecognizer.get().state = UIGestureRecognizerStateFailed; +} +@end + +@implementation DelayingGestureRecognizer +- (instancetype)initWithTarget:(id)target action:(SEL)action { + self = [super initWithTarget:target action:action]; + if (self) { + self.delaysTouchesBegan = YES; + self.delegate = self; + } + return self; +} + +- (BOOL)gestureRecognizer:(UIGestureRecognizer*)gestureRecognizer + shouldBeRequiredToFailByGestureRecognizer:(UIGestureRecognizer*)otherGestureRecognizer { + return otherGestureRecognizer != self; +} + +- (BOOL)gestureRecognizer:(UIGestureRecognizer*)gestureRecognizer + shouldRequireFailureOfGestureRecognizer:(UIGestureRecognizer*)otherGestureRecognizer { + return otherGestureRecognizer == self; +} + +- (void)touchesEnded:(NSSet*)touches withEvent:(UIEvent*)event { + // The gesture has ended, and the delaying gesture recognizer was not failed, we recognize + // the gesture to prevent the touches from being dispatched to the embedded view. + // + // This doesn't work well with gestures that are recognized by the Flutter framework after + // all pointers are up. + // + // TODO(amirh): explore if we can instead set this to recognized when the next touch sequence + // begins, or we can use a framework signal for restarting the recognizers (e.g when the + // gesture arena is resolved). + self.state = UIGestureRecognizerStateRecognized; +} + +- (void)touchesCancelled:(NSSet*)touches withEvent:(UIEvent*)event { + self.state = UIGestureRecognizerStateRecognized; +} +@end + +@implementation ForwardingGestureRecognizer { + // We can't dispatch events to the framework without this back pointer. + // This is a weak reference, the ForwardingGestureRecognizer is owned by the + // FlutterTouchInterceptingView which is strong referenced only by the FlutterView. + // So this is safe as when FlutterView is deallocated the reference to ForwardingGestureRecognizer + // will go away. + UIView* _flutterView; +} + +- (instancetype)initWithTarget:(id)target flutterView:(UIView*)flutterView { + self = [super initWithTarget:target action:nil]; + if (self) { + self.delegate = self; + _flutterView = flutterView; + } + return self; +} + +- (void)touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event { + [_flutterView touchesBegan:touches withEvent:event]; +} + +- (void)touchesMoved:(NSSet*)touches withEvent:(UIEvent*)event { + [_flutterView touchesMoved:touches withEvent:event]; +} + +- (void)touchesEnded:(NSSet*)touches withEvent:(UIEvent*)event { + [_flutterView touchesEnded:touches withEvent:event]; + self.state = UIGestureRecognizerStateRecognized; +} + +- (void)touchesCancelled:(NSSet*)touches withEvent:(UIEvent*)event { + [_flutterView touchesCancelled:touches withEvent:event]; + self.state = UIGestureRecognizerStateRecognized; +} + +- (BOOL)gestureRecognizer:(UIGestureRecognizer*)gestureRecognizer + shouldRecognizeSimultaneouslyWithGestureRecognizer: + (UIGestureRecognizer*)otherGestureRecognizer { + return YES; +} +@end diff --git a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h index 494d1fe5f1c16..e8f7103f1c1db 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h +++ b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h @@ -13,6 +13,18 @@ #include "flutter/shell/platform/darwin/ios/framework/Headers/FlutterChannels.h" #include "flutter/shell/platform/darwin/ios/framework/Headers/FlutterPlatformViews.h" +// A UIView that is used as the parent for embedded UIViews. +// +// This view has 2 roles: +// 1. Delay or prevent touch events from arriving the embedded view. +// 2. Dispatching all events that are hittested to the embedded view to the FlutterView. +@interface FlutterTouchInterceptingView : UIView +- (instancetype)initWithEmbeddedView:(UIView*)embeddedView flutterView:(UIView*)flutterView; + +// Stop delaying any active touch sequence (and let it arrive the embedded view). +- (void)releaseGesture; +@end + namespace shell { class FlutterPlatformViewsController : public flow::ExternalViewEmbedder { @@ -28,11 +40,12 @@ class FlutterPlatformViewsController : public flow::ExternalViewEmbedder { fml::scoped_nsobject channel_; fml::scoped_nsobject flutter_view_; std::map>> factories_; - std::map> views_; + std::map> views_; void OnMethodCall(FlutterMethodCall* call, FlutterResult& result); void OnCreate(FlutterMethodCall* call, FlutterResult& result); void OnDispose(FlutterMethodCall* call, FlutterResult& result); + void OnAcceptGesture(FlutterMethodCall* call, FlutterResult& result); FML_DISALLOW_COPY_AND_ASSIGN(FlutterPlatformViewsController); }; From 635e20498ddfb28d39d449e3d9d3ead67afb2464 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Wed, 31 Oct 2018 01:03:56 -0400 Subject: [PATCH 0126/1537] Roll src/third_party/skia 1801b94e85b4..69a72945dcdd (1 commits) (#6704) https://skia.googlesource.com/skia.git/+log/1801b94e85b4..69a72945dcdd Created with: gclient setdep -r src/third_party/skia@69a72945dcdd The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 8dafc2f72331c..ad67e4d2245d6 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '1801b94e85b4e1239b0ef4dad6226e220cc113f7', + 'skia_revision': '69a72945dcdd4c96094a23be950b7f552d97fb89', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 1f39813aa737f..362c707357e6c 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 9ab6486906f31af3236dcf1a509f7b16 +Signature: c5150ed2df45d0791ccfa8c29d4e42b7 UNUSED LICENSES: From 54882ef8649b3e1fc18189d6f84401b586cd9a99 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Wed, 31 Oct 2018 04:29:57 -0400 Subject: [PATCH 0127/1537] Roll src/third_party/skia 69a72945dcdd..4d8f48db9ef5 (1 commits) (#6705) https://skia.googlesource.com/skia.git/+log/69a72945dcdd..4d8f48db9ef5 Created with: gclient setdep -r src/third_party/skia@4d8f48db9ef5 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index ad67e4d2245d6..777032777bf34 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '69a72945dcdd4c96094a23be950b7f552d97fb89', + 'skia_revision': '4d8f48db9ef51f5386a57f7a805fd6fc76bf4675', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 362c707357e6c..0ff8c9321abd7 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: c5150ed2df45d0791ccfa8c29d4e42b7 +Signature: a5b2e098e42275ab9b29c471a8436842 UNUSED LICENSES: From 67ba69717c23d491ae9bc47ef4aaeb276f9a3d3e Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Wed, 31 Oct 2018 07:55:57 -0400 Subject: [PATCH 0128/1537] Roll src/third_party/skia 4d8f48db9ef5..83d923f38664 (2 commits) (#6706) https://skia.googlesource.com/skia.git/+log/4d8f48db9ef5..83d923f38664 Created with: gclient setdep -r src/third_party/skia@83d923f38664 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 777032777bf34..800a8e5147da2 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '4d8f48db9ef51f5386a57f7a805fd6fc76bf4675', + 'skia_revision': '83d923f38664b0e938cc7c3129615b6f2a9494b1', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 0ff8c9321abd7..1f52151ccc6ec 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: a5b2e098e42275ab9b29c471a8436842 +Signature: de9aafdc100024586bae0cfef1390b68 UNUSED LICENSES: From 552fae60ca4c99043b0ebf7899724c6de8f67d19 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Wed, 31 Oct 2018 11:19:58 -0400 Subject: [PATCH 0129/1537] Roll src/third_party/skia 83d923f38664..9985a27c06ad (2 commits) (#6707) https://skia.googlesource.com/skia.git/+log/83d923f38664..9985a27c06ad Created with: gclient setdep -r src/third_party/skia@9985a27c06ad The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 800a8e5147da2..d7692589d96ef 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '83d923f38664b0e938cc7c3129615b6f2a9494b1', + 'skia_revision': '9985a27c06ad56c02cb4d71cf89c198aca89d0ad', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 1f52151ccc6ec..ed9eba38a68c6 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: de9aafdc100024586bae0cfef1390b68 +Signature: 264da6c34d83b2ee0220a52d5144fb14 UNUSED LICENSES: From a27d2f2bc41392f38f93a1c25acef6f3c781761b Mon Sep 17 00:00:00 2001 From: liyuqian Date: Wed, 31 Oct 2018 10:51:13 -0700 Subject: [PATCH 0130/1537] Check needs_painting in RasterCache::Prepare (#6708) Otherwise, this may trigger `FML_DCHECK(needs_painting())`. We haven't caused crashes for our users because it probably requires a locally debug engine build to trigger the assert. --- flow/raster_cache.cc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/flow/raster_cache.cc b/flow/raster_cache.cc index 017b907e161f7..d20c65df5b1ff 100644 --- a/flow/raster_cache.cc +++ b/flow/raster_cache.cc @@ -164,7 +164,9 @@ void RasterCache::Prepare(PrerollContext* context, context->texture_registry, context->raster_cache, context->checkerboard_offscreen_layers}; - layer->Paint(paintContext); + if (layer->needs_painting()) { + layer->Paint(paintContext); + } }); } } From d34cb1757de2c6f4328e9803dd989ad428dda634 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Wed, 31 Oct 2018 14:44:57 -0400 Subject: [PATCH 0131/1537] Roll src/third_party/skia 9985a27c06ad..348a03729796 (15 commits) (#6710) https://skia.googlesource.com/skia.git/+log/9985a27c06ad..348a03729796 Created with: gclient setdep -r src/third_party/skia@348a03729796 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index d7692589d96ef..d83e819c7e266 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '9985a27c06ad56c02cb4d71cf89c198aca89d0ad', + 'skia_revision': '348a03729796ffa8b4f6142bbe90d408fc900f0f', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index ed9eba38a68c6..4514fc0f39e7e 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 264da6c34d83b2ee0220a52d5144fb14 +Signature: 43e922594cb33489e05c7330203bda50 UNUSED LICENSES: @@ -1329,6 +1329,7 @@ FILE: ../../../third_party/skia/gm/shadermaskfilter.cpp FILE: ../../../third_party/skia/gm/sharedcorners.cpp FILE: ../../../third_party/skia/gm/skinning.cpp FILE: ../../../third_party/skia/gm/trickycubicstrokes.cpp +FILE: ../../../third_party/skia/gm/unpremul.cpp FILE: ../../../third_party/skia/gm/wacky_yuv_formats.cpp FILE: ../../../third_party/skia/include/android/SkAnimatedImage.h FILE: ../../../third_party/skia/include/c/sk_colorspace.h From 92944f72fb4ea63fefb598efa79bef5aa8ca3f26 Mon Sep 17 00:00:00 2001 From: Amir Hardon Date: Wed, 31 Oct 2018 13:02:44 -0700 Subject: [PATCH 0132/1537] Move FlutterPlatformViewsController into FlutterEngine. (#6709) This PR breaks PlatformViewsController's construction dependency on FlutterView, which allows making FlutterEngine its owner instead of FlutterViewController. Also renamed the FlutterScreenshotDelegate to FlutterViewEngineDelegate which is FlutterView's delegate to the engine, and expanded it to provide a view embedder. --- .../ios/framework/Source/FlutterEngine.mm | 34 ++++++++++++------- .../framework/Source/FlutterEngine_Internal.h | 5 ++- .../framework/Source/FlutterPlatformViews.mm | 24 ++++++------- .../Source/FlutterPlatformViews_Internal.h | 11 +++--- .../darwin/ios/framework/Source/FlutterView.h | 8 +++-- .../ios/framework/Source/FlutterView.mm | 30 ++++------------ .../framework/Source/FlutterViewController.mm | 9 ++--- .../Source/FlutterViewController_Internal.h | 2 -- shell/platform/darwin/ios/ios_surface.h | 2 -- shell/platform/darwin/ios/ios_surface_gl.h | 4 +-- shell/platform/darwin/ios/ios_surface_gl.mm | 6 ++-- .../darwin/ios/ios_surface_software.h | 4 +-- .../darwin/ios/ios_surface_software.mm | 6 ++-- 13 files changed, 68 insertions(+), 77 deletions(-) diff --git a/shell/platform/darwin/ios/framework/Source/FlutterEngine.mm b/shell/platform/darwin/ios/framework/Source/FlutterEngine.mm index ef82e14e5f813..79c4d0b40845a 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterEngine.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterEngine.mm @@ -44,12 +44,15 @@ @implementation FlutterEngine { fml::WeakPtr _viewController; fml::scoped_nsobject _publisher; + std::unique_ptr _platformViewsController; + // Channels fml::scoped_nsobject _platformPlugin; fml::scoped_nsobject _textInputPlugin; fml::scoped_nsobject _localizationChannel; fml::scoped_nsobject _navigationChannel; fml::scoped_nsobject _platformChannel; + fml::scoped_nsobject _platformViewsChannel; fml::scoped_nsobject _textInputChannel; fml::scoped_nsobject _lifecycleChannel; fml::scoped_nsobject _systemChannel; @@ -73,6 +76,7 @@ - (instancetype)initWithName:(NSString*)labelPrefix project:(FlutterDartProject* _pluginPublications = [NSMutableDictionary new]; _publisher.reset([[FlutterObservatoryPublisher alloc] init]); + _platformViewsController.reset(new shell::FlutterPlatformViewsController()); [self setupChannels]; @@ -143,6 +147,9 @@ - (FlutterViewController*)viewController { - (FlutterPlatformPlugin*)platformPlugin { return _platformPlugin.get(); } +- (shell::FlutterPlatformViewsController*)platformViewsController { + return _platformViewsController.get(); +} - (FlutterTextInputPlugin*)textInputPlugin { return _textInputPlugin.get(); } @@ -184,6 +191,11 @@ - (void)setupChannels { binaryMessenger:self codec:[FlutterJSONMethodCodec sharedInstance]]); + _platformViewsChannel.reset([[FlutterMethodChannel alloc] + initWithName:@"flutter/platform_views" + binaryMessenger:self + codec:[FlutterStandardMethodCodec sharedInstance]]); + _textInputChannel.reset([[FlutterMethodChannel alloc] initWithName:@"flutter/textinput" binaryMessenger:self @@ -218,6 +230,11 @@ - (void)maybeSetupPlatformViewChannels { [_platformPlugin.get() handleMethodCall:call result:result]; }]; + [_platformViewsChannel.get() + setMethodCallHandler:^(FlutterMethodCall* call, FlutterResult result) { + _platformViewsController->OnMethodCall(call, result); + }]; + [_textInputChannel.get() setMethodCallHandler:^(FlutterMethodCall* call, FlutterResult result) { [_textInputPlugin.get() handleMethodCall:call result:result]; }]; @@ -379,6 +396,10 @@ - (void)performAction:(FlutterTextInputAction)action withClient:(int)client { return _shell->Screenshot(type, base64Encode); } +- (flow::ExternalViewEmbedder*)externalViewEmbedder { + return _platformViewsController.get(); +} + #pragma mark - FlutterBinaryMessenger - (void)sendOnChannel:(NSString*)channel message:(NSData*)message { @@ -514,18 +535,7 @@ - (NSString*)lookupKeyForAsset:(NSString*)asset fromPackage:(NSString*)package { - (void)registerViewFactory:(NSObject*)factory withId:(NSString*)factoryId { - // TODO(amirh/dnfield): this shouldn't need to fail - PlatformViewsController should be - // independent. Dev builds of engine should just fail here. We don't want to fail in release mode - // because this shouldn't ordinarily happen. - FML_DCHECK([_flutterEngine viewController]) - << "Cannot register a view factory on a headless engine."; - if ([_flutterEngine viewController]) { - [[_flutterEngine viewController] platformViewsController]->RegisterViewFactory(factory, - factoryId); - } else { - // Shouldn't ordinarily happen, but at least give warning if it does. - FML_LOG(ERROR) << "Cannot register a view factory on a headless engine."; - } + [_flutterEngine platformViewsController] -> RegisterViewFactory(factory, factoryId); } @end diff --git a/shell/platform/darwin/ios/framework/Source/FlutterEngine_Internal.h b/shell/platform/darwin/ios/framework/Source/FlutterEngine_Internal.h index 5162f9c3ce078..86d1fc736eb32 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterEngine_Internal.h +++ b/shell/platform/darwin/ios/framework/Source/FlutterEngine_Internal.h @@ -7,6 +7,8 @@ #import "flutter/shell/platform/darwin/ios/framework/Headers/FlutterEngine.h" +#import "FlutterPlatformViews_Internal.h" + #include "flutter/fml/memory/weak_ptr.h" #include "flutter/fml/task_runner.h" #include "flutter/lib/ui/window/pointer_data_packet.h" @@ -22,7 +24,7 @@ #include "flutter/shell/platform/darwin/ios/framework/Headers/FlutterEngine.h" -@interface FlutterEngine () +@interface FlutterEngine () - (shell::Shell&)shell; @@ -37,6 +39,7 @@ base64Encode:(bool)base64Encode; - (FlutterPlatformPlugin*)platformPlugin; +- (shell::FlutterPlatformViewsController*)platformViewsController; - (FlutterTextInputPlugin*)textInputPlugin; - (void)launchEngine:(NSString*)entrypoint libraryURI:(NSString*)libraryOrNil; diff --git a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm index 6e9895ce07626..cbca478380bd9 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm @@ -14,17 +14,8 @@ namespace shell { -FlutterPlatformViewsController::FlutterPlatformViewsController( - NSObject* messenger, - FlutterView* flutter_view) - : flutter_view_([flutter_view retain]) { - channel_.reset([[FlutterMethodChannel alloc] - initWithName:@"flutter/platform_views" - binaryMessenger:messenger - codec:[FlutterStandardMethodCodec sharedInstance]]); - [channel_.get() setMethodCallHandler:^(FlutterMethodCall* call, FlutterResult result) { - OnMethodCall(call, result); - }]; +void FlutterPlatformViewsController::SetFlutterView(UIView* flutter_view) { + flutter_view_.reset(flutter_view); } void FlutterPlatformViewsController::OnMethodCall(FlutterMethodCall* call, FlutterResult& result) { @@ -40,6 +31,15 @@ } void FlutterPlatformViewsController::OnCreate(FlutterMethodCall* call, FlutterResult& result) { + if (!flutter_view_.get()) { + // Right now we assume we have a reference to FlutterView when creating a new view. + // TODO(amirh): support this by setting the refernce to FlutterView when it becomes available. + // https://github.com/flutter/flutter/issues/23787 + result([FlutterError errorWithCode:@"create_failed" + message:@"can't create a view on a headless engine" + details:nil]); + return; + } NSDictionary* args = [call arguments]; long viewId = [args[@"id"] longValue]; @@ -66,7 +66,7 @@ flutterView:flutter_view_] autorelease]; views_[viewId] = fml::scoped_nsobject([view retain]); - FlutterView* flutter_view = flutter_view_.get(); + UIView* flutter_view = flutter_view_.get(); [flutter_view addSubview:views_[viewId].get()]; result(nil); } diff --git a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h index e8f7103f1c1db..d52d59bf12d1f 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h +++ b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h @@ -5,7 +5,6 @@ #ifndef FLUTTER_SHELL_PLATFORM_DARWIN_IOS_FRAMEWORK_SOURCE_FLUTTERPLATFORMVIEWS_INTERNAL_H_ #define FLUTTER_SHELL_PLATFORM_DARWIN_IOS_FRAMEWORK_SOURCE_FLUTTERPLATFORMVIEWS_INTERNAL_H_ -#include "FlutterView.h" #include "flutter/flow/embedded_views.h" #include "flutter/fml/platform/darwin/scoped_nsobject.h" #include "flutter/shell/common/shell.h" @@ -29,20 +28,22 @@ namespace shell { class FlutterPlatformViewsController : public flow::ExternalViewEmbedder { public: - FlutterPlatformViewsController(NSObject* messenger, - FlutterView* flutter_view); + FlutterPlatformViewsController() = default; + + void SetFlutterView(UIView* flutter_view); void RegisterViewFactory(NSObject* factory, NSString* factoryId); void CompositeEmbeddedView(int view_id, const flow::EmbeddedViewParams& params); + void OnMethodCall(FlutterMethodCall* call, FlutterResult& result); + private: fml::scoped_nsobject channel_; - fml::scoped_nsobject flutter_view_; + fml::scoped_nsobject flutter_view_; std::map>> factories_; std::map> views_; - void OnMethodCall(FlutterMethodCall* call, FlutterResult& result); void OnCreate(FlutterMethodCall* call, FlutterResult& result); void OnDispose(FlutterMethodCall* call, FlutterResult& result); void OnAcceptGesture(FlutterMethodCall* call, FlutterResult& result); diff --git a/shell/platform/darwin/ios/framework/Source/FlutterView.h b/shell/platform/darwin/ios/framework/Source/FlutterView.h index 8b4bb5a010217..87402b6a2e64d 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterView.h +++ b/shell/platform/darwin/ios/framework/Source/FlutterView.h @@ -9,16 +9,20 @@ #include +#import "FlutterPlatformViews_Internal.h" + #include "flutter/flow/embedded_views.h" #include "flutter/fml/memory/weak_ptr.h" #include "flutter/shell/common/shell.h" #include "flutter/shell/platform/darwin/ios/ios_surface.h" -@protocol FlutterScreenshotDelegate +@protocol FlutterViewEngineDelegate - (shell::Rasterizer::Screenshot)takeScreenshot:(shell::Rasterizer::ScreenshotType)type asBase64Encoded:(BOOL)base64Encode; +- (flow::ExternalViewEmbedder*)externalViewEmbedder; + @end @interface FlutterView : UIView @@ -27,7 +31,7 @@ - (instancetype)initWithFrame:(CGRect)frame NS_UNAVAILABLE; - (instancetype)initWithCoder:(NSCoder*)aDecoder NS_UNAVAILABLE; -- (instancetype)initWithDelegate:(id)delegate +- (instancetype)initWithDelegate:(id)delegate opaque:(BOOL)opaque NS_DESIGNATED_INITIALIZER; - (std::unique_ptr)createSurface; diff --git a/shell/platform/darwin/ios/framework/Source/FlutterView.mm b/shell/platform/darwin/ios/framework/Source/FlutterView.mm index 60e51501d55ed..a6fb0449baa90 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterView.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterView.mm @@ -23,7 +23,7 @@ @interface FlutterView () @implementation FlutterView -id _delegate; +id _delegate; - (instancetype)init { @throw([NSException exceptionWithName:@"FlutterView must initWithDelegate" @@ -43,7 +43,7 @@ - (instancetype)initWithCoder:(NSCoder*)aDecoder { userInfo:nil]); } -- (instancetype)initWithDelegate:(id)delegate opaque:(BOOL)opaque { +- (instancetype)initWithDelegate:(id)delegate opaque:(BOOL)opaque { FML_DCHECK(delegate) << "Delegate must not be nil."; self = [super initWithFrame:CGRectNull]; @@ -55,23 +55,6 @@ - (instancetype)initWithDelegate:(id)delegate opaque: return self; } -- (FlutterViewController*)flutterViewController { - // Find the first view controller in the responder chain and see if it is a FlutterViewController. - for (UIResponder* responder = self.nextResponder; responder != nil; - responder = responder.nextResponder) { - if ([responder isKindOfClass:[UIViewController class]]) { - if ([responder isKindOfClass:[FlutterViewController class]]) { - return reinterpret_cast(responder); - } else { - // Should only happen if a non-FlutterViewController tries to somehow (via dynamic class - // resolution or reparenting) set a FlutterView as its view. - return nil; - } - } - } - return nil; -} - - (void)layoutSubviews { if ([self.layer isKindOfClass:[CAEAGLLayer class]]) { CAEAGLLayer* layer = reinterpret_cast(self.layer); @@ -93,16 +76,15 @@ + (Class)layerClass { } - (std::unique_ptr)createSurface { - ::shell::GetExternalViewEmbedder get_view_embedder = [[^() { - return [[self flutterViewController] viewEmbedder]; - } copy] autorelease]; if ([self.layer isKindOfClass:[CAEAGLLayer class]]) { fml::scoped_nsobject eagl_layer( reinterpret_cast([self.layer retain])); - return std::make_unique(std::move(eagl_layer), get_view_embedder); + return std::make_unique(std::move(eagl_layer), + *[_delegate externalViewEmbedder]); } else { fml::scoped_nsobject layer(reinterpret_cast([self.layer retain])); - return std::make_unique(std::move(layer), get_view_embedder); + return std::make_unique(std::move(layer), + *[_delegate externalViewEmbedder]); } } diff --git a/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm b/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm index 31c91871f88f0..9c160cef29034 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm @@ -113,8 +113,6 @@ - (void)performCommonViewControllerInitialization { _statusBarStyle = UIStatusBarStyleDefault; [self setupNotificationCenterObservers]; - _platformViewsController.reset( - new shell::FlutterPlatformViewsController(_engine.get(), _flutterView.get())); } - (fml::scoped_nsobject)engine { @@ -125,10 +123,6 @@ - (void)performCommonViewControllerInitialization { return _weakFactory->GetWeakPtr(); } -- (flow::ExternalViewEmbedder*)viewEmbedder { - return _platformViewsController.get(); -} - - (void)setupNotificationCenterObservers { NSNotificationCenter* center = [NSNotificationCenter defaultCenter]; [center addObserver:self @@ -364,10 +358,11 @@ - (void)surfaceUpdated:(BOOL)appeared { // NotifyCreated/NotifyDestroyed are synchronous and require hops between the UI and GPU thread. if (appeared) { [self installSplashScreenViewCallback]; + [_engine.get() platformViewsController] -> SetFlutterView(_flutterView.get()); [_engine.get() platformView] -> NotifyCreated(); - } else { [_engine.get() platformView] -> NotifyDestroyed(); + [_engine.get() platformViewsController] -> SetFlutterView(nullptr); } } diff --git a/shell/platform/darwin/ios/framework/Source/FlutterViewController_Internal.h b/shell/platform/darwin/ios/framework/Source/FlutterViewController_Internal.h index 38c2c9040dd33..79288b396f1d2 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterViewController_Internal.h +++ b/shell/platform/darwin/ios/framework/Source/FlutterViewController_Internal.h @@ -19,8 +19,6 @@ @property(readonly) fml::scoped_nsobject engine; -- (flow::ExternalViewEmbedder*)viewEmbedder; - @end #endif // FLUTTER_SHELL_PLATFORM_DARWIN_IOS_FRAMEWORK_SOURCE_FLUTTERVIEWCONTROLLER_INTERNAL_H_ diff --git a/shell/platform/darwin/ios/ios_surface.h b/shell/platform/darwin/ios/ios_surface.h index c756aae4fba08..8011905db4d68 100644 --- a/shell/platform/darwin/ios/ios_surface.h +++ b/shell/platform/darwin/ios/ios_surface.h @@ -13,8 +13,6 @@ namespace shell { -typedef flow::ExternalViewEmbedder* (^GetExternalViewEmbedder)(void); - class IOSSurface { public: IOSSurface(); diff --git a/shell/platform/darwin/ios/ios_surface_gl.h b/shell/platform/darwin/ios/ios_surface_gl.h index b7b604adb86f7..2c4146a9094b4 100644 --- a/shell/platform/darwin/ios/ios_surface_gl.h +++ b/shell/platform/darwin/ios/ios_surface_gl.h @@ -18,7 +18,7 @@ namespace shell { class IOSSurfaceGL : public IOSSurface, public GPUSurfaceGLDelegate { public: IOSSurfaceGL(fml::scoped_nsobject layer, - ::shell::GetExternalViewEmbedder get_view_embedder); + flow::ExternalViewEmbedder& external_view_embedder); ~IOSSurfaceGL() override; @@ -46,7 +46,7 @@ class IOSSurfaceGL : public IOSSurface, public GPUSurfaceGLDelegate { private: IOSGLContext context_; - fml::scoped_nsprotocol<::shell::GetExternalViewEmbedder> get_view_embedder_; + flow::ExternalViewEmbedder& external_view_embedder_; FML_DISALLOW_COPY_AND_ASSIGN(IOSSurfaceGL); }; diff --git a/shell/platform/darwin/ios/ios_surface_gl.mm b/shell/platform/darwin/ios/ios_surface_gl.mm index e834e352afec0..954e50239fa16 100644 --- a/shell/platform/darwin/ios/ios_surface_gl.mm +++ b/shell/platform/darwin/ios/ios_surface_gl.mm @@ -10,8 +10,8 @@ namespace shell { IOSSurfaceGL::IOSSurfaceGL(fml::scoped_nsobject layer, - ::shell::GetExternalViewEmbedder get_view_embedder) - : context_(std::move(layer)), get_view_embedder_([get_view_embedder retain]) {} + flow::ExternalViewEmbedder& view_embedder) + : context_(std::move(layer)), external_view_embedder_(view_embedder) {} IOSSurfaceGL::~IOSSurfaceGL() = default; @@ -59,7 +59,7 @@ } flow::ExternalViewEmbedder* IOSSurfaceGL::GetExternalViewEmbedder() { - return get_view_embedder_.get()(); + return &external_view_embedder_; } } // namespace shell diff --git a/shell/platform/darwin/ios/ios_surface_software.h b/shell/platform/darwin/ios/ios_surface_software.h index d0d9ce4049e8a..86eaa16ee210b 100644 --- a/shell/platform/darwin/ios/ios_surface_software.h +++ b/shell/platform/darwin/ios/ios_surface_software.h @@ -17,7 +17,7 @@ namespace shell { class IOSSurfaceSoftware final : public IOSSurface, public GPUSurfaceSoftwareDelegate { public: IOSSurfaceSoftware(fml::scoped_nsobject layer, - ::shell::GetExternalViewEmbedder get_view_embedder); + flow::ExternalViewEmbedder& view_embedder); ~IOSSurfaceSoftware() override; @@ -44,7 +44,7 @@ class IOSSurfaceSoftware final : public IOSSurface, public GPUSurfaceSoftwareDel private: fml::scoped_nsobject layer_; - fml::scoped_nsprotocol<::shell::GetExternalViewEmbedder> get_view_embedder_; + flow::ExternalViewEmbedder& external_view_embedder_; sk_sp sk_surface_; FML_DISALLOW_COPY_AND_ASSIGN(IOSSurfaceSoftware); diff --git a/shell/platform/darwin/ios/ios_surface_software.mm b/shell/platform/darwin/ios/ios_surface_software.mm index c79ce8215f7bc..cb4768a168a2e 100644 --- a/shell/platform/darwin/ios/ios_surface_software.mm +++ b/shell/platform/darwin/ios/ios_surface_software.mm @@ -16,8 +16,8 @@ namespace shell { IOSSurfaceSoftware::IOSSurfaceSoftware(fml::scoped_nsobject layer, - ::shell::GetExternalViewEmbedder get_view_embedder) - : layer_(std::move(layer)), get_view_embedder_([get_view_embedder retain]) { + flow::ExternalViewEmbedder& view_embedder) + : layer_(std::move(layer)), external_view_embedder_(view_embedder) { UpdateStorageSizeIfNecessary(); } @@ -127,7 +127,7 @@ } flow::ExternalViewEmbedder* IOSSurfaceSoftware::GetExternalViewEmbedder() { - return get_view_embedder_.get()(); + return &external_view_embedder_; } } // namespace shell From 0ec3b7d437d4190614a406de03bd27f45da32ed5 Mon Sep 17 00:00:00 2001 From: Amir Hardon Date: Wed, 31 Oct 2018 14:56:59 -0700 Subject: [PATCH 0133/1537] Apply changes to the embedded UIView tree when presenting a frame (#6712) Also tracks the order of embedded views from frame to frame, and only removes and reattaches subviews if there is a structural change to the UIView hierarchy. --- .../ios/framework/Source/FlutterEngine.mm | 4 --- .../framework/Source/FlutterPlatformViews.mm | 29 +++++++++++++++++-- .../Source/FlutterPlatformViews_Internal.h | 11 ++++++- .../darwin/ios/framework/Source/FlutterView.h | 3 +- .../ios/framework/Source/FlutterView.mm | 4 +-- shell/platform/darwin/ios/ios_surface.h | 10 ++++++- shell/platform/darwin/ios/ios_surface.mm | 6 +++- shell/platform/darwin/ios/ios_surface_gl.h | 11 ++++--- shell/platform/darwin/ios/ios_surface_gl.mm | 17 ++++++++--- .../darwin/ios/ios_surface_software.h | 11 +++++-- .../darwin/ios/ios_surface_software.mm | 12 ++++++-- 11 files changed, 91 insertions(+), 27 deletions(-) diff --git a/shell/platform/darwin/ios/framework/Source/FlutterEngine.mm b/shell/platform/darwin/ios/framework/Source/FlutterEngine.mm index 79c4d0b40845a..edc7df58cb950 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterEngine.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterEngine.mm @@ -396,10 +396,6 @@ - (void)performAction:(FlutterTextInputAction)action withClient:(int)client { return _shell->Screenshot(type, base64Encode); } -- (flow::ExternalViewEmbedder*)externalViewEmbedder { - return _platformViewsController.get(); -} - #pragma mark - FlutterBinaryMessenger - (void)sendOnChannel:(NSString*)channel message:(NSData*)message { diff --git a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm index cbca478380bd9..0f26dd93e7e28 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm @@ -66,8 +66,6 @@ flutterView:flutter_view_] autorelease]; views_[viewId] = fml::scoped_nsobject([view retain]); - UIView* flutter_view = flutter_view_.get(); - [flutter_view addSubview:views_[viewId].get()]; result(nil); } @@ -127,6 +125,33 @@ UIView* view = views_[view_id]; [view setFrame:rect]; + composition_order_.push_back(view_id); +} + +void FlutterPlatformViewsController::Present() { + if (composition_order_ == active_composition_order_) { + composition_order_.clear(); + return; + } + UIView* flutter_view = flutter_view_.get(); + + // This can be more efficient, instead of removing all views and then re-attaching them, + // we should only remove the views that has been completly removed from the layer tree, and + // reorder the views using UIView's bringSubviewToFront. + // TODO(amirh): make this more efficient. + // https://github.com/flutter/flutter/issues/23793 + for (UIView* sub_view in [flutter_view subviews]) { + [sub_view removeFromSuperview]; + } + + active_composition_order_.clear(); + for (size_t i = 0; i < composition_order_.size(); i++) { + int view_id = composition_order_[i]; + [flutter_view addSubview:views_[view_id].get()]; + active_composition_order_.push_back(view_id); + } + + composition_order_.clear(); } } // namespace shell diff --git a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h index d52d59bf12d1f..3a749a11d0d3f 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h +++ b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h @@ -26,7 +26,7 @@ namespace shell { -class FlutterPlatformViewsController : public flow::ExternalViewEmbedder { +class FlutterPlatformViewsController { public: FlutterPlatformViewsController() = default; @@ -36,6 +36,8 @@ class FlutterPlatformViewsController : public flow::ExternalViewEmbedder { void CompositeEmbeddedView(int view_id, const flow::EmbeddedViewParams& params); + void Present(); + void OnMethodCall(FlutterMethodCall* call, FlutterResult& result); private: @@ -44,6 +46,13 @@ class FlutterPlatformViewsController : public flow::ExternalViewEmbedder { std::map>> factories_; std::map> views_; + // A vector of embedded view IDs according to their composition order. + // The last ID in this vector belond to the that is composited on top of all others. + std::vector composition_order_; + + // The latest composition order that was presented in Present(). + std::vector active_composition_order_; + void OnCreate(FlutterMethodCall* call, FlutterResult& result); void OnDispose(FlutterMethodCall* call, FlutterResult& result); void OnAcceptGesture(FlutterMethodCall* call, FlutterResult& result); diff --git a/shell/platform/darwin/ios/framework/Source/FlutterView.h b/shell/platform/darwin/ios/framework/Source/FlutterView.h index 87402b6a2e64d..b070e25eace0e 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterView.h +++ b/shell/platform/darwin/ios/framework/Source/FlutterView.h @@ -11,7 +11,6 @@ #import "FlutterPlatformViews_Internal.h" -#include "flutter/flow/embedded_views.h" #include "flutter/fml/memory/weak_ptr.h" #include "flutter/shell/common/shell.h" #include "flutter/shell/platform/darwin/ios/ios_surface.h" @@ -21,7 +20,7 @@ - (shell::Rasterizer::Screenshot)takeScreenshot:(shell::Rasterizer::ScreenshotType)type asBase64Encoded:(BOOL)base64Encode; -- (flow::ExternalViewEmbedder*)externalViewEmbedder; +- (shell::FlutterPlatformViewsController*)platformViewsController; @end diff --git a/shell/platform/darwin/ios/framework/Source/FlutterView.mm b/shell/platform/darwin/ios/framework/Source/FlutterView.mm index a6fb0449baa90..3909f6367ee2e 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterView.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterView.mm @@ -80,11 +80,11 @@ + (Class)layerClass { fml::scoped_nsobject eagl_layer( reinterpret_cast([self.layer retain])); return std::make_unique(std::move(eagl_layer), - *[_delegate externalViewEmbedder]); + *[_delegate platformViewsController]); } else { fml::scoped_nsobject layer(reinterpret_cast([self.layer retain])); return std::make_unique(std::move(layer), - *[_delegate externalViewEmbedder]); + *[_delegate platformViewsController]); } } diff --git a/shell/platform/darwin/ios/ios_surface.h b/shell/platform/darwin/ios/ios_surface.h index 8011905db4d68..f0f835e684342 100644 --- a/shell/platform/darwin/ios/ios_surface.h +++ b/shell/platform/darwin/ios/ios_surface.h @@ -5,6 +5,8 @@ #ifndef FLUTTER_SHELL_PLATFORM_DARWIN_IOS_IOS_SURFACE_H_ #define FLUTTER_SHELL_PLATFORM_DARWIN_IOS_IOS_SURFACE_H_ +#import "flutter/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h" + #include #include "flutter/fml/macros.h" @@ -15,7 +17,7 @@ namespace shell { class IOSSurface { public: - IOSSurface(); + IOSSurface(FlutterPlatformViewsController& platform_views_controller); virtual ~IOSSurface(); @@ -27,6 +29,12 @@ class IOSSurface { virtual std::unique_ptr CreateGPUSurface() = 0; + protected: + FlutterPlatformViewsController& GetPlatformViewsController(); + + private: + FlutterPlatformViewsController& platform_views_controller_; + public: FML_DISALLOW_COPY_AND_ASSIGN(IOSSurface); }; diff --git a/shell/platform/darwin/ios/ios_surface.mm b/shell/platform/darwin/ios/ios_surface.mm index b3fe77bb38462..1a62e70e59b15 100644 --- a/shell/platform/darwin/ios/ios_surface.mm +++ b/shell/platform/darwin/ios/ios_surface.mm @@ -11,8 +11,12 @@ namespace shell { -IOSSurface::IOSSurface() = default; +IOSSurface::IOSSurface(FlutterPlatformViewsController& platform_views_controller) + : platform_views_controller_(platform_views_controller) {} IOSSurface::~IOSSurface() = default; +FlutterPlatformViewsController& IOSSurface::GetPlatformViewsController() { + return platform_views_controller_; +} } // namespace shell diff --git a/shell/platform/darwin/ios/ios_surface_gl.h b/shell/platform/darwin/ios/ios_surface_gl.h index 2c4146a9094b4..a2765890eb3bd 100644 --- a/shell/platform/darwin/ios/ios_surface_gl.h +++ b/shell/platform/darwin/ios/ios_surface_gl.h @@ -15,10 +15,12 @@ namespace shell { -class IOSSurfaceGL : public IOSSurface, public GPUSurfaceGLDelegate { +class IOSSurfaceGL : public IOSSurface, + public GPUSurfaceGLDelegate, + public flow::ExternalViewEmbedder { public: IOSSurfaceGL(fml::scoped_nsobject layer, - flow::ExternalViewEmbedder& external_view_embedder); + FlutterPlatformViewsController& platform_views_controller); ~IOSSurfaceGL() override; @@ -43,11 +45,12 @@ class IOSSurfaceGL : public IOSSurface, public GPUSurfaceGLDelegate { // |shell::GPUSurfaceGLDelegate| flow::ExternalViewEmbedder* GetExternalViewEmbedder() override; + // |flow::ExternalViewEmbedder| + void CompositeEmbeddedView(int view_id, const flow::EmbeddedViewParams& params) override; + private: IOSGLContext context_; - flow::ExternalViewEmbedder& external_view_embedder_; - FML_DISALLOW_COPY_AND_ASSIGN(IOSSurfaceGL); }; diff --git a/shell/platform/darwin/ios/ios_surface_gl.mm b/shell/platform/darwin/ios/ios_surface_gl.mm index 954e50239fa16..b65015e4d56d1 100644 --- a/shell/platform/darwin/ios/ios_surface_gl.mm +++ b/shell/platform/darwin/ios/ios_surface_gl.mm @@ -10,8 +10,8 @@ namespace shell { IOSSurfaceGL::IOSSurfaceGL(fml::scoped_nsobject layer, - flow::ExternalViewEmbedder& view_embedder) - : context_(std::move(layer)), external_view_embedder_(view_embedder) {} + FlutterPlatformViewsController& platform_views_controller) + : IOSSurface(platform_views_controller), context_(std::move(layer)) {} IOSSurfaceGL::~IOSSurfaceGL() = default; @@ -55,11 +55,20 @@ bool IOSSurfaceGL::GLContextPresent() { TRACE_EVENT0("flutter", "IOSSurfaceGL::GLContextPresent"); - return IsValid() ? context_.PresentRenderBuffer() : false; + if (!IsValid() || !context_.PresentRenderBuffer()) { + return false; + } + + GetPlatformViewsController().Present(); + return true; } flow::ExternalViewEmbedder* IOSSurfaceGL::GetExternalViewEmbedder() { - return &external_view_embedder_; + return this; +} + +void IOSSurfaceGL::CompositeEmbeddedView(int view_id, const flow::EmbeddedViewParams& params) { + GetPlatformViewsController().CompositeEmbeddedView(view_id, params); } } // namespace shell diff --git a/shell/platform/darwin/ios/ios_surface_software.h b/shell/platform/darwin/ios/ios_surface_software.h index 86eaa16ee210b..6abfeecf0b17c 100644 --- a/shell/platform/darwin/ios/ios_surface_software.h +++ b/shell/platform/darwin/ios/ios_surface_software.h @@ -5,6 +5,7 @@ #ifndef FLUTTER_SHELL_PLATFORM_DARWIN_IOS_IOS_SURFACE_SOFTWARE_H_ #define FLUTTER_SHELL_PLATFORM_DARWIN_IOS_IOS_SURFACE_SOFTWARE_H_ +#include "flutter/flow/embedded_views.h" #include "flutter/fml/macros.h" #include "flutter/fml/platform/darwin/scoped_nsobject.h" #include "flutter/shell/gpu/gpu_surface_software.h" @@ -14,10 +15,12 @@ namespace shell { -class IOSSurfaceSoftware final : public IOSSurface, public GPUSurfaceSoftwareDelegate { +class IOSSurfaceSoftware final : public IOSSurface, + public GPUSurfaceSoftwareDelegate, + public flow::ExternalViewEmbedder { public: IOSSurfaceSoftware(fml::scoped_nsobject layer, - flow::ExternalViewEmbedder& view_embedder); + FlutterPlatformViewsController& platform_views_controller); ~IOSSurfaceSoftware() override; @@ -42,9 +45,11 @@ class IOSSurfaceSoftware final : public IOSSurface, public GPUSurfaceSoftwareDel // |shell::GPUSurfaceSoftwareDelegate| flow::ExternalViewEmbedder* GetExternalViewEmbedder() override; + // |flow::ExternalViewEmbedder| + void CompositeEmbeddedView(int view_id, const flow::EmbeddedViewParams& params) override; + private: fml::scoped_nsobject layer_; - flow::ExternalViewEmbedder& external_view_embedder_; sk_sp sk_surface_; FML_DISALLOW_COPY_AND_ASSIGN(IOSSurfaceSoftware); diff --git a/shell/platform/darwin/ios/ios_surface_software.mm b/shell/platform/darwin/ios/ios_surface_software.mm index cb4768a168a2e..2c561b78c397b 100644 --- a/shell/platform/darwin/ios/ios_surface_software.mm +++ b/shell/platform/darwin/ios/ios_surface_software.mm @@ -16,8 +16,8 @@ namespace shell { IOSSurfaceSoftware::IOSSurfaceSoftware(fml::scoped_nsobject layer, - flow::ExternalViewEmbedder& view_embedder) - : layer_(std::move(layer)), external_view_embedder_(view_embedder) { + FlutterPlatformViewsController& platform_views_controller) + : IOSSurface(platform_views_controller), layer_(std::move(layer)) { UpdateStorageSizeIfNecessary(); } @@ -123,11 +123,17 @@ layer_.get().contents = reinterpret_cast(static_cast(pixmap_image)); + GetPlatformViewsController().Present(); + return true; } flow::ExternalViewEmbedder* IOSSurfaceSoftware::GetExternalViewEmbedder() { - return &external_view_embedder_; + return this; +} +void IOSSurfaceSoftware::CompositeEmbeddedView(int view_id, + const flow::EmbeddedViewParams& params) { + GetPlatformViewsController().CompositeEmbeddedView(view_id, params); } } // namespace shell From 467ff33aa5be12f19fb370ad38c69459f3a070dc Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Wed, 31 Oct 2018 18:09:06 -0400 Subject: [PATCH 0134/1537] Roll src/third_party/skia 348a03729796..d7a7586b0d2f (12 commits) (#6714) https://skia.googlesource.com/skia.git/+log/348a03729796..d7a7586b0d2f Created with: gclient setdep -r src/third_party/skia@d7a7586b0d2f The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index d83e819c7e266..370e244c5ef84 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '348a03729796ffa8b4f6142bbe90d408fc900f0f', + 'skia_revision': 'd7a7586b0d2f2ea7b5dd059d9d75882bd6e1ab66', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 4514fc0f39e7e..ef2084dc961c3 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 43e922594cb33489e05c7330203bda50 +Signature: 00ad569670247d7e162511459ff04747 UNUSED LICENSES: From c79faed71c663ea4a0ee83a8207ac5474001f7e8 Mon Sep 17 00:00:00 2001 From: Amir Hardon Date: Wed, 31 Oct 2018 16:15:42 -0700 Subject: [PATCH 0135/1537] Decode UIView's creation parameters and pass them to the view factory. (#6715) --- .../framework/Source/FlutterPlatformViews.mm | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm index 0f26dd93e7e28..2f4cefa84d5d0 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm @@ -60,10 +60,21 @@ return; } - // TODO(amirh): decode and pass the creation args. - FlutterTouchInterceptingView* view = [[[FlutterTouchInterceptingView alloc] - initWithEmbeddedView:[factory createWithFrame:CGRectZero viewIdentifier:viewId arguments:nil] - flutterView:flutter_view_] autorelease]; + id params = nil; + if ([factory respondsToSelector:@selector(createArgsCodec)]) { + NSObject* codec = [factory createArgsCodec]; + if (codec != nil && args[@"params"] != nil) { + FlutterStandardTypedData* paramsData = args[@"params"]; + params = [codec decode:paramsData.data]; + } + } + + UIView* embedded_view = [factory createWithFrame:CGRectZero + viewIdentifier:viewId + arguments:params]; + FlutterTouchInterceptingView* view = + [[[FlutterTouchInterceptingView alloc] initWithEmbeddedView:embedded_view + flutterView:flutter_view_] autorelease]; views_[viewId] = fml::scoped_nsobject([view retain]); result(nil); From 1b0d26a92d65a0bc7740d6ccfe82e7bc13c0d591 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Wed, 31 Oct 2018 22:17:56 -0400 Subject: [PATCH 0136/1537] Roll src/third_party/skia d7a7586b0d2f..628f0a57d102 (1 commits) (#6718) https://skia.googlesource.com/skia.git/+log/d7a7586b0d2f..628f0a57d102 Created with: gclient setdep -r src/third_party/skia@628f0a57d102 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 370e244c5ef84..b091f636ea754 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'd7a7586b0d2f2ea7b5dd059d9d75882bd6e1ab66', + 'skia_revision': '628f0a57d1023e69c4efd7e9c97d1fd47d7f33dd', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index ef2084dc961c3..3dc54a6136532 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 00ad569670247d7e162511459ff04747 +Signature: 7c8c9149794c5f73c624cad8d88b5a05 UNUSED LICENSES: From b9726c240e6a1f434ede9f62d600264e2be447a1 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Thu, 1 Nov 2018 01:43:28 -0400 Subject: [PATCH 0137/1537] Roll src/third_party/skia 628f0a57d102..1ae419b62b2b (2 commits) (#6720) https://skia.googlesource.com/skia.git/+log/628f0a57d102..1ae419b62b2b Created with: gclient setdep -r src/third_party/skia@1ae419b62b2b The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index b091f636ea754..1098a2ba64b3a 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '628f0a57d1023e69c4efd7e9c97d1fd47d7f33dd', + 'skia_revision': '1ae419b62b2b03abd24896f50402dff46a44a686', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 3dc54a6136532..be1d9b2cc98cb 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 7c8c9149794c5f73c624cad8d88b5a05 +Signature: 07cd66f74ce188c090abe97de38eb0c9 UNUSED LICENSES: From 28514b524bc32ef8c5cd59c06ed269926fdf609d Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Thu, 1 Nov 2018 05:08:56 -0400 Subject: [PATCH 0138/1537] Roll src/third_party/skia 1ae419b62b2b..e008d6feb2d0 (1 commits) (#6721) https://skia.googlesource.com/skia.git/+log/1ae419b62b2b..e008d6feb2d0 Created with: gclient setdep -r src/third_party/skia@e008d6feb2d0 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 1098a2ba64b3a..4b36d000f490b 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '1ae419b62b2b03abd24896f50402dff46a44a686', + 'skia_revision': 'e008d6feb2d0f72715015af9a9cc1278c97d72c8', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index be1d9b2cc98cb..f45d3b5464102 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 07cd66f74ce188c090abe97de38eb0c9 +Signature: afc240c37818f128e23c35be0109de72 UNUSED LICENSES: From e91e4db7e03d98b935b522f88a83abf34555f128 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Thu, 1 Nov 2018 08:25:56 -0400 Subject: [PATCH 0139/1537] Roll src/third_party/skia e008d6feb2d0..763fc966993d (1 commits) (#6722) https://skia.googlesource.com/skia.git/+log/e008d6feb2d0..763fc966993d Created with: gclient setdep -r src/third_party/skia@763fc966993d The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index 4b36d000f490b..08f3248ac821e 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'e008d6feb2d0f72715015af9a9cc1278c97d72c8', + 'skia_revision': '763fc966993d712445994e53104c5be42976883b', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the From 60d4d582f3774318a729bad54d575f459e308cfe Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Thu, 1 Nov 2018 10:10:08 -0400 Subject: [PATCH 0140/1537] Roll src/third_party/skia 763fc966993d..3bdaa46bff71 (2 commits) (#6723) https://skia.googlesource.com/skia.git/+log/763fc966993d..3bdaa46bff71 Created with: gclient setdep -r src/third_party/skia@3bdaa46bff71 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 08f3248ac821e..9f0a73ef96581 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '763fc966993d712445994e53104c5be42976883b', + 'skia_revision': '3bdaa46bff71b839c806c0955417b1abaae650b0', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index f45d3b5464102..dcd5a2a33881c 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: afc240c37818f128e23c35be0109de72 +Signature: afbf0d759f28d54e5330141c7e2d83b2 UNUSED LICENSES: From d06ace699f5b42af6cb9fad4003082041d8218b3 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Thu, 1 Nov 2018 13:30:37 -0400 Subject: [PATCH 0141/1537] Roll src/third_party/skia 3bdaa46bff71..f1eda00bf6b0 (11 commits) (#6724) https://skia.googlesource.com/skia.git/+log/3bdaa46bff71..f1eda00bf6b0 Created with: gclient setdep -r src/third_party/skia@f1eda00bf6b0 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 9f0a73ef96581..9b2ee88019fab 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '3bdaa46bff71b839c806c0955417b1abaae650b0', + 'skia_revision': 'f1eda00bf6b065c094f0f1a8c50858a4d9eece3c', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index dcd5a2a33881c..a9883f49392d0 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: afbf0d759f28d54e5330141c7e2d83b2 +Signature: 929189be3a5aad5a99abcd1cc4de9686 UNUSED LICENSES: From fbb7893a08200ac481b94e32daaccc1a387c993a Mon Sep 17 00:00:00 2001 From: Ryan Macnak Date: Thu, 1 Nov 2018 12:29:29 -0700 Subject: [PATCH 0142/1537] Report asset names in loading trace events. (#6713) --- assets/asset_manager.cc | 3 ++- assets/zip_asset_store.cc | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/assets/asset_manager.cc b/assets/asset_manager.cc index 31b4db4230b4f..516148a2dd818 100644 --- a/assets/asset_manager.cc +++ b/assets/asset_manager.cc @@ -35,7 +35,8 @@ std::unique_ptr AssetManager::GetAsMapping( if (asset_name.size() == 0) { return nullptr; } - TRACE_EVENT0("flutter", "AssetManager::GetAsMapping"); + TRACE_EVENT1("flutter", "AssetManager::GetAsMapping", "name", + asset_name.c_str()); for (const auto& resolver : resolvers_) { auto mapping = resolver->GetAsMapping(asset_name); if (mapping != nullptr) { diff --git a/assets/zip_asset_store.cc b/assets/zip_asset_store.cc index 7823f6e594396..8ceec57975429 100644 --- a/assets/zip_asset_store.cc +++ b/assets/zip_asset_store.cc @@ -41,7 +41,8 @@ bool ZipAssetStore::IsValid() const { // |blink::AssetResolver| std::unique_ptr ZipAssetStore::GetAsMapping( const std::string& asset_name) const { - TRACE_EVENT0("flutter", "ZipAssetStore::GetAsMapping"); + TRACE_EVENT1("flutter", "ZipAssetStore::GetAsMapping", "name", + asset_name.c_str()); auto found = stat_cache_.find(asset_name); if (found == stat_cache_.end()) { From f3fcb8f01f02ddaaab7ee7418eb33399f5ac3903 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Thu, 1 Nov 2018 16:56:37 -0400 Subject: [PATCH 0143/1537] Roll src/third_party/skia f1eda00bf6b0..e978ca297965 (10 commits) (#6725) https://skia.googlesource.com/skia.git/+log/f1eda00bf6b0..e978ca297965 Created with: gclient setdep -r src/third_party/skia@e978ca297965 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 6 +----- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/DEPS b/DEPS index 9b2ee88019fab..4100db72e285c 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'f1eda00bf6b065c094f0f1a8c50858a4d9eece3c', + 'skia_revision': 'e978ca297965d5252a31754e487de40efaf77680', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index a9883f49392d0..44be88613387e 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 929189be3a5aad5a99abcd1cc4de9686 +Signature: e759b8e148139332baf94462d9fbc791 UNUSED LICENSES: @@ -2224,8 +2224,6 @@ FILE: ../../../third_party/skia/infra/bots/recipes/perf.expected/Perf-Mac-Clang- FILE: ../../../third_party/skia/infra/bots/recipes/perf.expected/Perf-Mac-Clang-MacMini7.1-GPU-IntelIris5100-x86_64-Release-All-CommandBuffer.json FILE: ../../../third_party/skia/infra/bots/recipes/perf.expected/Perf-Ubuntu17-GCC-Golo-GPU-QuadroP400-x86_64-Release-All-Valgrind_AbandonGpuContext_SK_CPU_LIMIT_SSE41.json FILE: ../../../third_party/skia/infra/bots/recipes/perf.expected/Perf-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Release-All-ANGLE.json -FILE: ../../../third_party/skia/infra/bots/recipes/perf.expected/Perf-Win10-Clang-NUC6i5SYK-GPU-IntelIris540-x86_64-Release-All-ANGLE.json -FILE: ../../../third_party/skia/infra/bots/recipes/perf.expected/Perf-Win10-Clang-NUC6i5SYK-GPU-IntelIris540-x86_64-Release-All-Vulkan.json FILE: ../../../third_party/skia/infra/bots/recipes/perf.expected/Perf-iOS-Clang-iPadPro-GPU-PowerVRGT7800-arm64-Release-All.json FILE: ../../../third_party/skia/infra/bots/recipes/perf.expected/trybot.json FILE: ../../../third_party/skia/infra/bots/recipes/perf_canvaskit.expected/Perf-Debian9-EMCC-GCE-CPU-AVX2-wasm-Release-All-CanvasKit.json @@ -2283,8 +2281,6 @@ FILE: ../../../third_party/skia/infra/bots/recipes/test.expected/Test-Win10-Clan FILE: ../../../third_party/skia/infra/bots/recipes/test.expected/Test-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Release-All-ReleaseAndAbandonGpuContext.json FILE: ../../../third_party/skia/infra/bots/recipes/test.expected/Test-Win10-Clang-NUC5i7RYH-CPU-AVX2-x86_64-Debug-All-NativeFonts_GDI.json FILE: ../../../third_party/skia/infra/bots/recipes/test.expected/Test-Win10-Clang-NUC5i7RYH-GPU-IntelIris6100-x86_64-Release-All-ANGLE.json -FILE: ../../../third_party/skia/infra/bots/recipes/test.expected/Test-Win10-Clang-NUC6i5SYK-GPU-IntelIris540-x86_64-Debug-All-ANGLE.json -FILE: ../../../third_party/skia/infra/bots/recipes/test.expected/Test-Win10-Clang-NUC6i5SYK-GPU-IntelIris540-x86_64-Debug-All-Vulkan.json FILE: ../../../third_party/skia/infra/bots/recipes/test.expected/Test-Win10-Clang-NUCD34010WYKH-GPU-IntelHD4400-x86_64-Release-All-ANGLE.json FILE: ../../../third_party/skia/infra/bots/recipes/test.expected/Test-Win10-Clang-ShuttleA-GPU-GTX660-x86_64-Release-All-Vulkan.json FILE: ../../../third_party/skia/infra/bots/recipes/test.expected/Test-Win10-Clang-ShuttleC-GPU-GTX960-x86_64-Debug-All-ANGLE.json From c57d29ab6146dd727ce09b8a693fc73f00c83314 Mon Sep 17 00:00:00 2001 From: Maxim Mazurok Date: Thu, 1 Nov 2018 15:15:18 -0700 Subject: [PATCH 0144/1537] Fixed typo (#6717) In comments, replaced `...using using...` with just `...using...` --- examples/hello_flutter/lib/main.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/hello_flutter/lib/main.dart b/examples/hello_flutter/lib/main.dart index 3de5584342897..c4df603234711 100644 --- a/examples/hello_flutter/lib/main.dart +++ b/examples/hello_flutter/lib/main.dart @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// This example shows how to show the text 'Hello, world.' using using the raw +// This example shows how to show the text 'Hello, world.' using the raw // interface to the engine. import 'dart:ui' as ui; From 1360556694727f5163b508924ee0471bea834dde Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Thu, 1 Nov 2018 20:21:37 -0400 Subject: [PATCH 0145/1537] Roll src/third_party/skia e978ca297965..94d7af7bcc96 (5 commits) (#6727) https://skia.googlesource.com/skia.git/+log/e978ca297965..94d7af7bcc96 Created with: gclient setdep -r src/third_party/skia@94d7af7bcc96 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 4100db72e285c..a1134651ab729 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'e978ca297965d5252a31754e487de40efaf77680', + 'skia_revision': '94d7af7bcc961468c986dabccdf49d111945ef53', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 44be88613387e..48a335b3f6c7d 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: e759b8e148139332baf94462d9fbc791 +Signature: a552018bb1a2b378dfc3e1408766db6c UNUSED LICENSES: From 9e1f546a85486e40f5bf49d09e621ef3cd631a49 Mon Sep 17 00:00:00 2001 From: Amir Hardon Date: Thu, 1 Nov 2018 17:45:16 -0700 Subject: [PATCH 0146/1537] Add an overlay surface on top of embedded UIViews. (#6726) The overlay surfaces are going to be the same IOSSurface implementation with the platform views controller set to null (so these are surfaces that don't support embedding platform views to them). * Adds a FlutterOverlayView which is a UIView that's showing an overlay surface. * Creates an overlay surface for each embedded UIView (done in FlutterPlatformViewsController). * Changes CompositeEmbeddedView to return a new canvas. * Makes the PlatformViewLayer replace the PaintContext's canvas with the canvas for the overlay view. * Changed canvas in PaintContext to be a pointer so it can be changed. TBD in following PRs: * Copy the current canvas state when replacing a canvas in PaintContext. * Make FlutterOverlayView work with a GL backend (currently it only works with software rendering) --- ci/licenses_golden/licenses_flutter | 2 + flow/embedded_views.h | 6 +- flow/layers/clip_path_layer.cc | 8 +- flow/layers/clip_rect_layer.cc | 8 +- flow/layers/clip_rrect_layer.cc | 8 +- flow/layers/layer.cc | 8 +- flow/layers/layer.h | 2 +- flow/layers/layer_tree.cc | 4 +- flow/layers/opacity_layer.cc | 12 +-- flow/layers/performance_overlay_layer.cc | 6 +- flow/layers/physical_shape_layer.cc | 18 ++--- flow/layers/picture_layer.cc | 14 ++-- flow/layers/platform_view_layer.cc | 9 ++- flow/layers/shader_mask_layer.cc | 4 +- flow/layers/texture_layer.cc | 2 +- flow/layers/transform_layer.cc | 4 +- flow/raster_cache.cc | 2 +- shell/platform/darwin/ios/BUILD.gn | 2 + .../ios/framework/Source/FlutterOverlayView.h | 28 +++++++ .../framework/Source/FlutterOverlayView.mm | 78 +++++++++++++++++++ .../framework/Source/FlutterPlatformViews.mm | 54 ++++++++++--- .../Source/FlutterPlatformViews_Internal.h | 26 ++++++- .../ios/framework/Source/FlutterView.mm | 4 +- shell/platform/darwin/ios/ios_surface.h | 6 +- shell/platform/darwin/ios/ios_surface.mm | 4 +- shell/platform/darwin/ios/ios_surface_gl.h | 4 +- shell/platform/darwin/ios/ios_surface_gl.mm | 15 ++-- .../darwin/ios/ios_surface_software.h | 4 +- .../darwin/ios/ios_surface_software.mm | 19 +++-- 29 files changed, 272 insertions(+), 89 deletions(-) create mode 100644 shell/platform/darwin/ios/framework/Source/FlutterOverlayView.h create mode 100644 shell/platform/darwin/ios/framework/Source/FlutterOverlayView.mm diff --git a/ci/licenses_golden/licenses_flutter b/ci/licenses_golden/licenses_flutter index e854c429bbde8..fe8900faa21f0 100644 --- a/ci/licenses_golden/licenses_flutter +++ b/ci/licenses_golden/licenses_flutter @@ -597,6 +597,8 @@ FILE: ../../../flutter/shell/platform/darwin/ios/framework/Headers/FlutterPlatfo FILE: ../../../flutter/shell/platform/darwin/ios/framework/Headers/FlutterPluginAppLifeCycleDelegate.h FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterCallbackCache.mm FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterCallbackCache_Internal.h +FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterOverlayView.h +FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterOverlayView.mm FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterPluginAppLifeCycleDelegate.mm FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/accessibility_text_entry.h FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/accessibility_text_entry.mm diff --git a/flow/embedded_views.h b/flow/embedded_views.h index 10740f6d0e23d..a36d941ee3476 100644 --- a/flow/embedded_views.h +++ b/flow/embedded_views.h @@ -6,6 +6,7 @@ #define FLUTTER_FLOW_EMBEDDED_VIEWS_H_ #include "flutter/fml/memory/ref_counted.h" +#include "third_party/skia/include/core/SkCanvas.h" #include "third_party/skia/include/core/SkPoint.h" #include "third_party/skia/include/core/SkSize.h" @@ -15,6 +16,7 @@ class EmbeddedViewParams { public: SkPoint offsetPixels; SkSize sizePoints; + SkISize canvasBaseLayerSize; }; // This is only used on iOS when running in a non headless mode, @@ -25,8 +27,8 @@ class ExternalViewEmbedder { ExternalViewEmbedder() = default; // Must be called on the UI thread. - virtual void CompositeEmbeddedView(int view_id, - const EmbeddedViewParams& params) {} + virtual SkCanvas* CompositeEmbeddedView(int view_id, + const EmbeddedViewParams& params) = 0; virtual ~ExternalViewEmbedder() = default; diff --git a/flow/layers/clip_path_layer.cc b/flow/layers/clip_path_layer.cc index 3c71823c48503..0726d884472b5 100644 --- a/flow/layers/clip_path_layer.cc +++ b/flow/layers/clip_path_layer.cc @@ -50,14 +50,14 @@ void ClipPathLayer::Paint(PaintContext& context) const { TRACE_EVENT0("flutter", "ClipPathLayer::Paint"); FML_DCHECK(needs_painting()); - SkAutoCanvasRestore save(&context.canvas, true); - context.canvas.clipPath(clip_path_, clip_behavior_ != Clip::hardEdge); + SkAutoCanvasRestore save(context.canvas, true); + context.canvas->clipPath(clip_path_, clip_behavior_ != Clip::hardEdge); if (clip_behavior_ == Clip::antiAliasWithSaveLayer) { - context.canvas.saveLayer(paint_bounds(), nullptr); + context.canvas->saveLayer(paint_bounds(), nullptr); } PaintChildren(context); if (clip_behavior_ == Clip::antiAliasWithSaveLayer) { - context.canvas.restore(); + context.canvas->restore(); } } diff --git a/flow/layers/clip_rect_layer.cc b/flow/layers/clip_rect_layer.cc index 733acfcebd072..aabcf5c3e5cfc 100644 --- a/flow/layers/clip_rect_layer.cc +++ b/flow/layers/clip_rect_layer.cc @@ -41,14 +41,14 @@ void ClipRectLayer::Paint(PaintContext& context) const { TRACE_EVENT0("flutter", "ClipRectLayer::Paint"); FML_DCHECK(needs_painting()); - SkAutoCanvasRestore save(&context.canvas, true); - context.canvas.clipRect(paint_bounds(), clip_behavior_ != Clip::hardEdge); + SkAutoCanvasRestore save(context.canvas, true); + context.canvas->clipRect(paint_bounds(), clip_behavior_ != Clip::hardEdge); if (clip_behavior_ == Clip::antiAliasWithSaveLayer) { - context.canvas.saveLayer(paint_bounds(), nullptr); + context.canvas->saveLayer(paint_bounds(), nullptr); } PaintChildren(context); if (clip_behavior_ == Clip::antiAliasWithSaveLayer) { - context.canvas.restore(); + context.canvas->restore(); } } diff --git a/flow/layers/clip_rrect_layer.cc b/flow/layers/clip_rrect_layer.cc index 046a0d45404ef..2434e509d0910 100644 --- a/flow/layers/clip_rrect_layer.cc +++ b/flow/layers/clip_rrect_layer.cc @@ -48,14 +48,14 @@ void ClipRRectLayer::Paint(PaintContext& context) const { TRACE_EVENT0("flutter", "ClipRRectLayer::Paint"); FML_DCHECK(needs_painting()); - SkAutoCanvasRestore save(&context.canvas, true); - context.canvas.clipRRect(clip_rrect_, clip_behavior_ != Clip::hardEdge); + SkAutoCanvasRestore save(context.canvas, true); + context.canvas->clipRRect(clip_rrect_, clip_behavior_ != Clip::hardEdge); if (clip_behavior_ == Clip::antiAliasWithSaveLayer) { - context.canvas.saveLayer(paint_bounds(), nullptr); + context.canvas->saveLayer(paint_bounds(), nullptr); } PaintChildren(context); if (clip_behavior_ == Clip::antiAliasWithSaveLayer) { - context.canvas.restore(); + context.canvas->restore(); } } diff --git a/flow/layers/layer.cc b/flow/layers/layer.cc index c1d91872127ab..e629241d6ce8d 100644 --- a/flow/layers/layer.cc +++ b/flow/layers/layer.cc @@ -26,13 +26,13 @@ Layer::AutoSaveLayer::AutoSaveLayer(const PaintContext& paint_context, const SkRect& bounds, const SkPaint* paint) : paint_context_(paint_context), bounds_(bounds) { - paint_context_.canvas.saveLayer(bounds_, paint); + paint_context_.canvas->saveLayer(bounds_, paint); } Layer::AutoSaveLayer::AutoSaveLayer(const PaintContext& paint_context, const SkCanvas::SaveLayerRec& layer_rec) : paint_context_(paint_context), bounds_(*layer_rec.fBounds) { - paint_context_.canvas.saveLayer(layer_rec); + paint_context_.canvas->saveLayer(layer_rec); } Layer::AutoSaveLayer Layer::AutoSaveLayer::Create( @@ -50,9 +50,9 @@ Layer::AutoSaveLayer Layer::AutoSaveLayer::Create( Layer::AutoSaveLayer::~AutoSaveLayer() { if (paint_context_.checkerboard_offscreen_layers) { - DrawCheckerboard(&paint_context_.canvas, bounds_); + DrawCheckerboard(paint_context_.canvas, bounds_); } - paint_context_.canvas.restore(); + paint_context_.canvas->restore(); } } // namespace flow diff --git a/flow/layers/layer.h b/flow/layers/layer.h index dbd101d6cc9b8..098ae5f789e07 100644 --- a/flow/layers/layer.h +++ b/flow/layers/layer.h @@ -64,7 +64,7 @@ class Layer { virtual void Preroll(PrerollContext* context, const SkMatrix& matrix); struct PaintContext { - SkCanvas& canvas; + SkCanvas* canvas; ExternalViewEmbedder* view_embedder; const Stopwatch& frame_time; const Stopwatch& engine_time; diff --git a/flow/layers/layer_tree.cc b/flow/layers/layer_tree.cc index 6896bb112b6a1..942f5cc9a2060 100644 --- a/flow/layers/layer_tree.cc +++ b/flow/layers/layer_tree.cc @@ -67,7 +67,7 @@ void LayerTree::Paint(CompositorContext::ScopedFrame& frame, bool ignore_raster_cache) const { TRACE_EVENT0("flutter", "LayerTree::Paint"); Layer::PaintContext context = { - *frame.canvas(), + frame.canvas(), frame.view_embedder(), frame.context().frame_time(), frame.context().engine_time(), @@ -107,7 +107,7 @@ sk_sp LayerTree::Flatten(const SkRect& bounds) { }; Layer::PaintContext paint_context = { - *canvas, // canvas + canvas, // canvas nullptr, unused_stopwatch, // frame time (dont care) unused_stopwatch, // engine time (dont care) diff --git a/flow/layers/opacity_layer.cc b/flow/layers/opacity_layer.cc index ebbced6f605a1..7d658b3726e1b 100644 --- a/flow/layers/opacity_layer.cc +++ b/flow/layers/opacity_layer.cc @@ -31,20 +31,20 @@ void OpacityLayer::Paint(PaintContext& context) const { SkPaint paint; paint.setAlpha(alpha_); - SkAutoCanvasRestore save(&context.canvas, true); - context.canvas.translate(offset_.fX, offset_.fY); + SkAutoCanvasRestore save(context.canvas, true); + context.canvas->translate(offset_.fX, offset_.fY); #ifndef SUPPORT_FRACTIONAL_TRANSLATION - context.canvas.setMatrix( - RasterCache::GetIntegralTransCTM(context.canvas.getTotalMatrix())); + context.canvas->setMatrix( + RasterCache::GetIntegralTransCTM(context.canvas->getTotalMatrix())); #endif if (layers().size() == 1 && context.raster_cache) { - const SkMatrix& ctm = context.canvas.getTotalMatrix(); + const SkMatrix& ctm = context.canvas->getTotalMatrix(); RasterCacheResult child_cache = context.raster_cache->Get(layers()[0].get(), ctm); if (child_cache.is_valid()) { - child_cache.draw(context.canvas, &paint); + child_cache.draw(*context.canvas, &paint); return; } } diff --git a/flow/layers/performance_overlay_layer.cc b/flow/layers/performance_overlay_layer.cc index 7d871af33b94f..9e014c57a08e5 100644 --- a/flow/layers/performance_overlay_layer.cc +++ b/flow/layers/performance_overlay_layer.cc @@ -73,14 +73,14 @@ void PerformanceOverlayLayer::Paint(PaintContext& context) const { SkScalar y = paint_bounds().y() + padding; SkScalar width = paint_bounds().width() - (padding * 2); SkScalar height = paint_bounds().height() / 2; - SkAutoCanvasRestore save(&context.canvas, true); + SkAutoCanvasRestore save(context.canvas, true); - VisualizeStopWatch(context.canvas, context.frame_time, x, y, width, + VisualizeStopWatch(*context.canvas, context.frame_time, x, y, width, height - padding, options_ & kVisualizeRasterizerStatistics, options_ & kDisplayRasterizerStatistics, "GPU"); - VisualizeStopWatch(context.canvas, context.engine_time, x, y + height, width, + VisualizeStopWatch(*context.canvas, context.engine_time, x, y + height, width, height - padding, options_ & kVisualizeEngineStatistics, options_ & kDisplayEngineStatistics, "UI"); } diff --git a/flow/layers/physical_shape_layer.cc b/flow/layers/physical_shape_layer.cc index e10caaa56feed..6490413d62bc9 100644 --- a/flow/layers/physical_shape_layer.cc +++ b/flow/layers/physical_shape_layer.cc @@ -83,7 +83,7 @@ void PhysicalShapeLayer::Paint(PaintContext& context) const { FML_DCHECK(needs_painting()); if (elevation_ != 0) { - DrawShadow(&context.canvas, path_, shadow_color_, elevation_, + DrawShadow(context.canvas, path_, shadow_color_, elevation_, SkColorGetA(color_) != 0xff, device_pixel_ratio_); } @@ -91,20 +91,20 @@ void PhysicalShapeLayer::Paint(PaintContext& context) const { SkPaint paint; paint.setColor(color_); if (clip_behavior_ != Clip::antiAliasWithSaveLayer) { - context.canvas.drawPath(path_, paint); + context.canvas->drawPath(path_, paint); } - int saveCount = context.canvas.save(); + int saveCount = context.canvas->save(); switch (clip_behavior_) { case Clip::hardEdge: - context.canvas.clipPath(path_, false); + context.canvas->clipPath(path_, false); break; case Clip::antiAlias: - context.canvas.clipPath(path_, true); + context.canvas->clipPath(path_, true); break; case Clip::antiAliasWithSaveLayer: - context.canvas.clipPath(path_, true); - context.canvas.saveLayer(paint_bounds(), nullptr); + context.canvas->clipPath(path_, true); + context.canvas->saveLayer(paint_bounds(), nullptr); break; case Clip::none: break; @@ -115,12 +115,12 @@ void PhysicalShapeLayer::Paint(PaintContext& context) const { // (https://github.com/flutter/flutter/issues/18057#issue-328003931) // using saveLayer, we have to call drawPaint instead of drawPath as // anti-aliased drawPath will always have such artifacts. - context.canvas.drawPaint(paint); + context.canvas->drawPaint(paint); } PaintChildren(context); - context.canvas.restoreToCount(saveCount); + context.canvas->restoreToCount(saveCount); } void PhysicalShapeLayer::DrawShadow(SkCanvas* canvas, diff --git a/flow/layers/picture_layer.cc b/flow/layers/picture_layer.cc index 9dcef880b7313..412859b689ea9 100644 --- a/flow/layers/picture_layer.cc +++ b/flow/layers/picture_layer.cc @@ -34,22 +34,22 @@ void PictureLayer::Paint(PaintContext& context) const { FML_DCHECK(picture_.get()); FML_DCHECK(needs_painting()); - SkAutoCanvasRestore save(&context.canvas, true); - context.canvas.translate(offset_.x(), offset_.y()); + SkAutoCanvasRestore save(context.canvas, true); + context.canvas->translate(offset_.x(), offset_.y()); #ifndef SUPPORT_FRACTIONAL_TRANSLATION - context.canvas.setMatrix( - RasterCache::GetIntegralTransCTM(context.canvas.getTotalMatrix())); + context.canvas->setMatrix( + RasterCache::GetIntegralTransCTM(context.canvas->getTotalMatrix())); #endif if (context.raster_cache) { - const SkMatrix& ctm = context.canvas.getTotalMatrix(); + const SkMatrix& ctm = context.canvas->getTotalMatrix(); RasterCacheResult result = context.raster_cache->Get(*picture(), ctm); if (result.is_valid()) { - result.draw(context.canvas); + result.draw(*context.canvas); return; } } - context.canvas.drawPicture(picture()); + context.canvas->drawPicture(picture()); } } // namespace flow diff --git a/flow/layers/platform_view_layer.cc b/flow/layers/platform_view_layer.cc index 19057fbfd4b9c..efcddbcc98175 100644 --- a/flow/layers/platform_view_layer.cc +++ b/flow/layers/platform_view_layer.cc @@ -23,11 +23,16 @@ void PlatformViewLayer::Paint(PaintContext& context) const { return; } EmbeddedViewParams params; - SkMatrix transform = context.canvas.getTotalMatrix(); + SkMatrix transform = context.canvas->getTotalMatrix(); params.offsetPixels = SkPoint::Make(transform.getTranslateX(), transform.getTranslateY()); params.sizePoints = size_; + params.canvasBaseLayerSize = context.canvas->getBaseLayerSize(); - context.view_embedder->CompositeEmbeddedView(view_id_, params); + SkCanvas* canvas = + context.view_embedder->CompositeEmbeddedView(view_id_, params); + // TODO(amirh): copy the full canvas state here + canvas->concat(context.canvas->getTotalMatrix()); + context.canvas = canvas; } } // namespace flow diff --git a/flow/layers/shader_mask_layer.cc b/flow/layers/shader_mask_layer.cc index 6cb73bbf64855..f87cce48b89ff 100644 --- a/flow/layers/shader_mask_layer.cc +++ b/flow/layers/shader_mask_layer.cc @@ -21,8 +21,8 @@ void ShaderMaskLayer::Paint(PaintContext& context) const { SkPaint paint; paint.setBlendMode(blend_mode_); paint.setShader(shader_); - context.canvas.translate(mask_rect_.left(), mask_rect_.top()); - context.canvas.drawRect( + context.canvas->translate(mask_rect_.left(), mask_rect_.top()); + context.canvas->drawRect( SkRect::MakeWH(mask_rect_.width(), mask_rect_.height()), paint); } diff --git a/flow/layers/texture_layer.cc b/flow/layers/texture_layer.cc index 52ebdc37dbcab..cb9f63249b73e 100644 --- a/flow/layers/texture_layer.cc +++ b/flow/layers/texture_layer.cc @@ -23,7 +23,7 @@ void TextureLayer::Paint(PaintContext& context) const { if (!texture) { return; } - texture->Paint(context.canvas, paint_bounds(), freeze_); + texture->Paint(*context.canvas, paint_bounds(), freeze_); } } // namespace flow diff --git a/flow/layers/transform_layer.cc b/flow/layers/transform_layer.cc index a70cc299dd9a4..a96e0e27d7560 100644 --- a/flow/layers/transform_layer.cc +++ b/flow/layers/transform_layer.cc @@ -36,8 +36,8 @@ void TransformLayer::Paint(PaintContext& context) const { TRACE_EVENT0("flutter", "TransformLayer::Paint"); FML_DCHECK(needs_painting()); - SkAutoCanvasRestore save(&context.canvas, true); - context.canvas.concat(transform_); + SkAutoCanvasRestore save(context.canvas, true); + context.canvas->concat(transform_); PaintChildren(context); } diff --git a/flow/raster_cache.cc b/flow/raster_cache.cc index d20c65df5b1ff..a92e1285379a7 100644 --- a/flow/raster_cache.cc +++ b/flow/raster_cache.cc @@ -157,7 +157,7 @@ void RasterCache::Prepare(PrerollContext* context, checkerboard_images_, layer->paint_bounds(), [layer, context](SkCanvas* canvas) { Layer::PaintContext paintContext = { - *canvas, + canvas, nullptr, context->frame_time, context->engine_time, diff --git a/shell/platform/darwin/ios/BUILD.gn b/shell/platform/darwin/ios/BUILD.gn index 15a14ad82bea4..80c2e31bd05f0 100644 --- a/shell/platform/darwin/ios/BUILD.gn +++ b/shell/platform/darwin/ios/BUILD.gn @@ -57,6 +57,8 @@ shared_library("create_flutter_framework_dylib") { "framework/Source/FlutterHeadlessDartRunner.mm", "framework/Source/FlutterObservatoryPublisher.h", "framework/Source/FlutterObservatoryPublisher.mm", + "framework/Source/FlutterOverlayView.h", + "framework/Source/FlutterOverlayView.mm", "framework/Source/FlutterPlatformPlugin.h", "framework/Source/FlutterPlatformPlugin.mm", "framework/Source/FlutterPlatformViews_Internal.h", diff --git a/shell/platform/darwin/ios/framework/Source/FlutterOverlayView.h b/shell/platform/darwin/ios/framework/Source/FlutterOverlayView.h new file mode 100644 index 0000000000000..527253fb73648 --- /dev/null +++ b/shell/platform/darwin/ios/framework/Source/FlutterOverlayView.h @@ -0,0 +1,28 @@ +// Copyright 2018 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 SHELL_PLATFORM_IOS_FRAMEWORK_SOURCE_FLUTTER_OVERLAY_VIEW_H_ +#define SHELL_PLATFORM_IOS_FRAMEWORK_SOURCE_FLUTTER_OVERLAY_VIEW_H_ + +#include + +#include + +#import "FlutterPlatformViews_Internal.h" + +#include "flutter/fml/memory/weak_ptr.h" +#include "flutter/shell/common/shell.h" +#include "flutter/shell/platform/darwin/ios/ios_surface.h" + +@interface FlutterOverlayView : UIView + +- (instancetype)initWithFrame:(CGRect)frame NS_UNAVAILABLE; +- (instancetype)initWithCoder:(NSCoder*)aDecoder NS_UNAVAILABLE; + +- (instancetype)init NS_DESIGNATED_INITIALIZER; +- (std::unique_ptr)createSurface; + +@end + +#endif // SHELL_PLATFORM_IOS_FRAMEWORK_SOURCE_FLUTTER_OVERLAY_VIEW_H_ diff --git a/shell/platform/darwin/ios/framework/Source/FlutterOverlayView.mm b/shell/platform/darwin/ios/framework/Source/FlutterOverlayView.mm new file mode 100644 index 0000000000000..9ed7c71ca9d72 --- /dev/null +++ b/shell/platform/darwin/ios/framework/Source/FlutterOverlayView.mm @@ -0,0 +1,78 @@ +// Copyright 2018 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/shell/platform/darwin/ios/framework/Source/FlutterOverlayView.h" + +#include "flutter/common/settings.h" +#include "flutter/common/task_runners.h" +#include "flutter/flow/layers/layer_tree.h" +#include "flutter/fml/platform/darwin/cf_utils.h" +#include "flutter/fml/synchronization/waitable_event.h" +#include "flutter/fml/trace_event.h" +#include "flutter/shell/common/platform_view.h" +#include "flutter/shell/common/rasterizer.h" +#include "flutter/shell/platform/darwin/ios/ios_surface_gl.h" +#include "flutter/shell/platform/darwin/ios/ios_surface_software.h" +#include "third_party/skia/include/utils/mac/SkCGUtils.h" + +// This is mostly a duplication of FlutterView. +// TODO(amirh): once GL support is in evaluate if we can merge this with FlutterView. +@implementation FlutterOverlayView + +- (instancetype)initWithFrame:(CGRect)frame { + @throw([NSException exceptionWithName:@"FlutterOverlayView must initWithDelegate" + reason:nil + userInfo:nil]); +} + +- (instancetype)initWithCoder:(NSCoder*)aDecoder { + @throw([NSException exceptionWithName:@"FlutterOverlayView must initWithDelegate" + reason:nil + userInfo:nil]); +} + +- (instancetype)init { + self = [super initWithFrame:CGRectZero]; + + if (self) { + self.layer.opaque = NO; + self.userInteractionEnabled = NO; + } + + return self; +} + +- (void)layoutSubviews { + if ([self.layer isKindOfClass:[CAEAGLLayer class]]) { + CAEAGLLayer* layer = reinterpret_cast(self.layer); + layer.allowsGroupOpacity = NO; + CGFloat screenScale = [UIScreen mainScreen].scale; + layer.contentsScale = screenScale; + layer.rasterizationScale = screenScale; + } + + [super layoutSubviews]; +} + ++ (Class)layerClass { +#if TARGET_IPHONE_SIMULATOR + return [CALayer class]; +#else // TARGET_IPHONE_SIMULATOR + return [CAEAGLLayer class]; +#endif // TARGET_IPHONE_SIMULATOR +} + +- (std::unique_ptr)createSurface { + if ([self.layer isKindOfClass:[CAEAGLLayer class]]) { + // TODO(amirh): create a GL surface. + return nullptr; + } else { + fml::scoped_nsobject layer(reinterpret_cast([self.layer retain])); + return std::make_unique(std::move(layer), nullptr); + } +} + +// TODO(amirh): implement drawLayer to suppoer snapshotting. + +@end diff --git a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm index 2f4cefa84d5d0..798839fab4d1c 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm @@ -2,6 +2,11 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +#import + +#import "FlutterOverlayView.h" +#import "flutter/shell/platform/darwin/ios/ios_surface.h" + #include #include #include @@ -10,8 +15,6 @@ #include "flutter/fml/platform/darwin/scoped_nsobject.h" #include "flutter/shell/platform/darwin/ios/framework/Headers/FlutterChannels.h" -#import - namespace shell { void FlutterPlatformViewsController::SetFlutterView(UIView* flutter_view) { @@ -45,7 +48,7 @@ long viewId = [args[@"id"] longValue]; std::string viewType([args[@"viewType"] UTF8String]); - if (views_[viewId] != nil) { + if (views_.count(viewId) != 0) { result([FlutterError errorWithCode:@"recreating_view" message:@"trying to create an already created view" details:[NSString stringWithFormat:@"view id: '%ld'", viewId]]); @@ -84,7 +87,7 @@ NSDictionary* args = [call arguments]; int64_t viewId = [args[@"id"] longLongValue]; - if (views_[viewId] == nil) { + if (views_.count(viewId) == 0) { result([FlutterError errorWithCode:@"unknown_view" message:@"trying to dispose an unknown" details:[NSString stringWithFormat:@"view id: '%lld'", viewId]]); @@ -94,6 +97,7 @@ UIView* view = views_[viewId].get(); [view removeFromSuperview]; views_.erase(viewId); + overlays_.erase(viewId); result(nil); } @@ -102,7 +106,7 @@ NSDictionary* args = [call arguments]; int64_t viewId = [args[@"id"] longLongValue]; - if (views_[viewId] == nil) { + if (views_.count(viewId) == 0) { result([FlutterError errorWithCode:@"unknown_view" message:@"trying to set gesture state for an unknown view" details:[NSString stringWithFormat:@"view id: '%lld'", viewId]]); @@ -124,25 +128,39 @@ fml::scoped_nsobject>([factory retain]); } -void FlutterPlatformViewsController::CompositeEmbeddedView(int view_id, - const flow::EmbeddedViewParams& params) { +SkCanvas* FlutterPlatformViewsController::CompositeEmbeddedView( + int view_id, + const flow::EmbeddedViewParams& params, + IOSSurface& ios_surface) { // TODO(amirh): assert that this is running on the platform thread once we support the iOS // embedded views thread configuration. // TODO(amirh): do nothing if the params didn't change. + EnsureOverlayInitialized(view_id); CGFloat screenScale = [[UIScreen mainScreen] scale]; CGRect rect = CGRectMake(params.offsetPixels.x() / screenScale, params.offsetPixels.y() / screenScale, params.sizePoints.width(), params.sizePoints.height()); - UIView* view = views_[view_id]; + UIView* view = views_[view_id].get(); [view setFrame:rect]; composition_order_.push_back(view_id); + + composition_frames_.push_back( + overlays_[view_id]->surface->AcquireFrame(params.canvasBaseLayerSize)); + SkCanvas* canvas = composition_frames_.back()->SkiaCanvas(); + canvas->clear(SK_ColorTRANSPARENT); + return canvas; } -void FlutterPlatformViewsController::Present() { +bool FlutterPlatformViewsController::Present() { + bool did_submit = true; + for (size_t i = 0; i < composition_frames_.size(); i++) { + did_submit &= composition_frames_[i]->Submit(); + } + composition_frames_.clear(); if (composition_order_ == active_composition_order_) { composition_order_.clear(); - return; + return did_submit; } UIView* flutter_view = flutter_view_.get(); @@ -159,10 +177,26 @@ for (size_t i = 0; i < composition_order_.size(); i++) { int view_id = composition_order_[i]; [flutter_view addSubview:views_[view_id].get()]; + [flutter_view addSubview:overlays_[view_id]->overlay_view.get()]; active_composition_order_.push_back(view_id); } composition_order_.clear(); + return did_submit; +} + +void FlutterPlatformViewsController::EnsureOverlayInitialized(int64_t overlay_id) { + if (overlays_.count(overlay_id) != 0) { + return; + } + FlutterOverlayView* overlay_view = [[FlutterOverlayView alloc] init]; + overlay_view.frame = flutter_view_.get().bounds; + overlay_view.autoresizingMask = + (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight); + std::unique_ptr ios_surface = overlay_view.createSurface; + std::unique_ptr surface = ios_surface->CreateGPUSurface(); + overlays_[overlay_id] = std::make_unique( + overlay_view, std::move(ios_surface), std::move(surface)); } } // namespace shell diff --git a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h index 3a749a11d0d3f..92d308c244d43 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h +++ b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h @@ -26,6 +26,21 @@ namespace shell { +class IOSSurface; + +struct FlutterPlatformViewLayer { + FlutterPlatformViewLayer(UIView* overlay_view, + std::unique_ptr ios_surface, + std::unique_ptr surface) + : overlay_view([overlay_view retain]), + ios_surface(std::move(ios_surface)), + surface(std::move(surface)){}; + + fml::scoped_nsobject overlay_view; + std::unique_ptr ios_surface; + std::unique_ptr surface; +}; + class FlutterPlatformViewsController { public: FlutterPlatformViewsController() = default; @@ -34,9 +49,11 @@ class FlutterPlatformViewsController { void RegisterViewFactory(NSObject* factory, NSString* factoryId); - void CompositeEmbeddedView(int view_id, const flow::EmbeddedViewParams& params); + SkCanvas* CompositeEmbeddedView(int view_id, + const flow::EmbeddedViewParams& params, + IOSSurface& surface); - void Present(); + bool Present(); void OnMethodCall(FlutterMethodCall* call, FlutterResult& result); @@ -45,6 +62,7 @@ class FlutterPlatformViewsController { fml::scoped_nsobject flutter_view_; std::map>> factories_; std::map> views_; + std::map> overlays_; // A vector of embedded view IDs according to their composition order. // The last ID in this vector belond to the that is composited on top of all others. @@ -53,10 +71,14 @@ class FlutterPlatformViewsController { // The latest composition order that was presented in Present(). std::vector active_composition_order_; + std::vector> composition_frames_; + void OnCreate(FlutterMethodCall* call, FlutterResult& result); void OnDispose(FlutterMethodCall* call, FlutterResult& result); void OnAcceptGesture(FlutterMethodCall* call, FlutterResult& result); + void EnsureOverlayInitialized(int64_t overlay_id); + FML_DISALLOW_COPY_AND_ASSIGN(FlutterPlatformViewsController); }; diff --git a/shell/platform/darwin/ios/framework/Source/FlutterView.mm b/shell/platform/darwin/ios/framework/Source/FlutterView.mm index 3909f6367ee2e..b64fe4c2488a2 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterView.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterView.mm @@ -80,11 +80,11 @@ + (Class)layerClass { fml::scoped_nsobject eagl_layer( reinterpret_cast([self.layer retain])); return std::make_unique(std::move(eagl_layer), - *[_delegate platformViewsController]); + [_delegate platformViewsController]); } else { fml::scoped_nsobject layer(reinterpret_cast([self.layer retain])); return std::make_unique(std::move(layer), - *[_delegate platformViewsController]); + [_delegate platformViewsController]); } } diff --git a/shell/platform/darwin/ios/ios_surface.h b/shell/platform/darwin/ios/ios_surface.h index f0f835e684342..52711f1e68b6a 100644 --- a/shell/platform/darwin/ios/ios_surface.h +++ b/shell/platform/darwin/ios/ios_surface.h @@ -17,7 +17,7 @@ namespace shell { class IOSSurface { public: - IOSSurface(FlutterPlatformViewsController& platform_views_controller); + IOSSurface(FlutterPlatformViewsController* platform_views_controller); virtual ~IOSSurface(); @@ -30,10 +30,10 @@ class IOSSurface { virtual std::unique_ptr CreateGPUSurface() = 0; protected: - FlutterPlatformViewsController& GetPlatformViewsController(); + FlutterPlatformViewsController* GetPlatformViewsController(); private: - FlutterPlatformViewsController& platform_views_controller_; + FlutterPlatformViewsController* platform_views_controller_; public: FML_DISALLOW_COPY_AND_ASSIGN(IOSSurface); diff --git a/shell/platform/darwin/ios/ios_surface.mm b/shell/platform/darwin/ios/ios_surface.mm index 1a62e70e59b15..ba7bf4f93ed3f 100644 --- a/shell/platform/darwin/ios/ios_surface.mm +++ b/shell/platform/darwin/ios/ios_surface.mm @@ -11,12 +11,12 @@ namespace shell { -IOSSurface::IOSSurface(FlutterPlatformViewsController& platform_views_controller) +IOSSurface::IOSSurface(FlutterPlatformViewsController* platform_views_controller) : platform_views_controller_(platform_views_controller) {} IOSSurface::~IOSSurface() = default; -FlutterPlatformViewsController& IOSSurface::GetPlatformViewsController() { +FlutterPlatformViewsController* IOSSurface::GetPlatformViewsController() { return platform_views_controller_; } } // namespace shell diff --git a/shell/platform/darwin/ios/ios_surface_gl.h b/shell/platform/darwin/ios/ios_surface_gl.h index a2765890eb3bd..a6bcfbdf45d46 100644 --- a/shell/platform/darwin/ios/ios_surface_gl.h +++ b/shell/platform/darwin/ios/ios_surface_gl.h @@ -20,7 +20,7 @@ class IOSSurfaceGL : public IOSSurface, public flow::ExternalViewEmbedder { public: IOSSurfaceGL(fml::scoped_nsobject layer, - FlutterPlatformViewsController& platform_views_controller); + FlutterPlatformViewsController* platform_views_controller); ~IOSSurfaceGL() override; @@ -46,7 +46,7 @@ class IOSSurfaceGL : public IOSSurface, flow::ExternalViewEmbedder* GetExternalViewEmbedder() override; // |flow::ExternalViewEmbedder| - void CompositeEmbeddedView(int view_id, const flow::EmbeddedViewParams& params) override; + SkCanvas* CompositeEmbeddedView(int view_id, const flow::EmbeddedViewParams& params) override; private: IOSGLContext context_; diff --git a/shell/platform/darwin/ios/ios_surface_gl.mm b/shell/platform/darwin/ios/ios_surface_gl.mm index b65015e4d56d1..24f2a3af67c1d 100644 --- a/shell/platform/darwin/ios/ios_surface_gl.mm +++ b/shell/platform/darwin/ios/ios_surface_gl.mm @@ -10,7 +10,7 @@ namespace shell { IOSSurfaceGL::IOSSurfaceGL(fml::scoped_nsobject layer, - FlutterPlatformViewsController& platform_views_controller) + FlutterPlatformViewsController* platform_views_controller) : IOSSurface(platform_views_controller), context_(std::move(layer)) {} IOSSurfaceGL::~IOSSurfaceGL() = default; @@ -59,16 +59,21 @@ return false; } - GetPlatformViewsController().Present(); - return true; + FlutterPlatformViewsController* platform_views_controller = GetPlatformViewsController(); + if (platform_views_controller == nullptr) { + return true; + } + return platform_views_controller->Present(); } flow::ExternalViewEmbedder* IOSSurfaceGL::GetExternalViewEmbedder() { return this; } -void IOSSurfaceGL::CompositeEmbeddedView(int view_id, const flow::EmbeddedViewParams& params) { - GetPlatformViewsController().CompositeEmbeddedView(view_id, params); +SkCanvas* IOSSurfaceGL::CompositeEmbeddedView(int view_id, const flow::EmbeddedViewParams& params) { + FlutterPlatformViewsController* platform_views_controller = GetPlatformViewsController(); + FML_CHECK(platform_views_controller != nullptr); + return platform_views_controller->CompositeEmbeddedView(view_id, params, *this); } } // namespace shell diff --git a/shell/platform/darwin/ios/ios_surface_software.h b/shell/platform/darwin/ios/ios_surface_software.h index 6abfeecf0b17c..2e5da95e2b48f 100644 --- a/shell/platform/darwin/ios/ios_surface_software.h +++ b/shell/platform/darwin/ios/ios_surface_software.h @@ -20,7 +20,7 @@ class IOSSurfaceSoftware final : public IOSSurface, public flow::ExternalViewEmbedder { public: IOSSurfaceSoftware(fml::scoped_nsobject layer, - FlutterPlatformViewsController& platform_views_controller); + FlutterPlatformViewsController* platform_views_controller); ~IOSSurfaceSoftware() override; @@ -46,7 +46,7 @@ class IOSSurfaceSoftware final : public IOSSurface, flow::ExternalViewEmbedder* GetExternalViewEmbedder() override; // |flow::ExternalViewEmbedder| - void CompositeEmbeddedView(int view_id, const flow::EmbeddedViewParams& params) override; + SkCanvas* CompositeEmbeddedView(int view_id, const flow::EmbeddedViewParams& params) override; private: fml::scoped_nsobject layer_; diff --git a/shell/platform/darwin/ios/ios_surface_software.mm b/shell/platform/darwin/ios/ios_surface_software.mm index 2c561b78c397b..a35d806729b83 100644 --- a/shell/platform/darwin/ios/ios_surface_software.mm +++ b/shell/platform/darwin/ios/ios_surface_software.mm @@ -16,7 +16,7 @@ namespace shell { IOSSurfaceSoftware::IOSSurfaceSoftware(fml::scoped_nsobject layer, - FlutterPlatformViewsController& platform_views_controller) + FlutterPlatformViewsController* platform_views_controller) : IOSSurface(platform_views_controller), layer_(std::move(layer)) { UpdateStorageSizeIfNecessary(); } @@ -123,17 +123,22 @@ layer_.get().contents = reinterpret_cast(static_cast(pixmap_image)); - GetPlatformViewsController().Present(); - - return true; + FlutterPlatformViewsController* platform_views_controller = GetPlatformViewsController(); + if (platform_views_controller == nullptr) { + return true; + } + return platform_views_controller->Present(); } flow::ExternalViewEmbedder* IOSSurfaceSoftware::GetExternalViewEmbedder() { return this; } -void IOSSurfaceSoftware::CompositeEmbeddedView(int view_id, - const flow::EmbeddedViewParams& params) { - GetPlatformViewsController().CompositeEmbeddedView(view_id, params); + +SkCanvas* IOSSurfaceSoftware::CompositeEmbeddedView(int view_id, + const flow::EmbeddedViewParams& params) { + FlutterPlatformViewsController* platform_views_controller = GetPlatformViewsController(); + FML_CHECK(platform_views_controller != nullptr); + return platform_views_controller->CompositeEmbeddedView(view_id, params, *this); } } // namespace shell From 10ec1fd6b05a8df7c31a65a01e17fb9d392c49db Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Thu, 1 Nov 2018 23:45:37 -0400 Subject: [PATCH 0147/1537] Roll src/third_party/skia 94d7af7bcc96..26fcd7166c74 (5 commits) (#6729) https://skia.googlesource.com/skia.git/+log/94d7af7bcc96..26fcd7166c74 Created with: gclient setdep -r src/third_party/skia@26fcd7166c74 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index a1134651ab729..4a89d65fcbc34 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '94d7af7bcc961468c986dabccdf49d111945ef53', + 'skia_revision': '26fcd7166c74410862cce0f44d2a6bd484ed4cd3', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 48a335b3f6c7d..583986290506f 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: a552018bb1a2b378dfc3e1408766db6c +Signature: 7af6152a29ce0d49507a532a416835d1 UNUSED LICENSES: From 7618e54477065efaa6fa15810cdb26529cbb9323 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Fri, 2 Nov 2018 03:10:37 -0400 Subject: [PATCH 0148/1537] Roll src/third_party/skia 26fcd7166c74..2dc1e34f9029 (2 commits) (#6730) https://skia.googlesource.com/skia.git/+log/26fcd7166c74..2dc1e34f9029 Created with: gclient setdep -r src/third_party/skia@2dc1e34f9029 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 4a89d65fcbc34..d56a30dd1d3b4 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '26fcd7166c74410862cce0f44d2a6bd484ed4cd3', + 'skia_revision': '2dc1e34f90290c8f8be0bb7b38bcbef1cb95ca7c', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 583986290506f..e35829d1d4dcb 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 7af6152a29ce0d49507a532a416835d1 +Signature: 4da74d284f17887892609a08b03e6393 UNUSED LICENSES: From eacf61efdc9d2ce3465e9607a41fe8d6f32053e0 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Fri, 2 Nov 2018 06:35:37 -0400 Subject: [PATCH 0149/1537] Roll src/third_party/skia 2dc1e34f9029..13853a120d5a (1 commits) (#6731) https://skia.googlesource.com/skia.git/+log/2dc1e34f9029..13853a120d5a Created with: gclient setdep -r src/third_party/skia@13853a120d5a The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index d56a30dd1d3b4..e297c2fc4258a 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '2dc1e34f90290c8f8be0bb7b38bcbef1cb95ca7c', + 'skia_revision': '13853a120d5a4110d98b9d81b4daae92ba6119e2', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index e35829d1d4dcb..b981ae5478e37 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 4da74d284f17887892609a08b03e6393 +Signature: 1e9fe58982473c6d0e1f1a852fdb7d6d UNUSED LICENSES: From 88cb78cdf62ceb206e740853d3afd060bb8d781c Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Fri, 2 Nov 2018 09:59:45 -0400 Subject: [PATCH 0150/1537] Roll src/third_party/skia 13853a120d5a..30edaaac1da4 (1 commits) (#6732) https://skia.googlesource.com/skia.git/+log/13853a120d5a..30edaaac1da4 Created with: gclient setdep -r src/third_party/skia@30edaaac1da4 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index e297c2fc4258a..d96c00e447551 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '13853a120d5a4110d98b9d81b4daae92ba6119e2', + 'skia_revision': '30edaaac1da449ac3a83f15dff5259aee6e05247', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index b981ae5478e37..45b4ce592cf43 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 1e9fe58982473c6d0e1f1a852fdb7d6d +Signature: b7d6a45cc3c766b0d23b3a77b3a99f98 UNUSED LICENSES: From 57c21d4dec8b3d084e7d08ccdfa3dfd5d9d65044 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Fri, 2 Nov 2018 13:42:37 -0400 Subject: [PATCH 0151/1537] Roll src/third_party/skia 30edaaac1da4..3bfe9665aabc (5 commits) (#6735) https://skia.googlesource.com/skia.git/+log/30edaaac1da4..3bfe9665aabc Created with: gclient setdep -r src/third_party/skia@3bfe9665aabc The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index d96c00e447551..056263b521005 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '30edaaac1da449ac3a83f15dff5259aee6e05247', + 'skia_revision': '3bfe9665aabcfa4983da19936a5199f67df21d99', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 45b4ce592cf43..a8b1537d78b9a 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: b7d6a45cc3c766b0d23b3a77b3a99f98 +Signature: 5e00e5ed4bcf74d55663d10ad62a29c6 UNUSED LICENSES: @@ -1299,6 +1299,7 @@ FILE: ../../../third_party/skia/bench/PolyUtilsBench.cpp FILE: ../../../third_party/skia/bench/ShaderMaskFilterBench.cpp FILE: ../../../third_party/skia/experimental/nima/NimaActor.cpp FILE: ../../../third_party/skia/experimental/nima/NimaActor.h +FILE: ../../../third_party/skia/experimental/pvg/draw_msg.proto FILE: ../../../third_party/skia/fuzz/FuzzCommon.cpp FILE: ../../../third_party/skia/fuzz/FuzzPathMeasure.cpp FILE: ../../../third_party/skia/fuzz/FuzzRegionOp.cpp From b5758d0d3848d8ed77308d97734b9a7933c3844f Mon Sep 17 00:00:00 2001 From: Stanislav Baranov Date: Fri, 2 Nov 2018 10:51:35 -0700 Subject: [PATCH 0152/1537] Propagate positions of secondary pointers in UP events on Android (#6716) --- lib/ui/hooks.dart | 5 ++- lib/ui/pointer.dart | 9 ++++- lib/ui/window/pointer_data.cc | 2 +- lib/ui/window/pointer_data.h | 1 + .../android/io/flutter/view/FlutterView.java | 38 ++++++++++++++----- 5 files changed, 41 insertions(+), 14 deletions(-) diff --git a/lib/ui/hooks.dart b/lib/ui/hooks.dart index dcd8d6d093c5a..7c449a504770c 100644 --- a/lib/ui/hooks.dart +++ b/lib/ui/hooks.dart @@ -196,7 +196,7 @@ void _invoke3(void callback(A1 a1, A2 a2, A3 a3), Zone zone, A1 arg1 // // * pointer_data.cc // * FlutterView.java -const int _kPointerDataFieldCount = 20; +const int _kPointerDataFieldCount = 21; PointerDataPacket _unpackPointerDataPacket(ByteData packet) { const int kStride = Int64List.bytesPerElement; @@ -226,7 +226,8 @@ PointerDataPacket _unpackPointerDataPacket(ByteData packet) { radiusMin: packet.getFloat64(kStride * offset++, _kFakeHostEndian), radiusMax: packet.getFloat64(kStride * offset++, _kFakeHostEndian), orientation: packet.getFloat64(kStride * offset++, _kFakeHostEndian), - tilt: packet.getFloat64(kStride * offset++, _kFakeHostEndian) + tilt: packet.getFloat64(kStride * offset++, _kFakeHostEndian), + platformData: packet.getInt64(kStride * offset++, _kFakeHostEndian), ); assert(offset == (i + 1) * _kPointerDataFieldCount); } diff --git a/lib/ui/pointer.dart b/lib/ui/pointer.dart index a55086ece63f0..63993cf42b043 100644 --- a/lib/ui/pointer.dart +++ b/lib/ui/pointer.dart @@ -77,7 +77,8 @@ class PointerData { this.radiusMin: 0.0, this.radiusMax: 0.0, this.orientation: 0.0, - this.tilt: 0.0 + this.tilt: 0.0, + this.platformData: 0, }); /// Time of event dispatch, relative to an arbitrary timeline. @@ -199,6 +200,9 @@ class PointerData { /// the stylus is flat on that surface). final double tilt; + /// Opaque platform-specific data associated with the event. + final int platformData; + @override String toString() => '$runtimeType(x: $physicalX, y: $physicalY)'; @@ -223,7 +227,8 @@ class PointerData { 'radiusMin: $radiusMin, ' 'radiusMax: $radiusMax, ' 'orientation: $orientation, ' - 'tilt: $tilt' + 'tilt: $tilt, ' + 'platformData: $platformData' ')'; } } diff --git a/lib/ui/window/pointer_data.cc b/lib/ui/window/pointer_data.cc index e657460cf293a..563d6bc2e4c6b 100644 --- a/lib/ui/window/pointer_data.cc +++ b/lib/ui/window/pointer_data.cc @@ -9,7 +9,7 @@ namespace blink { // If this value changes, update the pointer data unpacking code in hooks.dart. -static constexpr int kPointerDataFieldCount = 20; +static constexpr int kPointerDataFieldCount = 21; static_assert(sizeof(PointerData) == sizeof(int64_t) * kPointerDataFieldCount, "PointerData has the wrong size"); diff --git a/lib/ui/window/pointer_data.h b/lib/ui/window/pointer_data.h index 1d7fe09cea7a8..44f10a6abf9ac 100644 --- a/lib/ui/window/pointer_data.h +++ b/lib/ui/window/pointer_data.h @@ -50,6 +50,7 @@ struct alignas(8) PointerData { double radius_max; double orientation; double tilt; + int64_t platformData; void Clear(); }; diff --git a/shell/platform/android/io/flutter/view/FlutterView.java b/shell/platform/android/io/flutter/view/FlutterView.java index a2c12cc78543d..7609aaf77ee1b 100644 --- a/shell/platform/android/io/flutter/view/FlutterView.java +++ b/shell/platform/android/io/flutter/view/FlutterView.java @@ -447,8 +447,8 @@ private int getPointerDeviceTypeForToolType(int toolType) { } } - private void addPointerForIndex(MotionEvent event, int pointerIndex, ByteBuffer packet) { - int pointerChange = getPointerChangeForAction(event.getActionMasked()); + private void addPointerForIndex(MotionEvent event, int pointerIndex, int pointerChange, + int pointerData, ByteBuffer packet) { if (pointerChange == -1) { return; } @@ -503,6 +503,8 @@ private void addPointerForIndex(MotionEvent event, int pointerIndex, ByteBuffer } else { packet.putDouble(0.0); // tilt } + + packet.putLong(pointerData); // platformData } @Override @@ -521,26 +523,44 @@ public boolean onTouchEvent(MotionEvent event) { } // These values must match the unpacking code in hooks.dart. - final int kPointerDataFieldCount = 20; + final int kPointerDataFieldCount = 21; final int kBytePerField = 8; + // This value must match the value in framework's platform_view.dart. + // This flag indicates whether the original Android pointer events were batched together. + final int kPointerDataFlagBatched = 1; + int pointerCount = event.getPointerCount(); ByteBuffer packet = ByteBuffer.allocateDirect(pointerCount * kPointerDataFieldCount * kBytePerField); packet.order(ByteOrder.LITTLE_ENDIAN); int maskedAction = event.getActionMasked(); - // ACTION_UP, ACTION_POINTER_UP, ACTION_DOWN, and ACTION_POINTER_DOWN - // only apply to a single pointer, other events apply to all pointers. - if (maskedAction == MotionEvent.ACTION_UP || maskedAction == MotionEvent.ACTION_POINTER_UP - || maskedAction == MotionEvent.ACTION_DOWN || maskedAction == MotionEvent.ACTION_POINTER_DOWN) { - addPointerForIndex(event, event.getActionIndex(), packet); + int pointerChange = getPointerChangeForAction(event.getActionMasked()); + if (maskedAction == MotionEvent.ACTION_DOWN || maskedAction == MotionEvent.ACTION_POINTER_DOWN) { + // ACTION_DOWN and ACTION_POINTER_DOWN always apply to a single pointer only. + addPointerForIndex(event, event.getActionIndex(), pointerChange, 0, packet); + } else if (maskedAction == MotionEvent.ACTION_UP || maskedAction == MotionEvent.ACTION_POINTER_UP) { + // ACTION_UP and ACTION_POINTER_UP may contain position updates for other pointers. + // We are converting these updates to move events here in order to preserve this data. + // We also mark these events with a flag in order to help the framework reassemble + // the original Android event later, should it need to forward it to a PlatformView. + for (int p = 0; p < pointerCount; p++) { + if (p != event.getActionIndex()) { + if (event.getToolType(p) == MotionEvent.TOOL_TYPE_FINGER) { + addPointerForIndex(event, p, kPointerChangeMove, kPointerDataFlagBatched, packet); + } + } + } + // It's important that we're sending the UP event last. This allows PlatformView + // to correctly batch everything back into the original Android event if needed. + addPointerForIndex(event, event.getActionIndex(), pointerChange, 0, packet); } else { // ACTION_MOVE may not actually mean all pointers have moved // but it's the responsibility of a later part of the system to // ignore 0-deltas if desired. for (int p = 0; p < pointerCount; p++) { - addPointerForIndex(event, p, packet); + addPointerForIndex(event, p, pointerChange, 0, packet); } } From 96f7f344f3f6bf4ce9002002e07a466877ec2dde Mon Sep 17 00:00:00 2001 From: Amir Hardon Date: Fri, 2 Nov 2018 13:55:24 -0700 Subject: [PATCH 0153/1537] Update scene_update_context to match recent PaintContext changes. (#6736) This fixes a Fuchsia build breakage cause by #6726 and #6603. --- flow/scene_update_context.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/flow/scene_update_context.cc b/flow/scene_update_context.cc index a89df0ff7ae9a..0c1e5a780c2ec 100644 --- a/flow/scene_update_context.cc +++ b/flow/scene_update_context.cc @@ -187,7 +187,8 @@ SceneUpdateContext::ExecutePaintTasks(CompositorContext::ScopedFrame& frame) { for (auto& task : paint_tasks_) { FML_DCHECK(task.surface); SkCanvas* canvas = task.surface->GetSkiaSurface()->getCanvas(); - Layer::PaintContext context = {*canvas, + Layer::PaintContext context = {canvas, + nullptr, frame.context().frame_time(), frame.context().engine_time(), frame.context().texture_registry(), From 50ecdf965a7e35fd9a885f40abaffa0af3b81fdb Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Fri, 2 Nov 2018 17:06:37 -0400 Subject: [PATCH 0154/1537] Roll src/third_party/skia 3bfe9665aabc..13245412d49e (15 commits) (#6737) https://skia.googlesource.com/skia.git/+log/3bfe9665aabc..13245412d49e Created with: gclient setdep -r src/third_party/skia@13245412d49e The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/DEPS b/DEPS index 056263b521005..3094c343a5628 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '3bfe9665aabcfa4983da19936a5199f67df21d99', + 'skia_revision': '13245412d49ef9b71f054c66e997ff9e0e99cfe3', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index a8b1537d78b9a..950d10cd5f0ca 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 5e00e5ed4bcf74d55663d10ad62a29c6 +Signature: 54c8d22f6f67488f47a801f05f0ef075 UNUSED LICENSES: @@ -990,7 +990,6 @@ FILE: ../../../third_party/skia/src/core/SkNormalMapSource.h FILE: ../../../third_party/skia/src/core/SkNormalSource.cpp FILE: ../../../third_party/skia/src/core/SkNormalSource.h FILE: ../../../third_party/skia/src/core/SkOverdrawCanvas.cpp -FILE: ../../../third_party/skia/src/core/SkPM4f.h FILE: ../../../third_party/skia/src/core/SkPathMeasurePriv.h FILE: ../../../third_party/skia/src/core/SkRasterPipeline.cpp FILE: ../../../third_party/skia/src/core/SkRasterPipeline.h @@ -4378,7 +4377,6 @@ FILE: ../../../third_party/skia/src/core/SkMaskBlurFilter.h FILE: ../../../third_party/skia/src/core/SkRasterClipStack.h FILE: ../../../third_party/skia/src/core/SkSafeMath.h FILE: ../../../third_party/skia/src/core/SkSpriteBlitter_RGB565.cpp -FILE: ../../../third_party/skia/src/core/SkUnPreMultiplyPriv.h FILE: ../../../third_party/skia/src/core/SkVertices.cpp FILE: ../../../third_party/skia/src/core/SkVptr.h FILE: ../../../third_party/skia/src/core/SkWritePixelsRec.h From dd32b3fbc21439df90c872eee88de9cb35633697 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Fri, 2 Nov 2018 20:31:37 -0400 Subject: [PATCH 0155/1537] Roll src/third_party/skia 13245412d49e..1edff303fddb (6 commits) (#6739) https://skia.googlesource.com/skia.git/+log/13245412d49e..1edff303fddb Created with: gclient setdep -r src/third_party/skia@1edff303fddb The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 3094c343a5628..994e3523c23c0 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '13245412d49ef9b71f054c66e997ff9e0e99cfe3', + 'skia_revision': '1edff303fddbda0278eeddfb86e077b2dd3d1f75', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 950d10cd5f0ca..c5cb828ddf366 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 54c8d22f6f67488f47a801f05f0ef075 +Signature: 57904029a10bd78c1ed1c64166ae362f UNUSED LICENSES: From 731045e832c5856e7ec902f2c6a485e6e047e9ea Mon Sep 17 00:00:00 2001 From: Michael Goderbauer Date: Fri, 2 Nov 2018 20:32:49 -0700 Subject: [PATCH 0156/1537] Roll freetype2 to a10b062df0c8958d69377aa04ea6554a9961a111 (#6738) * Roll freetype2 to a10b062df0c8958d69377aa04ea6554a9961a111 Removes support for uncommon/outdated font formats. This reduces `libflutter.so` by ~131 KB uncompressed or 86 KB compressed. Going forward, we intent to only support the following formats: * TrueType fonts (TTF) and TrueType collections (TTC) * CFF fonts * OpenType fonts (OTF, both TrueType and CFF variants) and OpenType collections (OTC) * SFNT-based bitmap fonts, including color Emoji This change has been announced at https://groups.google.com/forum/#!topic/flutter-announce/N5aeq5aC1To. * licenses --- DEPS | 4 ++-- ci/licenses_golden/licenses_third_party | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/DEPS b/DEPS index 994e3523c23c0..bd49d7dfa2d36 100644 --- a/DEPS +++ b/DEPS @@ -117,7 +117,7 @@ allowed_hosts = [ ] deps = { - 'src': 'https://github.com/flutter/buildroot.git' + '@' + '11a934e99eaa4aa8e278cd2772aff4f51f1f3c41', + 'src': 'https://github.com/flutter/buildroot.git' + '@' + '2b7fe9635c00c932f86627988e797a097574929e', # Fuchsia compatibility # @@ -353,7 +353,7 @@ deps = { Var('chromium_git') + '/external/colorama.git' + '@' + '799604a1041e9b3bc5d2789ecbd7e8db2e18e6b8', 'src/third_party/freetype2': - Var('fuchsia_git') + '/third_party/freetype2' + '@' + '6581fd3e9c8645f01c0d51e4f53893f5391f2bf3', + Var('fuchsia_git') + '/third_party/freetype2' + '@' + 'a10b062df0c8958d69377aa04ea6554a9961a111', 'src/third_party/root_certificates': Var('dart_git') + '/root_certificates.git' + '@' + Var('dart_root_certificates_rev'), diff --git a/ci/licenses_golden/licenses_third_party b/ci/licenses_golden/licenses_third_party index 7558dd3826319..f3622ee35a9ac 100644 --- a/ci/licenses_golden/licenses_third_party +++ b/ci/licenses_golden/licenses_third_party @@ -1,4 +1,4 @@ -Signature: 0b4495d3d5939970345ed7265c27e7fb +Signature: ce6277bd5a4db850eabe67354407f156 UNUSED LICENSES: From be97304da0a874ed7df242da3cc959747c02e6b6 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Fri, 2 Nov 2018 23:52:37 -0400 Subject: [PATCH 0157/1537] Roll src/third_party/skia 1edff303fddb..5d5de8bc79aa (4 commits) (#6740) https://skia.googlesource.com/skia.git/+log/1edff303fddb..5d5de8bc79aa Created with: gclient setdep -r src/third_party/skia@5d5de8bc79aa The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index bd49d7dfa2d36..c613cc9c6c77e 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '1edff303fddbda0278eeddfb86e077b2dd3d1f75', + 'skia_revision': '5d5de8bc79aa5174af947e43ccef7bbab5254d5a', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index c5cb828ddf366..56cb296b63a0d 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 57904029a10bd78c1ed1c64166ae362f +Signature: 2b816060e3ac1315e34d2d9d7d8cb6ec UNUSED LICENSES: From c5fa47a3cde42b54c6b6962ce8b718c6ede434f0 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Sat, 3 Nov 2018 03:16:38 -0400 Subject: [PATCH 0158/1537] Roll src/third_party/skia 5d5de8bc79aa..f1ec3918534f (3 commits) (#6741) https://skia.googlesource.com/skia.git/+log/5d5de8bc79aa..f1ec3918534f Created with: gclient setdep -r src/third_party/skia@f1ec3918534f The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index c613cc9c6c77e..54e42f04986d8 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '5d5de8bc79aa5174af947e43ccef7bbab5254d5a', + 'skia_revision': 'f1ec3918534fb35290eb347a434060199319fccb', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 56cb296b63a0d..905cf5e58bd69 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 2b816060e3ac1315e34d2d9d7d8cb6ec +Signature: 40e45373f2cd6ce9d5e001c2b9478d40 UNUSED LICENSES: From 3429791c549973452f818af3bc6950988ac74572 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Sat, 3 Nov 2018 06:42:37 -0400 Subject: [PATCH 0159/1537] Roll src/third_party/skia f1ec3918534f..e1b1d056fed9 (1 commits) (#6742) https://skia.googlesource.com/skia.git/+log/f1ec3918534f..e1b1d056fed9 Created with: gclient setdep -r src/third_party/skia@e1b1d056fed9 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 54e42f04986d8..ed662f04f5b02 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'f1ec3918534fb35290eb347a434060199319fccb', + 'skia_revision': 'e1b1d056fed927f6a00b4785c1ca93401508b286', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 905cf5e58bd69..c67ee71f6d049 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 40e45373f2cd6ce9d5e001c2b9478d40 +Signature: 59aee0902bbce77a0c50daa46537f681 UNUSED LICENSES: From 0e6b1e618e6284fbd4f3b0e82e1639dce81eea76 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Sat, 3 Nov 2018 10:05:37 -0400 Subject: [PATCH 0160/1537] Roll src/third_party/skia e1b1d056fed9..b5ae3b5afc29 (3 commits) (#6743) https://skia.googlesource.com/skia.git/+log/e1b1d056fed9..b5ae3b5afc29 Created with: gclient setdep -r src/third_party/skia@b5ae3b5afc29 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index ed662f04f5b02..c04759768ba01 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'e1b1d056fed927f6a00b4785c1ca93401508b286', + 'skia_revision': 'b5ae3b5afc29d78c9add8e16cb77d2de6cce2358', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index c67ee71f6d049..a860107ca3193 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 59aee0902bbce77a0c50daa46537f681 +Signature: 83884ce10affcc93aadbe004fd378723 UNUSED LICENSES: From 5d57e8af41477684cd4411942bb7012c9722f79e Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Sat, 3 Nov 2018 13:31:37 -0400 Subject: [PATCH 0161/1537] Roll src/third_party/skia b5ae3b5afc29..7e4081554d06 (1 commits) (#6744) https://skia.googlesource.com/skia.git/+log/b5ae3b5afc29..7e4081554d06 Created with: gclient setdep -r src/third_party/skia@7e4081554d06 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index c04759768ba01..e4bb8194fee58 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'b5ae3b5afc29d78c9add8e16cb77d2de6cce2358', + 'skia_revision': '7e4081554d066e07a18121aabdb2ab345ed1a280', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index a860107ca3193..ea3508ad2804c 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 83884ce10affcc93aadbe004fd378723 +Signature: 116140be06b99e9774432f0e2ddb3ca4 UNUSED LICENSES: From fafef227a6eed8561bbb6b7ee7e469bad5470e2c Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Sun, 4 Nov 2018 01:20:37 -0500 Subject: [PATCH 0162/1537] Roll src/third_party/skia 7e4081554d06..2b21e88ed6dd (1 commits) (#6745) https://skia.googlesource.com/skia.git/+log/7e4081554d06..2b21e88ed6dd Created with: gclient setdep -r src/third_party/skia@2b21e88ed6dd The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index e4bb8194fee58..8443954a94054 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '7e4081554d066e07a18121aabdb2ab345ed1a280', + 'skia_revision': '2b21e88ed6dd2a0e9d4b73eccaa28adbc71edfce', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index ea3508ad2804c..ed3efcf4bdb32 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 116140be06b99e9774432f0e2ddb3ca4 +Signature: 21b23bdc65437f6119be94d525a5fae2 UNUSED LICENSES: From 4453e42ab550af2fc4e82d281fd1fc2fe1583c36 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Sun, 4 Nov 2018 04:44:18 -0500 Subject: [PATCH 0163/1537] Roll src/third_party/skia 2b21e88ed6dd..99485ace81ac (1 commits) (#6746) https://skia.googlesource.com/skia.git/+log/2b21e88ed6dd..99485ace81ac Created with: gclient setdep -r src/third_party/skia@99485ace81ac The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 8443954a94054..6ee1683890f26 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '2b21e88ed6dd2a0e9d4b73eccaa28adbc71edfce', + 'skia_revision': '99485ace81ace45020065f494da793a752198453', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index ed3efcf4bdb32..1521191afbbaf 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 21b23bdc65437f6119be94d525a5fae2 +Signature: 03753cc6fdc88b758c712fee32a0b64e UNUSED LICENSES: From 86feaccbf00c8993a92709ca3380f67433b73ace Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Sun, 4 Nov 2018 10:07:18 -0500 Subject: [PATCH 0164/1537] Roll src/third_party/skia 99485ace81ac..16d91aaf44fa (1 commits) (#6747) https://skia.googlesource.com/skia.git/+log/99485ace81ac..16d91aaf44fa Created with: gclient setdep -r src/third_party/skia@16d91aaf44fa The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 6ee1683890f26..121cf85b04b02 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '99485ace81ace45020065f494da793a752198453', + 'skia_revision': '16d91aaf44faa8ca02305a4572c80d05b43f2883', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 1521191afbbaf..b495646515010 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 03753cc6fdc88b758c712fee32a0b64e +Signature: f2cd63153b91a0d4b0530b9f7e28f237 UNUSED LICENSES: From 551d7f1339d21933686a657268d77e5db245fd03 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Sun, 4 Nov 2018 13:31:18 -0500 Subject: [PATCH 0165/1537] Roll src/third_party/skia 16d91aaf44fa..0a8b4e1acbd6 (1 commits) (#6748) https://skia.googlesource.com/skia.git/+log/16d91aaf44fa..0a8b4e1acbd6 Created with: gclient setdep -r src/third_party/skia@0a8b4e1acbd6 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 121cf85b04b02..eee90a2ec8ee7 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '16d91aaf44faa8ca02305a4572c80d05b43f2883', + 'skia_revision': '0a8b4e1acbd6100e81f3d825ce3d087928744010', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index b495646515010..56eed63c68030 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: f2cd63153b91a0d4b0530b9f7e28f237 +Signature: 194b10a533a8305fa5d8c07319257321 UNUSED LICENSES: From 1a5a083dec1a1da2084db3cd0dd7b9a6d7b74ec3 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Mon, 5 Nov 2018 01:20:18 -0500 Subject: [PATCH 0166/1537] Roll src/third_party/skia 0a8b4e1acbd6..51916083e752 (2 commits) (#6749) https://skia.googlesource.com/skia.git/+log/0a8b4e1acbd6..51916083e752 Created with: gclient setdep -r src/third_party/skia@51916083e752 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index eee90a2ec8ee7..26b9a22b59046 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '0a8b4e1acbd6100e81f3d825ce3d087928744010', + 'skia_revision': '51916083e75254f7bb46ad0e638530259026813a', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 56eed63c68030..3eb61a2a25ef8 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 194b10a533a8305fa5d8c07319257321 +Signature: b73acbe1fbe5d82063f6124714922157 UNUSED LICENSES: From c9b36fa1196897660cead8ca110d688299160f22 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Mon, 5 Nov 2018 08:20:19 -0500 Subject: [PATCH 0167/1537] Roll src/third_party/skia 51916083e752..e71e9ef311ba (1 commits) (#6750) https://skia.googlesource.com/skia.git/+log/51916083e752..e71e9ef311ba Created with: gclient setdep -r src/third_party/skia@e71e9ef311ba The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index 26b9a22b59046..6ae7e2801d3c4 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '51916083e75254f7bb46ad0e638530259026813a', + 'skia_revision': 'e71e9ef311ba2ebd67044120b74801c33323a20e', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the From 61dbcdadf8b6556dd32d0a730200ac90821f03f1 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Mon, 5 Nov 2018 11:43:18 -0500 Subject: [PATCH 0168/1537] Roll src/third_party/skia e71e9ef311ba..8b35379ae1f1 (6 commits) (#6751) https://skia.googlesource.com/skia.git/+log/e71e9ef311ba..8b35379ae1f1 Created with: gclient setdep -r src/third_party/skia@8b35379ae1f1 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/DEPS b/DEPS index 6ae7e2801d3c4..aaf832fa04223 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'e71e9ef311ba2ebd67044120b74801c33323a20e', + 'skia_revision': '8b35379ae1f1b223385a1c566628eb9a33a5683c', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 3eb61a2a25ef8..98f92ec24a670 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: b73acbe1fbe5d82063f6124714922157 +Signature: bc5f7b7c9112c3dbb54f6250960e451a UNUSED LICENSES: @@ -1294,6 +1294,7 @@ FILE: ../../../third_party/skia/bench/CubicMapBench.cpp FILE: ../../../third_party/skia/bench/GrCCFillGeometryBench.cpp FILE: ../../../third_party/skia/bench/ImageCycleBench.cpp FILE: ../../../third_party/skia/bench/JSONBench.cpp +FILE: ../../../third_party/skia/bench/PathOpsBench.cpp FILE: ../../../third_party/skia/bench/PolyUtilsBench.cpp FILE: ../../../third_party/skia/bench/ShaderMaskFilterBench.cpp FILE: ../../../third_party/skia/experimental/nima/NimaActor.cpp @@ -1337,6 +1338,7 @@ FILE: ../../../third_party/skia/include/c/sk_imageinfo.h FILE: ../../../third_party/skia/include/core/SkCanvasVirtualEnforcer.h FILE: ../../../third_party/skia/include/core/SkCoverageMode.h FILE: ../../../third_party/skia/include/core/SkFontParameters.h +FILE: ../../../third_party/skia/include/core/SkFontTypes.h FILE: ../../../third_party/skia/include/core/SkYUVAIndex.h FILE: ../../../third_party/skia/include/effects/SkOpPathEffect.h FILE: ../../../third_party/skia/include/effects/SkShaderMaskFilter.h @@ -1442,6 +1444,7 @@ FILE: ../../../third_party/skia/src/core/SkCubicMap.h FILE: ../../../third_party/skia/src/core/SkDeferredDisplayList.cpp FILE: ../../../third_party/skia/src/core/SkDeferredDisplayListPriv.h FILE: ../../../third_party/skia/src/core/SkDraw_text.cpp +FILE: ../../../third_party/skia/src/core/SkFontPriv.h FILE: ../../../third_party/skia/src/core/SkGlyph.cpp FILE: ../../../third_party/skia/src/core/SkIPoint16.h FILE: ../../../third_party/skia/src/core/SkMaskFilterBase.h @@ -3388,7 +3391,6 @@ FILE: ../../../third_party/skia/src/pathops/SkPathOpsCurve.h FILE: ../../../third_party/skia/src/pathops/SkPathOpsLine.cpp FILE: ../../../third_party/skia/src/pathops/SkPathOpsLine.h FILE: ../../../third_party/skia/src/pathops/SkPathOpsOp.cpp -FILE: ../../../third_party/skia/src/pathops/SkPathOpsPoint.cpp FILE: ../../../third_party/skia/src/pathops/SkPathOpsPoint.h FILE: ../../../third_party/skia/src/pathops/SkPathOpsQuad.cpp FILE: ../../../third_party/skia/src/pathops/SkPathOpsQuad.h From 3374f4cce0459dad9c2400b0a05bf0b2e9f8936c Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Mon, 5 Nov 2018 15:06:19 -0500 Subject: [PATCH 0169/1537] Roll src/third_party/skia 8b35379ae1f1..32262da42bed (8 commits) (#6752) https://skia.googlesource.com/skia.git/+log/8b35379ae1f1..32262da42bed Created with: gclient setdep -r src/third_party/skia@32262da42bed The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index aaf832fa04223..bb6e18c85ed9b 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '8b35379ae1f1b223385a1c566628eb9a33a5683c', + 'skia_revision': '32262da42bede166cba558365bad49592bd316d5', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 98f92ec24a670..9f6b0008a539b 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: bc5f7b7c9112c3dbb54f6250960e451a +Signature: 73b642988dd9ff4fb0ecba33d252027f UNUSED LICENSES: From 124f20f4041842cebd5915208f14da4a1edaff43 Mon Sep 17 00:00:00 2001 From: Amir Hardon Date: Mon, 5 Nov 2018 15:08:07 -0800 Subject: [PATCH 0170/1537] Clear the on-screen surface every frame. (#6753) We are currently clearing the offscreen surface before rasterizing, but as we draw the image snapshot of the offscreen surface into the onscreen surface transparent pixels are blended with the current contents of the onscreen surface instead of replacing them. This is particularly noticeable when embedding platform views. --- shell/gpu/gpu_surface_gl.cc | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/shell/gpu/gpu_surface_gl.cc b/shell/gpu/gpu_surface_gl.cc index 7cc8892f88ef4..6fd78d8ae6810 100644 --- a/shell/gpu/gpu_surface_gl.cc +++ b/shell/gpu/gpu_surface_gl.cc @@ -280,8 +280,10 @@ bool GPUSurfaceGL::PresentSurface(SkCanvas* canvas) { if (offscreen_surface_ != nullptr) { TRACE_EVENT0("flutter", "CopyTextureOnscreen"); SkPaint paint; - onscreen_surface_->getCanvas()->drawImage( - offscreen_surface_->makeImageSnapshot(), 0, 0, &paint); + SkCanvas* onscreen_canvas = onscreen_surface_->getCanvas(); + onscreen_canvas->clear(SK_ColorTRANSPARENT); + onscreen_canvas->drawImage(offscreen_surface_->makeImageSnapshot(), 0, 0, + &paint); } { From f0380b39741313f6920367246421ca3c35aaf9d3 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Mon, 5 Nov 2018 18:24:18 -0500 Subject: [PATCH 0171/1537] Roll src/third_party/skia 32262da42bed..df8225e253a2 (10 commits) (#6755) https://skia.googlesource.com/skia.git/+log/32262da42bed..df8225e253a2 Created with: gclient setdep -r src/third_party/skia@df8225e253a2 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/DEPS b/DEPS index bb6e18c85ed9b..6a5fbd0d93164 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '32262da42bede166cba558365bad49592bd316d5', + 'skia_revision': 'df8225e253a297227da22e17311f21bbb67c119d', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 9f6b0008a539b..0854ea488352d 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 73b642988dd9ff4fb0ecba33d252027f +Signature: e75c84941535a4996e449be164b69a57 UNUSED LICENSES: @@ -4830,6 +4830,7 @@ FILE: ../../../third_party/skia/include/effects/SkDashPathEffect.h FILE: ../../../third_party/skia/include/effects/SkDiscretePathEffect.h FILE: ../../../third_party/skia/include/effects/SkGradientShader.h FILE: ../../../third_party/skia/include/effects/SkTableMaskFilter.h +FILE: ../../../third_party/skia/include/private/SkColorData.h FILE: ../../../third_party/skia/include/private/SkFixed.h FILE: ../../../third_party/skia/include/private/SkFloatingPoint.h FILE: ../../../third_party/skia/include/private/SkNoncopyable.h @@ -4858,7 +4859,6 @@ FILE: ../../../third_party/skia/src/core/SkBlurMask.h FILE: ../../../third_party/skia/src/core/SkBuffer.cpp FILE: ../../../third_party/skia/src/core/SkBuffer.h FILE: ../../../third_party/skia/src/core/SkColor.cpp -FILE: ../../../third_party/skia/src/core/SkColorData.h FILE: ../../../third_party/skia/src/core/SkColorFilter.cpp FILE: ../../../third_party/skia/src/core/SkCoreBlitters.h FILE: ../../../third_party/skia/src/core/SkDebug.cpp From ded297f5954be6a4453644e773972458f39e4e44 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Mon, 5 Nov 2018 21:49:18 -0500 Subject: [PATCH 0172/1537] Roll src/third_party/skia df8225e253a2..5b2bda70e52f (5 commits) (#6761) https://skia.googlesource.com/skia.git/+log/df8225e253a2..5b2bda70e52f Created with: gclient setdep -r src/third_party/skia@5b2bda70e52f The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 6a5fbd0d93164..87e524d4e0048 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'df8225e253a297227da22e17311f21bbb67c119d', + 'skia_revision': '5b2bda70e52f18e5707dd465a9be8cd59b34eb80', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 0854ea488352d..55d1c19793911 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: e75c84941535a4996e449be164b69a57 +Signature: 5842682f17892fce85cb127db8e4ba5e UNUSED LICENSES: From fa4c01ee6a13fe9a231624b5cd0c586c6598f8d8 Mon Sep 17 00:00:00 2001 From: Amir Hardon Date: Mon, 5 Nov 2018 20:08:25 -0800 Subject: [PATCH 0173/1537] Add an Info.plist flag to enable the embedded iOS views preview. (#6756) When the flag is true, we currently use a single thread configuration, and disabled the raster cache for opacity layers. The flag's name is 'io.flutter_embedded_views_preview'. --- flow/layers/opacity_layer.cc | 7 ++- shell/common/rasterizer.cc | 11 +--- .../ios/framework/Source/FlutterEngine.mm | 51 ++++++++++++++----- shell/platform/darwin/ios/ios_surface.h | 3 ++ shell/platform/darwin/ios/ios_surface_gl.mm | 6 ++- .../darwin/ios/ios_surface_software.mm | 6 ++- 6 files changed, 58 insertions(+), 26 deletions(-) diff --git a/flow/layers/opacity_layer.cc b/flow/layers/opacity_layer.cc index 7d658b3726e1b..485126f0813ce 100644 --- a/flow/layers/opacity_layer.cc +++ b/flow/layers/opacity_layer.cc @@ -39,7 +39,12 @@ void OpacityLayer::Paint(PaintContext& context) const { RasterCache::GetIntegralTransCTM(context.canvas->getTotalMatrix())); #endif - if (layers().size() == 1 && context.raster_cache) { + // Embedded platform views are changing the canvas in the middle of the paint + // traversal. To make sure we paint on the right canvas, when the embedded + // platform views preview is enabled (context.view_embedded is not null) we + // don't use the cache. + if (context.view_embedder == nullptr && layers().size() == 1 && + context.raster_cache) { const SkMatrix& ctm = context.canvas->getTotalMatrix(); RasterCacheResult child_cache = context.raster_cache->Get(layers()[0].get(), ctm); diff --git a/shell/common/rasterizer.cc b/shell/common/rasterizer.cc index b9737c7e1ca36..848590beb110d 100644 --- a/shell/common/rasterizer.cc +++ b/shell/common/rasterizer.cc @@ -162,16 +162,7 @@ bool Rasterizer::DrawToSurface(flow::LayerTree& layer_tree) { auto canvas = frame->SkiaCanvas(); - // External view embedding required that the gpu and platform threads are the - // same. The dynamic merging of these threads is WIP so for now we don't - // populate the view embedder. Once we can merge the threads, we should - // populate the view embedded here with surface_->GetExternalViewEmbedder() if - // the scene contains an external view (and we can probably assert that the - // gpu and platform threads are the same). - // - // TODO(amirh): populate the view embedder once we dynamically merge the - // threads for embedded platform views. - auto external_view_embedder = nullptr; + auto external_view_embedder = surface_->GetExternalViewEmbedder(); auto compositor_frame = compositor_context_->AcquireFrame( surface_->GetContext(), canvas, external_view_embedder, diff --git a/shell/platform/darwin/ios/framework/Source/FlutterEngine.mm b/shell/platform/darwin/ios/framework/Source/FlutterEngine.mm index edc7df58cb950..33ca6477bd06a 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterEngine.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterEngine.mm @@ -22,6 +22,7 @@ #include "flutter/shell/platform/darwin/ios/framework/Source/FlutterTextInputDelegate.h" #include "flutter/shell/platform/darwin/ios/framework/Source/FlutterViewController_Internal.h" #include "flutter/shell/platform/darwin/ios/framework/Source/platform_message_response_darwin.h" +#include "flutter/shell/platform/darwin/ios/ios_surface.h" #include "flutter/shell/platform/darwin/ios/platform_view_ios.h" @interface FlutterEngine () @@ -295,13 +296,8 @@ - (bool)runWithEntrypoint:(NSString*)entrypoint libraryURI:(NSString*)libraryURI threadLabel.UTF8String, // label shell::ThreadHost::Type::UI | shell::ThreadHost::Type::GPU | shell::ThreadHost::Type::IO}; - blink::TaskRunners task_runners(threadLabel.UTF8String, // label - fml::MessageLoop::GetCurrent().GetTaskRunner(), // platform - _threadHost.gpu_thread->GetTaskRunner(), // gpu - _threadHost.ui_thread->GetTaskRunner(), // ui - _threadHost.io_thread->GetTaskRunner() // io - ); - + bool embedded_views_preview_enabled = [[[NSBundle mainBundle] + objectForInfoDictionaryKey:@(shell::kEmbeddedViewsPreview)] boolValue]; // Lambda captures by pointers to ObjC objects are fine here because the // create call is // synchronous. @@ -314,12 +310,41 @@ - (bool)runWithEntrypoint:(NSString*)entrypoint libraryURI:(NSString*)libraryURI return std::make_unique(shell.GetTaskRunners()); }; - // Create the shell. This is a blocking operation. - _shell = shell::Shell::Create(std::move(task_runners), // task runners - std::move(settings), // settings - on_create_platform_view, // platform view creation - on_create_rasterizer // rasterzier creation - ); + if (embedded_views_preview_enabled) { + // Embedded views requires the gpu and the platform views to be the same. + // The plan is to eventually dynamically merge the threads when there's a + // platform view in the layer tree. + // For now we run in a single threaded configuration. + // TODO(amirh/chinmaygarde): merge only the gpu and platform threads. + // https://github.com/flutter/flutter/issues/23974 + // TODO(amirh/chinmaygarde): remove this, and dynamically change the thread configuration. + // https://github.com/flutter/flutter/issues/23975 + blink::TaskRunners task_runners(threadLabel.UTF8String, // label + fml::MessageLoop::GetCurrent().GetTaskRunner(), // platform + fml::MessageLoop::GetCurrent().GetTaskRunner(), // gpu + fml::MessageLoop::GetCurrent().GetTaskRunner(), // ui + fml::MessageLoop::GetCurrent().GetTaskRunner() // io + ); + // Create the shell. This is a blocking operation. + _shell = shell::Shell::Create(std::move(task_runners), // task runners + std::move(settings), // settings + on_create_platform_view, // platform view creation + on_create_rasterizer // rasterzier creation + ); + } else { + blink::TaskRunners task_runners(threadLabel.UTF8String, // label + fml::MessageLoop::GetCurrent().GetTaskRunner(), // platform + _threadHost.gpu_thread->GetTaskRunner(), // gpu + _threadHost.ui_thread->GetTaskRunner(), // ui + _threadHost.io_thread->GetTaskRunner() // io + ); + // Create the shell. This is a blocking operation. + _shell = shell::Shell::Create(std::move(task_runners), // task runners + std::move(settings), // settings + on_create_platform_view, // platform view creation + on_create_rasterizer // rasterzier creation + ); + } if (_shell == nullptr) { FML_LOG(ERROR) << "Could not start a shell FlutterEngine with entrypoint: " diff --git a/shell/platform/darwin/ios/ios_surface.h b/shell/platform/darwin/ios/ios_surface.h index 52711f1e68b6a..f362d6d7eee34 100644 --- a/shell/platform/darwin/ios/ios_surface.h +++ b/shell/platform/darwin/ios/ios_surface.h @@ -15,6 +15,9 @@ namespace shell { +// The name of the Info.plist flag to enable the embedded iOS views preview. +const char* const kEmbeddedViewsPreview = "io.flutter_embedded_views_preview"; + class IOSSurface { public: IOSSurface(FlutterPlatformViewsController* platform_views_controller); diff --git a/shell/platform/darwin/ios/ios_surface_gl.mm b/shell/platform/darwin/ios/ios_surface_gl.mm index 24f2a3af67c1d..9291455176070 100644 --- a/shell/platform/darwin/ios/ios_surface_gl.mm +++ b/shell/platform/darwin/ios/ios_surface_gl.mm @@ -67,7 +67,11 @@ } flow::ExternalViewEmbedder* IOSSurfaceGL::GetExternalViewEmbedder() { - return this; + if ([[[NSBundle mainBundle] objectForInfoDictionaryKey:@(kEmbeddedViewsPreview)] boolValue]) { + return this; + } else { + return nullptr; + } } SkCanvas* IOSSurfaceGL::CompositeEmbeddedView(int view_id, const flow::EmbeddedViewParams& params) { diff --git a/shell/platform/darwin/ios/ios_surface_software.mm b/shell/platform/darwin/ios/ios_surface_software.mm index a35d806729b83..bcf57f5cd28d4 100644 --- a/shell/platform/darwin/ios/ios_surface_software.mm +++ b/shell/platform/darwin/ios/ios_surface_software.mm @@ -131,7 +131,11 @@ } flow::ExternalViewEmbedder* IOSSurfaceSoftware::GetExternalViewEmbedder() { - return this; + if ([[[NSBundle mainBundle] objectForInfoDictionaryKey:@(kEmbeddedViewsPreview)] boolValue]) { + return this; + } else { + return nullptr; + } } SkCanvas* IOSSurfaceSoftware::CompositeEmbeddedView(int view_id, From 4fd2d1486785adf73f6c4b31e30c259fe6d52dc3 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Tue, 6 Nov 2018 01:12:18 -0500 Subject: [PATCH 0174/1537] Roll src/third_party/skia 5b2bda70e52f..11407e56f277 (1 commits) (#6762) https://skia.googlesource.com/skia.git/+log/5b2bda70e52f..11407e56f277 Created with: gclient setdep -r src/third_party/skia@11407e56f277 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 87e524d4e0048..673193cbfccc5 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '5b2bda70e52f18e5707dd465a9be8cd59b34eb80', + 'skia_revision': '11407e56f2779f3204ba481b38946137d8094715', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 55d1c19793911..5d182a36438ad 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 5842682f17892fce85cb127db8e4ba5e +Signature: 422162519e50a7c3be4ba748a0f36fab UNUSED LICENSES: From fb5b097e5c20d2af9d4178530f0f4acd9d173401 Mon Sep 17 00:00:00 2001 From: Dan Field Date: Mon, 5 Nov 2018 22:40:01 -0800 Subject: [PATCH 0175/1537] Revert "Roll freetype2 to a10b062df0c8958d69377aa04ea6554a9961a111 (#6738)" (#6763) This reverts commit 731045e832c5856e7ec902f2c6a485e6e047e9ea. --- DEPS | 4 ++-- ci/licenses_golden/licenses_third_party | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/DEPS b/DEPS index 673193cbfccc5..45c058bf42daf 100644 --- a/DEPS +++ b/DEPS @@ -117,7 +117,7 @@ allowed_hosts = [ ] deps = { - 'src': 'https://github.com/flutter/buildroot.git' + '@' + '2b7fe9635c00c932f86627988e797a097574929e', + 'src': 'https://github.com/flutter/buildroot.git' + '@' + '11a934e99eaa4aa8e278cd2772aff4f51f1f3c41', # Fuchsia compatibility # @@ -353,7 +353,7 @@ deps = { Var('chromium_git') + '/external/colorama.git' + '@' + '799604a1041e9b3bc5d2789ecbd7e8db2e18e6b8', 'src/third_party/freetype2': - Var('fuchsia_git') + '/third_party/freetype2' + '@' + 'a10b062df0c8958d69377aa04ea6554a9961a111', + Var('fuchsia_git') + '/third_party/freetype2' + '@' + '6581fd3e9c8645f01c0d51e4f53893f5391f2bf3', 'src/third_party/root_certificates': Var('dart_git') + '/root_certificates.git' + '@' + Var('dart_root_certificates_rev'), diff --git a/ci/licenses_golden/licenses_third_party b/ci/licenses_golden/licenses_third_party index f3622ee35a9ac..7558dd3826319 100644 --- a/ci/licenses_golden/licenses_third_party +++ b/ci/licenses_golden/licenses_third_party @@ -1,4 +1,4 @@ -Signature: ce6277bd5a4db850eabe67354407f156 +Signature: 0b4495d3d5939970345ed7265c27e7fb UNUSED LICENSES: From 1132d6c423230a69427e75d4ca1cd397795f639a Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Tue, 6 Nov 2018 04:35:18 -0500 Subject: [PATCH 0176/1537] Roll src/third_party/skia 11407e56f277..e6c85755832b (2 commits) (#6765) https://skia.googlesource.com/skia.git/+log/11407e56f277..e6c85755832b Created with: gclient setdep -r src/third_party/skia@e6c85755832b The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 45c058bf42daf..9178eb8ead769 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '11407e56f2779f3204ba481b38946137d8094715', + 'skia_revision': 'e6c85755832b062976540b0f5c7f5c0398ba3505', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 5d182a36438ad..11ba894ce8c4e 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 422162519e50a7c3be4ba748a0f36fab +Signature: a22f7643a4ae8fb706d27749bc0cf940 UNUSED LICENSES: From aea7071e27312a22cd58951b9a4459f3b640891e Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Tue, 6 Nov 2018 08:45:18 -0500 Subject: [PATCH 0177/1537] Roll src/third_party/skia e6c85755832b..e70c6b13dd55 (1 commits) (#6766) https://skia.googlesource.com/skia.git/+log/e6c85755832b..e70c6b13dd55 Created with: gclient setdep -r src/third_party/skia@e70c6b13dd55 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 9178eb8ead769..deccba1e88111 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'e6c85755832b062976540b0f5c7f5c0398ba3505', + 'skia_revision': 'e70c6b13dd5520f8a5470753d7b9327edb8fbd82', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 11ba894ce8c4e..4bb10e4a45e88 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: a22f7643a4ae8fb706d27749bc0cf940 +Signature: e3cc1988ec6ab965c836880bde5aa4cb UNUSED LICENSES: From eec27fc8a7da102e181ee94a100177f89f5011a3 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Tue, 6 Nov 2018 12:08:19 -0500 Subject: [PATCH 0178/1537] Roll src/third_party/skia e70c6b13dd55..f2b35e4fb8cc (6 commits) (#6768) https://skia.googlesource.com/skia.git/+log/e70c6b13dd55..f2b35e4fb8cc Created with: gclient setdep -r src/third_party/skia@f2b35e4fb8cc The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index deccba1e88111..36ce0397094cf 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'e70c6b13dd5520f8a5470753d7b9327edb8fbd82', + 'skia_revision': 'f2b35e4fb8cc0f8e84ddfc828f11df13e379f561', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 4bb10e4a45e88..9cdbb58111958 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: e3cc1988ec6ab965c836880bde5aa4cb +Signature: 8379ed5a6e6d7f0adaa4a5733395fe1c UNUSED LICENSES: @@ -1985,6 +1985,7 @@ FILE: ../../../third_party/skia/animations/text#1.xml FILE: ../../../third_party/skia/bench/microbench.json FILE: ../../../third_party/skia/bench/skpbench.json FILE: ../../../third_party/skia/docker/skia-release/Dockerfile +FILE: ../../../third_party/skia/docker/skia-wasm-release/Dockerfile FILE: ../../../third_party/skia/docker/skia-with-swift-shader-base/Dockerfile FILE: ../../../third_party/skia/docker/skia-with-swift-shader-base/build-with-swift-shader-and-run FILE: ../../../third_party/skia/docs/SkAutoCanvasRestore_Reference.bmh From 5006ce574823bc36620f99f5dd6cc7076ceb2afa Mon Sep 17 00:00:00 2001 From: Amir Hardon Date: Tue, 6 Nov 2018 10:35:01 -0800 Subject: [PATCH 0179/1537] fix type in embedded views preview flag name (#6767) --- shell/platform/darwin/ios/ios_surface.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shell/platform/darwin/ios/ios_surface.h b/shell/platform/darwin/ios/ios_surface.h index f362d6d7eee34..d07fbbfec30a4 100644 --- a/shell/platform/darwin/ios/ios_surface.h +++ b/shell/platform/darwin/ios/ios_surface.h @@ -16,7 +16,7 @@ namespace shell { // The name of the Info.plist flag to enable the embedded iOS views preview. -const char* const kEmbeddedViewsPreview = "io.flutter_embedded_views_preview"; +const char* const kEmbeddedViewsPreview = "io.flutter.embedded_views_preview"; class IOSSurface { public: From 5077e95f1dab8ecdebd6337c71e80e2e7c9fe6b7 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Tue, 6 Nov 2018 15:32:45 -0500 Subject: [PATCH 0180/1537] Roll src/third_party/skia f2b35e4fb8cc..2aa9a22fe159 (7 commits) (#6770) https://skia.googlesource.com/skia.git/+log/f2b35e4fb8cc..2aa9a22fe159 Created with: gclient setdep -r src/third_party/skia@2aa9a22fe159 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 36ce0397094cf..f479345464bf6 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'f2b35e4fb8cc0f8e84ddfc828f11df13e379f561', + 'skia_revision': '2aa9a22fe159dcdb582127b3912a5cd4a98abb8a', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 9cdbb58111958..da6e9e8d86986 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 8379ed5a6e6d7f0adaa4a5733395fe1c +Signature: 296c8243892ab5e244211130f7830fbe UNUSED LICENSES: @@ -1337,6 +1337,7 @@ FILE: ../../../third_party/skia/include/c/sk_colorspace.h FILE: ../../../third_party/skia/include/c/sk_imageinfo.h FILE: ../../../third_party/skia/include/core/SkCanvasVirtualEnforcer.h FILE: ../../../third_party/skia/include/core/SkCoverageMode.h +FILE: ../../../third_party/skia/include/core/SkFontMetrics.h FILE: ../../../third_party/skia/include/core/SkFontParameters.h FILE: ../../../third_party/skia/include/core/SkFontTypes.h FILE: ../../../third_party/skia/include/core/SkYUVAIndex.h From e8f0c08c997ed6f22040ff3686b62eb3f531543a Mon Sep 17 00:00:00 2001 From: Gary Qian Date: Tue, 6 Nov 2018 12:38:37 -0800 Subject: [PATCH 0181/1537] Add instructions to download the full license log diff. (#6771) --- tools/licenses/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/licenses/README.md b/tools/licenses/README.md index 805c32f8b4bd0..786e3b8fc728c 100644 --- a/tools/licenses/README.md +++ b/tools/licenses/README.md @@ -3,7 +3,7 @@ ## Apply patch generated by CI If you're not working on a Linux box then you can't auto-generate license files. A workaround is provided via CI. -Your build will fail one or more CI checks if your license files are not correct. Open the failing CI check. In the CI output you will find a patch diff that represents the changes that need to be made to your license files. Copy this patch to a temporary patch file wherever you'd like. Then apply the patch to your repo: +Your build will fail one or more CI checks if your license files are not correct. Open the failing CI check. In the CI output you will find a patch diff that represents the changes that need to be made to your license files. Click `Download full logs` (Github removes lines with only whitespaces, which invalidates the diff). Copy this patch to a temporary patch file wherever you'd like. Then apply the patch to your repo: ``` cd flutter/ci/licenses_golden From dda667f8f093599e99a81124fc5b578fe9b13134 Mon Sep 17 00:00:00 2001 From: Gary Qian Date: Tue, 6 Nov 2018 12:41:12 -0800 Subject: [PATCH 0182/1537] Roll update to harfbuzz to 2.1.0 (#6760) --- DEPS | 2 +- ci/licenses_golden/licenses_third_party | 360 ++++++++++++++++++------ third_party/txt/src/minikin/Layout.cpp | 10 - 3 files changed, 282 insertions(+), 90 deletions(-) diff --git a/DEPS b/DEPS index f479345464bf6..2e95a2e896456 100644 --- a/DEPS +++ b/DEPS @@ -138,7 +138,7 @@ deps = { Var('fuchsia_git') + '/third_party/rapidjson' + '@' + '32d07c55db1bb6c2ae17cba4033491a667647753', 'src/third_party/harfbuzz': - Var('fuchsia_git') + '/third_party/harfbuzz' + '@' + 'd837034f09a957faf2814002e8ebd81da6151d1b', + Var('fuchsia_git') + '/third_party/harfbuzz' + '@' + '02caec6c1c6ad996666788b8e920ccaec8b385e5', # Chromium-style # diff --git a/ci/licenses_golden/licenses_third_party b/ci/licenses_golden/licenses_third_party index 7558dd3826319..acfa37c89f4f6 100644 --- a/ci/licenses_golden/licenses_third_party +++ b/ci/licenses_golden/licenses_third_party @@ -1,4 +1,4 @@ -Signature: 0b4495d3d5939970345ed7265c27e7fb +Signature: b024268129b905906ae3c9a0d7a30782 UNUSED LICENSES: @@ -7711,16 +7711,19 @@ FILE: ../../../third_party/harfbuzz/.editorconfig FILE: ../../../third_party/harfbuzz/THANKS FILE: ../../../third_party/harfbuzz/TODO FILE: ../../../third_party/harfbuzz/appveyor.yml +FILE: ../../../third_party/harfbuzz/azure-pipelines.yml FILE: ../../../third_party/harfbuzz/docs/HarfBuzz.png FILE: ../../../third_party/harfbuzz/docs/HarfBuzz.svg FILE: ../../../third_party/harfbuzz/docs/harfbuzz-docs.xml FILE: ../../../third_party/harfbuzz/docs/usermanual-buffers-language-script-and-direction.xml FILE: ../../../third_party/harfbuzz/docs/usermanual-clusters.xml FILE: ../../../third_party/harfbuzz/docs/usermanual-fonts-and-faces.xml +FILE: ../../../third_party/harfbuzz/docs/usermanual-getting-started.xml FILE: ../../../third_party/harfbuzz/docs/usermanual-glyph-information.xml FILE: ../../../third_party/harfbuzz/docs/usermanual-hello-harfbuzz.xml FILE: ../../../third_party/harfbuzz/docs/usermanual-install-harfbuzz.xml FILE: ../../../third_party/harfbuzz/docs/usermanual-opentype-features.xml +FILE: ../../../third_party/harfbuzz/docs/usermanual-shaping-concepts.xml FILE: ../../../third_party/harfbuzz/docs/usermanual-what-is-harfbuzz.xml FILE: ../../../third_party/harfbuzz/docs/version.xml.in FILE: ../../../third_party/harfbuzz/harfbuzz.doap @@ -7733,6 +7736,9 @@ FILE: ../../../third_party/harfbuzz/src/harfbuzz.pc.in FILE: ../../../third_party/harfbuzz/src/hb-ot-shape-complex-arabic-table.hh FILE: ../../../third_party/harfbuzz/src/hb-ot-shape-complex-indic-table.cc FILE: ../../../third_party/harfbuzz/src/hb-ot-shape-complex-use-table.cc +FILE: ../../../third_party/harfbuzz/src/hb-ot-shape-complex-vowel-constraints.cc +FILE: ../../../third_party/harfbuzz/src/hb-ot-tag-table.hh +FILE: ../../../third_party/harfbuzz/src/hb-unicode-emoji-table.hh ---------------------------------------------------------------------------------------------------- HarfBuzz is licensed under the so-called "Old MIT" license. Details follow. For parts of HarfBuzz that are licensed under different licenses see individual @@ -7815,23 +7821,37 @@ FILE: ../../../third_party/harfbuzz/src/dump-indic-data.cc FILE: ../../../third_party/harfbuzz/src/dump-khmer-data.cc FILE: ../../../third_party/harfbuzz/src/dump-myanmar-data.cc FILE: ../../../third_party/harfbuzz/src/dump-use-data.cc +FILE: ../../../third_party/harfbuzz/src/hb-aat-map.hh FILE: ../../../third_party/harfbuzz/src/hb-iter-private.hh +FILE: ../../../third_party/harfbuzz/src/hb-iter.hh FILE: ../../../third_party/harfbuzz/src/hb-map-private.hh FILE: ../../../third_party/harfbuzz/src/hb-map.cc FILE: ../../../third_party/harfbuzz/src/hb-map.h +FILE: ../../../third_party/harfbuzz/src/hb-map.hh +FILE: ../../../third_party/harfbuzz/src/hb-null.hh +FILE: ../../../third_party/harfbuzz/src/hb-ot-face.cc FILE: ../../../third_party/harfbuzz/src/hb-ot-hdmx-table.hh +FILE: ../../../third_party/harfbuzz/src/hb-ot-name-language.cc +FILE: ../../../third_party/harfbuzz/src/hb-ot-name-language.hh +FILE: ../../../third_party/harfbuzz/src/hb-ot-name.cc FILE: ../../../third_party/harfbuzz/src/hb-ot-os2-unicode-ranges.hh FILE: ../../../third_party/harfbuzz/src/hb-ot-shape-complex-khmer-private.hh +FILE: ../../../third_party/harfbuzz/src/hb-ot-shape-complex-khmer.hh FILE: ../../../third_party/harfbuzz/src/hb-ot-shape-complex-myanmar-private.hh +FILE: ../../../third_party/harfbuzz/src/hb-ot-shape-complex-myanmar.hh +FILE: ../../../third_party/harfbuzz/src/hb-ot-shape-complex-vowel-constraints.hh FILE: ../../../third_party/harfbuzz/src/hb-static.cc FILE: ../../../third_party/harfbuzz/src/hb-subset-glyf.cc FILE: ../../../third_party/harfbuzz/src/hb-subset-glyf.hh FILE: ../../../third_party/harfbuzz/src/hb-subset-input.cc +FILE: ../../../third_party/harfbuzz/src/hb-subset-input.hh FILE: ../../../third_party/harfbuzz/src/hb-subset-plan.cc FILE: ../../../third_party/harfbuzz/src/hb-subset-plan.hh FILE: ../../../third_party/harfbuzz/src/hb-subset-private.hh FILE: ../../../third_party/harfbuzz/src/hb-subset.cc FILE: ../../../third_party/harfbuzz/src/hb-subset.h +FILE: ../../../third_party/harfbuzz/src/hb-subset.hh +FILE: ../../../third_party/harfbuzz/src/test-name-table.cc FILE: ../../../third_party/harfbuzz/src/test-unicode-ranges.cc ---------------------------------------------------------------------------------------------------- Copyright © 2018 Google, Inc. @@ -7862,9 +7882,11 @@ LIBRARY: harfbuzz ORIGIN: ../../../third_party/harfbuzz/src/hb-aat-layout-common-private.hh TYPE: LicenseType.unknown FILE: ../../../third_party/harfbuzz/src/hb-aat-layout-common-private.hh +FILE: ../../../third_party/harfbuzz/src/hb-aat-layout-common.hh FILE: ../../../third_party/harfbuzz/src/hb-aat-layout-morx-table.hh FILE: ../../../third_party/harfbuzz/src/hb-aat-layout-private.hh FILE: ../../../third_party/harfbuzz/src/hb-aat-layout.cc +FILE: ../../../third_party/harfbuzz/src/hb-aat-layout.hh FILE: ../../../third_party/harfbuzz/src/hb-debug.hh FILE: ../../../third_party/harfbuzz/src/hb-dsalgs.hh FILE: ../../../third_party/harfbuzz/src/hb-ot-kern-table.hh @@ -7931,13 +7953,47 @@ ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. ==================================================================================================== +==================================================================================================== +LIBRARY: harfbuzz +ORIGIN: ../../../third_party/harfbuzz/src/hb-aat-map.cc +TYPE: LicenseType.unknown +FILE: ../../../third_party/harfbuzz/src/hb-aat-map.cc +FILE: ../../../third_party/harfbuzz/src/hb-ot-map.cc +---------------------------------------------------------------------------------------------------- +Copyright © 2009,2010 Red Hat, Inc. +Copyright © 2010,2011,2013 Google, Inc. + + This is part of HarfBuzz, a text shaping library. + +Permission is hereby granted, without written agreement and without +license or royalty fees, to use, copy, modify, and distribute this +software and its documentation for any purpose, provided that the +above copyright notice and the following two paragraphs appear in +all copies of this software. + +IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR +DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES +ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN +IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGE. + +THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, +BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS +ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO +PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. +==================================================================================================== + ==================================================================================================== LIBRARY: harfbuzz ORIGIN: ../../../third_party/harfbuzz/src/hb-atomic-private.hh TYPE: LicenseType.unknown FILE: ../../../third_party/harfbuzz/src/hb-atomic-private.hh +FILE: ../../../third_party/harfbuzz/src/hb-atomic.hh FILE: ../../../third_party/harfbuzz/src/hb-mutex-private.hh +FILE: ../../../third_party/harfbuzz/src/hb-mutex.hh FILE: ../../../third_party/harfbuzz/src/hb-object-private.hh +FILE: ../../../third_party/harfbuzz/src/hb-object.hh ---------------------------------------------------------------------------------------------------- Copyright © 2007 Chris Wilson Copyright © 2009,2010 Red Hat, Inc. @@ -7969,6 +8025,7 @@ LIBRARY: harfbuzz ORIGIN: ../../../third_party/harfbuzz/src/hb-blob-private.hh TYPE: LicenseType.unknown FILE: ../../../third_party/harfbuzz/src/hb-blob-private.hh +FILE: ../../../third_party/harfbuzz/src/hb-blob.hh ---------------------------------------------------------------------------------------------------- Copyright © 2009 Red Hat, Inc. Copyright © 2018 Google, Inc. @@ -8100,6 +8157,7 @@ ORIGIN: ../../../third_party/harfbuzz/src/hb-buffer-private.hh TYPE: LicenseType.unknown FILE: ../../../third_party/harfbuzz/src/hb-buffer-private.hh FILE: ../../../third_party/harfbuzz/src/hb-buffer.cc +FILE: ../../../third_party/harfbuzz/src/hb-buffer.hh ---------------------------------------------------------------------------------------------------- Copyright © 1998-2004 David Turner and Werner Lemberg Copyright © 2004,2007,2009,2010 Red Hat, Inc. @@ -8186,6 +8244,57 @@ ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. ==================================================================================================== +==================================================================================================== +LIBRARY: harfbuzz +ORIGIN: ../../../third_party/harfbuzz/src/hb-cache.hh +TYPE: LicenseType.unknown +FILE: ../../../third_party/harfbuzz/src/hb-cache.hh +FILE: ../../../third_party/harfbuzz/src/hb-ot-shape-complex-arabic-fallback.hh +FILE: ../../../third_party/harfbuzz/src/hb-ot-shape-complex-indic-private.hh +FILE: ../../../third_party/harfbuzz/src/hb-ot-shape-complex-indic.hh +FILE: ../../../third_party/harfbuzz/src/hb-ot-shape-fallback-private.hh +FILE: ../../../third_party/harfbuzz/src/hb-ot-shape-fallback.hh +FILE: ../../../third_party/harfbuzz/src/hb-ot-shape-normalize-private.hh +FILE: ../../../third_party/harfbuzz/src/hb-ot-shape-normalize.hh +FILE: ../../../third_party/harfbuzz/src/hb-set-digest-private.hh +FILE: ../../../third_party/harfbuzz/src/hb-set-digest.hh +FILE: ../../../third_party/harfbuzz/src/hb-set.cc +FILE: ../../../third_party/harfbuzz/src/hb-set.h +FILE: ../../../third_party/harfbuzz/src/hb-shape-plan-private.hh +FILE: ../../../third_party/harfbuzz/src/hb-shape-plan.cc +FILE: ../../../third_party/harfbuzz/src/hb-shape-plan.h +FILE: ../../../third_party/harfbuzz/src/hb-shape-plan.hh +FILE: ../../../third_party/harfbuzz/src/hb-shaper-impl-private.hh +FILE: ../../../third_party/harfbuzz/src/hb-shaper-impl.hh +FILE: ../../../third_party/harfbuzz/src/hb-shaper-list.hh +FILE: ../../../third_party/harfbuzz/src/hb-shaper-private.hh +FILE: ../../../third_party/harfbuzz/src/hb-shaper.cc +FILE: ../../../third_party/harfbuzz/src/hb-shaper.hh +FILE: ../../../third_party/harfbuzz/src/hb-warning.cc +---------------------------------------------------------------------------------------------------- +Copyright © 2012 Google, Inc. + + This is part of HarfBuzz, a text shaping library. + +Permission is hereby granted, without written agreement and without +license or royalty fees, to use, copy, modify, and distribute this +software and its documentation for any purpose, provided that the +above copyright notice and the following two paragraphs appear in +all copies of this software. + +IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR +DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES +ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN +IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGE. + +THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, +BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS +ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO +PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. +==================================================================================================== + ==================================================================================================== LIBRARY: harfbuzz ORIGIN: ../../../third_party/harfbuzz/src/hb-common.cc @@ -8222,6 +8331,7 @@ ORIGIN: ../../../third_party/harfbuzz/src/hb-common.h TYPE: LicenseType.unknown FILE: ../../../third_party/harfbuzz/src/hb-common.h FILE: ../../../third_party/harfbuzz/src/hb-private.hh +FILE: ../../../third_party/harfbuzz/src/hb.hh ---------------------------------------------------------------------------------------------------- Copyright © 2007,2008,2009 Red Hat, Inc. Copyright © 2011,2012 Google, Inc. @@ -8369,7 +8479,9 @@ LIBRARY: harfbuzz ORIGIN: ../../../third_party/harfbuzz/src/hb-face-private.hh TYPE: LicenseType.unknown FILE: ../../../third_party/harfbuzz/src/hb-face-private.hh +FILE: ../../../third_party/harfbuzz/src/hb-face.hh FILE: ../../../third_party/harfbuzz/src/hb-font-private.hh +FILE: ../../../third_party/harfbuzz/src/hb-font.hh FILE: ../../../third_party/harfbuzz/src/hb-glib.cc FILE: ../../../third_party/harfbuzz/src/hb-glib.h FILE: ../../../third_party/harfbuzz/src/hb-icu.h @@ -8626,6 +8738,7 @@ LIBRARY: harfbuzz ORIGIN: ../../../third_party/harfbuzz/src/hb-machinery-private.hh TYPE: LicenseType.unknown FILE: ../../../third_party/harfbuzz/src/hb-machinery-private.hh +FILE: ../../../third_party/harfbuzz/src/hb-machinery.hh ---------------------------------------------------------------------------------------------------- Copyright © 2007,2008,2009,2010 Red Hat, Inc. Copyright © 2012,2018 Google, Inc. @@ -8656,6 +8769,7 @@ LIBRARY: harfbuzz ORIGIN: ../../../third_party/harfbuzz/src/hb-open-file-private.hh TYPE: LicenseType.unknown FILE: ../../../third_party/harfbuzz/src/hb-open-file-private.hh +FILE: ../../../third_party/harfbuzz/src/hb-open-file.hh ---------------------------------------------------------------------------------------------------- Copyright © 2007,2008,2009 Red Hat, Inc. Copyright © 2012 Google, Inc. @@ -8686,6 +8800,7 @@ LIBRARY: harfbuzz ORIGIN: ../../../third_party/harfbuzz/src/hb-open-type-private.hh TYPE: LicenseType.unknown FILE: ../../../third_party/harfbuzz/src/hb-open-type-private.hh +FILE: ../../../third_party/harfbuzz/src/hb-open-type.hh ---------------------------------------------------------------------------------------------------- Copyright © 2007,2008,2009,2010 Red Hat, Inc. Copyright © 2012 Google, Inc. @@ -8803,6 +8918,69 @@ ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. ==================================================================================================== +==================================================================================================== +LIBRARY: harfbuzz +ORIGIN: ../../../third_party/harfbuzz/src/hb-ot-color.h +TYPE: LicenseType.unknown +FILE: ../../../third_party/harfbuzz/src/hb-ot-color.h +---------------------------------------------------------------------------------------------------- +Copyright © 2016 Google, Inc. +Copyright © 2018 Khaled Hosny +Copyright © 2018 Ebrahim Byagowi + + This is part of HarfBuzz, a text shaping library. + +Permission is hereby granted, without written agreement and without +license or royalty fees, to use, copy, modify, and distribute this +software and its documentation for any purpose, provided that the +above copyright notice and the following two paragraphs appear in +all copies of this software. + +IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR +DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES +ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN +IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGE. + +THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, +BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS +ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO +PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. +==================================================================================================== + +==================================================================================================== +LIBRARY: harfbuzz +ORIGIN: ../../../third_party/harfbuzz/src/hb-ot-face.hh +TYPE: LicenseType.unknown +FILE: ../../../third_party/harfbuzz/src/hb-ot-face.hh +FILE: ../../../third_party/harfbuzz/src/hb-ot-layout-private.hh +FILE: ../../../third_party/harfbuzz/src/hb-ot-layout.hh +---------------------------------------------------------------------------------------------------- +Copyright © 2007,2008,2009 Red Hat, Inc. +Copyright © 2012,2013 Google, Inc. + + This is part of HarfBuzz, a text shaping library. + +Permission is hereby granted, without written agreement and without +license or royalty fees, to use, copy, modify, and distribute this +software and its documentation for any purpose, provided that the +above copyright notice and the following two paragraphs appear in +all copies of this software. + +IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR +DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES +ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN +IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGE. + +THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, +BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS +ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO +PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. +==================================================================================================== + ==================================================================================================== LIBRARY: harfbuzz ORIGIN: ../../../third_party/harfbuzz/src/hb-ot-font.cc @@ -8969,6 +9147,7 @@ LIBRARY: harfbuzz ORIGIN: ../../../third_party/harfbuzz/src/hb-ot-layout-common-private.hh TYPE: LicenseType.unknown FILE: ../../../third_party/harfbuzz/src/hb-ot-layout-common-private.hh +FILE: ../../../third_party/harfbuzz/src/hb-ot-layout-common.hh ---------------------------------------------------------------------------------------------------- Copyright © 2007,2008,2009 Red Hat, Inc. Copyright © 2010,2012 Google, Inc. @@ -9060,6 +9239,7 @@ LIBRARY: harfbuzz ORIGIN: ../../../third_party/harfbuzz/src/hb-ot-layout-gsubgpos-private.hh TYPE: LicenseType.unknown FILE: ../../../third_party/harfbuzz/src/hb-ot-layout-gsubgpos-private.hh +FILE: ../../../third_party/harfbuzz/src/hb-ot-layout-gsubgpos.hh ---------------------------------------------------------------------------------------------------- Copyright © 2007,2008,2009,2010 Red Hat, Inc. Copyright © 2010,2012 Google, Inc. @@ -9085,36 +9265,6 @@ ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. ==================================================================================================== -==================================================================================================== -LIBRARY: harfbuzz -ORIGIN: ../../../third_party/harfbuzz/src/hb-ot-layout-private.hh -TYPE: LicenseType.unknown -FILE: ../../../third_party/harfbuzz/src/hb-ot-layout-private.hh ----------------------------------------------------------------------------------------------------- -Copyright © 2007,2008,2009 Red Hat, Inc. -Copyright © 2012,2013 Google, Inc. - - This is part of HarfBuzz, a text shaping library. - -Permission is hereby granted, without written agreement and without -license or royalty fees, to use, copy, modify, and distribute this -software and its documentation for any purpose, provided that the -above copyright notice and the following two paragraphs appear in -all copies of this software. - -IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR -DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES -ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN -IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGE. - -THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, -BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS -ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO -PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -==================================================================================================== - ==================================================================================================== LIBRARY: harfbuzz ORIGIN: ../../../third_party/harfbuzz/src/hb-ot-layout.cc @@ -9182,6 +9332,7 @@ LIBRARY: harfbuzz ORIGIN: ../../../third_party/harfbuzz/src/hb-ot-map-private.hh TYPE: LicenseType.unknown FILE: ../../../third_party/harfbuzz/src/hb-ot-map-private.hh +FILE: ../../../third_party/harfbuzz/src/hb-ot-map.hh ---------------------------------------------------------------------------------------------------- Copyright © 2009,2010 Red Hat, Inc. Copyright © 2010,2011,2012,2013 Google, Inc. @@ -9207,36 +9358,6 @@ ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. ==================================================================================================== -==================================================================================================== -LIBRARY: harfbuzz -ORIGIN: ../../../third_party/harfbuzz/src/hb-ot-map.cc -TYPE: LicenseType.unknown -FILE: ../../../third_party/harfbuzz/src/hb-ot-map.cc ----------------------------------------------------------------------------------------------------- -Copyright © 2009,2010 Red Hat, Inc. -Copyright © 2010,2011,2013 Google, Inc. - - This is part of HarfBuzz, a text shaping library. - -Permission is hereby granted, without written agreement and without -license or royalty fees, to use, copy, modify, and distribute this -software and its documentation for any purpose, provided that the -above copyright notice and the following two paragraphs appear in -all copies of this software. - -IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR -DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES -ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN -IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGE. - -THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, -BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS -ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO -PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -==================================================================================================== - ==================================================================================================== LIBRARY: harfbuzz ORIGIN: ../../../third_party/harfbuzz/src/hb-ot-math-table.hh @@ -9270,25 +9391,11 @@ PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. ==================================================================================================== LIBRARY: harfbuzz -ORIGIN: ../../../third_party/harfbuzz/src/hb-ot-shape-complex-arabic-fallback.hh +ORIGIN: ../../../third_party/harfbuzz/src/hb-ot-name.h TYPE: LicenseType.unknown -FILE: ../../../third_party/harfbuzz/src/hb-ot-shape-complex-arabic-fallback.hh -FILE: ../../../third_party/harfbuzz/src/hb-ot-shape-complex-indic-private.hh -FILE: ../../../third_party/harfbuzz/src/hb-ot-shape-fallback-private.hh -FILE: ../../../third_party/harfbuzz/src/hb-ot-shape-normalize-private.hh -FILE: ../../../third_party/harfbuzz/src/hb-set-digest-private.hh -FILE: ../../../third_party/harfbuzz/src/hb-set.cc -FILE: ../../../third_party/harfbuzz/src/hb-set.h -FILE: ../../../third_party/harfbuzz/src/hb-shape-plan-private.hh -FILE: ../../../third_party/harfbuzz/src/hb-shape-plan.cc -FILE: ../../../third_party/harfbuzz/src/hb-shape-plan.h -FILE: ../../../third_party/harfbuzz/src/hb-shaper-impl-private.hh -FILE: ../../../third_party/harfbuzz/src/hb-shaper-list.hh -FILE: ../../../third_party/harfbuzz/src/hb-shaper-private.hh -FILE: ../../../third_party/harfbuzz/src/hb-shaper.cc -FILE: ../../../third_party/harfbuzz/src/hb-warning.cc +FILE: ../../../third_party/harfbuzz/src/hb-ot-name.h ---------------------------------------------------------------------------------------------------- -Copyright © 2012 Google, Inc. +Copyright © 2018 Ebrahim Byagowi. This is part of HarfBuzz, a text shaping library. @@ -9316,10 +9423,12 @@ LIBRARY: harfbuzz ORIGIN: ../../../third_party/harfbuzz/src/hb-ot-shape-complex-arabic-private.hh TYPE: LicenseType.unknown FILE: ../../../third_party/harfbuzz/src/hb-ot-shape-complex-arabic-private.hh +FILE: ../../../third_party/harfbuzz/src/hb-ot-shape-complex-arabic.hh FILE: ../../../third_party/harfbuzz/src/hb-ot-shape-complex-use-machine.hh FILE: ../../../third_party/harfbuzz/src/hb-ot-shape-complex-use-machine.rl FILE: ../../../third_party/harfbuzz/src/hb-ot-shape-complex-use-private.hh FILE: ../../../third_party/harfbuzz/src/hb-ot-shape-complex-use.cc +FILE: ../../../third_party/harfbuzz/src/hb-ot-shape-complex-use.hh ---------------------------------------------------------------------------------------------------- Copyright © 2015 Mozilla Foundation. Copyright © 2015 Google, Inc. @@ -9413,6 +9522,7 @@ LIBRARY: harfbuzz ORIGIN: ../../../third_party/harfbuzz/src/hb-ot-shape-complex-private.hh TYPE: LicenseType.unknown FILE: ../../../third_party/harfbuzz/src/hb-ot-shape-complex-private.hh +FILE: ../../../third_party/harfbuzz/src/hb-ot-shape-complex.hh ---------------------------------------------------------------------------------------------------- Copyright © 2010,2011,2012 Google, Inc. @@ -9442,6 +9552,7 @@ LIBRARY: harfbuzz ORIGIN: ../../../third_party/harfbuzz/src/hb-ot-shape-private.hh TYPE: LicenseType.unknown FILE: ../../../third_party/harfbuzz/src/hb-ot-shape-private.hh +FILE: ../../../third_party/harfbuzz/src/hb-ot-shape.hh ---------------------------------------------------------------------------------------------------- Copyright © 2010 Google, Inc. @@ -9525,11 +9636,41 @@ ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. ==================================================================================================== +==================================================================================================== +LIBRARY: harfbuzz +ORIGIN: ../../../third_party/harfbuzz/src/hb-ot-vorg-table.hh +TYPE: LicenseType.unknown +FILE: ../../../third_party/harfbuzz/src/hb-ot-vorg-table.hh +---------------------------------------------------------------------------------------------------- +Copyright © 2018 Adobe Systems Incorporated. + + This is part of HarfBuzz, a text shaping library. + +Permission is hereby granted, without written agreement and without +license or royalty fees, to use, copy, modify, and distribute this +software and its documentation for any purpose, provided that the +above copyright notice and the following two paragraphs appear in +all copies of this software. + +IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR +DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES +ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN +IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGE. + +THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, +BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS +ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO +PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. +==================================================================================================== + ==================================================================================================== LIBRARY: harfbuzz ORIGIN: ../../../third_party/harfbuzz/src/hb-set-private.hh TYPE: LicenseType.unknown FILE: ../../../third_party/harfbuzz/src/hb-set-private.hh +FILE: ../../../third_party/harfbuzz/src/hb-set.hh ---------------------------------------------------------------------------------------------------- Copyright © 2012,2017 Google, Inc. @@ -9605,6 +9746,7 @@ ORIGIN: ../../../third_party/harfbuzz/src/hb-unicode-private.hh TYPE: LicenseType.unknown FILE: ../../../third_party/harfbuzz/src/hb-unicode-private.hh FILE: ../../../third_party/harfbuzz/src/hb-unicode.cc +FILE: ../../../third_party/harfbuzz/src/hb-unicode.hh ---------------------------------------------------------------------------------------------------- Copyright © 2009 Red Hat, Inc. Copyright © 2011 Codethink Limited @@ -9667,6 +9809,7 @@ LIBRARY: harfbuzz ORIGIN: ../../../third_party/harfbuzz/src/hb-utf-private.hh TYPE: LicenseType.unknown FILE: ../../../third_party/harfbuzz/src/hb-utf-private.hh +FILE: ../../../third_party/harfbuzz/src/hb-utf.hh ---------------------------------------------------------------------------------------------------- Copyright © 2011,2012,2014 Google, Inc. @@ -9691,6 +9834,35 @@ ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. ==================================================================================================== +==================================================================================================== +LIBRARY: harfbuzz +ORIGIN: ../../../third_party/harfbuzz/src/hb-vector.hh +TYPE: LicenseType.unknown +FILE: ../../../third_party/harfbuzz/src/hb-vector.hh +---------------------------------------------------------------------------------------------------- +Copyright © 2017,2018 Google, Inc. + + This is part of HarfBuzz, a text shaping library. + +Permission is hereby granted, without written agreement and without +license or royalty fees, to use, copy, modify, and distribute this +software and its documentation for any purpose, provided that the +above copyright notice and the following two paragraphs appear in +all copies of this software. + +IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR +DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES +ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN +IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGE. + +THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, +BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS +ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO +PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. +==================================================================================================== + ==================================================================================================== LIBRARY: harfbuzz ORIGIN: ../../../third_party/harfbuzz/src/test-buffer-serialize.cc @@ -9720,6 +9892,36 @@ ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. ==================================================================================================== +==================================================================================================== +LIBRARY: harfbuzz +ORIGIN: ../../../third_party/harfbuzz/src/test-ot-color.cc +TYPE: LicenseType.unknown +FILE: ../../../third_party/harfbuzz/src/test-ot-color.cc +---------------------------------------------------------------------------------------------------- +Copyright © 2018 Ebrahim Byagowi +Copyright © 2018 Khaled Hosny + + This is part of HarfBuzz, a text shaping library. + +Permission is hereby granted, without written agreement and without +license or royalty fees, to use, copy, modify, and distribute this +software and its documentation for any purpose, provided that the +above copyright notice and the following two paragraphs appear in +all copies of this software. + +IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR +DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES +ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN +IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGE. + +THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, +BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS +ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO +PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. +==================================================================================================== + ==================================================================================================== LIBRARY: harfbuzz ORIGIN: ../../../third_party/harfbuzz/src/test-size-params.cc @@ -17631,4 +17833,4 @@ freely, subject to the following restrictions: misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. ==================================================================================================== -Total license count: 299 +Total license count: 304 diff --git a/third_party/txt/src/minikin/Layout.cpp b/third_party/txt/src/minikin/Layout.cpp index 4339fcb02a920..436c59b9f9df3 100644 --- a/third_party/txt/src/minikin/Layout.cpp +++ b/third_party/txt/src/minikin/Layout.cpp @@ -170,20 +170,10 @@ class LayoutCache : private android::OnEntryRemoved { static const size_t kMaxEntries = 5000; }; -static unsigned int disabledDecomposeCompatibility(hb_unicode_funcs_t*, - hb_codepoint_t, - hb_codepoint_t*, - void*) { - return 0; -} - class LayoutEngine { public: LayoutEngine() { unicodeFunctions = hb_unicode_funcs_create(hb_icu_get_unicode_funcs()); - /* Disable the function used for compatibility decomposition */ - hb_unicode_funcs_set_decompose_compatibility_func( - unicodeFunctions, disabledDecomposeCompatibility, NULL, NULL); hbBuffer = hb_buffer_create(); hb_buffer_set_unicode_funcs(hbBuffer, unicodeFunctions); } From 21eb1caae69510074a03ef3f5e3605020fb7cbdf Mon Sep 17 00:00:00 2001 From: Ian Hickson Date: Tue, 6 Nov 2018 13:41:06 -0800 Subject: [PATCH 0183/1537] Update the contributing guide (#6754) Content has moved to the wiki. --- CONTRIBUTING.md | 275 ++---------------------------------------------- README.md | 33 ++---- 2 files changed, 18 insertions(+), 290 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 5b8c2741257e2..aa1efa2bc0437 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -3,275 +3,16 @@ Contributing to the Flutter engine [![Build Status](https://cirrus-ci.com/flutter/engine.svg)](https://cirrus-ci.com/flutter/engine) -_See also: [Flutter's code of conduct](https://flutter.io/design-principles/#code-of-conduct)_ +_See also: [Flutter's code of conduct](https://github.com/flutter/flutter/blob/master/CODE_OF_CONDUCT.md)_ Welcome ------- -This guide introduces you to building and contributing to the Flutter engine. -For an introduction to contributing to the Flutter framework, see [the equivalent -document in the framework's repository](https://github.com/flutter/flutter/blob/master/CONTRIBUTING.md). +For an introduction to contributing to Flutter, see [our +contributor +guide](https://github.com/flutter/flutter/blob/master/CONTRIBUTING.md). - -I built it before. Remind me, how do I do it again? ---------------------------------------------------- - -If you have previously built the engine (i.e. your environment is already setup) and just want a refresher, then feel free to skip to one of the following sections: - -- [Build for Android](#android-cross-compiling-from-mac-or-linux) -- [Build for iOS](#ios-cross-compiling-from-mac) -- [Build flutter_tester](#desktop-mac-and-linux-for-tests) - -Otherwise, begin from the next section, which will help you prepare your environment. - -Things you will need --------------------- - - * Linux, Mac OS X, or Windows - * Windows doesn't support cross-compiling artifacts for Android or iOS - * Linux doesn't support cross-compiling artifacts for iOS - * git (used for source version control). - * An IDE. We recommend [IntelliJ with the Flutter plugin](https://flutter.io/intellij-ide/) or Xcode. - * An ssh client (used to authenticate with GitHub). - * Chromium's [depot_tools](http://commondatastorage.googleapis.com/chrome-infra-docs/flat/depot_tools/docs/html/depot_tools_tutorial.html#_setting_up) (make sure it's in your path). We use the `gclient` tool from depot_tools. - * Python (used by many of our tools, including 'gclient'). - * On Mac OS X and Linux: curl and unzip (used by `gclient sync`). - * On Windows: Visual Studio (required for non-Googlers only). - * Recommended for Googlers: Goma for distributed builds. - -You do not need [Dart](https://www.dartlang.org/downloads/linux.html) installed, as a Dart tool chain is automatically downloaded as part of the "getting the code" step. Similarly for the Android SDK, it's downloaded by the `gclient sync` step below. - -Getting the code and configuring your environment -------------------------------------------------- - - * Ensure all the dependencies described in the previous section, in particular git, ssh, depot_tools, python, and curl, are installed. - * Fork `https://github.com/flutter/engine` into your own GitHub account. If you already have a fork, and are now installing a development environment on a new machine, make sure you've updated your fork so that you don't use stale configuration options from long ago. Do not use `git clone` to check out this repository; `gclient` will do it for you. - * If you haven't configured your machine with an SSH key that's known to github then - follow the directions here: https://help.github.com/articles/generating-ssh-keys/. - * Create an empty directory for your copy of the repository. For best results, call it `engine`: some of the tools assume this name when working across repositories. (They can be configured to use other names too, so this isn't a strict requirement.) - * Create a `.gclient` file in the `engine` directory with the following contents, replacing - `` with your GitHub account name: - -``` -solutions = [ - { - "managed": False, - "name": "src/flutter", - "url": "git@github.com:/engine.git", - "custom_deps": {}, - "deps_file": "DEPS", - "safesync_url": "", - }, -] -``` - - * `cd engine` (Change to the directory in which you put the `.gclient` file.) - * `gclient sync` This will fetch all the source code that Flutter depends on. Avoid interrupting this script, it can leave your repository in an inconsistent state that is tedious to clean up. (This step automatically runs `git clone`, among other things.) - * `cd src/flutter` (Change to the `flutter` directory of the `src` directory that `gclient sync` created in your `engine` directory.) - * `git remote add upstream git@github.com:flutter/engine.git` (So that you fetch from the master `flutter/engine` repository, not your clone, when running `git fetch` et al.) - * `cd ..` (Return to the `src` directory that `gclient sync` created in your `engine` directory.) - * If you're on Linux, run `sudo ./build/install-build-deps-android.sh` - * If you're on Linux, run `sudo ./build/install-build-deps.sh` - * If you're on Mac, install Oracle's Java JDK, version 1.7 or later. - * If you're on Mac, install `ant`: `brew install ant` - * If you're on Windows, install Visual Studio (non-Google developers only) - * If you're planning on working on the [buildroot](https://github.com/flutter/buildroot) repository as well, and have a local checkout of that repository, run the following commands in the `src` directory to update your git remotes accordingly: - - ```bash - git remote rename origin upstream - git remote add origin git@github.com:/buildroot.git - ``` - -Building and running the code ------------------------------ - -### General - -Most developers will use the `flutter` tool in [the main Flutter repository](https://github.com/flutter/flutter) for interacting with their built flutter/engine. To do so, the `flutter` tool accepts two global parameters `local-engine-src-path` and `local-engine`, a typical invocation would be: `--local-engine-src-path /path/to/engine/src --local-engine=android_debug_unopt`. - -Additionally if you've modified dart sources in `flutter/engine`, you'll need to add a `dependency_overrides` section to point to your modified `package:sky_engine` and `package:sky_services` to the `pubspec.yaml` for the flutter app you're using the custom engine with. A typical example would be: -``` -dependency_overrides: - sky_engine: - path: /path/to/flutter/engine/out/host_debug/gen/dart-pkg/sky_engine - sky_services: - path: /path/to/flutter/engine/out/host_debug/gen/dart-pkg/sky_services -``` -Depending on the platform you choose below, you will need to replace `host_debug` with the appropriate directory. - -### Android (cross-compiling from Mac or Linux) - -Run the following steps, from the `src` directory created in the steps above: - -* Update the Flutter Engine repo. - * `git pull upstream master` in `src/flutter` -* Update your dependencies - * `gclient sync` -* Prepare your build files - * `./flutter/tools/gn --android --unoptimized` for device-side executables - * `./flutter/tools/gn --android --android-cpu x86 --unoptimized` for x86 emulators - * `./flutter/tools/gn --android --android-cpu x64 --unoptimized` for x64 emulators - * `./flutter/tools/gn --unoptimized` for host-side executables -* Build your executables - * `ninja -C out/android_debug_unopt` for device-side executables - * `ninja -C out/android_debug_unopt_x86` for x86 emulators - * `ninja -C out/android_debug_unopt_x64` for x64 emulators - * `ninja -C out/host_debug_unopt` for host-side executables - * These commands can be combined. Ex: `ninja -C out/android_debug_unopt && ninja -C out/host_debug_unopt` - * For Googlers, consider also using the option `-j 1000` to parallelize the build using Goma. - -This builds a debug-enabled ("unoptimized") binary configured to run Dart in -checked mode ("debug"). There are other versions, [discussed on the wiki](https://github.com/flutter/flutter/wiki/Flutter's-modes). - -To run an example with your locally built binary, you'll also need to clone -[the main Flutter repository](https://github.com/flutter/flutter). See -[the instructions for contributing](https://github.com/flutter/flutter/blob/master/CONTRIBUTING.md) -to the main Flutter repository for detailed instructions. For your convenience, -the `engine` and `flutter` directories should be in the same parent directory. - -Once you've got everything set up, you can run an example using your locally -built engine by switching to that example's directory, running `pub get` to make -sure its dependencies have been downloaded, and using `flutter run` with an -explicit `--local-engine-src-path` pointing at the `engine/src` directory. Make -sure you have a device connected over USB and debugging enabled on that device: - - * `cd /path/to/flutter/examples/hello_world` - * `../../bin/flutter run --local-engine-src-path /path/to/engine/src --local-engine=android_debug_unopt` or `--local-engine=android_debug_unopt_x64` - -If you put the `engine` and `flutter` directories side-by-side, you can skip the -tedious `--local-engine-src-path` option and the `flutter` tool will -automatically determine the path. - -You can also specify a particular Dart file to run if you want to run an example -that doesn't have a `lib/main.dart` file using the `-t` command-line option. For -example, to run the `tabs.dart` example in the `examples/widgets` directory on a -connected Android device, from that directory you would run: - - * `flutter run --local-engine=android_debug_unopt -t tabs.dart` - -If you're going to be debugging crashes in the engine, make sure you add -`android:debuggable="true"` to the `` element in the -`android/AndroidManifest.xml` file for the Flutter app you are using -to test the engine. - -### iOS (cross-compiling from Mac) - -* Make sure you have Xcode 9.0+ installed. -* `git pull upstream master` in `src/flutter` to update the Flutter Engine repo. -* `gclient sync` to update dependencies. -* `./flutter/tools/gn --ios --unoptimized` to prepare build files for device-side executables (or `--ios --simulator --unoptimized` for simulator). - * For a discussion on the various flags and modes, [read this discussion](https://github.com/flutter/flutter/wiki/Flutter's-modes). - * This also produces an Xcode project for working with the engine source code at `out/ios_debug_unopt` -* `./flutter/tools/gn --unoptimized` to prepare the build files for host-side executables. -* `ninja -C out/ios_debug_unopt && ninja -C out/host_debug_unopt` to build all artifacts (use `out/ios_debug_sim_unopt` for Simulator). - * For Googlers, consider also using the option `-j 1000` to parallelize the build using Goma. - -Once the artifacts are built, you can start using them in your application by following these steps: -* `cd /path/to/flutter/examples/hello_world` -* `../../bin/flutter run --local-engine-src-path /path/to/engine/src --local-engine=ios_debug_unopt` or `--local-engine=ios_debug_sim_unopt` for simulator - * If you are debugging crashes in the engine, you can connect the `LLDB` debugger from `Xcode` by opening `ios/Runner.xcworkspace` and starting the application by clicking the Run button (CMD + R). - * To debug non crashing code, open Xcode with `ios/Runner.xcworkspace`, expand Flutter->Runner->Supporting Files->main.m in the Runner project. Put a breakpoint in main() then set your desired breakpoint in the engine in [lldb](https://lldb.llvm.org/tutorial.html) via `breakpoint set -...`. - * Note that this will set a `$LOCAL_ENGINE` variable in your `Generated.xcconfig` file for the Flutter application. This variable will be set until you run `flutter run` again with either a different `--local-engine` option, or with none at all (which will unset it). This is important to note if you plan to re-run your Flutter `Runner.xcodeproj` directly from Xcode. - - -### Desktop (Mac and Linux), for tests - -To run the tests, you should first clone [the main Flutter repository](https://github.com/flutter/flutter). -See [the instructions for contributing](https://github.com/flutter/flutter/blob/master/CONTRIBUTING.md) -to the main Flutter repository for detailed instructions. By default, Flutter will use the bundled version -of the engine. Follow the next steps to run tests using the locally-built engine: - -* `git pull upstream master` in `src/flutter` to update the Flutter Engine repo. -* `gclient sync` to update your dependencies. -* `./flutter/tools/gn --unoptimized` to prepare your build files. -* `ninja -C out/host_debug_unopt` to build a desktop unoptimized binary. - * For Googlers, consider also using the option `-j 1000` to parallelize the build using Goma. -* `--unoptimized` disables C++ compiler optimizations and does not strip debug symbols. You may skip the flag and invoke `ninja -C out/host_debug` if you would rather have the native components optimized. -* `flutter test --local-engine=host_debug_unopt` will run tests using the locally-built `flutter_tester`. - -### Desktop (gen_snapshot for Windows) - -You can only build selected binaries on Windows (mainly `gen_snapshot`). - -* Make sure you have Visual Studio installed (non-Googlers only). -* `git pull upstream master` in `src/flutter` to update the Flutter Engine repo. -* `gclient sync` to update your dependencies. -* `python .\flutter\tools\gn [--unoptimized] --runtime-mode=[debug|profile|release] [--android]` to prepare your build files. -* `ninja -C .\out\ gen_snapshot` to build. - -### Building all the builds that matter on Linux and Android - -The following script will update all the builds that matter if you're developing on Linux and testing on Android and created the `.gclient` file in `~/dev/engine`: - -```bash -set -ex - -cd ~/dev/engine/src/flutter -git fetch upstream -git rebase upstream/master -gclient sync -cd .. - -flutter/tools/gn --unoptimized --runtime-mode=debug -flutter/tools/gn --android --unoptimized --runtime-mode=debug -flutter/tools/gn --android --unoptimized --runtime-mode=profile -flutter/tools/gn --android --unoptimized --runtime-mode=release -flutter/tools/gn --android --runtime-mode=debug -flutter/tools/gn --android --runtime-mode=profile -flutter/tools/gn --android --runtime-mode=release - -cd out -find . -mindepth 1 -maxdepth 1 -type d | xargs -n 1 sh -c 'ninja -C $0 || exit 255' -``` - - -Contributing code ------------------ - -We gladly accept contributions via GitHub pull requests. See [the wiki](https://github.com/flutter/engine/wiki) for -information about the engine's architecture. - -To start working on a patch: - - * Make sure you are in the `engine/src/flutter` directory. - * `git fetch upstream` - * `git checkout upstream/master -b name_of_your_branch` - * Hack away. - * Please peruse our [style guides](https://flutter.io/style-guide/) and - [design principles](https://flutter.io/design-principles/) before - working on anything non-trivial. These guidelines are intended to - keep the code consistent and avoid common pitfalls. - * C, C++, and Objective-C code should be formatted with `clang-format` before - submission (use `buildtools//clang/bin/clang-format --style=file -i`). - * `git commit -a -m ""` - * `git push origin name_of_your_branch` - -To send us a pull request: - - * `git pull-request` (if you are using [Hub](http://github.com/github/hub/)) or - go to `https://github.com/flutter/engine` and click the - "Compare & pull request" button - -Once you've gotten an LGTM from a project maintainer, submit your changes to the -`master` branch using one of the following methods: - -* Wait for one of the project maintainers to submit it for you -* Click the green "Merge pull request" button on the GitHub UI of your pull - request (requires commit access) -* `git push upstream name_of_your_branch:master` (requires commit access) - -Then, make sure it doesn't make our tree catch fire by watching [the waterfall](https://build.chromium.org/p/client.flutter/waterfall). The waterfall runs -slightly different tests than Travis, so it's possible for the tree to go red even if -Travis did not. If that happens, please immediately revert your change. Do not check -anything in while the tree is red unless you are trying to resolve the problem. - -Please make sure all your checkins have detailed commit messages explaining the patch. -If you made multiple commits for a single pull request, either make sure each one has a detailed -message explaining that specific commit, or squash your commits into one single checkin with a -detailed message before sending the pull request. - -You must complete the -[Contributor License Agreement](https://cla.developers.google.com/clas). -You can do this online, and it only takes a minute. -If you've never submitted code before, you must add your (or your -organization's) name and contact info to the [AUTHORS](AUTHORS) file. +For specific instructions regarding building Flutter's engine, see +[Setting up the Engine development +environment](https://github.com/flutter/flutter/wiki/Setting-up-the-Engine-development-environment) +on our wiki. Those instructions are part of the broader onboarding instructions described in the contributing guide. diff --git a/README.md b/README.md index 7f2d8a53c4850..8eedc223a79fb 100644 --- a/README.md +++ b/README.md @@ -14,26 +14,13 @@ toolchain. Most developers will interact with Flutter via the [Flutter Framework](https://github.com/flutter/flutter), which provides a modern, reactive framework, and a rich set of platform, layout and foundation widgets. - -_Flutter is still under development and we continue to add -features._ However, it is ready for use by early adopters who are willing to deal -with the odd wrinkle or two along the way. We hope you try it out and send -us [feedback](mailto:flutter-dev@googlegroups.com). - - - For information about using Flutter to build apps, please see - the [getting started guide](https://flutter.io/getting-started/). - - - For information about contributing to the Flutter framework, please see - [the main Flutter repository](https://github.com/flutter/flutter/blob/master/CONTRIBUTING.md). - - - For information about contributing code to the engine itself, please see - [CONTRIBUTING.md](CONTRIBUTING.md). - - - For information about the engine's architecture, please see - [the wiki](https://github.com/flutter/engine/wiki). - -Community ---------- - -Join us in our [Gitter chat room](https://gitter.im/flutter/flutter) or join our mailing list, -[flutter-dev@googlegroups.com](https://groups.google.com/forum/#!forum/flutter-dev). +If you are new to Flutter, then you will find more general information +on the Flutter project, including tutorials and samples, on our Web +site at [flutter.io](https://flutter.io). For specific information +about Flutter's APIs, consider our API reference which can be found at +the [docs.flutter.io](https://docs.flutter.io/). + +If you intend to contribute to Flutter, welcome! You are encouraged to +start with [our contributor +guide](https://github.com/flutter/flutter/blob/master/CONTRIBUTING.md), +which helps onboard new team members. From e61f05256eaafa06152956cbb1eac684a2fc1c6f Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Tue, 6 Nov 2018 18:50:18 -0500 Subject: [PATCH 0184/1537] Roll src/third_party/skia 2aa9a22fe159..630e7d651a34 (5 commits) (#6773) https://skia.googlesource.com/skia.git/+log/2aa9a22fe159..630e7d651a34 Created with: gclient setdep -r src/third_party/skia@630e7d651a34 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- sky/packages/sky_engine/LICENSE | 123 +++++++++++++++++++++++++++++++ 3 files changed, 125 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 2e95a2e896456..cf60da13cd62e 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '2aa9a22fe159dcdb582127b3912a5cd4a98abb8a', + 'skia_revision': '630e7d651a34283371619d8633d9a7ae6df87f35', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index da6e9e8d86986..59212c27ac8e2 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 296c8243892ab5e244211130f7830fbe +Signature: 90c2677888abc6b98ee66f2bbb4ec743 UNUSED LICENSES: diff --git a/sky/packages/sky_engine/LICENSE b/sky/packages/sky_engine/LICENSE index 44b03e07d4355..abca316eb9fc0 100644 --- a/sky/packages/sky_engine/LICENSE +++ b/sky/packages/sky_engine/LICENSE @@ -6359,6 +6359,32 @@ PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz +Copyright © 2016 Google, Inc. +Copyright © 2018 Khaled Hosny +Copyright © 2018 Ebrahim Byagowi + + This is part of HarfBuzz, a text shaping library. + +Permission is hereby granted, without written agreement and without +license or royalty fees, to use, copy, modify, and distribute this +software and its documentation for any purpose, provided that the +above copyright notice and the following two paragraphs appear in +all copies of this software. + +IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR +DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES +ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN +IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGE. + +THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, +BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS +ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO +PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. +-------------------------------------------------------------------------------- +harfbuzz + Copyright © 2016 Igalia S.L. This is part of HarfBuzz, a text shaping library. @@ -6432,6 +6458,30 @@ PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz +Copyright © 2017,2018 Google, Inc. + + This is part of HarfBuzz, a text shaping library. + +Permission is hereby granted, without written agreement and without +license or royalty fees, to use, copy, modify, and distribute this +software and its documentation for any purpose, provided that the +above copyright notice and the following two paragraphs appear in +all copies of this software. + +IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR +DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES +ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN +IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGE. + +THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, +BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS +ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO +PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. +-------------------------------------------------------------------------------- +harfbuzz + Copyright © 2018 Ebrahim Byagowi This is part of HarfBuzz, a text shaping library. @@ -6481,6 +6531,55 @@ PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz +Copyright © 2018 Ebrahim Byagowi +Copyright © 2018 Khaled Hosny + + This is part of HarfBuzz, a text shaping library. + +Permission is hereby granted, without written agreement and without +license or royalty fees, to use, copy, modify, and distribute this +software and its documentation for any purpose, provided that the +above copyright notice and the following two paragraphs appear in +all copies of this software. + +IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR +DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES +ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN +IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGE. + +THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, +BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS +ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO +PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. +-------------------------------------------------------------------------------- +harfbuzz + +Copyright © 2018 Ebrahim Byagowi. + + This is part of HarfBuzz, a text shaping library. + +Permission is hereby granted, without written agreement and without +license or royalty fees, to use, copy, modify, and distribute this +software and its documentation for any purpose, provided that the +above copyright notice and the following two paragraphs appear in +all copies of this software. + +IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR +DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES +ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN +IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGE. + +THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, +BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS +ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO +PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. +-------------------------------------------------------------------------------- +harfbuzz + Copyright © 2018 Google, Inc. This is part of HarfBuzz, a text shaping library. @@ -6505,6 +6604,30 @@ PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz +Copyright © 2018 Adobe Systems Incorporated. + + This is part of HarfBuzz, a text shaping library. + +Permission is hereby granted, without written agreement and without +license or royalty fees, to use, copy, modify, and distribute this +software and its documentation for any purpose, provided that the +above copyright notice and the following two paragraphs appear in +all copies of this software. + +IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR +DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES +ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN +IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGE. + +THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, +BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS +ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO +PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. +-------------------------------------------------------------------------------- +harfbuzz + HarfBuzz is licensed under the so-called "Old MIT" license. Details follow. For parts of HarfBuzz that are licensed under different licenses see individual files names COPYING in subdirectories where applicable. From 6fa5c0a828c14480080030b1fff1d649e6ed600b Mon Sep 17 00:00:00 2001 From: Gary Qian Date: Tue, 6 Nov 2018 16:16:54 -0800 Subject: [PATCH 0185/1537] Pass scriptCode into Locale on initialization. (#6711) --- lib/ui/hooks.dart | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/lib/ui/hooks.dart b/lib/ui/hooks.dart index 7c449a504770c..04f5d71bc3a3d 100644 --- a/lib/ui/hooks.dart +++ b/lib/ui/hooks.dart @@ -53,8 +53,14 @@ void _updateLocales(List locales) { final int numLocales = locales.length ~/ stringsPerLocale; window._locales = new List(numLocales); for (int localeIndex = 0; localeIndex < numLocales; localeIndex++) { - window._locales[localeIndex] = new Locale(locales[localeIndex * stringsPerLocale], - locales[localeIndex * stringsPerLocale + 1]); + final String countryCode = locales[localeIndex * stringsPerLocale + 1]; + final String scriptCode = locales[localeIndex * stringsPerLocale + 2]; + + window._locales[localeIndex] = new Locale.fromSubtags( + languageCode: locales[localeIndex * stringsPerLocale], + countryCode: countryCode.isEmpty ? null : countryCode, + scriptCode: scriptCode.isEmpty ? null : scriptCode, + ); } _invoke(window.onLocaleChanged, window._onLocaleChangedZone); } From 177e043b53bce21257dd97324b05e5879aa8e774 Mon Sep 17 00:00:00 2001 From: Dan Field Date: Tue, 6 Nov 2018 17:15:11 -0800 Subject: [PATCH 0186/1537] fix setInitialRoute (#6774) * fix setInitialRoute --- .gitignore | 1 + .../darwin/ios/framework/Headers/FlutterEngine.h | 4 ++-- .../darwin/ios/framework/Source/FlutterEngine.mm | 13 ++++++++++--- .../ios/framework/Source/FlutterEngine_Internal.h | 1 + .../ios/framework/Source/FlutterViewController.mm | 12 ++++++++++-- 5 files changed, 24 insertions(+), 7 deletions(-) diff --git a/.gitignore b/.gitignore index 730c7e4ce18fb..870f951370586 100644 --- a/.gitignore +++ b/.gitignore @@ -20,3 +20,4 @@ tags Thumbs.db .idea pubspec.lock +.vscode/ diff --git a/shell/platform/darwin/ios/framework/Headers/FlutterEngine.h b/shell/platform/darwin/ios/framework/Headers/FlutterEngine.h index 52e8017a299af..0254139847e3a 100644 --- a/shell/platform/darwin/ios/framework/Headers/FlutterEngine.h +++ b/shell/platform/darwin/ios/framework/Headers/FlutterEngine.h @@ -78,7 +78,7 @@ FLUTTER_EXPORT * tree-shaken by the Dart compiler. * @return YES if the call succeeds in creating and running a Flutter Engine instance; NO otherwise. */ -- (bool)runWithEntrypoint:(NSString*)entrypoint; +- (BOOL)runWithEntrypoint:(NSString*)entrypoint; /** * Runs a Dart program on an Isolate using the specified entrypoint and Dart library, @@ -95,7 +95,7 @@ FLUTTER_EXPORT * this will default to the same library as the `main()` function in the Dart program. * @return YES if the call succeeds in creating and running a Flutter Engine instance; NO otherwise. */ -- (bool)runWithEntrypoint:(NSString*)entrypoint libraryURI:(NSString*)uri; +- (BOOL)runWithEntrypoint:(NSString*)entrypoint libraryURI:(NSString*)uri; /** * Sets the `FlutterViewController` for this instance. The FlutterEngine must be diff --git a/shell/platform/darwin/ios/framework/Source/FlutterEngine.mm b/shell/platform/darwin/ios/framework/Source/FlutterEngine.mm index 33ca6477bd06a..e25f2db853bc9 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterEngine.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterEngine.mm @@ -264,10 +264,10 @@ - (void)launchEngine:(NSString*)entrypoint libraryURI:(NSString*)libraryOrNil { })); } -- (bool)runWithEntrypoint:(NSString*)entrypoint libraryURI:(NSString*)libraryURI { +- (BOOL)createShell:(NSString*)entrypoint libraryURI:(NSString*)libraryURI { if (_shell != nullptr) { FML_LOG(WARNING) << "This FlutterEngine was already invoked."; - return false; + return NO; } static size_t shellCount = 1; @@ -351,13 +351,20 @@ - (bool)runWithEntrypoint:(NSString*)entrypoint libraryURI:(NSString*)libraryURI << entrypoint.UTF8String; } else { [self maybeSetupPlatformViewChannels]; + } + + return _shell != nullptr; +} + +- (BOOL)runWithEntrypoint:(NSString*)entrypoint libraryURI:(NSString*)libraryURI { + if ([self createShell:entrypoint libraryURI:libraryURI]) { [self launchEngine:entrypoint libraryURI:libraryURI]; } return _shell != nullptr; } -- (bool)runWithEntrypoint:(NSString*)entrypoint { +- (BOOL)runWithEntrypoint:(NSString*)entrypoint { return [self runWithEntrypoint:entrypoint libraryURI:nil]; } diff --git a/shell/platform/darwin/ios/framework/Source/FlutterEngine_Internal.h b/shell/platform/darwin/ios/framework/Source/FlutterEngine_Internal.h index 86d1fc736eb32..196516be4f020 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterEngine_Internal.h +++ b/shell/platform/darwin/ios/framework/Source/FlutterEngine_Internal.h @@ -42,6 +42,7 @@ - (shell::FlutterPlatformViewsController*)platformViewsController; - (FlutterTextInputPlugin*)textInputPlugin; - (void)launchEngine:(NSString*)entrypoint libraryURI:(NSString*)libraryOrNil; +- (BOOL)createShell:(NSString*)entrypoint libraryURI:(NSString*)libraryOrNil; @end diff --git a/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm b/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm index 9c160cef29034..f557d3433aef2 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm @@ -37,6 +37,7 @@ @implementation FlutterViewController { blink::ViewportMetrics _viewportMetrics; BOOL _initialized; BOOL _viewOpaque; + BOOL _engineNeedsLaunch; } #pragma mark - Manage and override all designated initializers @@ -49,6 +50,7 @@ - (instancetype)initWithEngine:(FlutterEngine*)engine if (self) { _viewOpaque = YES; _engine.reset([engine retain]); + _engineNeedsLaunch = NO; _flutterView.reset([[FlutterView alloc] initWithDelegate:_engine opaque:self.isViewOpaque]); _weakFactory = std::make_unique>(self); @@ -68,8 +70,8 @@ - (instancetype)initWithProject:(FlutterDartProject*)projectOrNil _weakFactory = std::make_unique>(self); _engine.reset([[FlutterEngine alloc] initWithName:@"io.flutter" project:projectOrNil]); _flutterView.reset([[FlutterView alloc] initWithDelegate:_engine opaque:self.isViewOpaque]); - [_engine.get() runWithEntrypoint:nil]; - [_engine.get() setViewController:self]; + [_engine.get() createShell:nil libraryURI:nil]; + _engineNeedsLaunch = YES; [self performCommonViewControllerInitialization]; } @@ -371,6 +373,12 @@ - (void)surfaceUpdated:(BOOL)appeared { - (void)viewWillAppear:(BOOL)animated { TRACE_EVENT0("flutter", "viewWillAppear"); + if (_engineNeedsLaunch) { + [_engine.get() launchEngine:nil libraryURI:nil]; + [_engine.get() setViewController:self]; + _engineNeedsLaunch = NO; + } + // Only recreate surface on subsequent appearances when viewport metrics are known. // First time surface creation is done on viewDidLayoutSubviews. if (_viewportMetrics.physical_width) From 4f4c470d2419abed2cac6b02761e207d9b2aa920 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Tue, 6 Nov 2018 22:09:18 -0500 Subject: [PATCH 0187/1537] Roll src/third_party/skia 630e7d651a34..3daed9b12db4 (6 commits) (#6775) https://skia.googlesource.com/skia.git/+log/630e7d651a34..3daed9b12db4 Created with: gclient setdep -r src/third_party/skia@3daed9b12db4 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index cf60da13cd62e..d8b4fb3b5a132 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '630e7d651a34283371619d8633d9a7ae6df87f35', + 'skia_revision': '3daed9b12db44a08cd5cc8f3a7c0f3c936a22e68', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 59212c27ac8e2..f88b2f4fea173 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 90c2677888abc6b98ee66f2bbb4ec743 +Signature: 9db8d820b7473eb49522cf6c94ab04b2 UNUSED LICENSES: From 824daacf6d959abe0dbb564691906bb2445aa0e4 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Wed, 7 Nov 2018 01:30:18 -0500 Subject: [PATCH 0188/1537] Roll src/third_party/skia 3daed9b12db4..2a13921745eb (1 commits) (#6776) https://skia.googlesource.com/skia.git/+log/3daed9b12db4..2a13921745eb Created with: gclient setdep -r src/third_party/skia@2a13921745eb The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index d8b4fb3b5a132..3525267698ff4 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '3daed9b12db44a08cd5cc8f3a7c0f3c936a22e68', + 'skia_revision': '2a13921745eb1b49e9bb0b970ec0b04959a265bd', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index f88b2f4fea173..21b1f84f62977 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 9db8d820b7473eb49522cf6c94ab04b2 +Signature: 27603d822d9f7a03a376e344da648124 UNUSED LICENSES: From e64af7510e8993c081f662ce482f3d917e970fea Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Wed, 7 Nov 2018 04:48:18 -0500 Subject: [PATCH 0189/1537] Roll src/third_party/skia 2a13921745eb..67f5c0ceac22 (2 commits) (#6777) https://skia.googlesource.com/skia.git/+log/2a13921745eb..67f5c0ceac22 Created with: gclient setdep -r src/third_party/skia@67f5c0ceac22 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 3525267698ff4..aa3123786ea5e 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '2a13921745eb1b49e9bb0b970ec0b04959a265bd', + 'skia_revision': '67f5c0ceac22fdc2094a9b6dfe92ff6ab848d6f8', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 21b1f84f62977..da3d364769086 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 27603d822d9f7a03a376e344da648124 +Signature: 53da3fbb77cfebd05f72566c039c9664 UNUSED LICENSES: From daeeedafa507340a2e606694ee6efb27ef52a4b2 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Wed, 7 Nov 2018 08:06:18 -0500 Subject: [PATCH 0190/1537] Roll src/third_party/skia 67f5c0ceac22..273fa2f3bd0b (1 commits) (#6779) https://skia.googlesource.com/skia.git/+log/67f5c0ceac22..273fa2f3bd0b Created with: gclient setdep -r src/third_party/skia@273fa2f3bd0b The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index aa3123786ea5e..0c827d3e05f1a 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '67f5c0ceac22fdc2094a9b6dfe92ff6ab848d6f8', + 'skia_revision': '273fa2f3bd0b5f7dcb4d67bc196a4240d3e2f96e', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index da3d364769086..98c461c34719b 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 53da3fbb77cfebd05f72566c039c9664 +Signature: d3888b4ace24a7c4538ace1f34ce2d13 UNUSED LICENSES: From 2494abdda728e1eada5647872d1c701c623a253e Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Wed, 7 Nov 2018 11:27:18 -0500 Subject: [PATCH 0191/1537] Roll src/third_party/skia 273fa2f3bd0b..62cc5f581747 (7 commits) (#6780) https://skia.googlesource.com/skia.git/+log/273fa2f3bd0b..62cc5f581747 Created with: gclient setdep -r src/third_party/skia@62cc5f581747 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 0c827d3e05f1a..6839367a4beac 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '273fa2f3bd0b5f7dcb4d67bc196a4240d3e2f96e', + 'skia_revision': '62cc5f58174767db9247cb553496a65dd381db9c', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 98c461c34719b..c83d57b26b7fc 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: d3888b4ace24a7c4538ace1f34ce2d13 +Signature: 969699ed56b42b33889d1a5fccbb00a1 UNUSED LICENSES: From 4cdddbac429d7eeaeec18856ac6581ed8cfef54c Mon Sep 17 00:00:00 2001 From: Todd Volkert Date: Wed, 7 Nov 2018 09:59:51 -0800 Subject: [PATCH 0192/1537] Fix String comparison as if Java were Dart. (#6781) This also removes unused imports and sorts imports correctly --- .../android/io/flutter/view/FlutterView.java | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/shell/platform/android/io/flutter/view/FlutterView.java b/shell/platform/android/io/flutter/view/FlutterView.java index 7609aaf77ee1b..d837522df052f 100644 --- a/shell/platform/android/io/flutter/view/FlutterView.java +++ b/shell/platform/android/io/flutter/view/FlutterView.java @@ -5,25 +5,20 @@ package io.flutter.view; import android.app.Activity; -import android.content.BroadcastReceiver; import android.content.Context; -import android.content.Intent; -import android.content.IntentFilter; -import android.content.pm.ApplicationInfo; import android.content.res.Configuration; import android.database.ContentObserver; -import android.graphics.PixelFormat; -import android.provider.Settings; -import android.net.Uri; -import android.os.Handler; import android.graphics.Bitmap; +import android.graphics.PixelFormat; import android.graphics.Rect; import android.graphics.SurfaceTexture; +import android.net.Uri; import android.os.Build; +import android.os.Handler; +import android.provider.Settings; import android.text.format.DateFormat; import android.util.AttributeSet; import android.util.Log; -import android.util.TypedValue; import android.view.*; import android.view.accessibility.AccessibilityManager; import android.view.accessibility.AccessibilityNodeProvider; @@ -35,10 +30,8 @@ import io.flutter.plugin.editing.TextInputPlugin; import io.flutter.plugin.platform.PlatformPlugin; import org.json.JSONException; -import org.json.JSONObject; import java.lang.reflect.Method; -import java.net.URI; import java.nio.ByteBuffer; import java.nio.ByteOrder; import java.util.*; @@ -972,7 +965,7 @@ public void onChange(boolean selfChange) { public void onChange(boolean selfChange, Uri uri) { String value = Settings.Global.getString(getContext().getContentResolver(), Settings.Global.TRANSITION_ANIMATION_SCALE); - if (value == "0") { + if (value != null && value.equals("0")) { mAccessibilityFeatureFlags ^= AccessibilityFeature.DISABLE_ANIMATIONS.value; } else { mAccessibilityFeatureFlags &= ~AccessibilityFeature.DISABLE_ANIMATIONS.value; From f9095fcc4c8e9c32c84e724dddf81bd2c159b5fa Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Wed, 7 Nov 2018 14:46:18 -0500 Subject: [PATCH 0193/1537] Roll src/third_party/skia 62cc5f581747..b52c273d3f05 (13 commits) (#6783) https://skia.googlesource.com/skia.git/+log/62cc5f581747..b52c273d3f05 Created with: gclient setdep -r src/third_party/skia@b52c273d3f05 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/DEPS b/DEPS index 6839367a4beac..93295e0e32b3f 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '62cc5f58174767db9247cb553496a65dd381db9c', + 'skia_revision': 'b52c273d3f052f89c075f5c3208fd26d01e84f2b', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index c83d57b26b7fc..c3314e892637d 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 969699ed56b42b33889d1a5fccbb00a1 +Signature: f14b492e93bb0c0650e71e3e47ba21ca UNUSED LICENSES: @@ -2111,7 +2111,6 @@ FILE: ../../../third_party/skia/infra/bots/recipe_modules/build/examples/full.ex FILE: ../../../third_party/skia/infra/bots/recipe_modules/build/examples/full.expected/Build-Debian9-Clang-x86_64-Debug-SafeStack.json FILE: ../../../third_party/skia/infra/bots/recipe_modules/build/examples/full.expected/Build-Debian9-Clang-x86_64-Release-ASAN.json FILE: ../../../third_party/skia/infra/bots/recipe_modules/build/examples/full.expected/Build-Debian9-Clang-x86_64-Release-Fast.json -FILE: ../../../third_party/skia/infra/bots/recipe_modules/build/examples/full.expected/Build-Debian9-Clang-x86_64-Release-Mini.json FILE: ../../../third_party/skia/infra/bots/recipe_modules/build/examples/full.expected/Build-Debian9-Clang-x86_64-Release-NoDEPS.json FILE: ../../../third_party/skia/infra/bots/recipe_modules/build/examples/full.expected/Build-Debian9-Clang-x86_64-Release-Static.json FILE: ../../../third_party/skia/infra/bots/recipe_modules/build/examples/full.expected/Build-Debian9-Clang-x86_64-Release-SwiftShader.json From 70a1106b509ea3f34febca59967ed7a76c05ce33 Mon Sep 17 00:00:00 2001 From: Michael Goderbauer Date: Wed, 7 Nov 2018 12:24:35 -0800 Subject: [PATCH 0194/1537] Unify copyright lines (#6757) --- AUTHORS | 2 + BUILD.gn | 2 +- LICENSE | 2 +- assets/BUILD.gn | 2 +- assets/asset_manager.cc | 2 +- assets/asset_manager.h | 2 +- assets/asset_resolver.h | 2 +- assets/directory_asset_bundle.cc | 2 +- assets/directory_asset_bundle.h | 2 +- assets/zip_asset_store.cc | 2 +- assets/zip_asset_store.h | 2 +- benchmarking/BUILD.gn | 2 +- benchmarking/benchmarking.cc | 2 +- benchmarking/benchmarking.h | 2 +- build/dart/rules.gni | 2 +- build/dart/tools/dart_package_name.py | 2 +- build/dart/tools/dart_pkg.py | 2 +- build/git_revision.py | 2 +- ci/licenses_golden/licenses_flutter | 1164 ++++++----------- common/BUILD.gn | 2 +- common/config.gni | 2 +- common/settings.cc | 2 +- common/settings.h | 2 +- common/task_runners.cc | 2 +- common/task_runners.h | 2 +- examples/BUILD.gn | 2 +- examples/hello_flutter/lib/main.dart | 2 +- examples/hello_flutter/pubspec.yaml | 2 +- examples/spinning_square/lib/main.dart | 2 +- examples/spinning_square/pubspec.yaml | 2 +- flow/BUILD.gn | 2 +- flow/compositor_context.cc | 2 +- flow/compositor_context.h | 2 +- flow/debug_print.cc | 2 +- flow/debug_print.h | 2 +- flow/embedded_views.h | 2 +- flow/export_node.cc | 2 +- flow/export_node.h | 2 +- flow/instrumentation.cc | 2 +- flow/instrumentation.h | 2 +- flow/layers/backdrop_filter_layer.cc | 2 +- flow/layers/backdrop_filter_layer.h | 2 +- flow/layers/child_scene_layer.cc | 2 +- flow/layers/child_scene_layer.h | 2 +- flow/layers/clip_path_layer.cc | 2 +- flow/layers/clip_path_layer.h | 2 +- flow/layers/clip_rect_layer.cc | 2 +- flow/layers/clip_rect_layer.h | 2 +- flow/layers/clip_rrect_layer.cc | 2 +- flow/layers/clip_rrect_layer.h | 2 +- flow/layers/color_filter_layer.cc | 2 +- flow/layers/color_filter_layer.h | 2 +- flow/layers/container_layer.cc | 2 +- flow/layers/container_layer.h | 2 +- flow/layers/layer.cc | 2 +- flow/layers/layer.h | 2 +- flow/layers/layer_tree.cc | 2 +- flow/layers/layer_tree.h | 2 +- flow/layers/opacity_layer.cc | 2 +- flow/layers/opacity_layer.h | 2 +- flow/layers/performance_overlay_layer.cc | 2 +- flow/layers/performance_overlay_layer.h | 2 +- flow/layers/physical_shape_layer.cc | 2 +- flow/layers/physical_shape_layer.h | 2 +- flow/layers/picture_layer.cc | 2 +- flow/layers/picture_layer.h | 2 +- flow/layers/platform_view_layer.cc | 2 +- flow/layers/platform_view_layer.h | 2 +- flow/layers/shader_mask_layer.cc | 2 +- flow/layers/shader_mask_layer.h | 2 +- flow/layers/texture_layer.cc | 2 +- flow/layers/texture_layer.h | 2 +- flow/layers/transform_layer.cc | 2 +- flow/layers/transform_layer.h | 2 +- flow/matrix_decomposition.cc | 2 +- flow/matrix_decomposition.h | 2 +- flow/matrix_decomposition_unittests.cc | 2 +- flow/paint_utils.cc | 2 +- flow/paint_utils.h | 2 +- flow/raster_cache.cc | 2 +- flow/raster_cache.h | 2 +- flow/raster_cache_key.cc | 2 +- flow/raster_cache_key.h | 2 +- flow/raster_cache_unittests.cc | 2 +- flow/scene_update_context.cc | 2 +- flow/scene_update_context.h | 2 +- flow/skia_gpu_object.cc | 2 +- flow/skia_gpu_object.h | 2 +- flow/texture.cc | 2 +- flow/texture.h | 2 +- flutter_kernel_transformers/BUILD.gn | 2 +- .../track_widget_constructor_locations.dart | 2 +- fml/BUILD.gn | 2 +- fml/arraysize.h | 2 +- fml/base32.cc | 2 +- fml/base32.h | 2 +- fml/base32_unittest.cc | 2 +- fml/build_config.h | 2 +- fml/closure.h | 2 +- fml/command_line.cc | 2 +- fml/command_line.h | 2 +- fml/command_line_unittest.cc | 2 +- fml/compiler_specific.h | 2 +- fml/eintr_wrapper.h | 2 +- fml/export.h | 2 +- fml/file.cc | 2 +- fml/file.h | 2 +- fml/file_unittest.cc | 2 +- fml/icu_util.cc | 2 +- fml/icu_util.h | 2 +- fml/log_level.h | 2 +- fml/log_settings.cc | 2 +- fml/log_settings.h | 2 +- fml/log_settings_state.cc | 2 +- fml/logging.cc | 2 +- fml/logging.h | 2 +- fml/macros.h | 2 +- fml/make_copyable.h | 2 +- fml/mapping.cc | 2 +- fml/mapping.h | 2 +- fml/memory/ref_counted.h | 2 +- fml/memory/ref_counted_internal.h | 2 +- fml/memory/ref_counted_unittest.cc | 2 +- fml/memory/ref_ptr.h | 2 +- fml/memory/ref_ptr_internal.h | 2 +- fml/memory/thread_checker.h | 2 +- fml/memory/weak_ptr.h | 2 +- fml/memory/weak_ptr_internal.cc | 2 +- fml/memory/weak_ptr_internal.h | 2 +- fml/memory/weak_ptr_unittest.cc | 2 +- fml/message.cc | 2 +- fml/message.h | 2 +- fml/message_loop.cc | 2 +- fml/message_loop.h | 2 +- fml/message_loop_impl.cc | 2 +- fml/message_loop_impl.h | 2 +- fml/message_loop_unittests.cc | 2 +- fml/message_unittests.cc | 2 +- fml/native_library.h | 2 +- fml/paths.cc | 2 +- fml/paths.h | 2 +- fml/paths_unittests.cc | 2 +- fml/platform/android/jni_util.cc | 2 +- fml/platform/android/jni_util.h | 2 +- fml/platform/android/jni_weak_ref.cc | 2 +- fml/platform/android/jni_weak_ref.h | 2 +- fml/platform/android/message_loop_android.cc | 2 +- fml/platform/android/message_loop_android.h | 2 +- fml/platform/android/paths_android.cc | 2 +- fml/platform/android/paths_android.h | 2 +- fml/platform/android/scoped_java_ref.cc | 2 +- fml/platform/android/scoped_java_ref.h | 2 +- fml/platform/darwin/cf_utils.cc | 2 +- fml/platform/darwin/cf_utils.h | 2 +- fml/platform/darwin/message_loop_darwin.h | 2 +- fml/platform/darwin/message_loop_darwin.mm | 2 +- fml/platform/darwin/paths_darwin.mm | 2 +- fml/platform/darwin/platform_version.h | 2 +- fml/platform/darwin/platform_version.mm | 2 +- fml/platform/darwin/scoped_block.h | 2 +- fml/platform/darwin/scoped_block.mm | 2 +- fml/platform/darwin/scoped_nsobject.h | 23 +- fml/platform/darwin/scoped_nsobject.mm | 2 +- fml/platform/fuchsia/paths_fuchsia.cc | 2 +- fml/platform/linux/message_loop_linux.cc | 2 +- fml/platform/linux/message_loop_linux.h | 2 +- fml/platform/linux/paths_linux.cc | 2 +- fml/platform/linux/timerfd.cc | 2 +- fml/platform/linux/timerfd.h | 2 +- fml/platform/posix/file_posix.cc | 2 +- fml/platform/posix/mapping_posix.cc | 2 +- fml/platform/posix/native_library_posix.cc | 2 +- fml/platform/posix/paths_posix.cc | 2 +- fml/platform/win/errors_win.cc | 2 +- fml/platform/win/errors_win.h | 2 +- fml/platform/win/file_win.cc | 2 +- fml/platform/win/mapping_win.cc | 2 +- fml/platform/win/message_loop_win.cc | 2 +- fml/platform/win/message_loop_win.h | 2 +- fml/platform/win/native_library_win.cc | 2 +- fml/platform/win/paths_win.cc | 2 +- fml/platform/win/wstring_conversion.h | 2 +- fml/string_view.cc | 2 +- fml/string_view.h | 2 +- fml/string_view_unittest.cc | 2 +- fml/synchronization/count_down_latch.cc | 2 +- fml/synchronization/count_down_latch.h | 2 +- .../count_down_latch_unittests.cc | 2 +- fml/synchronization/thread_annotations.h | 2 +- .../thread_annotations_unittest.cc | 2 +- fml/synchronization/thread_checker.h | 2 +- .../thread_checker_unittest.cc | 2 +- fml/synchronization/waitable_event.cc | 2 +- fml/synchronization/waitable_event.h | 2 +- .../waitable_event_unittest.cc | 2 +- fml/task_runner.cc | 2 +- fml/task_runner.h | 2 +- fml/thread.cc | 2 +- fml/thread.h | 2 +- fml/thread_local.h | 2 +- fml/thread_local_unittests.cc | 2 +- fml/thread_unittests.cc | 2 +- fml/time/time_delta.h | 2 +- fml/time/time_delta_unittest.cc | 2 +- fml/time/time_point.cc | 2 +- fml/time/time_point.h | 2 +- fml/time/time_point_unittest.cc | 2 +- fml/time/time_unittest.cc | 2 +- fml/trace_event.cc | 2 +- fml/trace_event.h | 2 +- fml/unique_fd.cc | 2 +- fml/unique_fd.h | 2 +- fml/unique_object.h | 2 +- frontend_server/BUILD.gn | 2 +- frontend_server/lib/server.dart | 2 +- lib/io/BUILD.gn | 2 +- lib/io/dart_io.cc | 2 +- lib/io/dart_io.h | 2 +- lib/snapshot/BUILD.gn | 2 +- lib/snapshot/pubspec.yaml | 2 +- lib/snapshot/snapshot.dart | 2 +- lib/snapshot/snapshot.h | 2 +- lib/snapshot/snapshot_fuchsia.dart | 2 +- lib/ui/BUILD.gn | 2 +- lib/ui/compositing.dart | 2 +- lib/ui/compositing/scene.cc | 2 +- lib/ui/compositing/scene.h | 2 +- lib/ui/compositing/scene_builder.cc | 2 +- lib/ui/compositing/scene_builder.h | 2 +- lib/ui/compositing/scene_host.cc | 2 +- lib/ui/compositing/scene_host.h | 2 +- lib/ui/dart_runtime_hooks.cc | 2 +- lib/ui/dart_runtime_hooks.h | 2 +- lib/ui/dart_ui.cc | 2 +- lib/ui/dart_ui.gni | 2 +- lib/ui/dart_ui.h | 2 +- lib/ui/dart_wrapper.h | 2 +- lib/ui/geometry.dart | 2 +- lib/ui/hash_codes.dart | 2 +- lib/ui/hooks.dart | 2 +- lib/ui/isolate_name_server.dart | 2 +- .../isolate_name_server.cc | 2 +- .../isolate_name_server/isolate_name_server.h | 2 +- .../isolate_name_server_natives.cc | 2 +- .../isolate_name_server_natives.h | 2 +- lib/ui/lerp.dart | 2 +- lib/ui/natives.dart | 2 +- lib/ui/painting.dart | 2 +- lib/ui/painting/canvas.cc | 2 +- lib/ui/painting/canvas.h | 2 +- lib/ui/painting/codec.cc | 2 +- lib/ui/painting/codec.h | 2 +- lib/ui/painting/engine_layer.cc | 2 +- lib/ui/painting/engine_layer.h | 2 +- lib/ui/painting/frame_info.cc | 2 +- lib/ui/painting/frame_info.h | 2 +- lib/ui/painting/gradient.cc | 2 +- lib/ui/painting/gradient.h | 2 +- lib/ui/painting/image.cc | 2 +- lib/ui/painting/image.h | 2 +- lib/ui/painting/image_encoding.cc | 2 +- lib/ui/painting/image_encoding.h | 2 +- lib/ui/painting/image_filter.cc | 2 +- lib/ui/painting/image_filter.h | 2 +- lib/ui/painting/image_shader.cc | 2 +- lib/ui/painting/image_shader.h | 2 +- lib/ui/painting/matrix.cc | 2 +- lib/ui/painting/matrix.h | 2 +- lib/ui/painting/paint.cc | 2 +- lib/ui/painting/paint.h | 2 +- lib/ui/painting/path.cc | 2 +- lib/ui/painting/path.h | 2 +- lib/ui/painting/path_measure.cc | 2 +- lib/ui/painting/path_measure.h | 2 +- lib/ui/painting/picture.cc | 2 +- lib/ui/painting/picture.h | 2 +- lib/ui/painting/picture_recorder.cc | 2 +- lib/ui/painting/picture_recorder.h | 2 +- lib/ui/painting/rrect.cc | 2 +- lib/ui/painting/rrect.h | 2 +- lib/ui/painting/shader.cc | 2 +- lib/ui/painting/shader.h | 2 +- lib/ui/painting/vertices.cc | 2 +- lib/ui/painting/vertices.h | 2 +- lib/ui/plugins.dart | 2 +- lib/ui/plugins/callback_cache.cc | 2 +- lib/ui/plugins/callback_cache.h | 2 +- lib/ui/pointer.dart | 2 +- lib/ui/semantics.dart | 2 +- .../semantics/custom_accessibility_action.cc | 4 +- .../semantics/custom_accessibility_action.h | 2 +- lib/ui/semantics/semantics_node.cc | 2 +- lib/ui/semantics/semantics_node.h | 2 +- lib/ui/semantics/semantics_update.cc | 2 +- lib/ui/semantics/semantics_update.h | 2 +- lib/ui/semantics/semantics_update_builder.cc | 2 +- lib/ui/semantics/semantics_update_builder.h | 2 +- lib/ui/snapshot_delegate.h | 2 +- lib/ui/text.dart | 2 +- lib/ui/text/asset_manager_font_provider.cc | 2 +- lib/ui/text/asset_manager_font_provider.h | 2 +- lib/ui/text/font_collection.cc | 2 +- lib/ui/text/font_collection.h | 2 +- lib/ui/text/paragraph.cc | 2 +- lib/ui/text/paragraph.h | 2 +- lib/ui/text/paragraph_builder.cc | 2 +- lib/ui/text/paragraph_builder.h | 2 +- lib/ui/text/paragraph_impl.cc | 2 +- lib/ui/text/paragraph_impl.h | 2 +- lib/ui/text/paragraph_impl_txt.cc | 2 +- lib/ui/text/paragraph_impl_txt.h | 2 +- lib/ui/text/text_box.cc | 2 +- lib/ui/text/text_box.h | 2 +- lib/ui/ui.dart | 2 +- lib/ui/ui_dart_state.cc | 2 +- lib/ui/ui_dart_state.h | 2 +- lib/ui/window.dart | 2 +- lib/ui/window/platform_message.cc | 2 +- lib/ui/window/platform_message.h | 2 +- lib/ui/window/platform_message_response.cc | 2 +- lib/ui/window/platform_message_response.h | 2 +- .../window/platform_message_response_dart.cc | 2 +- .../window/platform_message_response_dart.h | 2 +- lib/ui/window/pointer_data.cc | 2 +- lib/ui/window/pointer_data.h | 2 +- lib/ui/window/pointer_data_packet.cc | 2 +- lib/ui/window/pointer_data_packet.h | 2 +- lib/ui/window/viewport_metrics.h | 2 +- lib/ui/window/window.cc | 2 +- lib/ui/window/window.h | 2 +- runtime/BUILD.gn | 2 +- runtime/dart_isolate.cc | 2 +- runtime/dart_isolate.h | 2 +- runtime/dart_isolate_unittests.cc | 2 +- runtime/dart_service_isolate.cc | 2 +- runtime/dart_service_isolate.h | 2 +- runtime/dart_service_isolate_unittests.cc | 2 +- runtime/dart_snapshot.cc | 2 +- runtime/dart_snapshot.h | 2 +- runtime/dart_snapshot_buffer.cc | 2 +- runtime/dart_snapshot_buffer.h | 2 +- runtime/dart_vm.cc | 2 +- runtime/dart_vm.h | 2 +- runtime/dart_vm_unittests.cc | 2 +- runtime/embedder_resources.cc | 2 +- runtime/embedder_resources.h | 2 +- runtime/fixtures/simple_main.dart | 2 +- runtime/runtime_controller.cc | 2 +- runtime/runtime_controller.h | 2 +- runtime/runtime_delegate.cc | 2 +- runtime/runtime_delegate.h | 2 +- runtime/service_protocol.cc | 2 +- runtime/service_protocol.h | 2 +- runtime/start_up.cc | 2 +- runtime/start_up.h | 2 +- runtime/test_font_data.cc | 2 +- runtime/test_font_data.h | 2 +- shell/BUILD.gn | 2 +- shell/common/BUILD.gn | 2 +- shell/common/animator.cc | 2 +- shell/common/animator.h | 2 +- shell/common/engine.cc | 2 +- shell/common/engine.h | 2 +- shell/common/io_manager.cc | 2 +- shell/common/io_manager.h | 2 +- shell/common/isolate_configuration.cc | 2 +- shell/common/isolate_configuration.h | 2 +- shell/common/persistent_cache.cc | 2 +- shell/common/persistent_cache.h | 2 +- shell/common/platform_view.cc | 2 +- shell/common/platform_view.h | 2 +- shell/common/rasterizer.cc | 2 +- shell/common/rasterizer.h | 2 +- shell/common/run_configuration.cc | 2 +- shell/common/run_configuration.h | 2 +- shell/common/shell.cc | 2 +- shell/common/shell.h | 2 +- shell/common/shell_benchmarks.cc | 2 +- shell/common/shell_unittests.cc | 2 +- shell/common/skia_event_tracer_impl.cc | 2 +- shell/common/skia_event_tracer_impl.h | 2 +- shell/common/surface.cc | 2 +- shell/common/surface.h | 2 +- shell/common/switches.cc | 2 +- shell/common/switches.h | 2 +- shell/common/thread_host.cc | 2 +- shell/common/thread_host.h | 2 +- shell/common/vsync_waiter.cc | 2 +- shell/common/vsync_waiter.h | 2 +- shell/common/vsync_waiter_fallback.cc | 2 +- shell/common/vsync_waiter_fallback.h | 2 +- shell/config.gni | 2 +- shell/gpu/BUILD.gn | 2 +- shell/gpu/gpu.gni | 2 +- shell/gpu/gpu_surface_gl.cc | 2 +- shell/gpu/gpu_surface_gl.h | 2 +- shell/gpu/gpu_surface_software.cc | 2 +- shell/gpu/gpu_surface_software.h | 2 +- shell/gpu/gpu_surface_vulkan.cc | 2 +- shell/gpu/gpu_surface_vulkan.h | 2 +- shell/platform/BUILD.gn | 2 +- shell/platform/android/AndroidManifest.xml | 2 +- shell/platform/android/BUILD.gn | 2 +- shell/platform/android/android_context_gl.cc | 2 +- shell/platform/android/android_context_gl.h | 2 +- .../android/android_environment_gl.cc | 2 +- .../platform/android/android_environment_gl.h | 2 +- .../android/android_external_texture_gl.cc | 2 +- .../android/android_external_texture_gl.h | 2 +- .../platform/android/android_native_window.cc | 2 +- .../platform/android/android_native_window.h | 2 +- .../platform/android/android_shell_holder.cc | 2 +- shell/platform/android/android_shell_holder.h | 2 +- shell/platform/android/android_surface.cc | 2 +- shell/platform/android/android_surface.h | 2 +- shell/platform/android/android_surface_gl.cc | 2 +- shell/platform/android/android_surface_gl.h | 2 +- .../android/android_surface_software.cc | 2 +- .../android/android_surface_software.h | 2 +- .../android/android_surface_vulkan.cc | 2 +- .../platform/android/android_surface_vulkan.h | 2 +- shell/platform/android/apk_asset_provider.h | 2 +- shell/platform/android/flutter_main.cc | 2 +- shell/platform/android/flutter_main.h | 2 +- .../io/flutter/app/FlutterActivity.java | 4 +- .../flutter/app/FlutterActivityDelegate.java | 2 +- .../io/flutter/app/FlutterActivityEvents.java | 4 +- .../io/flutter/app/FlutterApplication.java | 2 +- .../flutter/app/FlutterFragmentActivity.java | 2 +- .../io/flutter/app/FlutterPluginRegistry.java | 2 +- .../common/ActivityLifecycleListener.java | 2 +- .../plugin/common/BasicMessageChannel.java | 2 +- .../io/flutter/plugin/common/BinaryCodec.java | 2 +- .../plugin/common/BinaryMessenger.java | 2 +- .../flutter/plugin/common/EventChannel.java | 2 +- .../plugin/common/FlutterException.java | 4 +- .../plugin/common/JSONMessageCodec.java | 2 +- .../plugin/common/JSONMethodCodec.java | 2 +- .../flutter/plugin/common/MessageCodec.java | 2 +- .../io/flutter/plugin/common/MethodCall.java | 2 +- .../flutter/plugin/common/MethodChannel.java | 2 +- .../io/flutter/plugin/common/MethodCodec.java | 2 +- .../flutter/plugin/common/PluginRegistry.java | 2 +- .../plugin/common/StandardMessageCodec.java | 2 +- .../plugin/common/StandardMethodCodec.java | 2 +- .../io/flutter/plugin/common/StringCodec.java | 2 +- .../editing/InputConnectionAdaptor.java | 2 +- .../plugin/editing/TextInputPlugin.java | 2 +- .../plugin/platform/PlatformPlugin.java | 2 +- .../flutter/plugin/platform/PlatformView.java | 2 +- .../plugin/platform/PlatformViewFactory.java | 2 +- .../plugin/platform/PlatformViewRegistry.java | 2 +- .../platform/PlatformViewRegistryImpl.java | 2 +- .../platform/PlatformViewsController.java | 2 +- .../platform/SingleViewPresentation.java | 2 +- .../platform/VirtualDisplayController.java | 2 +- .../android/io/flutter/util/PathUtils.java | 2 +- .../io/flutter/util/Preconditions.java | 2 +- .../io/flutter/view/AccessibilityBridge.java | 2 +- .../view/FlutterCallbackInformation.java | 2 +- .../android/io/flutter/view/FlutterMain.java | 2 +- .../io/flutter/view/FlutterNativeView.java | 2 +- .../io/flutter/view/FlutterRunArguments.java | 2 +- .../android/io/flutter/view/FlutterView.java | 4 +- .../io/flutter/view/ResourceCleaner.java | 2 +- .../io/flutter/view/ResourceExtractor.java | 2 +- .../io/flutter/view/ResourcePaths.java | 2 +- .../io/flutter/view/TextureRegistry.java | 2 +- .../android/io/flutter/view/VsyncWaiter.java | 2 +- shell/platform/android/library_loader.cc | 2 +- .../platform_message_response_android.cc | 2 +- .../platform_message_response_android.h | 2 +- .../platform/android/platform_view_android.cc | 2 +- .../platform/android/platform_view_android.h | 2 +- .../android/platform_view_android_jni.cc | 2 +- .../android/platform_view_android_jni.h | 2 +- .../platform/android/vsync_waiter_android.cc | 2 +- shell/platform/android/vsync_waiter_android.h | 2 +- shell/platform/darwin/BUILD.gn | 2 +- shell/platform/darwin/common/BUILD.gn | 2 +- .../darwin/common/buffer_conversions.h | 2 +- .../darwin/common/buffer_conversions.mm | 2 +- shell/platform/darwin/common/command_line.h | 2 +- shell/platform/darwin/common/command_line.mm | 2 +- shell/platform/darwin/ios/BUILD.gn | 2 +- .../darwin/ios/framework/Headers/Flutter.h | 2 +- .../framework/Headers/FlutterAppDelegate.h | 2 +- .../Headers/FlutterBinaryMessenger.h | 2 +- .../framework/Headers/FlutterCallbackCache.h | 2 +- .../ios/framework/Headers/FlutterChannels.h | 2 +- .../ios/framework/Headers/FlutterCodecs.h | 2 +- .../framework/Headers/FlutterDartProject.h | 2 +- .../ios/framework/Headers/FlutterEngine.h | 2 +- .../Headers/FlutterHeadlessDartRunner.h | 2 +- .../ios/framework/Headers/FlutterMacros.h | 2 +- .../framework/Headers/FlutterPlatformViews.h | 2 +- .../ios/framework/Headers/FlutterPlugin.h | 2 +- .../FlutterPluginAppLifeCycleDelegate.h | 2 +- .../ios/framework/Headers/FlutterTexture.h | 2 +- .../framework/Headers/FlutterViewController.h | 2 +- .../framework/Source/FlutterAppDelegate.mm | 2 +- .../Source/FlutterAppDelegate_Internal.h | 2 +- .../framework/Source/FlutterCallbackCache.mm | 2 +- .../Source/FlutterCallbackCache_Internal.h | 2 +- .../ios/framework/Source/FlutterChannels.mm | 2 +- .../ios/framework/Source/FlutterCodecs.mm | 2 +- .../framework/Source/FlutterDartProject.mm | 2 +- .../Source/FlutterDartProject_Internal.h | 2 +- .../ios/framework/Source/FlutterEngine.mm | 2 +- .../framework/Source/FlutterEngine_Internal.h | 2 +- .../Source/FlutterHeadlessDartRunner.mm | 2 +- .../Source/FlutterObservatoryPublisher.h | 4 +- .../Source/FlutterObservatoryPublisher.mm | 2 +- .../ios/framework/Source/FlutterOverlayView.h | 2 +- .../framework/Source/FlutterOverlayView.mm | 2 +- .../framework/Source/FlutterPlatformPlugin.h | 2 +- .../framework/Source/FlutterPlatformPlugin.mm | 2 +- .../framework/Source/FlutterPlatformViews.mm | 2 +- .../Source/FlutterPlatformViews_Internal.h | 2 +- .../FlutterPluginAppLifeCycleDelegate.mm | 2 +- .../framework/Source/FlutterStandardCodec.mm | 2 +- .../Source/FlutterStandardCodec_Internal.h | 2 +- .../Source/FlutterTextInputDelegate.h | 2 +- .../framework/Source/FlutterTextInputPlugin.h | 2 +- .../Source/FlutterTextInputPlugin.mm | 2 +- .../framework/Source/FlutterUmbrellaImport.m | 2 +- .../darwin/ios/framework/Source/FlutterView.h | 2 +- .../ios/framework/Source/FlutterView.mm | 2 +- .../framework/Source/FlutterViewController.mm | 2 +- .../Source/FlutterViewController_Internal.h | 2 +- .../framework/Source/accessibility_bridge.h | 2 +- .../framework/Source/accessibility_bridge.mm | 2 +- .../Source/accessibility_text_entry.h | 2 +- .../Source/accessibility_text_entry.mm | 2 +- .../Source/flutter_codecs_unittest.mm | 2 +- .../Source/flutter_standard_codec_unittest.mm | 2 +- .../Source/platform_message_response_darwin.h | 2 +- .../platform_message_response_darwin.mm | 2 +- .../Source/platform_message_router.h | 2 +- .../Source/platform_message_router.mm | 2 +- .../ios/framework/Source/vsync_waiter_ios.h | 2 +- .../ios/framework/Source/vsync_waiter_ios.mm | 2 +- .../darwin/ios/ios_external_texture_gl.h | 2 +- .../darwin/ios/ios_external_texture_gl.mm | 2 +- shell/platform/darwin/ios/ios_gl_context.h | 2 +- shell/platform/darwin/ios/ios_gl_context.mm | 2 +- shell/platform/darwin/ios/ios_surface.h | 2 +- shell/platform/darwin/ios/ios_surface.mm | 2 +- shell/platform/darwin/ios/ios_surface_gl.h | 2 +- shell/platform/darwin/ios/ios_surface_gl.mm | 2 +- .../darwin/ios/ios_surface_software.h | 2 +- .../darwin/ios/ios_surface_software.mm | 2 +- shell/platform/darwin/ios/platform_view_ios.h | 2 +- .../platform/darwin/ios/platform_view_ios.mm | 2 +- shell/platform/embedder/BUILD.gn | 2 +- .../embedder/assets/EmbedderInfo.plist | 2 +- shell/platform/embedder/embedder.cc | 2 +- shell/platform/embedder/embedder.gni | 2 +- shell/platform/embedder/embedder.h | 2 +- shell/platform/embedder/embedder_engine.cc | 2 +- shell/platform/embedder/embedder_engine.h | 2 +- shell/platform/embedder/embedder_include.c | 2 +- shell/platform/embedder/embedder_surface.cc | 2 +- shell/platform/embedder/embedder_surface.h | 2 +- .../platform/embedder/embedder_surface_gl.cc | 2 +- shell/platform/embedder/embedder_surface_gl.h | 2 +- .../embedder/embedder_surface_software.cc | 2 +- .../embedder/embedder_surface_software.h | 2 +- .../embedder/platform_view_embedder.cc | 2 +- .../embedder/platform_view_embedder.h | 2 +- .../embedder/tests/embedder_unittests.cc | 2 +- shell/platform/linux/BUILD.gn | 2 +- shell/testing/BUILD.gn | 2 +- shell/testing/observatory/empty_main.dart | 2 +- shell/testing/observatory/launcher.dart | 2 +- shell/testing/observatory/service_client.dart | 2 +- shell/testing/observatory/test.dart | 2 +- shell/testing/tester_main.cc | 2 +- shell/version/BUILD.gn | 2 +- shell/version/version.cc | 2 +- shell/version/version.gni | 2 +- shell/version/version.h | 2 +- sky/BUILD.gn | 2 +- sky/dist/BUILD.gn | 2 +- sky/packages/BUILD.gn | 2 +- sky/packages/flutter_services/BUILD.gn | 2 +- sky/packages/flutter_services/lib/empty.dart | 2 +- sky/packages/sky_engine/BUILD.gn | 2 +- sky/packages/sky_engine/LICENSE | 492 +++---- sky/packages/sky_services/BUILD.gn | 2 +- sky/tools/change_install_name.py | 2 +- sky/tools/create_ios_framework.py | 2 +- sky/tools/create_macos_gen_snapshot.py | 2 +- sky/tools/dist_dart_pkg.py | 2 +- sky/tools/flutter_gdb | 2 +- sky/tools/install_framework_headers.py | 2 +- sky/tools/roll/patch.py | 2 +- sky/tools/roll/roll.py | 2 +- sky/tools/roll/utils.py | 2 +- synchronization/BUILD.gn | 2 +- synchronization/pipeline.cc | 2 +- synchronization/pipeline.h | 2 +- synchronization/semaphore.cc | 2 +- synchronization/semaphore.h | 2 +- synchronization/semaphore_unittest.cc | 2 +- testing/BUILD.gn | 2 +- testing/build/gen_fixtures_location_symbol.py | 2 +- testing/dart/canvas_test.dart | 2 +- testing/dart/codec_test.dart | 2 +- testing/dart/color_test.dart | 2 +- testing/dart/encoding_test.dart | 2 +- testing/dart/geometry_test.dart | 2 +- testing/dart/gradient_test.dart | 2 +- testing/dart/isolate_name_server_test.dart | 2 +- testing/dart/locale_test.dart | 2 +- testing/dart/paragraph_builder_test.dart | 2 +- testing/dart/path_test.dart | 2 +- testing/dart/plugin_utilities_test.dart | 2 +- testing/dart/rect_test.dart | 2 +- .../dart/window_hooks_integration_test.dart | 2 +- testing/dart/window_test.dart | 2 +- testing/fail_test.dart | 2 +- testing/run_all_unittests.cc | 2 +- testing/testing.cc | 2 +- testing/testing.gni | 2 +- testing/testing.h | 2 +- testing/thread_test.cc | 2 +- testing/thread_test.h | 2 +- third_party/txt/src/txt/platform.cc | 2 +- third_party/txt/src/txt/platform.h | 2 +- third_party/txt/src/txt/platform_android.cc | 2 +- third_party/txt/src/txt/platform_mac.mm | 2 +- .../download_android_support.py | 2 +- tools/gen_javadoc.py | 2 +- tools/gen_locale.dart | 2 +- tools/gen_objcdoc.sh | 2 +- tools/generate_package_files.py | 2 +- tools/gn | 2 +- tools/gn_test.py | 2 +- tools/licenses/lib/cache.dart | 2 +- tools/licenses/lib/filesystem.dart | 2 +- tools/licenses/lib/licenses.dart | 2 +- tools/licenses/lib/limits.dart | 2 +- tools/licenses/lib/main.dart | 2 +- tools/licenses/lib/patterns.dart | 2 +- vulkan/BUILD.gn | 2 +- vulkan/skia_vulkan_header.h | 2 +- vulkan/vulkan_application.cc | 2 +- vulkan/vulkan_application.h | 2 +- vulkan/vulkan_backbuffer.cc | 2 +- vulkan/vulkan_backbuffer.h | 2 +- vulkan/vulkan_command_buffer.cc | 2 +- vulkan/vulkan_command_buffer.h | 2 +- vulkan/vulkan_debug_report.cc | 2 +- vulkan/vulkan_debug_report.h | 2 +- vulkan/vulkan_device.cc | 2 +- vulkan/vulkan_device.h | 2 +- vulkan/vulkan_handle.cc | 2 +- vulkan/vulkan_handle.h | 2 +- vulkan/vulkan_image.cc | 2 +- vulkan/vulkan_image.h | 2 +- vulkan/vulkan_interface.cc | 2 +- vulkan/vulkan_interface.h | 2 +- vulkan/vulkan_native_surface.cc | 2 +- vulkan/vulkan_native_surface.h | 2 +- vulkan/vulkan_native_surface_android.cc | 2 +- vulkan/vulkan_native_surface_android.h | 2 +- vulkan/vulkan_native_surface_magma.cc | 2 +- vulkan/vulkan_native_surface_magma.h | 2 +- vulkan/vulkan_proc_table.cc | 2 +- vulkan/vulkan_proc_table.h | 2 +- vulkan/vulkan_provider.cc | 2 +- vulkan/vulkan_provider.h | 2 +- vulkan/vulkan_surface.cc | 2 +- vulkan/vulkan_surface.h | 2 +- vulkan/vulkan_swapchain.cc | 2 +- vulkan/vulkan_swapchain.h | 2 +- vulkan/vulkan_utilities.cc | 2 +- vulkan/vulkan_utilities.h | 2 +- vulkan/vulkan_window.cc | 2 +- vulkan/vulkan_window.h | 2 +- 681 files changed, 1288 insertions(+), 1759 deletions(-) diff --git a/AUTHORS b/AUTHORS index ddcf4d7bd4e18..53ad592d738bf 100644 --- a/AUTHORS +++ b/AUTHORS @@ -4,6 +4,8 @@ # Name/Organization Google Inc. +The Chromium Authors +The Fuchsia Authors Jim Simon Ali Bitek Jacob Greenfield diff --git a/BUILD.gn b/BUILD.gn index 8ea324031833f..9bfa135468c01 100644 --- a/BUILD.gn +++ b/BUILD.gn @@ -1,4 +1,4 @@ -# Copyright 2014 The Chromium Authors. All rights reserved. +# 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. diff --git a/LICENSE b/LICENSE index 972bb2edb099e..60513d107bf46 100644 --- a/LICENSE +++ b/LICENSE @@ -1,4 +1,4 @@ -// Copyright 2014 The Chromium Authors. All rights reserved. +// Copyright 2013 The Flutter Authors. All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are diff --git a/assets/BUILD.gn b/assets/BUILD.gn index f28e9bdd0a6ea..f04fe40e1e90a 100644 --- a/assets/BUILD.gn +++ b/assets/BUILD.gn @@ -1,4 +1,4 @@ -# Copyright 2015 The Chromium Authors. All rights reserved. +# 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. diff --git a/assets/asset_manager.cc b/assets/asset_manager.cc index 516148a2dd818..610bd10a14a3f 100644 --- a/assets/asset_manager.cc +++ b/assets/asset_manager.cc @@ -1,4 +1,4 @@ -// Copyright 2017 The Flutter Authors. All rights reserved. +// 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. diff --git a/assets/asset_manager.h b/assets/asset_manager.h index 41c05ec7f9640..84ae784f66573 100644 --- a/assets/asset_manager.h +++ b/assets/asset_manager.h @@ -1,4 +1,4 @@ -// Copyright 2017 The Flutter Authors. All rights reserved. +// 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. diff --git a/assets/asset_resolver.h b/assets/asset_resolver.h index d0a68f0bf2cd8..c49b8fb99a868 100644 --- a/assets/asset_resolver.h +++ b/assets/asset_resolver.h @@ -1,4 +1,4 @@ -// Copyright 2017 The Flutter Authors. All rights reserved. +// 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. diff --git a/assets/directory_asset_bundle.cc b/assets/directory_asset_bundle.cc index e801e04ad76e9..2f39535314d91 100644 --- a/assets/directory_asset_bundle.cc +++ b/assets/directory_asset_bundle.cc @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/assets/directory_asset_bundle.h b/assets/directory_asset_bundle.h index f61ac147ff1fb..041c301e8730a 100644 --- a/assets/directory_asset_bundle.h +++ b/assets/directory_asset_bundle.h @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/assets/zip_asset_store.cc b/assets/zip_asset_store.cc index 8ceec57975429..1b6cb126246c9 100644 --- a/assets/zip_asset_store.cc +++ b/assets/zip_asset_store.cc @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/assets/zip_asset_store.h b/assets/zip_asset_store.h index f801e0b0cca25..a026fb91d29c4 100644 --- a/assets/zip_asset_store.h +++ b/assets/zip_asset_store.h @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/benchmarking/BUILD.gn b/benchmarking/BUILD.gn index 7fa479c957daf..7d49d06c4e7d6 100644 --- a/benchmarking/BUILD.gn +++ b/benchmarking/BUILD.gn @@ -1,4 +1,4 @@ -# Copyright 2018 The Flutter Authors. All rights reserved. +# 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. diff --git a/benchmarking/benchmarking.cc b/benchmarking/benchmarking.cc index 12588208c6579..c8e5af7ea3dd5 100644 --- a/benchmarking/benchmarking.cc +++ b/benchmarking/benchmarking.cc @@ -1,4 +1,4 @@ -// Copyright 2018 The Flutter Authors. All rights reserved. +// 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. diff --git a/benchmarking/benchmarking.h b/benchmarking/benchmarking.h index 4bc8cd535ef54..d84004f4d8b01 100644 --- a/benchmarking/benchmarking.h +++ b/benchmarking/benchmarking.h @@ -1,4 +1,4 @@ -// Copyright 2018 The Flutter Authors. All rights reserved. +// 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. diff --git a/build/dart/rules.gni b/build/dart/rules.gni index b4b8df6253680..d1b66255e987d 100644 --- a/build/dart/rules.gni +++ b/build/dart/rules.gni @@ -1,4 +1,4 @@ -# Copyright 2015 The Chromium Authors. All rights reserved. +# 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. diff --git a/build/dart/tools/dart_package_name.py b/build/dart/tools/dart_package_name.py index 5817945e49cba..255ef5be7a13a 100755 --- a/build/dart/tools/dart_package_name.py +++ b/build/dart/tools/dart_package_name.py @@ -1,5 +1,5 @@ #!/usr/bin/python -# Copyright 2015 The Chromium Authors. All rights reserved. +# 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. diff --git a/build/dart/tools/dart_pkg.py b/build/dart/tools/dart_pkg.py index 34396b827685d..18d2e6951faf8 100755 --- a/build/dart/tools/dart_pkg.py +++ b/build/dart/tools/dart_pkg.py @@ -1,6 +1,6 @@ #!/usr/bin/env python # -# Copyright 2015 The Chromium Authors. All rights reserved. +# 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. diff --git a/build/git_revision.py b/build/git_revision.py index bc58320306d14..c571ee823cb0c 100755 --- a/build/git_revision.py +++ b/build/git_revision.py @@ -1,6 +1,6 @@ #!/usr/bin/env python # -# Copyright 2018 The Flutter Authors. All rights reserved. +# 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. diff --git a/ci/licenses_golden/licenses_flutter b/ci/licenses_golden/licenses_flutter index fe8900faa21f0..b4e6ed14db649 100644 --- a/ci/licenses_golden/licenses_flutter +++ b/ci/licenses_golden/licenses_flutter @@ -7,35 +7,131 @@ USED LICENSES: ==================================================================================================== LIBRARY: engine LIBRARY: txt -ORIGIN: ../../../flutter/flow/layers/physical_shape_layer.cc + ../../../LICENSE +ORIGIN: ../../../flutter/LICENSE TYPE: LicenseType.bsd +FILE: ../../../flutter/DEPS +FILE: ../../../flutter/assets/asset_manager.cc +FILE: ../../../flutter/assets/asset_manager.h +FILE: ../../../flutter/assets/asset_resolver.h +FILE: ../../../flutter/assets/directory_asset_bundle.cc +FILE: ../../../flutter/assets/directory_asset_bundle.h +FILE: ../../../flutter/assets/zip_asset_store.cc +FILE: ../../../flutter/assets/zip_asset_store.h +FILE: ../../../flutter/benchmarking/benchmarking.cc +FILE: ../../../flutter/benchmarking/benchmarking.h +FILE: ../../../flutter/common/settings.cc +FILE: ../../../flutter/common/settings.h +FILE: ../../../flutter/common/task_runners.cc +FILE: ../../../flutter/common/task_runners.h +FILE: ../../../flutter/flow/compositor_context.cc +FILE: ../../../flutter/flow/compositor_context.h FILE: ../../../flutter/flow/debug_print.cc FILE: ../../../flutter/flow/debug_print.h FILE: ../../../flutter/flow/embedded_views.h +FILE: ../../../flutter/flow/export_node.cc FILE: ../../../flutter/flow/export_node.h +FILE: ../../../flutter/flow/instrumentation.cc +FILE: ../../../flutter/flow/instrumentation.h +FILE: ../../../flutter/flow/layers/backdrop_filter_layer.cc +FILE: ../../../flutter/flow/layers/backdrop_filter_layer.h +FILE: ../../../flutter/flow/layers/child_scene_layer.cc +FILE: ../../../flutter/flow/layers/child_scene_layer.h +FILE: ../../../flutter/flow/layers/clip_path_layer.cc +FILE: ../../../flutter/flow/layers/clip_path_layer.h +FILE: ../../../flutter/flow/layers/clip_rect_layer.cc +FILE: ../../../flutter/flow/layers/clip_rect_layer.h +FILE: ../../../flutter/flow/layers/clip_rrect_layer.cc +FILE: ../../../flutter/flow/layers/clip_rrect_layer.h +FILE: ../../../flutter/flow/layers/color_filter_layer.cc +FILE: ../../../flutter/flow/layers/color_filter_layer.h +FILE: ../../../flutter/flow/layers/container_layer.cc +FILE: ../../../flutter/flow/layers/container_layer.h +FILE: ../../../flutter/flow/layers/layer.cc +FILE: ../../../flutter/flow/layers/layer.h +FILE: ../../../flutter/flow/layers/layer_tree.cc +FILE: ../../../flutter/flow/layers/layer_tree.h +FILE: ../../../flutter/flow/layers/opacity_layer.cc +FILE: ../../../flutter/flow/layers/opacity_layer.h +FILE: ../../../flutter/flow/layers/performance_overlay_layer.cc +FILE: ../../../flutter/flow/layers/performance_overlay_layer.h FILE: ../../../flutter/flow/layers/physical_shape_layer.cc FILE: ../../../flutter/flow/layers/physical_shape_layer.h +FILE: ../../../flutter/flow/layers/picture_layer.cc +FILE: ../../../flutter/flow/layers/picture_layer.h +FILE: ../../../flutter/flow/layers/platform_view_layer.cc +FILE: ../../../flutter/flow/layers/platform_view_layer.h +FILE: ../../../flutter/flow/layers/shader_mask_layer.cc +FILE: ../../../flutter/flow/layers/shader_mask_layer.h FILE: ../../../flutter/flow/layers/texture_layer.cc FILE: ../../../flutter/flow/layers/texture_layer.h +FILE: ../../../flutter/flow/layers/transform_layer.cc +FILE: ../../../flutter/flow/layers/transform_layer.h FILE: ../../../flutter/flow/matrix_decomposition.cc FILE: ../../../flutter/flow/matrix_decomposition.h FILE: ../../../flutter/flow/matrix_decomposition_unittests.cc FILE: ../../../flutter/flow/paint_utils.cc FILE: ../../../flutter/flow/paint_utils.h +FILE: ../../../flutter/flow/raster_cache.cc +FILE: ../../../flutter/flow/raster_cache.h FILE: ../../../flutter/flow/raster_cache_key.cc FILE: ../../../flutter/flow/raster_cache_key.h FILE: ../../../flutter/flow/raster_cache_unittests.cc +FILE: ../../../flutter/flow/scene_update_context.cc +FILE: ../../../flutter/flow/scene_update_context.h +FILE: ../../../flutter/flow/skia_gpu_object.cc +FILE: ../../../flutter/flow/skia_gpu_object.h FILE: ../../../flutter/flow/texture.cc FILE: ../../../flutter/flow/texture.h +FILE: ../../../flutter/flutter_kernel_transformers/lib/track_widget_constructor_locations.dart +FILE: ../../../flutter/fml/arraysize.h +FILE: ../../../flutter/fml/base32.cc +FILE: ../../../flutter/fml/base32.h +FILE: ../../../flutter/fml/base32_unittest.cc +FILE: ../../../flutter/fml/build_config.h +FILE: ../../../flutter/fml/closure.h +FILE: ../../../flutter/fml/command_line.cc +FILE: ../../../flutter/fml/command_line.h +FILE: ../../../flutter/fml/command_line_unittest.cc +FILE: ../../../flutter/fml/compiler_specific.h +FILE: ../../../flutter/fml/eintr_wrapper.h +FILE: ../../../flutter/fml/export.h +FILE: ../../../flutter/fml/file.cc +FILE: ../../../flutter/fml/file.h +FILE: ../../../flutter/fml/file_unittest.cc FILE: ../../../flutter/fml/icu_util.cc FILE: ../../../flutter/fml/icu_util.h +FILE: ../../../flutter/fml/log_level.h +FILE: ../../../flutter/fml/log_settings.cc +FILE: ../../../flutter/fml/log_settings.h +FILE: ../../../flutter/fml/log_settings_state.cc +FILE: ../../../flutter/fml/logging.cc +FILE: ../../../flutter/fml/logging.h +FILE: ../../../flutter/fml/macros.h +FILE: ../../../flutter/fml/make_copyable.h +FILE: ../../../flutter/fml/mapping.cc FILE: ../../../flutter/fml/mapping.h +FILE: ../../../flutter/fml/memory/ref_counted.h +FILE: ../../../flutter/fml/memory/ref_counted_internal.h +FILE: ../../../flutter/fml/memory/ref_counted_unittest.cc +FILE: ../../../flutter/fml/memory/ref_ptr.h +FILE: ../../../flutter/fml/memory/ref_ptr_internal.h +FILE: ../../../flutter/fml/memory/thread_checker.h +FILE: ../../../flutter/fml/memory/weak_ptr.h +FILE: ../../../flutter/fml/memory/weak_ptr_internal.cc +FILE: ../../../flutter/fml/memory/weak_ptr_internal.h +FILE: ../../../flutter/fml/memory/weak_ptr_unittest.cc +FILE: ../../../flutter/fml/message.cc +FILE: ../../../flutter/fml/message.h FILE: ../../../flutter/fml/message_loop.cc FILE: ../../../flutter/fml/message_loop.h FILE: ../../../flutter/fml/message_loop_impl.cc FILE: ../../../flutter/fml/message_loop_impl.h FILE: ../../../flutter/fml/message_loop_unittests.cc +FILE: ../../../flutter/fml/message_unittests.cc +FILE: ../../../flutter/fml/native_library.h +FILE: ../../../flutter/fml/paths.cc FILE: ../../../flutter/fml/paths.h +FILE: ../../../flutter/fml/paths_unittests.cc FILE: ../../../flutter/fml/platform/android/jni_util.cc FILE: ../../../flutter/fml/platform/android/jni_util.h FILE: ../../../flutter/fml/platform/android/jni_weak_ref.cc @@ -43,6 +139,7 @@ FILE: ../../../flutter/fml/platform/android/jni_weak_ref.h FILE: ../../../flutter/fml/platform/android/message_loop_android.cc FILE: ../../../flutter/fml/platform/android/message_loop_android.h FILE: ../../../flutter/fml/platform/android/paths_android.cc +FILE: ../../../flutter/fml/platform/android/paths_android.h FILE: ../../../flutter/fml/platform/android/scoped_java_ref.cc FILE: ../../../flutter/fml/platform/android/scoped_java_ref.h FILE: ../../../flutter/fml/platform/darwin/cf_utils.cc @@ -52,19 +149,42 @@ FILE: ../../../flutter/fml/platform/darwin/message_loop_darwin.mm FILE: ../../../flutter/fml/platform/darwin/paths_darwin.mm FILE: ../../../flutter/fml/platform/darwin/platform_version.h FILE: ../../../flutter/fml/platform/darwin/platform_version.mm +FILE: ../../../flutter/fml/platform/darwin/scoped_block.h FILE: ../../../flutter/fml/platform/darwin/scoped_block.mm FILE: ../../../flutter/fml/platform/darwin/scoped_nsobject.h FILE: ../../../flutter/fml/platform/darwin/scoped_nsobject.mm +FILE: ../../../flutter/fml/platform/fuchsia/paths_fuchsia.cc FILE: ../../../flutter/fml/platform/linux/message_loop_linux.cc FILE: ../../../flutter/fml/platform/linux/message_loop_linux.h FILE: ../../../flutter/fml/platform/linux/paths_linux.cc FILE: ../../../flutter/fml/platform/linux/timerfd.cc FILE: ../../../flutter/fml/platform/linux/timerfd.h +FILE: ../../../flutter/fml/platform/posix/file_posix.cc FILE: ../../../flutter/fml/platform/posix/mapping_posix.cc +FILE: ../../../flutter/fml/platform/posix/native_library_posix.cc +FILE: ../../../flutter/fml/platform/posix/paths_posix.cc +FILE: ../../../flutter/fml/platform/win/errors_win.cc +FILE: ../../../flutter/fml/platform/win/errors_win.h +FILE: ../../../flutter/fml/platform/win/file_win.cc FILE: ../../../flutter/fml/platform/win/mapping_win.cc FILE: ../../../flutter/fml/platform/win/message_loop_win.cc FILE: ../../../flutter/fml/platform/win/message_loop_win.h +FILE: ../../../flutter/fml/platform/win/native_library_win.cc FILE: ../../../flutter/fml/platform/win/paths_win.cc +FILE: ../../../flutter/fml/platform/win/wstring_conversion.h +FILE: ../../../flutter/fml/string_view.cc +FILE: ../../../flutter/fml/string_view.h +FILE: ../../../flutter/fml/string_view_unittest.cc +FILE: ../../../flutter/fml/synchronization/count_down_latch.cc +FILE: ../../../flutter/fml/synchronization/count_down_latch.h +FILE: ../../../flutter/fml/synchronization/count_down_latch_unittests.cc +FILE: ../../../flutter/fml/synchronization/thread_annotations.h +FILE: ../../../flutter/fml/synchronization/thread_annotations_unittest.cc +FILE: ../../../flutter/fml/synchronization/thread_checker.h +FILE: ../../../flutter/fml/synchronization/thread_checker_unittest.cc +FILE: ../../../flutter/fml/synchronization/waitable_event.cc +FILE: ../../../flutter/fml/synchronization/waitable_event.h +FILE: ../../../flutter/fml/synchronization/waitable_event_unittest.cc FILE: ../../../flutter/fml/task_runner.cc FILE: ../../../flutter/fml/task_runner.h FILE: ../../../flutter/fml/thread.cc @@ -72,184 +192,134 @@ FILE: ../../../flutter/fml/thread.h FILE: ../../../flutter/fml/thread_local.h FILE: ../../../flutter/fml/thread_local_unittests.cc FILE: ../../../flutter/fml/thread_unittests.cc +FILE: ../../../flutter/fml/time/time_delta.h +FILE: ../../../flutter/fml/time/time_delta_unittest.cc +FILE: ../../../flutter/fml/time/time_point.cc +FILE: ../../../flutter/fml/time/time_point.h +FILE: ../../../flutter/fml/time/time_point_unittest.cc +FILE: ../../../flutter/fml/time/time_unittest.cc FILE: ../../../flutter/fml/trace_event.cc FILE: ../../../flutter/fml/trace_event.h +FILE: ../../../flutter/fml/unique_fd.cc +FILE: ../../../flutter/fml/unique_fd.h +FILE: ../../../flutter/fml/unique_object.h +FILE: ../../../flutter/lib/io/dart_io.cc +FILE: ../../../flutter/lib/io/dart_io.h +FILE: ../../../flutter/lib/snapshot/libraries.json +FILE: ../../../flutter/lib/snapshot/snapshot.dart +FILE: ../../../flutter/lib/snapshot/snapshot.h +FILE: ../../../flutter/lib/snapshot/snapshot_fuchsia.dart +FILE: ../../../flutter/lib/ui/compositing.dart +FILE: ../../../flutter/lib/ui/compositing/scene.cc +FILE: ../../../flutter/lib/ui/compositing/scene.h +FILE: ../../../flutter/lib/ui/compositing/scene_builder.cc +FILE: ../../../flutter/lib/ui/compositing/scene_builder.h FILE: ../../../flutter/lib/ui/compositing/scene_host.cc FILE: ../../../flutter/lib/ui/compositing/scene_host.h +FILE: ../../../flutter/lib/ui/dart_runtime_hooks.cc +FILE: ../../../flutter/lib/ui/dart_runtime_hooks.h +FILE: ../../../flutter/lib/ui/dart_ui.cc +FILE: ../../../flutter/lib/ui/dart_ui.h +FILE: ../../../flutter/lib/ui/dart_wrapper.h +FILE: ../../../flutter/lib/ui/geometry.dart +FILE: ../../../flutter/lib/ui/hash_codes.dart +FILE: ../../../flutter/lib/ui/hooks.dart +FILE: ../../../flutter/lib/ui/isolate_name_server.dart +FILE: ../../../flutter/lib/ui/isolate_name_server/isolate_name_server.cc +FILE: ../../../flutter/lib/ui/isolate_name_server/isolate_name_server.h +FILE: ../../../flutter/lib/ui/isolate_name_server/isolate_name_server_natives.cc +FILE: ../../../flutter/lib/ui/isolate_name_server/isolate_name_server_natives.h +FILE: ../../../flutter/lib/ui/lerp.dart +FILE: ../../../flutter/lib/ui/natives.dart +FILE: ../../../flutter/lib/ui/painting.dart +FILE: ../../../flutter/lib/ui/painting/canvas.cc +FILE: ../../../flutter/lib/ui/painting/canvas.h FILE: ../../../flutter/lib/ui/painting/codec.cc FILE: ../../../flutter/lib/ui/painting/codec.h +FILE: ../../../flutter/lib/ui/painting/engine_layer.cc +FILE: ../../../flutter/lib/ui/painting/engine_layer.h FILE: ../../../flutter/lib/ui/painting/frame_info.cc FILE: ../../../flutter/lib/ui/painting/frame_info.h +FILE: ../../../flutter/lib/ui/painting/gradient.cc +FILE: ../../../flutter/lib/ui/painting/gradient.h +FILE: ../../../flutter/lib/ui/painting/image.cc +FILE: ../../../flutter/lib/ui/painting/image.h +FILE: ../../../flutter/lib/ui/painting/image_encoding.cc +FILE: ../../../flutter/lib/ui/painting/image_encoding.h +FILE: ../../../flutter/lib/ui/painting/image_filter.cc +FILE: ../../../flutter/lib/ui/painting/image_filter.h +FILE: ../../../flutter/lib/ui/painting/image_shader.cc +FILE: ../../../flutter/lib/ui/painting/image_shader.h +FILE: ../../../flutter/lib/ui/painting/matrix.cc +FILE: ../../../flutter/lib/ui/painting/matrix.h +FILE: ../../../flutter/lib/ui/painting/paint.cc +FILE: ../../../flutter/lib/ui/painting/paint.h +FILE: ../../../flutter/lib/ui/painting/path.cc +FILE: ../../../flutter/lib/ui/painting/path.h +FILE: ../../../flutter/lib/ui/painting/path_measure.cc +FILE: ../../../flutter/lib/ui/painting/path_measure.h +FILE: ../../../flutter/lib/ui/painting/picture.cc +FILE: ../../../flutter/lib/ui/painting/picture.h +FILE: ../../../flutter/lib/ui/painting/picture_recorder.cc +FILE: ../../../flutter/lib/ui/painting/picture_recorder.h +FILE: ../../../flutter/lib/ui/painting/rrect.cc +FILE: ../../../flutter/lib/ui/painting/rrect.h +FILE: ../../../flutter/lib/ui/painting/shader.cc +FILE: ../../../flutter/lib/ui/painting/shader.h FILE: ../../../flutter/lib/ui/painting/vertices.cc FILE: ../../../flutter/lib/ui/painting/vertices.h +FILE: ../../../flutter/lib/ui/plugins.dart +FILE: ../../../flutter/lib/ui/plugins/callback_cache.cc +FILE: ../../../flutter/lib/ui/plugins/callback_cache.h +FILE: ../../../flutter/lib/ui/pointer.dart +FILE: ../../../flutter/lib/ui/semantics.dart +FILE: ../../../flutter/lib/ui/semantics/custom_accessibility_action.cc +FILE: ../../../flutter/lib/ui/semantics/custom_accessibility_action.h +FILE: ../../../flutter/lib/ui/semantics/semantics_node.cc +FILE: ../../../flutter/lib/ui/semantics/semantics_node.h +FILE: ../../../flutter/lib/ui/semantics/semantics_update.cc +FILE: ../../../flutter/lib/ui/semantics/semantics_update.h +FILE: ../../../flutter/lib/ui/semantics/semantics_update_builder.cc +FILE: ../../../flutter/lib/ui/semantics/semantics_update_builder.h +FILE: ../../../flutter/lib/ui/snapshot_delegate.h +FILE: ../../../flutter/lib/ui/text.dart +FILE: ../../../flutter/lib/ui/text/asset_manager_font_provider.cc +FILE: ../../../flutter/lib/ui/text/asset_manager_font_provider.h FILE: ../../../flutter/lib/ui/text/font_collection.cc FILE: ../../../flutter/lib/ui/text/font_collection.h -FILE: ../../../flutter/shell/gpu/gpu_surface_software.cc -FILE: ../../../flutter/shell/gpu/gpu_surface_software.h -FILE: ../../../flutter/shell/platform/android/android_external_texture_gl.cc -FILE: ../../../flutter/shell/platform/android/android_external_texture_gl.h -FILE: ../../../flutter/shell/platform/android/android_surface_software.cc -FILE: ../../../flutter/shell/platform/android/android_surface_software.h -FILE: ../../../flutter/shell/platform/android/io/flutter/app/FlutterActivityDelegate.java -FILE: ../../../flutter/shell/platform/android/io/flutter/app/FlutterActivityEvents.java -FILE: ../../../flutter/shell/platform/android/io/flutter/app/FlutterFragmentActivity.java -FILE: ../../../flutter/shell/platform/android/io/flutter/app/FlutterPluginRegistry.java -FILE: ../../../flutter/shell/platform/android/io/flutter/plugin/common/BasicMessageChannel.java -FILE: ../../../flutter/shell/platform/android/io/flutter/plugin/common/BinaryCodec.java -FILE: ../../../flutter/shell/platform/android/io/flutter/plugin/common/BinaryMessenger.java -FILE: ../../../flutter/shell/platform/android/io/flutter/plugin/common/EventChannel.java -FILE: ../../../flutter/shell/platform/android/io/flutter/plugin/common/FlutterException.java -FILE: ../../../flutter/shell/platform/android/io/flutter/plugin/common/JSONMessageCodec.java -FILE: ../../../flutter/shell/platform/android/io/flutter/plugin/common/JSONMethodCodec.java -FILE: ../../../flutter/shell/platform/android/io/flutter/plugin/common/MessageCodec.java -FILE: ../../../flutter/shell/platform/android/io/flutter/plugin/common/MethodCall.java -FILE: ../../../flutter/shell/platform/android/io/flutter/plugin/common/MethodChannel.java -FILE: ../../../flutter/shell/platform/android/io/flutter/plugin/common/MethodCodec.java -FILE: ../../../flutter/shell/platform/android/io/flutter/plugin/common/PluginRegistry.java -FILE: ../../../flutter/shell/platform/android/io/flutter/plugin/common/StandardMessageCodec.java -FILE: ../../../flutter/shell/platform/android/io/flutter/plugin/common/StandardMethodCodec.java -FILE: ../../../flutter/shell/platform/android/io/flutter/plugin/common/StringCodec.java -FILE: ../../../flutter/shell/platform/android/io/flutter/util/PathUtils.java -FILE: ../../../flutter/shell/platform/android/io/flutter/util/Preconditions.java -FILE: ../../../flutter/shell/platform/android/io/flutter/view/FlutterNativeView.java -FILE: ../../../flutter/shell/platform/android/io/flutter/view/TextureRegistry.java -FILE: ../../../flutter/shell/platform/android/platform_view_android_jni.cc -FILE: ../../../flutter/shell/platform/android/platform_view_android_jni.h -FILE: ../../../flutter/shell/platform/darwin/ios/framework/Headers/FlutterBinaryMessenger.h -FILE: ../../../flutter/shell/platform/darwin/ios/framework/Headers/FlutterChannels.h -FILE: ../../../flutter/shell/platform/darwin/ios/framework/Headers/FlutterCodecs.h -FILE: ../../../flutter/shell/platform/darwin/ios/framework/Headers/FlutterHeadlessDartRunner.h -FILE: ../../../flutter/shell/platform/darwin/ios/framework/Headers/FlutterPlugin.h -FILE: ../../../flutter/shell/platform/darwin/ios/framework/Headers/FlutterTexture.h -FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterChannels.mm -FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterCodecs.mm -FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterHeadlessDartRunner.mm -FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterStandardCodec.mm -FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterStandardCodec_Internal.h -FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterUmbrellaImport.m -FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/flutter_codecs_unittest.mm -FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/flutter_standard_codec_unittest.mm -FILE: ../../../flutter/shell/platform/darwin/ios/ios_external_texture_gl.h -FILE: ../../../flutter/shell/platform/darwin/ios/ios_external_texture_gl.mm -FILE: ../../../flutter/shell/platform/darwin/ios/ios_gl_context.h -FILE: ../../../flutter/shell/platform/darwin/ios/ios_gl_context.mm -FILE: ../../../flutter/shell/platform/darwin/ios/ios_surface.h -FILE: ../../../flutter/shell/platform/darwin/ios/ios_surface.mm -FILE: ../../../flutter/shell/platform/darwin/ios/ios_surface_gl.h -FILE: ../../../flutter/shell/platform/darwin/ios/ios_surface_gl.mm -FILE: ../../../flutter/shell/platform/darwin/ios/ios_surface_software.h -FILE: ../../../flutter/shell/platform/darwin/ios/ios_surface_software.mm -FILE: ../../../flutter/shell/platform/embedder/embedder.cc -FILE: ../../../flutter/shell/platform/embedder/embedder_include.c -FILE: ../../../flutter/shell/platform/embedder/platform_view_embedder.cc -FILE: ../../../flutter/shell/platform/embedder/platform_view_embedder.h -FILE: ../../../flutter/third_party/txt/src/txt/platform.cc -FILE: ../../../flutter/third_party/txt/src/txt/platform.h -FILE: ../../../flutter/third_party/txt/src/txt/platform_android.cc -FILE: ../../../flutter/third_party/txt/src/txt/platform_mac.mm -FILE: ../../../flutter/vulkan/skia_vulkan_header.h -FILE: ../../../flutter/vulkan/vulkan_native_surface_magma.cc -FILE: ../../../flutter/vulkan/vulkan_native_surface_magma.h -FILE: ../../../flutter/vulkan/vulkan_provider.cc -FILE: ../../../flutter/vulkan/vulkan_provider.h ----------------------------------------------------------------------------------------------------- -Copyright 2017 The Chromium Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -==================================================================================================== - -==================================================================================================== -LIBRARY: engine -ORIGIN: ../../../LICENSE -TYPE: LicenseType.bsd -FILE: ../../../flutter/DEPS -FILE: ../../../flutter/lib/io/dart_io.cc -FILE: ../../../flutter/lib/io/dart_io.h -FILE: ../../../flutter/lib/snapshot/libraries.json -FILE: ../../../flutter/lib/ui/dart_runtime_hooks.cc -FILE: ../../../flutter/lib/ui/dart_runtime_hooks.h -FILE: ../../../flutter/lib/ui/dart_ui.cc -FILE: ../../../flutter/lib/ui/dart_ui.h -FILE: ../../../flutter/lib/ui/natives.dart +FILE: ../../../flutter/lib/ui/text/paragraph.cc +FILE: ../../../flutter/lib/ui/text/paragraph.h +FILE: ../../../flutter/lib/ui/text/paragraph_builder.cc +FILE: ../../../flutter/lib/ui/text/paragraph_builder.h +FILE: ../../../flutter/lib/ui/text/paragraph_impl.cc +FILE: ../../../flutter/lib/ui/text/paragraph_impl.h +FILE: ../../../flutter/lib/ui/text/paragraph_impl_txt.cc +FILE: ../../../flutter/lib/ui/text/paragraph_impl_txt.h +FILE: ../../../flutter/lib/ui/text/text_box.cc +FILE: ../../../flutter/lib/ui/text/text_box.h +FILE: ../../../flutter/lib/ui/ui.dart +FILE: ../../../flutter/lib/ui/ui_dart_state.cc +FILE: ../../../flutter/lib/ui/ui_dart_state.h +FILE: ../../../flutter/lib/ui/window.dart +FILE: ../../../flutter/lib/ui/window/platform_message.cc +FILE: ../../../flutter/lib/ui/window/platform_message.h +FILE: ../../../flutter/lib/ui/window/platform_message_response.cc +FILE: ../../../flutter/lib/ui/window/platform_message_response.h +FILE: ../../../flutter/lib/ui/window/platform_message_response_dart.cc +FILE: ../../../flutter/lib/ui/window/platform_message_response_dart.h +FILE: ../../../flutter/lib/ui/window/pointer_data.cc +FILE: ../../../flutter/lib/ui/window/pointer_data.h +FILE: ../../../flutter/lib/ui/window/pointer_data_packet.cc +FILE: ../../../flutter/lib/ui/window/pointer_data_packet.h +FILE: ../../../flutter/lib/ui/window/viewport_metrics.h +FILE: ../../../flutter/lib/ui/window/window.cc FILE: ../../../flutter/lib/ui/window/window.h -FILE: ../../../flutter/shell/common/skia_event_tracer_impl.cc -FILE: ../../../flutter/shell/platform/android/apk_asset_provider.cc -FILE: ../../../flutter/shell/platform/android/io/flutter/plugin/common/JSONUtil.java -FILE: ../../../flutter/shell/platform/darwin/ios/framework/Flutter.podspec -FILE: ../../../flutter/shell/platform/darwin/ios/framework/Info.plist -FILE: ../../../flutter/shell/platform/darwin/ios/framework/module.modulemap -FILE: ../../../flutter/shell/platform/embedder/assets/EmbedderInfo.plist -FILE: ../../../flutter/shell/platform/embedder/assets/embedder.modulemap -FILE: ../../../flutter/shell/platform/embedder/fixtures/simple_main.dart -FILE: ../../../flutter/sky/tools/roll/patches/chromium/android_build.patch ----------------------------------------------------------------------------------------------------- -Copyright 2014 The Chromium Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -==================================================================================================== - -==================================================================================================== -LIBRARY: engine -ORIGIN: ../../../flutter/assets/asset_manager.cc + ../../../LICENSE -TYPE: LicenseType.bsd -FILE: ../../../flutter/assets/asset_manager.cc -FILE: ../../../flutter/assets/asset_manager.h -FILE: ../../../flutter/assets/asset_resolver.h -FILE: ../../../flutter/common/task_runners.cc -FILE: ../../../flutter/common/task_runners.h -FILE: ../../../flutter/flow/skia_gpu_object.cc -FILE: ../../../flutter/flow/skia_gpu_object.h FILE: ../../../flutter/runtime/dart_isolate.cc FILE: ../../../flutter/runtime/dart_isolate.h FILE: ../../../flutter/runtime/dart_isolate_unittests.cc +FILE: ../../../flutter/runtime/dart_service_isolate.cc +FILE: ../../../flutter/runtime/dart_service_isolate.h +FILE: ../../../flutter/runtime/dart_service_isolate_unittests.cc FILE: ../../../flutter/runtime/dart_snapshot.cc FILE: ../../../flutter/runtime/dart_snapshot.h FILE: ../../../flutter/runtime/dart_snapshot_buffer.cc @@ -257,153 +327,241 @@ FILE: ../../../flutter/runtime/dart_snapshot_buffer.h FILE: ../../../flutter/runtime/dart_vm.cc FILE: ../../../flutter/runtime/dart_vm.h FILE: ../../../flutter/runtime/dart_vm_unittests.cc -FILE: ../../../flutter/runtime/service_protocol.cc -FILE: ../../../flutter/runtime/service_protocol.h -FILE: ../../../flutter/shell/common/io_manager.cc -FILE: ../../../flutter/shell/common/io_manager.h -FILE: ../../../flutter/shell/common/run_configuration.cc -FILE: ../../../flutter/shell/common/run_configuration.h -FILE: ../../../flutter/shell/common/shell_unittests.cc -FILE: ../../../flutter/shell/common/thread_host.cc -FILE: ../../../flutter/shell/common/thread_host.h -FILE: ../../../flutter/shell/platform/darwin/common/command_line.h -FILE: ../../../flutter/shell/platform/darwin/common/command_line.mm -FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterViewController_Internal.h -FILE: ../../../flutter/shell/platform/embedder/embedder.h -FILE: ../../../flutter/shell/platform/embedder/embedder_engine.cc -FILE: ../../../flutter/shell/platform/embedder/embedder_engine.h ----------------------------------------------------------------------------------------------------- -Copyright 2017 The Flutter Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -==================================================================================================== - -==================================================================================================== -LIBRARY: engine -ORIGIN: ../../../flutter/assets/directory_asset_bundle.cc + ../../../LICENSE -TYPE: LicenseType.bsd -FILE: ../../../flutter/assets/directory_asset_bundle.cc -FILE: ../../../flutter/assets/directory_asset_bundle.h -FILE: ../../../flutter/assets/zip_asset_store.cc -FILE: ../../../flutter/assets/zip_asset_store.h -FILE: ../../../flutter/common/settings.cc -FILE: ../../../flutter/common/settings.h -FILE: ../../../flutter/flow/export_node.cc -FILE: ../../../flutter/flow/layers/backdrop_filter_layer.cc -FILE: ../../../flutter/flow/layers/backdrop_filter_layer.h -FILE: ../../../flutter/flow/layers/child_scene_layer.cc -FILE: ../../../flutter/flow/layers/child_scene_layer.h -FILE: ../../../flutter/flow/layers/shader_mask_layer.cc -FILE: ../../../flutter/flow/layers/shader_mask_layer.h -FILE: ../../../flutter/flow/raster_cache.cc -FILE: ../../../flutter/flow/raster_cache.h -FILE: ../../../flutter/flow/scene_update_context.cc -FILE: ../../../flutter/flow/scene_update_context.h -FILE: ../../../flutter/lib/ui/painting/image_filter.cc -FILE: ../../../flutter/lib/ui/painting/image_filter.h -FILE: ../../../flutter/lib/ui/semantics.dart -FILE: ../../../flutter/lib/ui/semantics/semantics_node.cc -FILE: ../../../flutter/lib/ui/semantics/semantics_node.h -FILE: ../../../flutter/lib/ui/semantics/semantics_update.cc -FILE: ../../../flutter/lib/ui/semantics/semantics_update.h -FILE: ../../../flutter/lib/ui/semantics/semantics_update_builder.cc -FILE: ../../../flutter/lib/ui/semantics/semantics_update_builder.h -FILE: ../../../flutter/lib/ui/text/text_box.h -FILE: ../../../flutter/lib/ui/window/platform_message.cc -FILE: ../../../flutter/lib/ui/window/platform_message.h -FILE: ../../../flutter/lib/ui/window/platform_message_response.cc -FILE: ../../../flutter/lib/ui/window/platform_message_response.h -FILE: ../../../flutter/lib/ui/window/platform_message_response_dart.cc -FILE: ../../../flutter/lib/ui/window/platform_message_response_dart.h -FILE: ../../../flutter/lib/ui/window/pointer_data.h -FILE: ../../../flutter/lib/ui/window/pointer_data_packet.h -FILE: ../../../flutter/lib/ui/window/viewport_metrics.h FILE: ../../../flutter/runtime/embedder_resources.cc FILE: ../../../flutter/runtime/embedder_resources.h FILE: ../../../flutter/runtime/fixtures/simple_main.dart +FILE: ../../../flutter/runtime/runtime_controller.cc +FILE: ../../../flutter/runtime/runtime_controller.h +FILE: ../../../flutter/runtime/runtime_delegate.cc +FILE: ../../../flutter/runtime/runtime_delegate.h +FILE: ../../../flutter/runtime/service_protocol.cc +FILE: ../../../flutter/runtime/service_protocol.h FILE: ../../../flutter/runtime/start_up.cc FILE: ../../../flutter/runtime/start_up.h FILE: ../../../flutter/runtime/test_font_data.cc FILE: ../../../flutter/runtime/test_font_data.h +FILE: ../../../flutter/shell/common/animator.cc +FILE: ../../../flutter/shell/common/animator.h +FILE: ../../../flutter/shell/common/engine.cc +FILE: ../../../flutter/shell/common/engine.h +FILE: ../../../flutter/shell/common/io_manager.cc +FILE: ../../../flutter/shell/common/io_manager.h +FILE: ../../../flutter/shell/common/isolate_configuration.cc +FILE: ../../../flutter/shell/common/isolate_configuration.h +FILE: ../../../flutter/shell/common/persistent_cache.cc +FILE: ../../../flutter/shell/common/persistent_cache.h +FILE: ../../../flutter/shell/common/platform_view.cc +FILE: ../../../flutter/shell/common/platform_view.h +FILE: ../../../flutter/shell/common/rasterizer.cc +FILE: ../../../flutter/shell/common/rasterizer.h +FILE: ../../../flutter/shell/common/run_configuration.cc +FILE: ../../../flutter/shell/common/run_configuration.h +FILE: ../../../flutter/shell/common/shell.cc +FILE: ../../../flutter/shell/common/shell.h +FILE: ../../../flutter/shell/common/shell_benchmarks.cc +FILE: ../../../flutter/shell/common/shell_unittests.cc +FILE: ../../../flutter/shell/common/skia_event_tracer_impl.cc FILE: ../../../flutter/shell/common/skia_event_tracer_impl.h FILE: ../../../flutter/shell/common/surface.cc FILE: ../../../flutter/shell/common/surface.h +FILE: ../../../flutter/shell/common/switches.cc +FILE: ../../../flutter/shell/common/switches.h +FILE: ../../../flutter/shell/common/thread_host.cc +FILE: ../../../flutter/shell/common/thread_host.h +FILE: ../../../flutter/shell/common/vsync_waiter.cc +FILE: ../../../flutter/shell/common/vsync_waiter.h FILE: ../../../flutter/shell/common/vsync_waiter_fallback.cc +FILE: ../../../flutter/shell/common/vsync_waiter_fallback.h FILE: ../../../flutter/shell/gpu/gpu_surface_gl.cc FILE: ../../../flutter/shell/gpu/gpu_surface_gl.h +FILE: ../../../flutter/shell/gpu/gpu_surface_software.cc +FILE: ../../../flutter/shell/gpu/gpu_surface_software.h FILE: ../../../flutter/shell/gpu/gpu_surface_vulkan.cc FILE: ../../../flutter/shell/gpu/gpu_surface_vulkan.h +FILE: ../../../flutter/shell/platform/android/AndroidManifest.xml FILE: ../../../flutter/shell/platform/android/android_context_gl.cc FILE: ../../../flutter/shell/platform/android/android_context_gl.h FILE: ../../../flutter/shell/platform/android/android_environment_gl.cc FILE: ../../../flutter/shell/platform/android/android_environment_gl.h +FILE: ../../../flutter/shell/platform/android/android_external_texture_gl.cc +FILE: ../../../flutter/shell/platform/android/android_external_texture_gl.h FILE: ../../../flutter/shell/platform/android/android_native_window.cc FILE: ../../../flutter/shell/platform/android/android_native_window.h +FILE: ../../../flutter/shell/platform/android/android_shell_holder.cc +FILE: ../../../flutter/shell/platform/android/android_shell_holder.h FILE: ../../../flutter/shell/platform/android/android_surface.cc FILE: ../../../flutter/shell/platform/android/android_surface.h FILE: ../../../flutter/shell/platform/android/android_surface_gl.cc FILE: ../../../flutter/shell/platform/android/android_surface_gl.h +FILE: ../../../flutter/shell/platform/android/android_surface_software.cc +FILE: ../../../flutter/shell/platform/android/android_surface_software.h FILE: ../../../flutter/shell/platform/android/android_surface_vulkan.cc FILE: ../../../flutter/shell/platform/android/android_surface_vulkan.h +FILE: ../../../flutter/shell/platform/android/apk_asset_provider.cc +FILE: ../../../flutter/shell/platform/android/apk_asset_provider.h +FILE: ../../../flutter/shell/platform/android/flutter_main.cc +FILE: ../../../flutter/shell/platform/android/flutter_main.h +FILE: ../../../flutter/shell/platform/android/io/flutter/app/FlutterActivity.java +FILE: ../../../flutter/shell/platform/android/io/flutter/app/FlutterActivityDelegate.java +FILE: ../../../flutter/shell/platform/android/io/flutter/app/FlutterActivityEvents.java +FILE: ../../../flutter/shell/platform/android/io/flutter/app/FlutterApplication.java +FILE: ../../../flutter/shell/platform/android/io/flutter/app/FlutterFragmentActivity.java +FILE: ../../../flutter/shell/platform/android/io/flutter/app/FlutterPluginRegistry.java FILE: ../../../flutter/shell/platform/android/io/flutter/plugin/common/ActivityLifecycleListener.java +FILE: ../../../flutter/shell/platform/android/io/flutter/plugin/common/BasicMessageChannel.java +FILE: ../../../flutter/shell/platform/android/io/flutter/plugin/common/BinaryCodec.java +FILE: ../../../flutter/shell/platform/android/io/flutter/plugin/common/BinaryMessenger.java +FILE: ../../../flutter/shell/platform/android/io/flutter/plugin/common/EventChannel.java +FILE: ../../../flutter/shell/platform/android/io/flutter/plugin/common/FlutterException.java +FILE: ../../../flutter/shell/platform/android/io/flutter/plugin/common/JSONMessageCodec.java +FILE: ../../../flutter/shell/platform/android/io/flutter/plugin/common/JSONMethodCodec.java +FILE: ../../../flutter/shell/platform/android/io/flutter/plugin/common/JSONUtil.java +FILE: ../../../flutter/shell/platform/android/io/flutter/plugin/common/MessageCodec.java +FILE: ../../../flutter/shell/platform/android/io/flutter/plugin/common/MethodCall.java +FILE: ../../../flutter/shell/platform/android/io/flutter/plugin/common/MethodChannel.java +FILE: ../../../flutter/shell/platform/android/io/flutter/plugin/common/MethodCodec.java +FILE: ../../../flutter/shell/platform/android/io/flutter/plugin/common/PluginRegistry.java +FILE: ../../../flutter/shell/platform/android/io/flutter/plugin/common/StandardMessageCodec.java +FILE: ../../../flutter/shell/platform/android/io/flutter/plugin/common/StandardMethodCodec.java +FILE: ../../../flutter/shell/platform/android/io/flutter/plugin/common/StringCodec.java FILE: ../../../flutter/shell/platform/android/io/flutter/plugin/editing/InputConnectionAdaptor.java FILE: ../../../flutter/shell/platform/android/io/flutter/plugin/editing/TextInputPlugin.java FILE: ../../../flutter/shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java +FILE: ../../../flutter/shell/platform/android/io/flutter/plugin/platform/PlatformView.java +FILE: ../../../flutter/shell/platform/android/io/flutter/plugin/platform/PlatformViewFactory.java +FILE: ../../../flutter/shell/platform/android/io/flutter/plugin/platform/PlatformViewRegistry.java +FILE: ../../../flutter/shell/platform/android/io/flutter/plugin/platform/PlatformViewRegistryImpl.java +FILE: ../../../flutter/shell/platform/android/io/flutter/plugin/platform/PlatformViewsController.java +FILE: ../../../flutter/shell/platform/android/io/flutter/plugin/platform/SingleViewPresentation.java +FILE: ../../../flutter/shell/platform/android/io/flutter/plugin/platform/VirtualDisplayController.java +FILE: ../../../flutter/shell/platform/android/io/flutter/util/PathUtils.java +FILE: ../../../flutter/shell/platform/android/io/flutter/util/Preconditions.java +FILE: ../../../flutter/shell/platform/android/io/flutter/view/AccessibilityBridge.java +FILE: ../../../flutter/shell/platform/android/io/flutter/view/FlutterCallbackInformation.java +FILE: ../../../flutter/shell/platform/android/io/flutter/view/FlutterMain.java +FILE: ../../../flutter/shell/platform/android/io/flutter/view/FlutterNativeView.java +FILE: ../../../flutter/shell/platform/android/io/flutter/view/FlutterRunArguments.java +FILE: ../../../flutter/shell/platform/android/io/flutter/view/FlutterView.java +FILE: ../../../flutter/shell/platform/android/io/flutter/view/ResourceCleaner.java +FILE: ../../../flutter/shell/platform/android/io/flutter/view/ResourceExtractor.java +FILE: ../../../flutter/shell/platform/android/io/flutter/view/ResourcePaths.java +FILE: ../../../flutter/shell/platform/android/io/flutter/view/TextureRegistry.java FILE: ../../../flutter/shell/platform/android/io/flutter/view/VsyncWaiter.java +FILE: ../../../flutter/shell/platform/android/library_loader.cc +FILE: ../../../flutter/shell/platform/android/platform_message_response_android.cc +FILE: ../../../flutter/shell/platform/android/platform_message_response_android.h +FILE: ../../../flutter/shell/platform/android/platform_view_android.cc +FILE: ../../../flutter/shell/platform/android/platform_view_android.h +FILE: ../../../flutter/shell/platform/android/platform_view_android_jni.cc +FILE: ../../../flutter/shell/platform/android/platform_view_android_jni.h FILE: ../../../flutter/shell/platform/android/vsync_waiter_android.cc FILE: ../../../flutter/shell/platform/android/vsync_waiter_android.h +FILE: ../../../flutter/shell/platform/darwin/common/buffer_conversions.h FILE: ../../../flutter/shell/platform/darwin/common/buffer_conversions.mm +FILE: ../../../flutter/shell/platform/darwin/common/command_line.h +FILE: ../../../flutter/shell/platform/darwin/common/command_line.mm +FILE: ../../../flutter/shell/platform/darwin/ios/framework/Flutter.podspec FILE: ../../../flutter/shell/platform/darwin/ios/framework/Headers/Flutter.h FILE: ../../../flutter/shell/platform/darwin/ios/framework/Headers/FlutterAppDelegate.h +FILE: ../../../flutter/shell/platform/darwin/ios/framework/Headers/FlutterBinaryMessenger.h +FILE: ../../../flutter/shell/platform/darwin/ios/framework/Headers/FlutterCallbackCache.h +FILE: ../../../flutter/shell/platform/darwin/ios/framework/Headers/FlutterChannels.h +FILE: ../../../flutter/shell/platform/darwin/ios/framework/Headers/FlutterCodecs.h FILE: ../../../flutter/shell/platform/darwin/ios/framework/Headers/FlutterDartProject.h +FILE: ../../../flutter/shell/platform/darwin/ios/framework/Headers/FlutterEngine.h +FILE: ../../../flutter/shell/platform/darwin/ios/framework/Headers/FlutterHeadlessDartRunner.h FILE: ../../../flutter/shell/platform/darwin/ios/framework/Headers/FlutterMacros.h +FILE: ../../../flutter/shell/platform/darwin/ios/framework/Headers/FlutterPlatformViews.h +FILE: ../../../flutter/shell/platform/darwin/ios/framework/Headers/FlutterPlugin.h +FILE: ../../../flutter/shell/platform/darwin/ios/framework/Headers/FlutterPluginAppLifeCycleDelegate.h +FILE: ../../../flutter/shell/platform/darwin/ios/framework/Headers/FlutterTexture.h FILE: ../../../flutter/shell/platform/darwin/ios/framework/Headers/FlutterViewController.h +FILE: ../../../flutter/shell/platform/darwin/ios/framework/Info.plist +FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterAppDelegate.mm +FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterAppDelegate_Internal.h +FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterCallbackCache.mm +FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterCallbackCache_Internal.h +FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterChannels.mm +FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterCodecs.mm FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterDartProject.mm FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterDartProject_Internal.h +FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterEngine.mm +FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterEngine_Internal.h +FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterHeadlessDartRunner.mm +FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterObservatoryPublisher.h +FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterObservatoryPublisher.mm +FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterOverlayView.h +FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterOverlayView.mm FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterPlatformPlugin.h FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterPlatformPlugin.mm +FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm +FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h +FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterPluginAppLifeCycleDelegate.mm +FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterStandardCodec.mm +FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterStandardCodec_Internal.h FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterTextInputDelegate.h FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterTextInputPlugin.h FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterTextInputPlugin.mm +FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterUmbrellaImport.m FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterView.h FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterView.mm FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm +FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterViewController_Internal.h FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/accessibility_bridge.h FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/accessibility_bridge.mm +FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/accessibility_text_entry.h +FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/accessibility_text_entry.mm +FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/flutter_codecs_unittest.mm +FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/flutter_standard_codec_unittest.mm +FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/platform_message_response_darwin.h +FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/platform_message_response_darwin.mm FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/platform_message_router.h FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/platform_message_router.mm +FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/vsync_waiter_ios.h +FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/vsync_waiter_ios.mm +FILE: ../../../flutter/shell/platform/darwin/ios/framework/module.modulemap +FILE: ../../../flutter/shell/platform/darwin/ios/ios_external_texture_gl.h +FILE: ../../../flutter/shell/platform/darwin/ios/ios_external_texture_gl.mm +FILE: ../../../flutter/shell/platform/darwin/ios/ios_gl_context.h +FILE: ../../../flutter/shell/platform/darwin/ios/ios_gl_context.mm +FILE: ../../../flutter/shell/platform/darwin/ios/ios_surface.h +FILE: ../../../flutter/shell/platform/darwin/ios/ios_surface.mm +FILE: ../../../flutter/shell/platform/darwin/ios/ios_surface_gl.h +FILE: ../../../flutter/shell/platform/darwin/ios/ios_surface_gl.mm +FILE: ../../../flutter/shell/platform/darwin/ios/ios_surface_software.h +FILE: ../../../flutter/shell/platform/darwin/ios/ios_surface_software.mm FILE: ../../../flutter/shell/platform/darwin/ios/platform_view_ios.h FILE: ../../../flutter/shell/platform/darwin/ios/platform_view_ios.mm +FILE: ../../../flutter/shell/platform/embedder/assets/EmbedderInfo.plist +FILE: ../../../flutter/shell/platform/embedder/assets/embedder.modulemap +FILE: ../../../flutter/shell/platform/embedder/embedder.cc +FILE: ../../../flutter/shell/platform/embedder/embedder.h +FILE: ../../../flutter/shell/platform/embedder/embedder_engine.cc +FILE: ../../../flutter/shell/platform/embedder/embedder_engine.h +FILE: ../../../flutter/shell/platform/embedder/embedder_include.c +FILE: ../../../flutter/shell/platform/embedder/embedder_surface.cc +FILE: ../../../flutter/shell/platform/embedder/embedder_surface.h +FILE: ../../../flutter/shell/platform/embedder/embedder_surface_gl.cc +FILE: ../../../flutter/shell/platform/embedder/embedder_surface_gl.h +FILE: ../../../flutter/shell/platform/embedder/embedder_surface_software.cc +FILE: ../../../flutter/shell/platform/embedder/embedder_surface_software.h +FILE: ../../../flutter/shell/platform/embedder/fixtures/simple_main.dart +FILE: ../../../flutter/shell/platform/embedder/platform_view_embedder.cc +FILE: ../../../flutter/shell/platform/embedder/platform_view_embedder.h +FILE: ../../../flutter/shell/version/version.cc +FILE: ../../../flutter/shell/version/version.h FILE: ../../../flutter/sky/packages/flutter_services/lib/empty.dart +FILE: ../../../flutter/sky/tools/roll/patches/chromium/android_build.patch FILE: ../../../flutter/synchronization/pipeline.cc FILE: ../../../flutter/synchronization/pipeline.h FILE: ../../../flutter/synchronization/semaphore.cc FILE: ../../../flutter/synchronization/semaphore.h FILE: ../../../flutter/synchronization/semaphore_unittest.cc +FILE: ../../../flutter/third_party/txt/src/txt/platform.cc +FILE: ../../../flutter/third_party/txt/src/txt/platform.h +FILE: ../../../flutter/third_party/txt/src/txt/platform_android.cc +FILE: ../../../flutter/third_party/txt/src/txt/platform_mac.mm +FILE: ../../../flutter/vulkan/skia_vulkan_header.h FILE: ../../../flutter/vulkan/vulkan_application.cc FILE: ../../../flutter/vulkan/vulkan_application.h FILE: ../../../flutter/vulkan/vulkan_backbuffer.cc @@ -424,8 +582,12 @@ FILE: ../../../flutter/vulkan/vulkan_native_surface.cc FILE: ../../../flutter/vulkan/vulkan_native_surface.h FILE: ../../../flutter/vulkan/vulkan_native_surface_android.cc FILE: ../../../flutter/vulkan/vulkan_native_surface_android.h +FILE: ../../../flutter/vulkan/vulkan_native_surface_magma.cc +FILE: ../../../flutter/vulkan/vulkan_native_surface_magma.h FILE: ../../../flutter/vulkan/vulkan_proc_table.cc FILE: ../../../flutter/vulkan/vulkan_proc_table.h +FILE: ../../../flutter/vulkan/vulkan_provider.cc +FILE: ../../../flutter/vulkan/vulkan_provider.h FILE: ../../../flutter/vulkan/vulkan_surface.cc FILE: ../../../flutter/vulkan/vulkan_surface.h FILE: ../../../flutter/vulkan/vulkan_swapchain.cc @@ -435,509 +597,7 @@ FILE: ../../../flutter/vulkan/vulkan_utilities.h FILE: ../../../flutter/vulkan/vulkan_window.cc FILE: ../../../flutter/vulkan/vulkan_window.h ---------------------------------------------------------------------------------------------------- -Copyright 2016 The Chromium Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -==================================================================================================== - -==================================================================================================== -LIBRARY: engine -ORIGIN: ../../../flutter/benchmarking/benchmarking.cc + ../../../LICENSE -TYPE: LicenseType.bsd -FILE: ../../../flutter/benchmarking/benchmarking.cc -FILE: ../../../flutter/benchmarking/benchmarking.h -FILE: ../../../flutter/fml/base32.cc -FILE: ../../../flutter/fml/base32.h -FILE: ../../../flutter/fml/base32_unittest.cc -FILE: ../../../flutter/fml/file.cc -FILE: ../../../flutter/fml/file.h -FILE: ../../../flutter/fml/file_unittest.cc -FILE: ../../../flutter/fml/macros.h -FILE: ../../../flutter/fml/mapping.cc -FILE: ../../../flutter/fml/message.cc -FILE: ../../../flutter/fml/message.h -FILE: ../../../flutter/fml/message_unittests.cc -FILE: ../../../flutter/fml/native_library.h -FILE: ../../../flutter/fml/paths.cc -FILE: ../../../flutter/fml/platform/android/paths_android.h -FILE: ../../../flutter/fml/platform/fuchsia/paths_fuchsia.cc -FILE: ../../../flutter/fml/platform/posix/file_posix.cc -FILE: ../../../flutter/fml/platform/posix/native_library_posix.cc -FILE: ../../../flutter/fml/platform/posix/paths_posix.cc -FILE: ../../../flutter/fml/platform/win/errors_win.cc -FILE: ../../../flutter/fml/platform/win/errors_win.h -FILE: ../../../flutter/fml/platform/win/file_win.cc -FILE: ../../../flutter/fml/platform/win/native_library_win.cc -FILE: ../../../flutter/fml/platform/win/wstring_conversion.h -FILE: ../../../flutter/fml/synchronization/count_down_latch.cc -FILE: ../../../flutter/fml/synchronization/count_down_latch.h -FILE: ../../../flutter/fml/synchronization/count_down_latch_unittests.cc -FILE: ../../../flutter/fml/unique_fd.cc -FILE: ../../../flutter/fml/unique_fd.h -FILE: ../../../flutter/fml/unique_object.h -FILE: ../../../flutter/lib/ui/isolate_name_server/isolate_name_server.cc -FILE: ../../../flutter/lib/ui/isolate_name_server/isolate_name_server.h -FILE: ../../../flutter/lib/ui/isolate_name_server/isolate_name_server_natives.cc -FILE: ../../../flutter/lib/ui/isolate_name_server/isolate_name_server_natives.h -FILE: ../../../flutter/lib/ui/plugins/callback_cache.cc -FILE: ../../../flutter/lib/ui/plugins/callback_cache.h -FILE: ../../../flutter/lib/ui/snapshot_delegate.h -FILE: ../../../flutter/runtime/dart_service_isolate_unittests.cc -FILE: ../../../flutter/shell/common/isolate_configuration.cc -FILE: ../../../flutter/shell/common/isolate_configuration.h -FILE: ../../../flutter/shell/common/persistent_cache.cc -FILE: ../../../flutter/shell/common/persistent_cache.h -FILE: ../../../flutter/shell/common/shell_benchmarks.cc -FILE: ../../../flutter/shell/platform/android/android_shell_holder.cc -FILE: ../../../flutter/shell/platform/android/android_shell_holder.h -FILE: ../../../flutter/shell/platform/android/platform_message_response_android.cc -FILE: ../../../flutter/shell/platform/android/platform_message_response_android.h -FILE: ../../../flutter/shell/platform/darwin/ios/framework/Headers/FlutterEngine.h -FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterAppDelegate_Internal.h -FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterEngine.mm -FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterEngine_Internal.h -FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterObservatoryPublisher.h -FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterObservatoryPublisher.mm -FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm -FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h -FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/platform_message_response_darwin.h -FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/platform_message_response_darwin.mm -FILE: ../../../flutter/shell/platform/embedder/embedder_surface.cc -FILE: ../../../flutter/shell/platform/embedder/embedder_surface.h -FILE: ../../../flutter/shell/platform/embedder/embedder_surface_gl.cc -FILE: ../../../flutter/shell/platform/embedder/embedder_surface_gl.h -FILE: ../../../flutter/shell/platform/embedder/embedder_surface_software.cc -FILE: ../../../flutter/shell/platform/embedder/embedder_surface_software.h -FILE: ../../../flutter/shell/version/version.cc -FILE: ../../../flutter/shell/version/version.h ----------------------------------------------------------------------------------------------------- -Copyright 2018 The Flutter Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -==================================================================================================== - -==================================================================================================== -LIBRARY: engine -ORIGIN: ../../../flutter/flow/layers/platform_view_layer.cc + ../../../LICENSE -TYPE: LicenseType.bsd -FILE: ../../../flutter/flow/layers/platform_view_layer.cc -FILE: ../../../flutter/flow/layers/platform_view_layer.h -FILE: ../../../flutter/flutter_kernel_transformers/lib/track_widget_constructor_locations.dart -FILE: ../../../flutter/fml/paths_unittests.cc -FILE: ../../../flutter/lib/ui/isolate_name_server.dart -FILE: ../../../flutter/lib/ui/painting/engine_layer.cc -FILE: ../../../flutter/lib/ui/painting/engine_layer.h -FILE: ../../../flutter/lib/ui/painting/image_encoding.cc -FILE: ../../../flutter/lib/ui/painting/image_encoding.h -FILE: ../../../flutter/lib/ui/plugins.dart -FILE: ../../../flutter/lib/ui/semantics/custom_accessibility_action.cc -FILE: ../../../flutter/lib/ui/semantics/custom_accessibility_action.h -FILE: ../../../flutter/lib/ui/text/asset_manager_font_provider.cc -FILE: ../../../flutter/lib/ui/text/asset_manager_font_provider.h -FILE: ../../../flutter/shell/platform/android/apk_asset_provider.h -FILE: ../../../flutter/shell/platform/android/io/flutter/plugin/platform/PlatformView.java -FILE: ../../../flutter/shell/platform/android/io/flutter/plugin/platform/PlatformViewFactory.java -FILE: ../../../flutter/shell/platform/android/io/flutter/plugin/platform/PlatformViewRegistry.java -FILE: ../../../flutter/shell/platform/android/io/flutter/plugin/platform/PlatformViewRegistryImpl.java -FILE: ../../../flutter/shell/platform/android/io/flutter/plugin/platform/PlatformViewsController.java -FILE: ../../../flutter/shell/platform/android/io/flutter/plugin/platform/SingleViewPresentation.java -FILE: ../../../flutter/shell/platform/android/io/flutter/plugin/platform/VirtualDisplayController.java -FILE: ../../../flutter/shell/platform/android/io/flutter/view/FlutterCallbackInformation.java -FILE: ../../../flutter/shell/platform/android/io/flutter/view/FlutterRunArguments.java -FILE: ../../../flutter/shell/platform/darwin/ios/framework/Headers/FlutterCallbackCache.h -FILE: ../../../flutter/shell/platform/darwin/ios/framework/Headers/FlutterPlatformViews.h -FILE: ../../../flutter/shell/platform/darwin/ios/framework/Headers/FlutterPluginAppLifeCycleDelegate.h -FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterCallbackCache.mm -FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterCallbackCache_Internal.h -FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterOverlayView.h -FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterOverlayView.mm -FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterPluginAppLifeCycleDelegate.mm -FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/accessibility_text_entry.h -FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/accessibility_text_entry.mm ----------------------------------------------------------------------------------------------------- -Copyright 2018 The Chromium Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -==================================================================================================== - -==================================================================================================== -LIBRARY: engine -ORIGIN: ../../../flutter/fml/platform/darwin/scoped_block.h + ../../../LICENSE -TYPE: LicenseType.bsd -FILE: ../../../flutter/fml/platform/darwin/scoped_block.h ----------------------------------------------------------------------------------------------------- -Copyright (c) 2013 The Chromium Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -==================================================================================================== - -==================================================================================================== -LIBRARY: engine -ORIGIN: ../../../flutter/fml/time/time_delta_unittest.cc + ../../../third_party/tonic/LICENSE -TYPE: LicenseType.bsd -FILE: ../../../flutter/fml/export.h -FILE: ../../../flutter/fml/time/time_delta_unittest.cc -FILE: ../../../flutter/fml/time/time_point_unittest.cc ----------------------------------------------------------------------------------------------------- -Copyright 2017 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -==================================================================================================== - -==================================================================================================== -LIBRARY: engine -ORIGIN: ../../../flutter/lib/ui/painting/image.cc + ../../../LICENSE -TYPE: LicenseType.bsd -FILE: ../../../flutter/lib/ui/painting/image.cc -FILE: ../../../flutter/lib/ui/painting/image.h -FILE: ../../../flutter/shell/common/switches.cc -FILE: ../../../flutter/shell/common/switches.h -FILE: ../../../flutter/shell/platform/android/io/flutter/view/AccessibilityBridge.java -FILE: ../../../flutter/shell/platform/android/io/flutter/view/FlutterMain.java -FILE: ../../../flutter/shell/platform/android/io/flutter/view/FlutterView.java ----------------------------------------------------------------------------------------------------- -Copyright 2013 The Chromium Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -==================================================================================================== - -==================================================================================================== -LIBRARY: engine -ORIGIN: ../../../third_party/icu/scripts/LICENSE -TYPE: LicenseType.bsd -FILE: ../../../flutter/flow/compositor_context.cc -FILE: ../../../flutter/flow/compositor_context.h -FILE: ../../../flutter/flow/instrumentation.cc -FILE: ../../../flutter/flow/instrumentation.h -FILE: ../../../flutter/flow/layers/clip_path_layer.cc -FILE: ../../../flutter/flow/layers/clip_path_layer.h -FILE: ../../../flutter/flow/layers/clip_rect_layer.cc -FILE: ../../../flutter/flow/layers/clip_rect_layer.h -FILE: ../../../flutter/flow/layers/clip_rrect_layer.cc -FILE: ../../../flutter/flow/layers/clip_rrect_layer.h -FILE: ../../../flutter/flow/layers/color_filter_layer.cc -FILE: ../../../flutter/flow/layers/color_filter_layer.h -FILE: ../../../flutter/flow/layers/container_layer.cc -FILE: ../../../flutter/flow/layers/container_layer.h -FILE: ../../../flutter/flow/layers/layer.cc -FILE: ../../../flutter/flow/layers/layer.h -FILE: ../../../flutter/flow/layers/layer_tree.cc -FILE: ../../../flutter/flow/layers/layer_tree.h -FILE: ../../../flutter/flow/layers/opacity_layer.cc -FILE: ../../../flutter/flow/layers/opacity_layer.h -FILE: ../../../flutter/flow/layers/performance_overlay_layer.cc -FILE: ../../../flutter/flow/layers/performance_overlay_layer.h -FILE: ../../../flutter/flow/layers/picture_layer.cc -FILE: ../../../flutter/flow/layers/picture_layer.h -FILE: ../../../flutter/flow/layers/transform_layer.cc -FILE: ../../../flutter/flow/layers/transform_layer.h -FILE: ../../../flutter/lib/snapshot/snapshot.dart -FILE: ../../../flutter/lib/snapshot/snapshot.h -FILE: ../../../flutter/lib/snapshot/snapshot_fuchsia.dart -FILE: ../../../flutter/lib/ui/compositing.dart -FILE: ../../../flutter/lib/ui/compositing/scene.cc -FILE: ../../../flutter/lib/ui/compositing/scene.h -FILE: ../../../flutter/lib/ui/compositing/scene_builder.cc -FILE: ../../../flutter/lib/ui/compositing/scene_builder.h -FILE: ../../../flutter/lib/ui/dart_wrapper.h -FILE: ../../../flutter/lib/ui/geometry.dart -FILE: ../../../flutter/lib/ui/hash_codes.dart -FILE: ../../../flutter/lib/ui/hooks.dart -FILE: ../../../flutter/lib/ui/lerp.dart -FILE: ../../../flutter/lib/ui/painting.dart -FILE: ../../../flutter/lib/ui/painting/canvas.cc -FILE: ../../../flutter/lib/ui/painting/canvas.h -FILE: ../../../flutter/lib/ui/painting/gradient.cc -FILE: ../../../flutter/lib/ui/painting/gradient.h -FILE: ../../../flutter/lib/ui/painting/image_shader.cc -FILE: ../../../flutter/lib/ui/painting/image_shader.h -FILE: ../../../flutter/lib/ui/painting/matrix.cc -FILE: ../../../flutter/lib/ui/painting/matrix.h -FILE: ../../../flutter/lib/ui/painting/paint.cc -FILE: ../../../flutter/lib/ui/painting/paint.h -FILE: ../../../flutter/lib/ui/painting/path.cc -FILE: ../../../flutter/lib/ui/painting/path.h -FILE: ../../../flutter/lib/ui/painting/path_measure.cc -FILE: ../../../flutter/lib/ui/painting/path_measure.h -FILE: ../../../flutter/lib/ui/painting/picture.cc -FILE: ../../../flutter/lib/ui/painting/picture.h -FILE: ../../../flutter/lib/ui/painting/picture_recorder.cc -FILE: ../../../flutter/lib/ui/painting/picture_recorder.h -FILE: ../../../flutter/lib/ui/painting/rrect.cc -FILE: ../../../flutter/lib/ui/painting/rrect.h -FILE: ../../../flutter/lib/ui/painting/shader.cc -FILE: ../../../flutter/lib/ui/painting/shader.h -FILE: ../../../flutter/lib/ui/pointer.dart -FILE: ../../../flutter/lib/ui/text.dart -FILE: ../../../flutter/lib/ui/text/paragraph.cc -FILE: ../../../flutter/lib/ui/text/paragraph.h -FILE: ../../../flutter/lib/ui/text/paragraph_builder.cc -FILE: ../../../flutter/lib/ui/text/paragraph_builder.h -FILE: ../../../flutter/lib/ui/text/paragraph_impl.cc -FILE: ../../../flutter/lib/ui/text/paragraph_impl.h -FILE: ../../../flutter/lib/ui/text/paragraph_impl_txt.cc -FILE: ../../../flutter/lib/ui/text/paragraph_impl_txt.h -FILE: ../../../flutter/lib/ui/text/text_box.cc -FILE: ../../../flutter/lib/ui/ui.dart -FILE: ../../../flutter/lib/ui/ui_dart_state.cc -FILE: ../../../flutter/lib/ui/ui_dart_state.h -FILE: ../../../flutter/lib/ui/window.dart -FILE: ../../../flutter/lib/ui/window/pointer_data.cc -FILE: ../../../flutter/lib/ui/window/pointer_data_packet.cc -FILE: ../../../flutter/lib/ui/window/window.cc -FILE: ../../../flutter/runtime/dart_service_isolate.cc -FILE: ../../../flutter/runtime/dart_service_isolate.h -FILE: ../../../flutter/runtime/runtime_controller.cc -FILE: ../../../flutter/runtime/runtime_controller.h -FILE: ../../../flutter/runtime/runtime_delegate.cc -FILE: ../../../flutter/runtime/runtime_delegate.h -FILE: ../../../flutter/shell/common/animator.cc -FILE: ../../../flutter/shell/common/animator.h -FILE: ../../../flutter/shell/common/engine.cc -FILE: ../../../flutter/shell/common/engine.h -FILE: ../../../flutter/shell/common/platform_view.cc -FILE: ../../../flutter/shell/common/platform_view.h -FILE: ../../../flutter/shell/common/rasterizer.cc -FILE: ../../../flutter/shell/common/rasterizer.h -FILE: ../../../flutter/shell/common/shell.cc -FILE: ../../../flutter/shell/common/shell.h -FILE: ../../../flutter/shell/common/vsync_waiter.cc -FILE: ../../../flutter/shell/common/vsync_waiter.h -FILE: ../../../flutter/shell/common/vsync_waiter_fallback.h -FILE: ../../../flutter/shell/platform/android/AndroidManifest.xml -FILE: ../../../flutter/shell/platform/android/flutter_main.cc -FILE: ../../../flutter/shell/platform/android/flutter_main.h -FILE: ../../../flutter/shell/platform/android/io/flutter/app/FlutterActivity.java -FILE: ../../../flutter/shell/platform/android/io/flutter/app/FlutterApplication.java -FILE: ../../../flutter/shell/platform/android/io/flutter/view/ResourceCleaner.java -FILE: ../../../flutter/shell/platform/android/io/flutter/view/ResourceExtractor.java -FILE: ../../../flutter/shell/platform/android/io/flutter/view/ResourcePaths.java -FILE: ../../../flutter/shell/platform/android/library_loader.cc -FILE: ../../../flutter/shell/platform/android/platform_view_android.cc -FILE: ../../../flutter/shell/platform/android/platform_view_android.h -FILE: ../../../flutter/shell/platform/darwin/common/buffer_conversions.h -FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterAppDelegate.mm -FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/vsync_waiter_ios.h -FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/vsync_waiter_ios.mm ----------------------------------------------------------------------------------------------------- -Copyright 2015 The Chromium Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -==================================================================================================== - -==================================================================================================== -LIBRARY: engine -ORIGIN: ../../../third_party/tonic/LICENSE -TYPE: LicenseType.bsd -FILE: ../../../flutter/fml/arraysize.h -FILE: ../../../flutter/fml/build_config.h -FILE: ../../../flutter/fml/closure.h -FILE: ../../../flutter/fml/command_line.cc -FILE: ../../../flutter/fml/command_line.h -FILE: ../../../flutter/fml/command_line_unittest.cc -FILE: ../../../flutter/fml/compiler_specific.h -FILE: ../../../flutter/fml/eintr_wrapper.h -FILE: ../../../flutter/fml/log_level.h -FILE: ../../../flutter/fml/log_settings.cc -FILE: ../../../flutter/fml/log_settings.h -FILE: ../../../flutter/fml/log_settings_state.cc -FILE: ../../../flutter/fml/logging.cc -FILE: ../../../flutter/fml/logging.h -FILE: ../../../flutter/fml/make_copyable.h -FILE: ../../../flutter/fml/memory/ref_counted.h -FILE: ../../../flutter/fml/memory/ref_counted_internal.h -FILE: ../../../flutter/fml/memory/ref_counted_unittest.cc -FILE: ../../../flutter/fml/memory/ref_ptr.h -FILE: ../../../flutter/fml/memory/ref_ptr_internal.h -FILE: ../../../flutter/fml/memory/thread_checker.h -FILE: ../../../flutter/fml/memory/weak_ptr.h -FILE: ../../../flutter/fml/memory/weak_ptr_internal.cc -FILE: ../../../flutter/fml/memory/weak_ptr_internal.h -FILE: ../../../flutter/fml/memory/weak_ptr_unittest.cc -FILE: ../../../flutter/fml/string_view.cc -FILE: ../../../flutter/fml/string_view.h -FILE: ../../../flutter/fml/string_view_unittest.cc -FILE: ../../../flutter/fml/synchronization/thread_annotations.h -FILE: ../../../flutter/fml/synchronization/thread_annotations_unittest.cc -FILE: ../../../flutter/fml/synchronization/thread_checker.h -FILE: ../../../flutter/fml/synchronization/thread_checker_unittest.cc -FILE: ../../../flutter/fml/synchronization/waitable_event.cc -FILE: ../../../flutter/fml/synchronization/waitable_event.h -FILE: ../../../flutter/fml/synchronization/waitable_event_unittest.cc -FILE: ../../../flutter/fml/time/time_delta.h -FILE: ../../../flutter/fml/time/time_point.cc -FILE: ../../../flutter/fml/time/time_point.h -FILE: ../../../flutter/fml/time/time_unittest.cc ----------------------------------------------------------------------------------------------------- -Copyright 2016 The Fuchsia Authors. All rights reserved. +Copyright 2013 The Flutter Authors. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are @@ -1252,4 +912,4 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. ==================================================================================================== -Total license count: 12 +Total license count: 2 diff --git a/common/BUILD.gn b/common/BUILD.gn index c0212e3528920..b9b05073501d2 100644 --- a/common/BUILD.gn +++ b/common/BUILD.gn @@ -1,4 +1,4 @@ -# Copyright 2016 The Chromium Authors. All rights reserved. +# 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. diff --git a/common/config.gni b/common/config.gni index dd08c934dc22d..f81be4aac0e7a 100644 --- a/common/config.gni +++ b/common/config.gni @@ -1,4 +1,4 @@ -# Copyright 2014 The Chromium Authors. All rights reserved. +# 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. diff --git a/common/settings.cc b/common/settings.cc index 9aa8997ba947b..620733817eb88 100644 --- a/common/settings.cc +++ b/common/settings.cc @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/common/settings.h b/common/settings.h index 1c0002e7ad7d6..c7252aa921fa3 100644 --- a/common/settings.h +++ b/common/settings.h @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/common/task_runners.cc b/common/task_runners.cc index bb62c8e9c04e3..f9d251460e1a0 100644 --- a/common/task_runners.cc +++ b/common/task_runners.cc @@ -1,4 +1,4 @@ -// Copyright 2017 The Flutter Authors. All rights reserved. +// 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. diff --git a/common/task_runners.h b/common/task_runners.h index 642a8a158f12d..aca38bebaa227 100644 --- a/common/task_runners.h +++ b/common/task_runners.h @@ -1,4 +1,4 @@ -// Copyright 2017 The Flutter Authors. All rights reserved. +// 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. diff --git a/examples/BUILD.gn b/examples/BUILD.gn index 3d6d850afbcab..cf56dd887a170 100644 --- a/examples/BUILD.gn +++ b/examples/BUILD.gn @@ -1,4 +1,4 @@ -# Copyright 2016 The Chromium Authors. All rights reserved. +# 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. diff --git a/examples/hello_flutter/lib/main.dart b/examples/hello_flutter/lib/main.dart index c4df603234711..7a0fd060b8e9f 100644 --- a/examples/hello_flutter/lib/main.dart +++ b/examples/hello_flutter/lib/main.dart @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/examples/hello_flutter/pubspec.yaml b/examples/hello_flutter/pubspec.yaml index a22a6ee39a974..5e8ae01a4e1f8 100644 --- a/examples/hello_flutter/pubspec.yaml +++ b/examples/hello_flutter/pubspec.yaml @@ -1,3 +1,3 @@ -# Copyright 2017 The Chromium Authors. All rights reserved. +# 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. diff --git a/examples/spinning_square/lib/main.dart b/examples/spinning_square/lib/main.dart index a6dc2099058ae..c2d3a298b1ea4 100644 --- a/examples/spinning_square/lib/main.dart +++ b/examples/spinning_square/lib/main.dart @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/examples/spinning_square/pubspec.yaml b/examples/spinning_square/pubspec.yaml index a22a6ee39a974..5e8ae01a4e1f8 100644 --- a/examples/spinning_square/pubspec.yaml +++ b/examples/spinning_square/pubspec.yaml @@ -1,3 +1,3 @@ -# Copyright 2017 The Chromium Authors. All rights reserved. +# 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. diff --git a/flow/BUILD.gn b/flow/BUILD.gn index 3613ad9a29bbd..6b5cacb54df61 100644 --- a/flow/BUILD.gn +++ b/flow/BUILD.gn @@ -1,4 +1,4 @@ -# Copyright 2015 The Chromium Authors. All rights reserved. +# 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. diff --git a/flow/compositor_context.cc b/flow/compositor_context.cc index ba74a8de27bfe..8dc6883597999 100644 --- a/flow/compositor_context.cc +++ b/flow/compositor_context.cc @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/flow/compositor_context.h b/flow/compositor_context.h index ca35dc4f609ce..f3a885ccedd3c 100644 --- a/flow/compositor_context.h +++ b/flow/compositor_context.h @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/flow/debug_print.cc b/flow/debug_print.cc index a811e4abea875..a41171313540d 100644 --- a/flow/debug_print.cc +++ b/flow/debug_print.cc @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/flow/debug_print.h b/flow/debug_print.h index 4db0748bc31cb..34621e314ad2a 100644 --- a/flow/debug_print.h +++ b/flow/debug_print.h @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/flow/embedded_views.h b/flow/embedded_views.h index a36d941ee3476..c1213a2e5b3d9 100644 --- a/flow/embedded_views.h +++ b/flow/embedded_views.h @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. // diff --git a/flow/export_node.cc b/flow/export_node.cc index e837f525f35c4..acf7e42da3215 100644 --- a/flow/export_node.cc +++ b/flow/export_node.cc @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/flow/export_node.h b/flow/export_node.h index c7a3db98aacc6..20be1e45f7bfa 100644 --- a/flow/export_node.h +++ b/flow/export_node.h @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/flow/instrumentation.cc b/flow/instrumentation.cc index 3b9c95a331481..5b0f37264d7c3 100644 --- a/flow/instrumentation.cc +++ b/flow/instrumentation.cc @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/flow/instrumentation.h b/flow/instrumentation.h index 009786ba37cd1..eac76329ba577 100644 --- a/flow/instrumentation.h +++ b/flow/instrumentation.h @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/flow/layers/backdrop_filter_layer.cc b/flow/layers/backdrop_filter_layer.cc index 27e48dc0a5966..f45c28b7d2381 100644 --- a/flow/layers/backdrop_filter_layer.cc +++ b/flow/layers/backdrop_filter_layer.cc @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/flow/layers/backdrop_filter_layer.h b/flow/layers/backdrop_filter_layer.h index 348afc5090b90..39bd64c33b23e 100644 --- a/flow/layers/backdrop_filter_layer.h +++ b/flow/layers/backdrop_filter_layer.h @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/flow/layers/child_scene_layer.cc b/flow/layers/child_scene_layer.cc index 744aee5e87888..162a8d1a4df50 100644 --- a/flow/layers/child_scene_layer.cc +++ b/flow/layers/child_scene_layer.cc @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/flow/layers/child_scene_layer.h b/flow/layers/child_scene_layer.h index b52ceb28b2d4f..89fd367a0e69b 100644 --- a/flow/layers/child_scene_layer.h +++ b/flow/layers/child_scene_layer.h @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/flow/layers/clip_path_layer.cc b/flow/layers/clip_path_layer.cc index 0726d884472b5..4eef378229b48 100644 --- a/flow/layers/clip_path_layer.cc +++ b/flow/layers/clip_path_layer.cc @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/flow/layers/clip_path_layer.h b/flow/layers/clip_path_layer.h index 33b043029ba10..7b6de1f60f516 100644 --- a/flow/layers/clip_path_layer.h +++ b/flow/layers/clip_path_layer.h @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/flow/layers/clip_rect_layer.cc b/flow/layers/clip_rect_layer.cc index aabcf5c3e5cfc..e230bb86a5cc4 100644 --- a/flow/layers/clip_rect_layer.cc +++ b/flow/layers/clip_rect_layer.cc @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/flow/layers/clip_rect_layer.h b/flow/layers/clip_rect_layer.h index 576e6a5d029a7..76e10e49bb7ea 100644 --- a/flow/layers/clip_rect_layer.h +++ b/flow/layers/clip_rect_layer.h @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/flow/layers/clip_rrect_layer.cc b/flow/layers/clip_rrect_layer.cc index 2434e509d0910..e616488c66851 100644 --- a/flow/layers/clip_rrect_layer.cc +++ b/flow/layers/clip_rrect_layer.cc @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/flow/layers/clip_rrect_layer.h b/flow/layers/clip_rrect_layer.h index 7e8f0934a337f..7b3ac85beb65b 100644 --- a/flow/layers/clip_rrect_layer.h +++ b/flow/layers/clip_rrect_layer.h @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/flow/layers/color_filter_layer.cc b/flow/layers/color_filter_layer.cc index 287507d179f0f..3b140ad7ceb5e 100644 --- a/flow/layers/color_filter_layer.cc +++ b/flow/layers/color_filter_layer.cc @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/flow/layers/color_filter_layer.h b/flow/layers/color_filter_layer.h index e129bad66f000..358788fdd4486 100644 --- a/flow/layers/color_filter_layer.h +++ b/flow/layers/color_filter_layer.h @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/flow/layers/container_layer.cc b/flow/layers/container_layer.cc index 01ced5fd6a8aa..f6ca64005fe6b 100644 --- a/flow/layers/container_layer.cc +++ b/flow/layers/container_layer.cc @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/flow/layers/container_layer.h b/flow/layers/container_layer.h index aa73bb9d59c4a..780fd64b46a94 100644 --- a/flow/layers/container_layer.h +++ b/flow/layers/container_layer.h @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/flow/layers/layer.cc b/flow/layers/layer.cc index e629241d6ce8d..ce2a6b427ace7 100644 --- a/flow/layers/layer.cc +++ b/flow/layers/layer.cc @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/flow/layers/layer.h b/flow/layers/layer.h index 098ae5f789e07..97177e9585bd2 100644 --- a/flow/layers/layer.h +++ b/flow/layers/layer.h @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/flow/layers/layer_tree.cc b/flow/layers/layer_tree.cc index 942f5cc9a2060..2968da8c33747 100644 --- a/flow/layers/layer_tree.cc +++ b/flow/layers/layer_tree.cc @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/flow/layers/layer_tree.h b/flow/layers/layer_tree.h index e8591b49661c7..f3bfe3a322594 100644 --- a/flow/layers/layer_tree.h +++ b/flow/layers/layer_tree.h @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/flow/layers/opacity_layer.cc b/flow/layers/opacity_layer.cc index 485126f0813ce..bd2c05188c725 100644 --- a/flow/layers/opacity_layer.cc +++ b/flow/layers/opacity_layer.cc @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/flow/layers/opacity_layer.h b/flow/layers/opacity_layer.h index 75e939e03e97e..5662f85a64980 100644 --- a/flow/layers/opacity_layer.h +++ b/flow/layers/opacity_layer.h @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/flow/layers/performance_overlay_layer.cc b/flow/layers/performance_overlay_layer.cc index 9e014c57a08e5..7189ae392dc3d 100644 --- a/flow/layers/performance_overlay_layer.cc +++ b/flow/layers/performance_overlay_layer.cc @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/flow/layers/performance_overlay_layer.h b/flow/layers/performance_overlay_layer.h index 3296a308bddbd..b5f20ecbd7a6b 100644 --- a/flow/layers/performance_overlay_layer.h +++ b/flow/layers/performance_overlay_layer.h @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/flow/layers/physical_shape_layer.cc b/flow/layers/physical_shape_layer.cc index 6490413d62bc9..f3adc33bd910f 100644 --- a/flow/layers/physical_shape_layer.cc +++ b/flow/layers/physical_shape_layer.cc @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/flow/layers/physical_shape_layer.h b/flow/layers/physical_shape_layer.h index 344656c662b24..45ba68e86d9b3 100644 --- a/flow/layers/physical_shape_layer.h +++ b/flow/layers/physical_shape_layer.h @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/flow/layers/picture_layer.cc b/flow/layers/picture_layer.cc index 412859b689ea9..0532e1ddef41c 100644 --- a/flow/layers/picture_layer.cc +++ b/flow/layers/picture_layer.cc @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/flow/layers/picture_layer.h b/flow/layers/picture_layer.h index 8b6f74c313839..fc50e8f3bf6dd 100644 --- a/flow/layers/picture_layer.h +++ b/flow/layers/picture_layer.h @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/flow/layers/platform_view_layer.cc b/flow/layers/platform_view_layer.cc index efcddbcc98175..75153ab472a78 100644 --- a/flow/layers/platform_view_layer.cc +++ b/flow/layers/platform_view_layer.cc @@ -1,4 +1,4 @@ -// Copyright 2018 The Chromium Authors. All rights reserved. +// 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. diff --git a/flow/layers/platform_view_layer.h b/flow/layers/platform_view_layer.h index 13b7f5d0f1dae..b5fd2b4809909 100644 --- a/flow/layers/platform_view_layer.h +++ b/flow/layers/platform_view_layer.h @@ -1,4 +1,4 @@ -// Copyright 2018 The Chromium Authors. All rights reserved. +// 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. diff --git a/flow/layers/shader_mask_layer.cc b/flow/layers/shader_mask_layer.cc index f87cce48b89ff..15f994ad28d93 100644 --- a/flow/layers/shader_mask_layer.cc +++ b/flow/layers/shader_mask_layer.cc @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/flow/layers/shader_mask_layer.h b/flow/layers/shader_mask_layer.h index ed059722fea55..2b4b3f052ae7b 100644 --- a/flow/layers/shader_mask_layer.h +++ b/flow/layers/shader_mask_layer.h @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/flow/layers/texture_layer.cc b/flow/layers/texture_layer.cc index cb9f63249b73e..65ab470bf73c5 100644 --- a/flow/layers/texture_layer.cc +++ b/flow/layers/texture_layer.cc @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/flow/layers/texture_layer.h b/flow/layers/texture_layer.h index bf2a17fd27ac7..1563745e652b7 100644 --- a/flow/layers/texture_layer.h +++ b/flow/layers/texture_layer.h @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/flow/layers/transform_layer.cc b/flow/layers/transform_layer.cc index a96e0e27d7560..d4f93063f07ef 100644 --- a/flow/layers/transform_layer.cc +++ b/flow/layers/transform_layer.cc @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/flow/layers/transform_layer.h b/flow/layers/transform_layer.h index f8209302aa170..b1fb830bf2b9d 100644 --- a/flow/layers/transform_layer.h +++ b/flow/layers/transform_layer.h @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/flow/matrix_decomposition.cc b/flow/matrix_decomposition.cc index 0cc035cbba216..c710908dc651c 100644 --- a/flow/matrix_decomposition.cc +++ b/flow/matrix_decomposition.cc @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/flow/matrix_decomposition.h b/flow/matrix_decomposition.h index d65d12a77e674..2cf3c0faa4298 100644 --- a/flow/matrix_decomposition.h +++ b/flow/matrix_decomposition.h @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/flow/matrix_decomposition_unittests.cc b/flow/matrix_decomposition_unittests.cc index 3b9f8ed815ff6..6c2ba6737372d 100644 --- a/flow/matrix_decomposition_unittests.cc +++ b/flow/matrix_decomposition_unittests.cc @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/flow/paint_utils.cc b/flow/paint_utils.cc index e2ea306c913f5..22b0735b8939f 100644 --- a/flow/paint_utils.cc +++ b/flow/paint_utils.cc @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/flow/paint_utils.h b/flow/paint_utils.h index 63a4b162b1c1c..352dee124fc91 100644 --- a/flow/paint_utils.h +++ b/flow/paint_utils.h @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/flow/raster_cache.cc b/flow/raster_cache.cc index a92e1285379a7..c2e43bda0e434 100644 --- a/flow/raster_cache.cc +++ b/flow/raster_cache.cc @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/flow/raster_cache.h b/flow/raster_cache.h index b9535a8e4352f..e5a081bb78100 100644 --- a/flow/raster_cache.h +++ b/flow/raster_cache.h @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/flow/raster_cache_key.cc b/flow/raster_cache_key.cc index a75bfecfee8b2..4dfef752f6974 100644 --- a/flow/raster_cache_key.cc +++ b/flow/raster_cache_key.cc @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/flow/raster_cache_key.h b/flow/raster_cache_key.h index a5fcbf3b2ce54..4a9d1a43cb74f 100644 --- a/flow/raster_cache_key.h +++ b/flow/raster_cache_key.h @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/flow/raster_cache_unittests.cc b/flow/raster_cache_unittests.cc index 5d6c89b48e23d..3fd73d5bca55e 100644 --- a/flow/raster_cache_unittests.cc +++ b/flow/raster_cache_unittests.cc @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/flow/scene_update_context.cc b/flow/scene_update_context.cc index 0c1e5a780c2ec..0404c849d6852 100644 --- a/flow/scene_update_context.cc +++ b/flow/scene_update_context.cc @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/flow/scene_update_context.h b/flow/scene_update_context.h index 8436ad2f263bb..9d52e34fb4550 100644 --- a/flow/scene_update_context.h +++ b/flow/scene_update_context.h @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/flow/skia_gpu_object.cc b/flow/skia_gpu_object.cc index bf9d9a8ec599f..1f789212e6ba9 100644 --- a/flow/skia_gpu_object.cc +++ b/flow/skia_gpu_object.cc @@ -1,4 +1,4 @@ -// Copyright 2017 The Flutter Authors. All rights reserved. +// 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. diff --git a/flow/skia_gpu_object.h b/flow/skia_gpu_object.h index 7379b7936ec42..c7d814bfcb5fc 100644 --- a/flow/skia_gpu_object.h +++ b/flow/skia_gpu_object.h @@ -1,4 +1,4 @@ -// Copyright 2017 The Flutter Authors. All rights reserved. +// 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. diff --git a/flow/texture.cc b/flow/texture.cc index d5cc3ae228aa7..bef0de01b1cbd 100644 --- a/flow/texture.cc +++ b/flow/texture.cc @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/flow/texture.h b/flow/texture.h index 0af62ccbad2a1..414a11dc820e8 100644 --- a/flow/texture.h +++ b/flow/texture.h @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/flutter_kernel_transformers/BUILD.gn b/flutter_kernel_transformers/BUILD.gn index af252d30307d2..0411b4b9976c2 100644 --- a/flutter_kernel_transformers/BUILD.gn +++ b/flutter_kernel_transformers/BUILD.gn @@ -1,4 +1,4 @@ -# Copyright 2018 The Chromium Authors. All rights reserved. +# 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. diff --git a/flutter_kernel_transformers/lib/track_widget_constructor_locations.dart b/flutter_kernel_transformers/lib/track_widget_constructor_locations.dart index 27654bb062baa..47fa4f341f826 100644 --- a/flutter_kernel_transformers/lib/track_widget_constructor_locations.dart +++ b/flutter_kernel_transformers/lib/track_widget_constructor_locations.dart @@ -1,4 +1,4 @@ -// Copyright 2018 The Chromium Authors. All rights reserved. +// 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. diff --git a/fml/BUILD.gn b/fml/BUILD.gn index 4edc9aadf5e45..ed5cb2f1ea3f3 100644 --- a/fml/BUILD.gn +++ b/fml/BUILD.gn @@ -1,4 +1,4 @@ -# Copyright 2017 The Chromium Authors. All rights reserved. +# 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. diff --git a/fml/arraysize.h b/fml/arraysize.h index 8457369884a97..636939812bed7 100644 --- a/fml/arraysize.h +++ b/fml/arraysize.h @@ -1,4 +1,4 @@ -// Copyright 2016 The Fuchsia Authors. All rights reserved. +// 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. diff --git a/fml/base32.cc b/fml/base32.cc index 1836ffe084f4d..957d26ee93b15 100644 --- a/fml/base32.cc +++ b/fml/base32.cc @@ -1,4 +1,4 @@ -// Copyright 2018 The Flutter Authors. All rights reserved. +// 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. diff --git a/fml/base32.h b/fml/base32.h index c5bfa8f58a754..f85bdf653864f 100644 --- a/fml/base32.h +++ b/fml/base32.h @@ -1,4 +1,4 @@ -// Copyright 2018 The Flutter Authors. All rights reserved. +// 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. diff --git a/fml/base32_unittest.cc b/fml/base32_unittest.cc index 4d4ab529dac0b..efd2543396ae0 100644 --- a/fml/base32_unittest.cc +++ b/fml/base32_unittest.cc @@ -1,4 +1,4 @@ -// Copyright 2018 The Flutter Authors. All rights reserved. +// 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. diff --git a/fml/build_config.h b/fml/build_config.h index ca9a91a382c7e..2714f46d1cebf 100644 --- a/fml/build_config.h +++ b/fml/build_config.h @@ -1,4 +1,4 @@ -// Copyright 2016 The Fuchsia Authors. All rights reserved. +// 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. diff --git a/fml/closure.h b/fml/closure.h index f40c0b2d0cbaf..fa0afe0104271 100644 --- a/fml/closure.h +++ b/fml/closure.h @@ -1,4 +1,4 @@ -// Copyright 2016 The Fuchsia Authors. All rights reserved. +// 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. diff --git a/fml/command_line.cc b/fml/command_line.cc index 24012867edc84..27c62086ac14e 100644 --- a/fml/command_line.cc +++ b/fml/command_line.cc @@ -1,4 +1,4 @@ -// Copyright 2016 The Fuchsia Authors. All rights reserved. +// 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. diff --git a/fml/command_line.h b/fml/command_line.h index 84b84dfe415cc..e1d06e6e6bed5 100644 --- a/fml/command_line.h +++ b/fml/command_line.h @@ -1,4 +1,4 @@ -// Copyright 2016 The Fuchsia Authors. All rights reserved. +// 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. diff --git a/fml/command_line_unittest.cc b/fml/command_line_unittest.cc index 0cafaa52c899c..c04619e483e28 100644 --- a/fml/command_line_unittest.cc +++ b/fml/command_line_unittest.cc @@ -1,4 +1,4 @@ -// Copyright 2016 The Fuchsia Authors. All rights reserved. +// 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. diff --git a/fml/compiler_specific.h b/fml/compiler_specific.h index 68fbefe1b9153..ac367f2e70213 100644 --- a/fml/compiler_specific.h +++ b/fml/compiler_specific.h @@ -1,4 +1,4 @@ -// Copyright 2016 The Fuchsia Authors. All rights reserved. +// 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. diff --git a/fml/eintr_wrapper.h b/fml/eintr_wrapper.h index 66c8ae0cd0ea3..0f3f953188fed 100644 --- a/fml/eintr_wrapper.h +++ b/fml/eintr_wrapper.h @@ -1,4 +1,4 @@ -// Copyright 2016 The Fuchsia Authors. All rights reserved. +// 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. diff --git a/fml/export.h b/fml/export.h index 6173bbb71c314..ea9bf883f9ac3 100644 --- a/fml/export.h +++ b/fml/export.h @@ -1,4 +1,4 @@ -// Copyright 2017 The Fuchsia Authors. All rights reserved. +// 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. diff --git a/fml/file.cc b/fml/file.cc index e29abd62cc653..1c90b2cfef7ee 100644 --- a/fml/file.cc +++ b/fml/file.cc @@ -1,4 +1,4 @@ -// Copyright 2018 The Flutter Authors. All rights reserved. +// 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. diff --git a/fml/file.h b/fml/file.h index 699dd95409dfb..a0d604f3f2c96 100644 --- a/fml/file.h +++ b/fml/file.h @@ -1,4 +1,4 @@ -// Copyright 2018 The Flutter Authors. All rights reserved. +// 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. diff --git a/fml/file_unittest.cc b/fml/file_unittest.cc index b44dca09f2218..c1ed8f63731c4 100644 --- a/fml/file_unittest.cc +++ b/fml/file_unittest.cc @@ -1,4 +1,4 @@ -// Copyright 2018 The Flutter Authors. All rights reserved. +// 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. diff --git a/fml/icu_util.cc b/fml/icu_util.cc index 28402e84e3f73..a432fcf989974 100644 --- a/fml/icu_util.cc +++ b/fml/icu_util.cc @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/fml/icu_util.h b/fml/icu_util.h index 1d20945ee015d..edde00b813792 100644 --- a/fml/icu_util.h +++ b/fml/icu_util.h @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/fml/log_level.h b/fml/log_level.h index 8bed172db9ff8..2c9a85305b53d 100644 --- a/fml/log_level.h +++ b/fml/log_level.h @@ -1,4 +1,4 @@ -// Copyright 2016 The Fuchsia Authors. All rights reserved. +// 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. diff --git a/fml/log_settings.cc b/fml/log_settings.cc index 80d0e22fc99d6..d70525a72e089 100644 --- a/fml/log_settings.cc +++ b/fml/log_settings.cc @@ -1,4 +1,4 @@ -// Copyright 2016 The Fuchsia Authors. All rights reserved. +// 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. diff --git a/fml/log_settings.h b/fml/log_settings.h index ea3381dfbcabb..2cd14e028c313 100644 --- a/fml/log_settings.h +++ b/fml/log_settings.h @@ -1,4 +1,4 @@ -// Copyright 2016 The Fuchsia Authors. All rights reserved. +// 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. diff --git a/fml/log_settings_state.cc b/fml/log_settings_state.cc index 148c0a43e877b..a0936e6b5b382 100644 --- a/fml/log_settings_state.cc +++ b/fml/log_settings_state.cc @@ -1,4 +1,4 @@ -// Copyright 2016 The Fuchsia Authors. All rights reserved. +// 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. diff --git a/fml/logging.cc b/fml/logging.cc index 7503c8e700409..20aef13d83d80 100644 --- a/fml/logging.cc +++ b/fml/logging.cc @@ -1,4 +1,4 @@ -// Copyright 2016 The Fuchsia Authors. All rights reserved. +// 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. diff --git a/fml/logging.h b/fml/logging.h index 178f9b91c0129..20cb887cb20df 100644 --- a/fml/logging.h +++ b/fml/logging.h @@ -1,4 +1,4 @@ -// Copyright 2016 The Fuchsia Authors. All rights reserved. +// 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. diff --git a/fml/macros.h b/fml/macros.h index 79a5479bbf979..0158d0e18c73e 100644 --- a/fml/macros.h +++ b/fml/macros.h @@ -1,4 +1,4 @@ -// Copyright 2018 The Flutter Authors. All rights reserved. +// 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. diff --git a/fml/make_copyable.h b/fml/make_copyable.h index bb5d043af3607..0c4f0bb938822 100644 --- a/fml/make_copyable.h +++ b/fml/make_copyable.h @@ -1,4 +1,4 @@ -// Copyright 2016 The Fuchsia Authors. All rights reserved. +// 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. diff --git a/fml/mapping.cc b/fml/mapping.cc index 332341f2fbc06..c3ebb60ff5b87 100644 --- a/fml/mapping.cc +++ b/fml/mapping.cc @@ -1,4 +1,4 @@ -// Copyright 2018 The Flutter Authors. All rights reserved. +// 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. diff --git a/fml/mapping.h b/fml/mapping.h index a2a58851e585c..7d16366c5f19c 100644 --- a/fml/mapping.h +++ b/fml/mapping.h @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/fml/memory/ref_counted.h b/fml/memory/ref_counted.h index 269b8eff4551f..badb45d32b53c 100644 --- a/fml/memory/ref_counted.h +++ b/fml/memory/ref_counted.h @@ -1,4 +1,4 @@ -// Copyright 2016 The Fuchsia Authors. All rights reserved. +// 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. diff --git a/fml/memory/ref_counted_internal.h b/fml/memory/ref_counted_internal.h index 2cef256b3442c..a5c5fe04d6280 100644 --- a/fml/memory/ref_counted_internal.h +++ b/fml/memory/ref_counted_internal.h @@ -1,4 +1,4 @@ -// Copyright 2016 The Fuchsia Authors. All rights reserved. +// 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. diff --git a/fml/memory/ref_counted_unittest.cc b/fml/memory/ref_counted_unittest.cc index 5b6f68e1de6d1..13fc37e257c28 100644 --- a/fml/memory/ref_counted_unittest.cc +++ b/fml/memory/ref_counted_unittest.cc @@ -1,4 +1,4 @@ -// Copyright 2016 The Fuchsia Authors. All rights reserved. +// 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. diff --git a/fml/memory/ref_ptr.h b/fml/memory/ref_ptr.h index 3c92f5042a1b7..51ebccc5e77bb 100644 --- a/fml/memory/ref_ptr.h +++ b/fml/memory/ref_ptr.h @@ -1,4 +1,4 @@ -// Copyright 2016 The Fuchsia Authors. All rights reserved. +// 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. diff --git a/fml/memory/ref_ptr_internal.h b/fml/memory/ref_ptr_internal.h index a72488cad6a86..b38f943751854 100644 --- a/fml/memory/ref_ptr_internal.h +++ b/fml/memory/ref_ptr_internal.h @@ -1,4 +1,4 @@ -// Copyright 2016 The Fuchsia Authors. All rights reserved. +// 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. diff --git a/fml/memory/thread_checker.h b/fml/memory/thread_checker.h index 8101dd4f8403b..4cfd700636fc2 100644 --- a/fml/memory/thread_checker.h +++ b/fml/memory/thread_checker.h @@ -1,4 +1,4 @@ -// Copyright 2016 The Fuchsia Authors. All rights reserved. +// 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. diff --git a/fml/memory/weak_ptr.h b/fml/memory/weak_ptr.h index e0f5f427b3fd7..09cc10a116b35 100644 --- a/fml/memory/weak_ptr.h +++ b/fml/memory/weak_ptr.h @@ -1,4 +1,4 @@ -// Copyright 2016 The Fuchsia Authors. All rights reserved. +// 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. diff --git a/fml/memory/weak_ptr_internal.cc b/fml/memory/weak_ptr_internal.cc index c06db4672b5d6..02e73afa590c9 100644 --- a/fml/memory/weak_ptr_internal.cc +++ b/fml/memory/weak_ptr_internal.cc @@ -1,4 +1,4 @@ -// Copyright 2016 The Fuchsia Authors. All rights reserved. +// 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. diff --git a/fml/memory/weak_ptr_internal.h b/fml/memory/weak_ptr_internal.h index 246a2d851da87..28d1fca6d4f57 100644 --- a/fml/memory/weak_ptr_internal.h +++ b/fml/memory/weak_ptr_internal.h @@ -1,4 +1,4 @@ -// Copyright 2016 The Fuchsia Authors. All rights reserved. +// 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. diff --git a/fml/memory/weak_ptr_unittest.cc b/fml/memory/weak_ptr_unittest.cc index 3e0ecdd834bbc..1d8fd9c390781 100644 --- a/fml/memory/weak_ptr_unittest.cc +++ b/fml/memory/weak_ptr_unittest.cc @@ -1,4 +1,4 @@ -// Copyright 2016 The Fuchsia Authors. All rights reserved. +// 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. diff --git a/fml/message.cc b/fml/message.cc index 7ee778fc1ffa8..c5c3682ba5626 100644 --- a/fml/message.cc +++ b/fml/message.cc @@ -1,4 +1,4 @@ -// Copyright 2018 The Flutter Authors. All rights reserved. +// 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. diff --git a/fml/message.h b/fml/message.h index 607faee048fa6..8d7e63a2e7896 100644 --- a/fml/message.h +++ b/fml/message.h @@ -1,4 +1,4 @@ -// Copyright 2018 The Flutter Authors. All rights reserved. +// 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. diff --git a/fml/message_loop.cc b/fml/message_loop.cc index 9c2275e219a00..3238e6f443742 100644 --- a/fml/message_loop.cc +++ b/fml/message_loop.cc @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/fml/message_loop.h b/fml/message_loop.h index 8deaca2aab1a3..6ca54a94c18a3 100644 --- a/fml/message_loop.h +++ b/fml/message_loop.h @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/fml/message_loop_impl.cc b/fml/message_loop_impl.cc index 8a1d17ba76614..6c5024a9a25de 100644 --- a/fml/message_loop_impl.cc +++ b/fml/message_loop_impl.cc @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/fml/message_loop_impl.h b/fml/message_loop_impl.h index 523ea7fa59536..de1c4147081fe 100644 --- a/fml/message_loop_impl.h +++ b/fml/message_loop_impl.h @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/fml/message_loop_unittests.cc b/fml/message_loop_unittests.cc index e52a7bf93cd0c..d751071b9e8c8 100644 --- a/fml/message_loop_unittests.cc +++ b/fml/message_loop_unittests.cc @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/fml/message_unittests.cc b/fml/message_unittests.cc index 284c90512239c..5ac57fffdd80e 100644 --- a/fml/message_unittests.cc +++ b/fml/message_unittests.cc @@ -1,4 +1,4 @@ -// Copyright 2018 The Flutter Authors. All rights reserved. +// 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. diff --git a/fml/native_library.h b/fml/native_library.h index 6ec79d9ba0281..403fe5f531445 100644 --- a/fml/native_library.h +++ b/fml/native_library.h @@ -1,4 +1,4 @@ -// Copyright 2018 The Flutter Authors. All rights reserved. +// 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. diff --git a/fml/paths.cc b/fml/paths.cc index 563595ad147a4..87a4ef27fd0f6 100644 --- a/fml/paths.cc +++ b/fml/paths.cc @@ -1,4 +1,4 @@ -// Copyright 2018 The Flutter Authors. All rights reserved. +// 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. diff --git a/fml/paths.h b/fml/paths.h index 5bb6f8affe3bd..69408317a24b5 100644 --- a/fml/paths.h +++ b/fml/paths.h @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/fml/paths_unittests.cc b/fml/paths_unittests.cc index a1df4ea214e0f..41abbd3117587 100644 --- a/fml/paths_unittests.cc +++ b/fml/paths_unittests.cc @@ -1,4 +1,4 @@ -// Copyright 2018 The Chromium Authors. All rights reserved. +// 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. diff --git a/fml/platform/android/jni_util.cc b/fml/platform/android/jni_util.cc index 86884327beb25..b84a351f1c913 100644 --- a/fml/platform/android/jni_util.cc +++ b/fml/platform/android/jni_util.cc @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/fml/platform/android/jni_util.h b/fml/platform/android/jni_util.h index bfd58ae0cdf20..9fe32242c503c 100644 --- a/fml/platform/android/jni_util.h +++ b/fml/platform/android/jni_util.h @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/fml/platform/android/jni_weak_ref.cc b/fml/platform/android/jni_weak_ref.cc index ffd2b3c855738..70ff1b27ccab2 100644 --- a/fml/platform/android/jni_weak_ref.cc +++ b/fml/platform/android/jni_weak_ref.cc @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/fml/platform/android/jni_weak_ref.h b/fml/platform/android/jni_weak_ref.h index cab86b429a70a..8162c3f462089 100644 --- a/fml/platform/android/jni_weak_ref.h +++ b/fml/platform/android/jni_weak_ref.h @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/fml/platform/android/message_loop_android.cc b/fml/platform/android/message_loop_android.cc index 131f4f092258a..c45160d6d6d14 100644 --- a/fml/platform/android/message_loop_android.cc +++ b/fml/platform/android/message_loop_android.cc @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/fml/platform/android/message_loop_android.h b/fml/platform/android/message_loop_android.h index 8d562c70aad7c..b73b06e3db2c7 100644 --- a/fml/platform/android/message_loop_android.h +++ b/fml/platform/android/message_loop_android.h @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/fml/platform/android/paths_android.cc b/fml/platform/android/paths_android.cc index a6104601cdddc..36f5844a15c3b 100644 --- a/fml/platform/android/paths_android.cc +++ b/fml/platform/android/paths_android.cc @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/fml/platform/android/paths_android.h b/fml/platform/android/paths_android.h index b9ebe2ebf7e64..99c2defdfa867 100644 --- a/fml/platform/android/paths_android.h +++ b/fml/platform/android/paths_android.h @@ -1,4 +1,4 @@ -// Copyright 2018 The Flutter Authors. All rights reserved. +// 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. diff --git a/fml/platform/android/scoped_java_ref.cc b/fml/platform/android/scoped_java_ref.cc index f8d68c0f0df79..2900379219206 100644 --- a/fml/platform/android/scoped_java_ref.cc +++ b/fml/platform/android/scoped_java_ref.cc @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/fml/platform/android/scoped_java_ref.h b/fml/platform/android/scoped_java_ref.h index 5bc9f1019b8f2..7fe8828e216c4 100644 --- a/fml/platform/android/scoped_java_ref.h +++ b/fml/platform/android/scoped_java_ref.h @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/fml/platform/darwin/cf_utils.cc b/fml/platform/darwin/cf_utils.cc index 9fede1f1238b9..e7009992cf68d 100644 --- a/fml/platform/darwin/cf_utils.cc +++ b/fml/platform/darwin/cf_utils.cc @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/fml/platform/darwin/cf_utils.h b/fml/platform/darwin/cf_utils.h index b8e64372e605c..f6be04abaaa71 100644 --- a/fml/platform/darwin/cf_utils.h +++ b/fml/platform/darwin/cf_utils.h @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/fml/platform/darwin/message_loop_darwin.h b/fml/platform/darwin/message_loop_darwin.h index 6d53e9000f821..94005ae4c931a 100644 --- a/fml/platform/darwin/message_loop_darwin.h +++ b/fml/platform/darwin/message_loop_darwin.h @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/fml/platform/darwin/message_loop_darwin.mm b/fml/platform/darwin/message_loop_darwin.mm index e258d38519b6b..ca714c81a4bbd 100644 --- a/fml/platform/darwin/message_loop_darwin.mm +++ b/fml/platform/darwin/message_loop_darwin.mm @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/fml/platform/darwin/paths_darwin.mm b/fml/platform/darwin/paths_darwin.mm index 025eec73a103d..72e6f35a80949 100644 --- a/fml/platform/darwin/paths_darwin.mm +++ b/fml/platform/darwin/paths_darwin.mm @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/fml/platform/darwin/platform_version.h b/fml/platform/darwin/platform_version.h index bec2ed7ed6346..0978a40d5ac06 100644 --- a/fml/platform/darwin/platform_version.h +++ b/fml/platform/darwin/platform_version.h @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/fml/platform/darwin/platform_version.mm b/fml/platform/darwin/platform_version.mm index 152c217c7714f..61274044f7d76 100644 --- a/fml/platform/darwin/platform_version.mm +++ b/fml/platform/darwin/platform_version.mm @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/fml/platform/darwin/scoped_block.h b/fml/platform/darwin/scoped_block.h index 758bb0886da7c..17dee5833cb24 100644 --- a/fml/platform/darwin/scoped_block.h +++ b/fml/platform/darwin/scoped_block.h @@ -1,4 +1,4 @@ -// Copyright (c) 2013 The Chromium Authors. All rights reserved. +// 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. diff --git a/fml/platform/darwin/scoped_block.mm b/fml/platform/darwin/scoped_block.mm index faad92641dce0..3969ed48861bd 100644 --- a/fml/platform/darwin/scoped_block.mm +++ b/fml/platform/darwin/scoped_block.mm @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/fml/platform/darwin/scoped_nsobject.h b/fml/platform/darwin/scoped_nsobject.h index 525185fa6df0b..c2580f22b7724 100644 --- a/fml/platform/darwin/scoped_nsobject.h +++ b/fml/platform/darwin/scoped_nsobject.h @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. @@ -42,12 +42,10 @@ class scoped_nsprotocol { public: explicit scoped_nsprotocol(NST object = nil) : object_(object) {} - scoped_nsprotocol(const scoped_nsprotocol& that) - : object_([that.object_ retain]) {} + scoped_nsprotocol(const scoped_nsprotocol& that) : object_([that.object_ retain]) {} template - scoped_nsprotocol(const scoped_nsprotocol& that) - : object_([that.get() retain]) {} + scoped_nsprotocol(const scoped_nsprotocol& that) : object_([that.get() retain]) {} ~scoped_nsprotocol() { [object_ release]; } @@ -113,15 +111,12 @@ bool operator!=(C p1, const scoped_nsprotocol& p2) { template class scoped_nsobject : public scoped_nsprotocol { public: - explicit scoped_nsobject(NST* object = nil) - : scoped_nsprotocol(object) {} + explicit scoped_nsobject(NST* object = nil) : scoped_nsprotocol(object) {} - scoped_nsobject(const scoped_nsobject& that) - : scoped_nsprotocol(that) {} + scoped_nsobject(const scoped_nsobject& that) : scoped_nsprotocol(that) {} template - scoped_nsobject(const scoped_nsobject& that) - : scoped_nsprotocol(that) {} + scoped_nsobject(const scoped_nsobject& that) : scoped_nsprotocol(that) {} scoped_nsobject& operator=(const scoped_nsobject& that) { scoped_nsprotocol::operator=(that); @@ -135,12 +130,10 @@ class scoped_nsobject : public scoped_nsprotocol { public: explicit scoped_nsobject(id object = nil) : scoped_nsprotocol(object) {} - scoped_nsobject(const scoped_nsobject& that) - : scoped_nsprotocol(that) {} + scoped_nsobject(const scoped_nsobject& that) : scoped_nsprotocol(that) {} template - scoped_nsobject(const scoped_nsobject& that) - : scoped_nsprotocol(that) {} + scoped_nsobject(const scoped_nsobject& that) : scoped_nsprotocol(that) {} scoped_nsobject& operator=(const scoped_nsobject& that) { scoped_nsprotocol::operator=(that); diff --git a/fml/platform/darwin/scoped_nsobject.mm b/fml/platform/darwin/scoped_nsobject.mm index a82b1ce8a8726..8ff8d2934f57d 100644 --- a/fml/platform/darwin/scoped_nsobject.mm +++ b/fml/platform/darwin/scoped_nsobject.mm @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/fml/platform/fuchsia/paths_fuchsia.cc b/fml/platform/fuchsia/paths_fuchsia.cc index 62a2fb0854c23..1b033079ec776 100644 --- a/fml/platform/fuchsia/paths_fuchsia.cc +++ b/fml/platform/fuchsia/paths_fuchsia.cc @@ -1,4 +1,4 @@ -// Copyright 2018 The Flutter Authors. All rights reserved. +// 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. diff --git a/fml/platform/linux/message_loop_linux.cc b/fml/platform/linux/message_loop_linux.cc index 251a0a8c3bb80..483efe59af348 100644 --- a/fml/platform/linux/message_loop_linux.cc +++ b/fml/platform/linux/message_loop_linux.cc @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/fml/platform/linux/message_loop_linux.h b/fml/platform/linux/message_loop_linux.h index 26cba078d5dcf..32bdb6442789e 100644 --- a/fml/platform/linux/message_loop_linux.h +++ b/fml/platform/linux/message_loop_linux.h @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/fml/platform/linux/paths_linux.cc b/fml/platform/linux/paths_linux.cc index a6b178970782e..5749bf2ba7807 100644 --- a/fml/platform/linux/paths_linux.cc +++ b/fml/platform/linux/paths_linux.cc @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/fml/platform/linux/timerfd.cc b/fml/platform/linux/timerfd.cc index d5be484702830..0a2cc5311d846 100644 --- a/fml/platform/linux/timerfd.cc +++ b/fml/platform/linux/timerfd.cc @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/fml/platform/linux/timerfd.h b/fml/platform/linux/timerfd.h index 4a56af5553828..6d5ab1a939434 100644 --- a/fml/platform/linux/timerfd.h +++ b/fml/platform/linux/timerfd.h @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/fml/platform/posix/file_posix.cc b/fml/platform/posix/file_posix.cc index 99a202586d541..c6911bd0489d3 100644 --- a/fml/platform/posix/file_posix.cc +++ b/fml/platform/posix/file_posix.cc @@ -1,4 +1,4 @@ -// Copyright 2018 The Flutter Authors. All rights reserved. +// 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. diff --git a/fml/platform/posix/mapping_posix.cc b/fml/platform/posix/mapping_posix.cc index 273eb0e668f2e..670b3873303b4 100644 --- a/fml/platform/posix/mapping_posix.cc +++ b/fml/platform/posix/mapping_posix.cc @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/fml/platform/posix/native_library_posix.cc b/fml/platform/posix/native_library_posix.cc index 16ce46d08a3f7..9d10152848ec8 100644 --- a/fml/platform/posix/native_library_posix.cc +++ b/fml/platform/posix/native_library_posix.cc @@ -1,4 +1,4 @@ -// Copyright 2018 The Flutter Authors. All rights reserved. +// 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. diff --git a/fml/platform/posix/paths_posix.cc b/fml/platform/posix/paths_posix.cc index 6b93d6f97a8aa..b21f9e4956350 100644 --- a/fml/platform/posix/paths_posix.cc +++ b/fml/platform/posix/paths_posix.cc @@ -1,4 +1,4 @@ -// Copyright 2018 The Flutter Authors. All rights reserved. +// 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. diff --git a/fml/platform/win/errors_win.cc b/fml/platform/win/errors_win.cc index b19b2b5e52c04..7370ee86ff425 100644 --- a/fml/platform/win/errors_win.cc +++ b/fml/platform/win/errors_win.cc @@ -1,4 +1,4 @@ -// Copyright 2018 The Flutter Authors. All rights reserved. +// 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. diff --git a/fml/platform/win/errors_win.h b/fml/platform/win/errors_win.h index 2ddf32936f7a3..4ec3c1d4ffe88 100644 --- a/fml/platform/win/errors_win.h +++ b/fml/platform/win/errors_win.h @@ -1,4 +1,4 @@ -// Copyright 2018 The Flutter Authors. All rights reserved. +// 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. diff --git a/fml/platform/win/file_win.cc b/fml/platform/win/file_win.cc index cef530e8045e2..dfb3d8dd36f30 100644 --- a/fml/platform/win/file_win.cc +++ b/fml/platform/win/file_win.cc @@ -1,4 +1,4 @@ -// Copyright 2018 The Flutter Authors. All rights reserved. +// 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. diff --git a/fml/platform/win/mapping_win.cc b/fml/platform/win/mapping_win.cc index aaacdb4b8d76f..0b9427451e08e 100644 --- a/fml/platform/win/mapping_win.cc +++ b/fml/platform/win/mapping_win.cc @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/fml/platform/win/message_loop_win.cc b/fml/platform/win/message_loop_win.cc index 58f1569dd1679..7f529d1deaff5 100644 --- a/fml/platform/win/message_loop_win.cc +++ b/fml/platform/win/message_loop_win.cc @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/fml/platform/win/message_loop_win.h b/fml/platform/win/message_loop_win.h index aeb784b45e490..6317959a9cb3d 100644 --- a/fml/platform/win/message_loop_win.h +++ b/fml/platform/win/message_loop_win.h @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/fml/platform/win/native_library_win.cc b/fml/platform/win/native_library_win.cc index 1ff997219bfb4..3a741893966eb 100644 --- a/fml/platform/win/native_library_win.cc +++ b/fml/platform/win/native_library_win.cc @@ -1,4 +1,4 @@ -// Copyright 2018 The Flutter Authors. All rights reserved. +// 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. diff --git a/fml/platform/win/paths_win.cc b/fml/platform/win/paths_win.cc index 156ac70f986b9..56130f7408877 100644 --- a/fml/platform/win/paths_win.cc +++ b/fml/platform/win/paths_win.cc @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/fml/platform/win/wstring_conversion.h b/fml/platform/win/wstring_conversion.h index 35908fe5a222e..8258ba59f722c 100644 --- a/fml/platform/win/wstring_conversion.h +++ b/fml/platform/win/wstring_conversion.h @@ -1,4 +1,4 @@ -// Copyright 2018 The Flutter Authors. All rights reserved. +// 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. diff --git a/fml/string_view.cc b/fml/string_view.cc index 52af03b1309f6..bca1452b82e19 100644 --- a/fml/string_view.cc +++ b/fml/string_view.cc @@ -1,4 +1,4 @@ -// Copyright 2016 The Fuchsia Authors. All rights reserved. +// 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. diff --git a/fml/string_view.h b/fml/string_view.h index d4f34a45dfc60..226b84f21479a 100644 --- a/fml/string_view.h +++ b/fml/string_view.h @@ -1,4 +1,4 @@ -// Copyright 2016 The Fuchsia Authors. All rights reserved. +// 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. diff --git a/fml/string_view_unittest.cc b/fml/string_view_unittest.cc index 8dab1500ff7ca..dadf3c669d9fe 100644 --- a/fml/string_view_unittest.cc +++ b/fml/string_view_unittest.cc @@ -1,4 +1,4 @@ -// Copyright 2016 The Fuchsia Authors. All rights reserved. +// 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. diff --git a/fml/synchronization/count_down_latch.cc b/fml/synchronization/count_down_latch.cc index 5eeb012b97e4a..6273eacb6ad54 100644 --- a/fml/synchronization/count_down_latch.cc +++ b/fml/synchronization/count_down_latch.cc @@ -1,4 +1,4 @@ -// Copyright 2018 The Flutter Authors. All rights reserved. +// 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. diff --git a/fml/synchronization/count_down_latch.h b/fml/synchronization/count_down_latch.h index 87148f6df0367..2036e82a3f8fd 100644 --- a/fml/synchronization/count_down_latch.h +++ b/fml/synchronization/count_down_latch.h @@ -1,4 +1,4 @@ -// Copyright 2018 The Flutter Authors. All rights reserved. +// 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. diff --git a/fml/synchronization/count_down_latch_unittests.cc b/fml/synchronization/count_down_latch_unittests.cc index 2c85b9474612b..c23fc82638f96 100644 --- a/fml/synchronization/count_down_latch_unittests.cc +++ b/fml/synchronization/count_down_latch_unittests.cc @@ -1,4 +1,4 @@ -// Copyright 2018 The Flutter Authors. All rights reserved. +// 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. diff --git a/fml/synchronization/thread_annotations.h b/fml/synchronization/thread_annotations.h index 1b7bf6ecc6903..f5ae885782b5c 100644 --- a/fml/synchronization/thread_annotations.h +++ b/fml/synchronization/thread_annotations.h @@ -1,4 +1,4 @@ -// Copyright 2016 The Fuchsia Authors. All rights reserved. +// 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. diff --git a/fml/synchronization/thread_annotations_unittest.cc b/fml/synchronization/thread_annotations_unittest.cc index 12769451dcf36..7462614ba608f 100644 --- a/fml/synchronization/thread_annotations_unittest.cc +++ b/fml/synchronization/thread_annotations_unittest.cc @@ -1,4 +1,4 @@ -// Copyright 2016 The Fuchsia Authors. All rights reserved. +// 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. diff --git a/fml/synchronization/thread_checker.h b/fml/synchronization/thread_checker.h index 13a3e6824d0d3..3501ac5d4a9e5 100644 --- a/fml/synchronization/thread_checker.h +++ b/fml/synchronization/thread_checker.h @@ -1,4 +1,4 @@ -// Copyright 2016 The Fuchsia Authors. All rights reserved. +// 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. diff --git a/fml/synchronization/thread_checker_unittest.cc b/fml/synchronization/thread_checker_unittest.cc index 46203e43adba4..92eb34f166157 100644 --- a/fml/synchronization/thread_checker_unittest.cc +++ b/fml/synchronization/thread_checker_unittest.cc @@ -1,4 +1,4 @@ -// Copyright 2016 The Fuchsia Authors. All rights reserved. +// 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. diff --git a/fml/synchronization/waitable_event.cc b/fml/synchronization/waitable_event.cc index 04052c60ed79d..7064f5db6903c 100644 --- a/fml/synchronization/waitable_event.cc +++ b/fml/synchronization/waitable_event.cc @@ -1,4 +1,4 @@ -// Copyright 2016 The Fuchsia Authors. All rights reserved. +// 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. diff --git a/fml/synchronization/waitable_event.h b/fml/synchronization/waitable_event.h index 60306aaa7897e..33640ded23466 100644 --- a/fml/synchronization/waitable_event.h +++ b/fml/synchronization/waitable_event.h @@ -1,4 +1,4 @@ -// Copyright 2016 The Fuchsia Authors. All rights reserved. +// 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. diff --git a/fml/synchronization/waitable_event_unittest.cc b/fml/synchronization/waitable_event_unittest.cc index 92f40577dc9e5..aa420910d72fe 100644 --- a/fml/synchronization/waitable_event_unittest.cc +++ b/fml/synchronization/waitable_event_unittest.cc @@ -1,4 +1,4 @@ -// Copyright 2016 The Fuchsia Authors. All rights reserved. +// 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. diff --git a/fml/task_runner.cc b/fml/task_runner.cc index 573c1bb8b7b34..2c4cfe4b638a2 100644 --- a/fml/task_runner.cc +++ b/fml/task_runner.cc @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/fml/task_runner.h b/fml/task_runner.h index 0a196604fac81..04696752c95e3 100644 --- a/fml/task_runner.h +++ b/fml/task_runner.h @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/fml/thread.cc b/fml/thread.cc index 5690d73d51f17..b6a4802b48728 100644 --- a/fml/thread.cc +++ b/fml/thread.cc @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/fml/thread.h b/fml/thread.h index aced4bbebdb80..19a6e5ec3ba43 100644 --- a/fml/thread.h +++ b/fml/thread.h @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/fml/thread_local.h b/fml/thread_local.h index a36d80601f6e6..daff25bac1155 100644 --- a/fml/thread_local.h +++ b/fml/thread_local.h @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/fml/thread_local_unittests.cc b/fml/thread_local_unittests.cc index 9ae5f82d35e16..7f48cfcd532f6 100644 --- a/fml/thread_local_unittests.cc +++ b/fml/thread_local_unittests.cc @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/fml/thread_unittests.cc b/fml/thread_unittests.cc index c4ee56779dab4..f48922d84485e 100644 --- a/fml/thread_unittests.cc +++ b/fml/thread_unittests.cc @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/fml/time/time_delta.h b/fml/time/time_delta.h index 1b7caa281084f..914fc738751cb 100644 --- a/fml/time/time_delta.h +++ b/fml/time/time_delta.h @@ -1,4 +1,4 @@ -// Copyright 2016 The Fuchsia Authors. All rights reserved. +// 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. diff --git a/fml/time/time_delta_unittest.cc b/fml/time/time_delta_unittest.cc index 992b4f4a8b888..342006e5a6dca 100644 --- a/fml/time/time_delta_unittest.cc +++ b/fml/time/time_delta_unittest.cc @@ -1,4 +1,4 @@ -// Copyright 2017 The Fuchsia Authors. All rights reserved. +// 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. diff --git a/fml/time/time_point.cc b/fml/time/time_point.cc index 36ca1582372df..f0a912e92fdee 100644 --- a/fml/time/time_point.cc +++ b/fml/time/time_point.cc @@ -1,4 +1,4 @@ -// Copyright 2016 The Fuchsia Authors. All rights reserved. +// 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. diff --git a/fml/time/time_point.h b/fml/time/time_point.h index 500de54302a0b..4b6e44429f941 100644 --- a/fml/time/time_point.h +++ b/fml/time/time_point.h @@ -1,4 +1,4 @@ -// Copyright 2016 The Fuchsia Authors. All rights reserved. +// 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. diff --git a/fml/time/time_point_unittest.cc b/fml/time/time_point_unittest.cc index 2de07b0582442..965cf81d487f7 100644 --- a/fml/time/time_point_unittest.cc +++ b/fml/time/time_point_unittest.cc @@ -1,4 +1,4 @@ -// Copyright 2017 The Fuchsia Authors. All rights reserved. +// 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. diff --git a/fml/time/time_unittest.cc b/fml/time/time_unittest.cc index eab352d947773..535d79ec5a824 100644 --- a/fml/time/time_unittest.cc +++ b/fml/time/time_unittest.cc @@ -1,4 +1,4 @@ -// Copyright 2016 The Fuchsia Authors. All rights reserved. +// 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. diff --git a/fml/trace_event.cc b/fml/trace_event.cc index 628b3b785e865..69ed8b2216486 100644 --- a/fml/trace_event.cc +++ b/fml/trace_event.cc @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/fml/trace_event.h b/fml/trace_event.h index 9dd094acaa2b3..b3bba9b281f61 100644 --- a/fml/trace_event.h +++ b/fml/trace_event.h @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/fml/unique_fd.cc b/fml/unique_fd.cc index 09226c60149b7..dd115c2008b9e 100644 --- a/fml/unique_fd.cc +++ b/fml/unique_fd.cc @@ -1,4 +1,4 @@ -// Copyright 2018 The Flutter Authors. All rights reserved. +// 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. diff --git a/fml/unique_fd.h b/fml/unique_fd.h index 05dee99018f33..17f1a3cdaa216 100644 --- a/fml/unique_fd.h +++ b/fml/unique_fd.h @@ -1,4 +1,4 @@ -// Copyright 2018 The Flutter Authors. All rights reserved. +// 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. diff --git a/fml/unique_object.h b/fml/unique_object.h index e5f2f8690a644..f42603ef80451 100644 --- a/fml/unique_object.h +++ b/fml/unique_object.h @@ -1,4 +1,4 @@ -// Copyright 2018 The Flutter Authors. All rights reserved. +// 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. diff --git a/frontend_server/BUILD.gn b/frontend_server/BUILD.gn index 06e2b2795e3a8..96a92ed0a04fa 100644 --- a/frontend_server/BUILD.gn +++ b/frontend_server/BUILD.gn @@ -1,4 +1,4 @@ -# Copyright 2017 The Chromium Authors. All rights reserved. +# 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. diff --git a/frontend_server/lib/server.dart b/frontend_server/lib/server.dart index fed3766d7c142..5d84d2dcf95ba 100644 --- a/frontend_server/lib/server.dart +++ b/frontend_server/lib/server.dart @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/io/BUILD.gn b/lib/io/BUILD.gn index 5db1cf3563421..56c37705ef659 100644 --- a/lib/io/BUILD.gn +++ b/lib/io/BUILD.gn @@ -1,4 +1,4 @@ -# Copyright 2016 The Chromium Authors. All rights reserved. +# 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. diff --git a/lib/io/dart_io.cc b/lib/io/dart_io.cc index 6dbf65eb7bf2b..1b1866b4e8569 100644 --- a/lib/io/dart_io.cc +++ b/lib/io/dart_io.cc @@ -1,4 +1,4 @@ -// Copyright 2014 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/io/dart_io.h b/lib/io/dart_io.h index 73203cfdf1bdb..6d2a36abbbf45 100644 --- a/lib/io/dart_io.h +++ b/lib/io/dart_io.h @@ -1,4 +1,4 @@ -// Copyright 2014 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/snapshot/BUILD.gn b/lib/snapshot/BUILD.gn index 8d850c5c3997e..ef06063a2a1f2 100644 --- a/lib/snapshot/BUILD.gn +++ b/lib/snapshot/BUILD.gn @@ -1,4 +1,4 @@ -# Copyright 2016 The Chromium Authors. All rights reserved. +# 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. diff --git a/lib/snapshot/pubspec.yaml b/lib/snapshot/pubspec.yaml index 1b1139ebc4c3d..54585c8caccc8 100644 --- a/lib/snapshot/pubspec.yaml +++ b/lib/snapshot/pubspec.yaml @@ -1,4 +1,4 @@ -# Copyright 2018 The Chromium Authors. All rights reserved. +# 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. diff --git a/lib/snapshot/snapshot.dart b/lib/snapshot/snapshot.dart index 48ed29258750d..c411f09a22eae 100644 --- a/lib/snapshot/snapshot.dart +++ b/lib/snapshot/snapshot.dart @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/snapshot/snapshot.h b/lib/snapshot/snapshot.h index 2bb6f0a5d1650..6a9ebfe4ea6e7 100644 --- a/lib/snapshot/snapshot.h +++ b/lib/snapshot/snapshot.h @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/snapshot/snapshot_fuchsia.dart b/lib/snapshot/snapshot_fuchsia.dart index 1a9057d07bbee..5fafa124d8b2f 100644 --- a/lib/snapshot/snapshot_fuchsia.dart +++ b/lib/snapshot/snapshot_fuchsia.dart @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/BUILD.gn b/lib/ui/BUILD.gn index 06c46bc37f1c8..a27321c406504 100644 --- a/lib/ui/BUILD.gn +++ b/lib/ui/BUILD.gn @@ -1,4 +1,4 @@ -# Copyright 2016 The Chromium Authors. All rights reserved. +# 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. diff --git a/lib/ui/compositing.dart b/lib/ui/compositing.dart index b4e22cf7ab07f..038e800dd5eac 100644 --- a/lib/ui/compositing.dart +++ b/lib/ui/compositing.dart @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/compositing/scene.cc b/lib/ui/compositing/scene.cc index 3629637688a2a..2dea867733e25 100644 --- a/lib/ui/compositing/scene.cc +++ b/lib/ui/compositing/scene.cc @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/compositing/scene.h b/lib/ui/compositing/scene.h index bf1f1b78d826e..308a652c1e5ed 100644 --- a/lib/ui/compositing/scene.h +++ b/lib/ui/compositing/scene.h @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/compositing/scene_builder.cc b/lib/ui/compositing/scene_builder.cc index 18810d4aa02fd..556453f097463 100644 --- a/lib/ui/compositing/scene_builder.cc +++ b/lib/ui/compositing/scene_builder.cc @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/compositing/scene_builder.h b/lib/ui/compositing/scene_builder.h index 7fd1a0d17f4af..6b3ba5ed5495c 100644 --- a/lib/ui/compositing/scene_builder.h +++ b/lib/ui/compositing/scene_builder.h @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/compositing/scene_host.cc b/lib/ui/compositing/scene_host.cc index c9588eb8c504a..d0441354949c4 100644 --- a/lib/ui/compositing/scene_host.cc +++ b/lib/ui/compositing/scene_host.cc @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/compositing/scene_host.h b/lib/ui/compositing/scene_host.h index 897a4b754b3ec..cad141d0941ba 100644 --- a/lib/ui/compositing/scene_host.h +++ b/lib/ui/compositing/scene_host.h @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/dart_runtime_hooks.cc b/lib/ui/dart_runtime_hooks.cc index 7f1cd0c0ecf56..b9bed135e1332 100644 --- a/lib/ui/dart_runtime_hooks.cc +++ b/lib/ui/dart_runtime_hooks.cc @@ -1,4 +1,4 @@ -// Copyright 2014 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/dart_runtime_hooks.h b/lib/ui/dart_runtime_hooks.h index 50247eec06734..d3beefa46bd36 100644 --- a/lib/ui/dart_runtime_hooks.h +++ b/lib/ui/dart_runtime_hooks.h @@ -1,4 +1,4 @@ -// Copyright 2014 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/dart_ui.cc b/lib/ui/dart_ui.cc index 181f7345f8ef2..7256a183cb2e8 100644 --- a/lib/ui/dart_ui.cc +++ b/lib/ui/dart_ui.cc @@ -1,4 +1,4 @@ -// Copyright 2014 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/dart_ui.gni b/lib/ui/dart_ui.gni index e9a315ac3694e..c52a9f025f231 100644 --- a/lib/ui/dart_ui.gni +++ b/lib/ui/dart_ui.gni @@ -1,4 +1,4 @@ -# Copyright 2016 The Chromium Authors. All rights reserved. +# 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. diff --git a/lib/ui/dart_ui.h b/lib/ui/dart_ui.h index dc5fecac3f5f6..8dd4a3270ed6e 100644 --- a/lib/ui/dart_ui.h +++ b/lib/ui/dart_ui.h @@ -1,4 +1,4 @@ -// Copyright 2014 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/dart_wrapper.h b/lib/ui/dart_wrapper.h index ae20bcfa68d71..ef895513dda64 100644 --- a/lib/ui/dart_wrapper.h +++ b/lib/ui/dart_wrapper.h @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/geometry.dart b/lib/ui/geometry.dart index df3faa39850db..e46cf63109cdd 100644 --- a/lib/ui/geometry.dart +++ b/lib/ui/geometry.dart @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/hash_codes.dart b/lib/ui/hash_codes.dart index bece69b0887e9..a3a24d7b7dd54 100644 --- a/lib/ui/hash_codes.dart +++ b/lib/ui/hash_codes.dart @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/hooks.dart b/lib/ui/hooks.dart index 04f5d71bc3a3d..923662dc41cad 100644 --- a/lib/ui/hooks.dart +++ b/lib/ui/hooks.dart @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/isolate_name_server.dart b/lib/ui/isolate_name_server.dart index ef32ec203d401..4c1833bc52646 100644 --- a/lib/ui/isolate_name_server.dart +++ b/lib/ui/isolate_name_server.dart @@ -1,4 +1,4 @@ -// Copyright 2018 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/isolate_name_server/isolate_name_server.cc b/lib/ui/isolate_name_server/isolate_name_server.cc index 9d78d145bb00f..0fe928e7e1df2 100644 --- a/lib/ui/isolate_name_server/isolate_name_server.cc +++ b/lib/ui/isolate_name_server/isolate_name_server.cc @@ -1,4 +1,4 @@ -// Copyright 2018 The Flutter Authors. All rights reserved. +// 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. diff --git a/lib/ui/isolate_name_server/isolate_name_server.h b/lib/ui/isolate_name_server/isolate_name_server.h index 906d943328967..97c44d5cd47b4 100644 --- a/lib/ui/isolate_name_server/isolate_name_server.h +++ b/lib/ui/isolate_name_server/isolate_name_server.h @@ -1,4 +1,4 @@ -// Copyright 2018 The Flutter Authors. All rights reserved. +// 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. diff --git a/lib/ui/isolate_name_server/isolate_name_server_natives.cc b/lib/ui/isolate_name_server/isolate_name_server_natives.cc index 543cd168b5223..7f4467886f4fa 100644 --- a/lib/ui/isolate_name_server/isolate_name_server_natives.cc +++ b/lib/ui/isolate_name_server/isolate_name_server_natives.cc @@ -1,4 +1,4 @@ -// Copyright 2018 The Flutter Authors. All rights reserved. +// 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. diff --git a/lib/ui/isolate_name_server/isolate_name_server_natives.h b/lib/ui/isolate_name_server/isolate_name_server_natives.h index 79ce0c5c5c0f2..cc3e1438cfbee 100644 --- a/lib/ui/isolate_name_server/isolate_name_server_natives.h +++ b/lib/ui/isolate_name_server/isolate_name_server_natives.h @@ -1,4 +1,4 @@ -// Copyright 2018 The Flutter Authors. All rights reserved. +// 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. diff --git a/lib/ui/lerp.dart b/lib/ui/lerp.dart index 2107969be57bb..0c69476779b73 100644 --- a/lib/ui/lerp.dart +++ b/lib/ui/lerp.dart @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/natives.dart b/lib/ui/natives.dart index 49a582c4e930f..fd34b93ff3dce 100644 --- a/lib/ui/natives.dart +++ b/lib/ui/natives.dart @@ -1,4 +1,4 @@ -// Copyright 2014 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/painting.dart b/lib/ui/painting.dart index 032a7047daafa..4feb65dffd5ad 100644 --- a/lib/ui/painting.dart +++ b/lib/ui/painting.dart @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/painting/canvas.cc b/lib/ui/painting/canvas.cc index a691b752d1652..691a41949ecd7 100644 --- a/lib/ui/painting/canvas.cc +++ b/lib/ui/painting/canvas.cc @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/painting/canvas.h b/lib/ui/painting/canvas.h index c4c870d317170..98632b9235edc 100644 --- a/lib/ui/painting/canvas.h +++ b/lib/ui/painting/canvas.h @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/painting/codec.cc b/lib/ui/painting/codec.cc index 3262338d5563c..ba82f81386fd2 100644 --- a/lib/ui/painting/codec.cc +++ b/lib/ui/painting/codec.cc @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/painting/codec.h b/lib/ui/painting/codec.h index e171c4ca08e54..4a61d328a828e 100644 --- a/lib/ui/painting/codec.h +++ b/lib/ui/painting/codec.h @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/painting/engine_layer.cc b/lib/ui/painting/engine_layer.cc index afa3876ffb653..f5afb9fde0b43 100644 --- a/lib/ui/painting/engine_layer.cc +++ b/lib/ui/painting/engine_layer.cc @@ -1,4 +1,4 @@ -// Copyright 2018 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/painting/engine_layer.h b/lib/ui/painting/engine_layer.h index c578e88c9e88f..0f1e32bd77ca1 100644 --- a/lib/ui/painting/engine_layer.h +++ b/lib/ui/painting/engine_layer.h @@ -1,4 +1,4 @@ -// Copyright 2018 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/painting/frame_info.cc b/lib/ui/painting/frame_info.cc index 03af5b4feb070..123fc955efccf 100644 --- a/lib/ui/painting/frame_info.cc +++ b/lib/ui/painting/frame_info.cc @@ -1,5 +1,5 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/painting/frame_info.h b/lib/ui/painting/frame_info.h index 462ab513e0683..15a663dab8a7c 100644 --- a/lib/ui/painting/frame_info.h +++ b/lib/ui/painting/frame_info.h @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/painting/gradient.cc b/lib/ui/painting/gradient.cc index 25b6595f6bf54..287e8e78621cc 100644 --- a/lib/ui/painting/gradient.cc +++ b/lib/ui/painting/gradient.cc @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/painting/gradient.h b/lib/ui/painting/gradient.h index 33450c2583812..83e2a45e0d22a 100644 --- a/lib/ui/painting/gradient.h +++ b/lib/ui/painting/gradient.h @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/painting/image.cc b/lib/ui/painting/image.cc index d6ed502c033cd..bbb3b69736ed6 100644 --- a/lib/ui/painting/image.cc +++ b/lib/ui/painting/image.cc @@ -1,4 +1,4 @@ -// Copyright 2013 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/painting/image.h b/lib/ui/painting/image.h index 44e5cf4edc7c9..51b24df128e62 100644 --- a/lib/ui/painting/image.h +++ b/lib/ui/painting/image.h @@ -1,4 +1,4 @@ -// Copyright 2013 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/painting/image_encoding.cc b/lib/ui/painting/image_encoding.cc index be8b3f7e47b68..cee3896dae7b3 100644 --- a/lib/ui/painting/image_encoding.cc +++ b/lib/ui/painting/image_encoding.cc @@ -1,4 +1,4 @@ -// Copyright 2018 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/painting/image_encoding.h b/lib/ui/painting/image_encoding.h index 39e3144f12e07..e4d66f0c8a0c9 100644 --- a/lib/ui/painting/image_encoding.h +++ b/lib/ui/painting/image_encoding.h @@ -1,4 +1,4 @@ -// Copyright 2018 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/painting/image_filter.cc b/lib/ui/painting/image_filter.cc index 85735060b6bda..94017beeb3ab3 100644 --- a/lib/ui/painting/image_filter.cc +++ b/lib/ui/painting/image_filter.cc @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/painting/image_filter.h b/lib/ui/painting/image_filter.h index bd5d2bfb99ae7..0cc0259113996 100644 --- a/lib/ui/painting/image_filter.h +++ b/lib/ui/painting/image_filter.h @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/painting/image_shader.cc b/lib/ui/painting/image_shader.cc index e233c633c16bd..389a214270618 100644 --- a/lib/ui/painting/image_shader.cc +++ b/lib/ui/painting/image_shader.cc @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/painting/image_shader.h b/lib/ui/painting/image_shader.h index 17a5795e02558..1365577fa1de7 100644 --- a/lib/ui/painting/image_shader.h +++ b/lib/ui/painting/image_shader.h @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/painting/matrix.cc b/lib/ui/painting/matrix.cc index 81c2f293b2f3d..3fe56783b7bcd 100644 --- a/lib/ui/painting/matrix.cc +++ b/lib/ui/painting/matrix.cc @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/painting/matrix.h b/lib/ui/painting/matrix.h index 25307b1b387c0..0a1d35064bde1 100644 --- a/lib/ui/painting/matrix.h +++ b/lib/ui/painting/matrix.h @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/painting/paint.cc b/lib/ui/painting/paint.cc index 9b876542a61a7..16e953933732b 100644 --- a/lib/ui/painting/paint.cc +++ b/lib/ui/painting/paint.cc @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/painting/paint.h b/lib/ui/painting/paint.h index 2dd4ea14d91b6..67495736b489f 100644 --- a/lib/ui/painting/paint.h +++ b/lib/ui/painting/paint.h @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/painting/path.cc b/lib/ui/painting/path.cc index 2066fbe929cfa..b6daf002d40ff 100644 --- a/lib/ui/painting/path.cc +++ b/lib/ui/painting/path.cc @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/painting/path.h b/lib/ui/painting/path.h index 995cf1351262b..c4bffa61f68e4 100644 --- a/lib/ui/painting/path.h +++ b/lib/ui/painting/path.h @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/painting/path_measure.cc b/lib/ui/painting/path_measure.cc index 8533e5627b721..d22340381a57e 100644 --- a/lib/ui/painting/path_measure.cc +++ b/lib/ui/painting/path_measure.cc @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/painting/path_measure.h b/lib/ui/painting/path_measure.h index ad21f4d358371..5869e5a777ba6 100644 --- a/lib/ui/painting/path_measure.h +++ b/lib/ui/painting/path_measure.h @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/painting/picture.cc b/lib/ui/painting/picture.cc index cbadebfc0a818..e65d1368d8a45 100644 --- a/lib/ui/painting/picture.cc +++ b/lib/ui/painting/picture.cc @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/painting/picture.h b/lib/ui/painting/picture.h index 01e7ecd596a7f..b7b42acba206d 100644 --- a/lib/ui/painting/picture.h +++ b/lib/ui/painting/picture.h @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/painting/picture_recorder.cc b/lib/ui/painting/picture_recorder.cc index 9896f2f117a30..1cce5042ae204 100644 --- a/lib/ui/painting/picture_recorder.cc +++ b/lib/ui/painting/picture_recorder.cc @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/painting/picture_recorder.h b/lib/ui/painting/picture_recorder.h index 4e5cd861ce97b..f2842ae4a966d 100644 --- a/lib/ui/painting/picture_recorder.h +++ b/lib/ui/painting/picture_recorder.h @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/painting/rrect.cc b/lib/ui/painting/rrect.cc index 1436b95888df1..cd6a7d4456d33 100644 --- a/lib/ui/painting/rrect.cc +++ b/lib/ui/painting/rrect.cc @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/painting/rrect.h b/lib/ui/painting/rrect.h index c06769bfecc2c..c4a9045e674df 100644 --- a/lib/ui/painting/rrect.h +++ b/lib/ui/painting/rrect.h @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/painting/shader.cc b/lib/ui/painting/shader.cc index 7999b84dfcc29..1331135917e71 100644 --- a/lib/ui/painting/shader.cc +++ b/lib/ui/painting/shader.cc @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/painting/shader.h b/lib/ui/painting/shader.h index 5fa0ce33c1d15..cfda1f341df35 100644 --- a/lib/ui/painting/shader.h +++ b/lib/ui/painting/shader.h @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/painting/vertices.cc b/lib/ui/painting/vertices.cc index 6fc519cd777e2..2e23fcd975b11 100644 --- a/lib/ui/painting/vertices.cc +++ b/lib/ui/painting/vertices.cc @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/painting/vertices.h b/lib/ui/painting/vertices.h index d487138385781..38ad28ac746f5 100644 --- a/lib/ui/painting/vertices.h +++ b/lib/ui/painting/vertices.h @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/plugins.dart b/lib/ui/plugins.dart index 0ae2b68ddbfc8..a0c65461a3e7a 100644 --- a/lib/ui/plugins.dart +++ b/lib/ui/plugins.dart @@ -1,4 +1,4 @@ -// Copyright 2018 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/plugins/callback_cache.cc b/lib/ui/plugins/callback_cache.cc index 81273d80e0daa..94cb981dc5556 100644 --- a/lib/ui/plugins/callback_cache.cc +++ b/lib/ui/plugins/callback_cache.cc @@ -1,4 +1,4 @@ -// Copyright 2018 The Flutter Authors. All rights reserved. +// 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. diff --git a/lib/ui/plugins/callback_cache.h b/lib/ui/plugins/callback_cache.h index b13002d332f9b..997b84426a4e5 100644 --- a/lib/ui/plugins/callback_cache.h +++ b/lib/ui/plugins/callback_cache.h @@ -1,4 +1,4 @@ -// Copyright 2018 The Flutter Authors. All rights reserved. +// 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. diff --git a/lib/ui/pointer.dart b/lib/ui/pointer.dart index 63993cf42b043..c0d3757d84bd5 100644 --- a/lib/ui/pointer.dart +++ b/lib/ui/pointer.dart @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/semantics.dart b/lib/ui/semantics.dart index d8125d0ae58bc..f7dfffbac5678 100644 --- a/lib/ui/semantics.dart +++ b/lib/ui/semantics.dart @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/semantics/custom_accessibility_action.cc b/lib/ui/semantics/custom_accessibility_action.cc index 7f404e817027c..886bced770c7d 100644 --- a/lib/ui/semantics/custom_accessibility_action.cc +++ b/lib/ui/semantics/custom_accessibility_action.cc @@ -1,4 +1,4 @@ -// Copyright 2018 The Chromium Authors. All rights reserved. +// 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. @@ -10,4 +10,4 @@ CustomAccessibilityAction::CustomAccessibilityAction() = default; CustomAccessibilityAction::~CustomAccessibilityAction() = default; -} +} // namespace blink diff --git a/lib/ui/semantics/custom_accessibility_action.h b/lib/ui/semantics/custom_accessibility_action.h index 3eb8356416143..ce9415aa00630 100644 --- a/lib/ui/semantics/custom_accessibility_action.h +++ b/lib/ui/semantics/custom_accessibility_action.h @@ -1,4 +1,4 @@ -// Copyright 2018 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/semantics/semantics_node.cc b/lib/ui/semantics/semantics_node.cc index 563ca1d894976..4931f8ca5c830 100644 --- a/lib/ui/semantics/semantics_node.cc +++ b/lib/ui/semantics/semantics_node.cc @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/semantics/semantics_node.h b/lib/ui/semantics/semantics_node.h index e5d405d38e716..1752b73b5aac9 100644 --- a/lib/ui/semantics/semantics_node.h +++ b/lib/ui/semantics/semantics_node.h @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/semantics/semantics_update.cc b/lib/ui/semantics/semantics_update.cc index a35befce6c384..6bb51751f46fa 100644 --- a/lib/ui/semantics/semantics_update.cc +++ b/lib/ui/semantics/semantics_update.cc @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/semantics/semantics_update.h b/lib/ui/semantics/semantics_update.h index 21e75f60528a3..df43c425c39ba 100644 --- a/lib/ui/semantics/semantics_update.h +++ b/lib/ui/semantics/semantics_update.h @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/semantics/semantics_update_builder.cc b/lib/ui/semantics/semantics_update_builder.cc index 5536029565518..aca1fa7e32a42 100644 --- a/lib/ui/semantics/semantics_update_builder.cc +++ b/lib/ui/semantics/semantics_update_builder.cc @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/semantics/semantics_update_builder.h b/lib/ui/semantics/semantics_update_builder.h index a9422afba6cae..ed486e260475c 100644 --- a/lib/ui/semantics/semantics_update_builder.h +++ b/lib/ui/semantics/semantics_update_builder.h @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/snapshot_delegate.h b/lib/ui/snapshot_delegate.h index ceca0e7b35cd7..a124ff5b7ef21 100644 --- a/lib/ui/snapshot_delegate.h +++ b/lib/ui/snapshot_delegate.h @@ -1,4 +1,4 @@ -// Copyright 2018 The Flutter Authors. All rights reserved. +// 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. diff --git a/lib/ui/text.dart b/lib/ui/text.dart index 015d82338a405..be0465b048bf5 100644 --- a/lib/ui/text.dart +++ b/lib/ui/text.dart @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/text/asset_manager_font_provider.cc b/lib/ui/text/asset_manager_font_provider.cc index e247592365526..3147573404871 100644 --- a/lib/ui/text/asset_manager_font_provider.cc +++ b/lib/ui/text/asset_manager_font_provider.cc @@ -1,4 +1,4 @@ -// Copyright 2018 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/text/asset_manager_font_provider.h b/lib/ui/text/asset_manager_font_provider.h index cb858e5a5caa7..785ff66700907 100644 --- a/lib/ui/text/asset_manager_font_provider.h +++ b/lib/ui/text/asset_manager_font_provider.h @@ -1,4 +1,4 @@ -// Copyright 2018 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/text/font_collection.cc b/lib/ui/text/font_collection.cc index aee3711a100df..66fb3f83077b2 100644 --- a/lib/ui/text/font_collection.cc +++ b/lib/ui/text/font_collection.cc @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/text/font_collection.h b/lib/ui/text/font_collection.h index 9b0804dcd7d8a..a50eab4b8d529 100644 --- a/lib/ui/text/font_collection.h +++ b/lib/ui/text/font_collection.h @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/text/paragraph.cc b/lib/ui/text/paragraph.cc index 46d30fa7934d0..9c4438f12f19d 100644 --- a/lib/ui/text/paragraph.cc +++ b/lib/ui/text/paragraph.cc @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/text/paragraph.h b/lib/ui/text/paragraph.h index d8c0c4a89d462..f5648440fe65b 100644 --- a/lib/ui/text/paragraph.h +++ b/lib/ui/text/paragraph.h @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/text/paragraph_builder.cc b/lib/ui/text/paragraph_builder.cc index ea9f7f5a1f0d0..bb822417082c2 100644 --- a/lib/ui/text/paragraph_builder.cc +++ b/lib/ui/text/paragraph_builder.cc @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/text/paragraph_builder.h b/lib/ui/text/paragraph_builder.h index 3e7a8301ddf0b..89383527c6db7 100644 --- a/lib/ui/text/paragraph_builder.h +++ b/lib/ui/text/paragraph_builder.h @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/text/paragraph_impl.cc b/lib/ui/text/paragraph_impl.cc index 65483a8b68142..eb5f4bb0d9005 100644 --- a/lib/ui/text/paragraph_impl.cc +++ b/lib/ui/text/paragraph_impl.cc @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/text/paragraph_impl.h b/lib/ui/text/paragraph_impl.h index 30ce8a080070d..b1b3c51f77107 100644 --- a/lib/ui/text/paragraph_impl.h +++ b/lib/ui/text/paragraph_impl.h @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/text/paragraph_impl_txt.cc b/lib/ui/text/paragraph_impl_txt.cc index 9f31a3896985d..5a00fbbda93cd 100644 --- a/lib/ui/text/paragraph_impl_txt.cc +++ b/lib/ui/text/paragraph_impl_txt.cc @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/text/paragraph_impl_txt.h b/lib/ui/text/paragraph_impl_txt.h index eabdcc114b198..226526e6e696f 100644 --- a/lib/ui/text/paragraph_impl_txt.h +++ b/lib/ui/text/paragraph_impl_txt.h @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/text/text_box.cc b/lib/ui/text/text_box.cc index 8e254afe40ad9..2d22d954a8b93 100644 --- a/lib/ui/text/text_box.cc +++ b/lib/ui/text/text_box.cc @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/text/text_box.h b/lib/ui/text/text_box.h index 839142ddcba8d..785f5b37bd3b6 100644 --- a/lib/ui/text/text_box.h +++ b/lib/ui/text/text_box.h @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/ui.dart b/lib/ui/ui.dart index 8c4480c072cdb..47fa1bb53bc37 100644 --- a/lib/ui/ui.dart +++ b/lib/ui/ui.dart @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/ui_dart_state.cc b/lib/ui/ui_dart_state.cc index 3903b4b23c736..cc46903be77eb 100644 --- a/lib/ui/ui_dart_state.cc +++ b/lib/ui/ui_dart_state.cc @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/ui_dart_state.h b/lib/ui/ui_dart_state.h index 2fafb0537ae30..80758ae0c27ec 100644 --- a/lib/ui/ui_dart_state.h +++ b/lib/ui/ui_dart_state.h @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/window.dart b/lib/ui/window.dart index 57b40bf1cdffa..c6d5a754f6ba1 100644 --- a/lib/ui/window.dart +++ b/lib/ui/window.dart @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/window/platform_message.cc b/lib/ui/window/platform_message.cc index ca9d92c74e827..6a8c754d2aa83 100644 --- a/lib/ui/window/platform_message.cc +++ b/lib/ui/window/platform_message.cc @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/window/platform_message.h b/lib/ui/window/platform_message.h index 6044c94e7c43d..ef26d621600ea 100644 --- a/lib/ui/window/platform_message.h +++ b/lib/ui/window/platform_message.h @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/window/platform_message_response.cc b/lib/ui/window/platform_message_response.cc index 4b835efdbe2ad..31f02ca286384 100644 --- a/lib/ui/window/platform_message_response.cc +++ b/lib/ui/window/platform_message_response.cc @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/window/platform_message_response.h b/lib/ui/window/platform_message_response.h index c31779c24bc08..decd17a46beea 100644 --- a/lib/ui/window/platform_message_response.h +++ b/lib/ui/window/platform_message_response.h @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/window/platform_message_response_dart.cc b/lib/ui/window/platform_message_response_dart.cc index e91bcfd4247e4..3a4084958b835 100644 --- a/lib/ui/window/platform_message_response_dart.cc +++ b/lib/ui/window/platform_message_response_dart.cc @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/window/platform_message_response_dart.h b/lib/ui/window/platform_message_response_dart.h index 274b1e08d91b7..3ff0333937096 100644 --- a/lib/ui/window/platform_message_response_dart.h +++ b/lib/ui/window/platform_message_response_dart.h @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/window/pointer_data.cc b/lib/ui/window/pointer_data.cc index 563d6bc2e4c6b..e74e0b5ce94f0 100644 --- a/lib/ui/window/pointer_data.cc +++ b/lib/ui/window/pointer_data.cc @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/window/pointer_data.h b/lib/ui/window/pointer_data.h index 44f10a6abf9ac..d9d01b560a1d2 100644 --- a/lib/ui/window/pointer_data.h +++ b/lib/ui/window/pointer_data.h @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/window/pointer_data_packet.cc b/lib/ui/window/pointer_data_packet.cc index b276f92fcef78..f560df1a2b7d6 100644 --- a/lib/ui/window/pointer_data_packet.cc +++ b/lib/ui/window/pointer_data_packet.cc @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/window/pointer_data_packet.h b/lib/ui/window/pointer_data_packet.h index fafa03d7a7d86..c9f54dec7a677 100644 --- a/lib/ui/window/pointer_data_packet.h +++ b/lib/ui/window/pointer_data_packet.h @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/window/viewport_metrics.h b/lib/ui/window/viewport_metrics.h index 0ccb50ccc4374..41fe229a5a396 100644 --- a/lib/ui/window/viewport_metrics.h +++ b/lib/ui/window/viewport_metrics.h @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/window/window.cc b/lib/ui/window/window.cc index 356ab771e3863..a71fa674a726f 100644 --- a/lib/ui/window/window.cc +++ b/lib/ui/window/window.cc @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/lib/ui/window/window.h b/lib/ui/window/window.h index 05ef8ef97a34f..2128c83284095 100644 --- a/lib/ui/window/window.h +++ b/lib/ui/window/window.h @@ -1,4 +1,4 @@ -// Copyright 2014 The Chromium Authors. All rights reserved. +// 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. diff --git a/runtime/BUILD.gn b/runtime/BUILD.gn index 1fa0d73af64e2..5df979ed689a9 100644 --- a/runtime/BUILD.gn +++ b/runtime/BUILD.gn @@ -1,4 +1,4 @@ -# Copyright 2016 The Chromium Authors. All rights reserved. +# 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. diff --git a/runtime/dart_isolate.cc b/runtime/dart_isolate.cc index 4eef86398afc7..c443e7b2eb5e6 100644 --- a/runtime/dart_isolate.cc +++ b/runtime/dart_isolate.cc @@ -1,4 +1,4 @@ -// Copyright 2017 The Flutter Authors. All rights reserved. +// 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. diff --git a/runtime/dart_isolate.h b/runtime/dart_isolate.h index e17ba08c66be0..1eba6219c0d90 100644 --- a/runtime/dart_isolate.h +++ b/runtime/dart_isolate.h @@ -1,4 +1,4 @@ -// Copyright 2017 The Flutter Authors. All rights reserved. +// 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. diff --git a/runtime/dart_isolate_unittests.cc b/runtime/dart_isolate_unittests.cc index 44547d3190139..d99e1bfcdbdbb 100644 --- a/runtime/dart_isolate_unittests.cc +++ b/runtime/dart_isolate_unittests.cc @@ -1,4 +1,4 @@ -// Copyright 2017 The Flutter Authors. All rights reserved. +// 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. diff --git a/runtime/dart_service_isolate.cc b/runtime/dart_service_isolate.cc index 7ffed425cad27..2bedd79f81716 100644 --- a/runtime/dart_service_isolate.cc +++ b/runtime/dart_service_isolate.cc @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/runtime/dart_service_isolate.h b/runtime/dart_service_isolate.h index a65b274a05698..cf4137a1e6b49 100644 --- a/runtime/dart_service_isolate.h +++ b/runtime/dart_service_isolate.h @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/runtime/dart_service_isolate_unittests.cc b/runtime/dart_service_isolate_unittests.cc index f2823689f6723..b0e2baf0b62af 100644 --- a/runtime/dart_service_isolate_unittests.cc +++ b/runtime/dart_service_isolate_unittests.cc @@ -1,4 +1,4 @@ -// Copyright 2018 The Flutter Authors. All rights reserved. +// 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. diff --git a/runtime/dart_snapshot.cc b/runtime/dart_snapshot.cc index 19d0821d92ae2..5c5fb1232bf11 100644 --- a/runtime/dart_snapshot.cc +++ b/runtime/dart_snapshot.cc @@ -1,4 +1,4 @@ -// Copyright 2017 The Flutter Authors. All rights reserved. +// 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. diff --git a/runtime/dart_snapshot.h b/runtime/dart_snapshot.h index c8aa17c3140ab..19d2968833f90 100644 --- a/runtime/dart_snapshot.h +++ b/runtime/dart_snapshot.h @@ -1,4 +1,4 @@ -// Copyright 2017 The Flutter Authors. All rights reserved. +// 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. diff --git a/runtime/dart_snapshot_buffer.cc b/runtime/dart_snapshot_buffer.cc index 342613f185c96..71b0f7113a7c9 100644 --- a/runtime/dart_snapshot_buffer.cc +++ b/runtime/dart_snapshot_buffer.cc @@ -1,4 +1,4 @@ -// Copyright 2017 The Flutter Authors. All rights reserved. +// 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. diff --git a/runtime/dart_snapshot_buffer.h b/runtime/dart_snapshot_buffer.h index 75fff29d7eaea..6a752c28a884f 100644 --- a/runtime/dart_snapshot_buffer.h +++ b/runtime/dart_snapshot_buffer.h @@ -1,4 +1,4 @@ -// Copyright 2017 The Flutter Authors. All rights reserved. +// 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. diff --git a/runtime/dart_vm.cc b/runtime/dart_vm.cc index c7b9b97110b8f..55e37f9dd3db3 100644 --- a/runtime/dart_vm.cc +++ b/runtime/dart_vm.cc @@ -1,4 +1,4 @@ -// Copyright 2017 The Flutter Authors. All rights reserved. +// 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. diff --git a/runtime/dart_vm.h b/runtime/dart_vm.h index b853f026c328f..9a1bde888dd86 100644 --- a/runtime/dart_vm.h +++ b/runtime/dart_vm.h @@ -1,4 +1,4 @@ -// Copyright 2017 The Flutter Authors. All rights reserved. +// 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. diff --git a/runtime/dart_vm_unittests.cc b/runtime/dart_vm_unittests.cc index 94d5dadaaec1f..21e3d3d3fa58f 100644 --- a/runtime/dart_vm_unittests.cc +++ b/runtime/dart_vm_unittests.cc @@ -1,4 +1,4 @@ -// Copyright 2017 The Flutter Authors. All rights reserved. +// 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. diff --git a/runtime/embedder_resources.cc b/runtime/embedder_resources.cc index 102bdae7b3a00..2eb73880d3d08 100644 --- a/runtime/embedder_resources.cc +++ b/runtime/embedder_resources.cc @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/runtime/embedder_resources.h b/runtime/embedder_resources.h index eb3a0b833fdbf..1ae866a54a75f 100644 --- a/runtime/embedder_resources.h +++ b/runtime/embedder_resources.h @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/runtime/fixtures/simple_main.dart b/runtime/fixtures/simple_main.dart index 552dfbe344902..dc744d2777e3b 100644 --- a/runtime/fixtures/simple_main.dart +++ b/runtime/fixtures/simple_main.dart @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/runtime/runtime_controller.cc b/runtime/runtime_controller.cc index ffc544aa10329..6af501054e586 100644 --- a/runtime/runtime_controller.cc +++ b/runtime/runtime_controller.cc @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/runtime/runtime_controller.h b/runtime/runtime_controller.h index 839fcd6a327e0..b9b4e7ddb52b9 100644 --- a/runtime/runtime_controller.h +++ b/runtime/runtime_controller.h @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/runtime/runtime_delegate.cc b/runtime/runtime_delegate.cc index 902672be06d8f..65e86bbde539e 100644 --- a/runtime/runtime_delegate.cc +++ b/runtime/runtime_delegate.cc @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/runtime/runtime_delegate.h b/runtime/runtime_delegate.h index 2a9bded0a24f0..98b3684ac55d2 100644 --- a/runtime/runtime_delegate.h +++ b/runtime/runtime_delegate.h @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/runtime/service_protocol.cc b/runtime/service_protocol.cc index 207e683a90ebc..25a52f72f87aa 100644 --- a/runtime/service_protocol.cc +++ b/runtime/service_protocol.cc @@ -1,4 +1,4 @@ -// Copyright 2017 The Flutter Authors. All rights reserved. +// 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. diff --git a/runtime/service_protocol.h b/runtime/service_protocol.h index 46a680733d860..5567b5e96366b 100644 --- a/runtime/service_protocol.h +++ b/runtime/service_protocol.h @@ -1,4 +1,4 @@ -// Copyright 2017 The Flutter Authors. All rights reserved. +// 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. diff --git a/runtime/start_up.cc b/runtime/start_up.cc index 22a4b966d34e2..a58a24afb03fa 100644 --- a/runtime/start_up.cc +++ b/runtime/start_up.cc @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/runtime/start_up.h b/runtime/start_up.h index 49e0726239a65..603069e16a255 100644 --- a/runtime/start_up.h +++ b/runtime/start_up.h @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/runtime/test_font_data.cc b/runtime/test_font_data.cc index 5a7d41acc781f..66d99e483d01d 100644 --- a/runtime/test_font_data.cc +++ b/runtime/test_font_data.cc @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/runtime/test_font_data.h b/runtime/test_font_data.h index 0cdc9a87ddec0..2f4c7bff12a5c 100644 --- a/runtime/test_font_data.h +++ b/runtime/test_font_data.h @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/BUILD.gn b/shell/BUILD.gn index 0672fae2edb95..e4bfd9e8fda5d 100644 --- a/shell/BUILD.gn +++ b/shell/BUILD.gn @@ -1,4 +1,4 @@ -# Copyright 2015 The Chromium Authors. All rights reserved. +# 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. diff --git a/shell/common/BUILD.gn b/shell/common/BUILD.gn index 3ed3e929cb91e..012dbccc9f5ce 100644 --- a/shell/common/BUILD.gn +++ b/shell/common/BUILD.gn @@ -1,4 +1,4 @@ -# Copyright 2016 The Chromium Authors. All rights reserved. +# 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. diff --git a/shell/common/animator.cc b/shell/common/animator.cc index 727d521b7184f..4c281e1eceba7 100644 --- a/shell/common/animator.cc +++ b/shell/common/animator.cc @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/common/animator.h b/shell/common/animator.h index 470f04b542881..2d60475621562 100644 --- a/shell/common/animator.h +++ b/shell/common/animator.h @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/common/engine.cc b/shell/common/engine.cc index 7b830a5616498..139c97cf99172 100644 --- a/shell/common/engine.cc +++ b/shell/common/engine.cc @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/common/engine.h b/shell/common/engine.h index 2f34dcf3db31d..eb3a9f6d46612 100644 --- a/shell/common/engine.h +++ b/shell/common/engine.h @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/common/io_manager.cc b/shell/common/io_manager.cc index c92df1e910c99..e97222eb40e70 100644 --- a/shell/common/io_manager.cc +++ b/shell/common/io_manager.cc @@ -1,4 +1,4 @@ -// Copyright 2017 The Flutter Authors. All rights reserved. +// 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. diff --git a/shell/common/io_manager.h b/shell/common/io_manager.h index 0b459e20571d5..2d6ec241d886d 100644 --- a/shell/common/io_manager.h +++ b/shell/common/io_manager.h @@ -1,4 +1,4 @@ -// Copyright 2017 The Flutter Authors. All rights reserved. +// 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. diff --git a/shell/common/isolate_configuration.cc b/shell/common/isolate_configuration.cc index 2d2323199128b..439eb940af548 100644 --- a/shell/common/isolate_configuration.cc +++ b/shell/common/isolate_configuration.cc @@ -1,4 +1,4 @@ -// Copyright 2018 The Flutter Authors. All rights reserved. +// 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. diff --git a/shell/common/isolate_configuration.h b/shell/common/isolate_configuration.h index 3983d07d61e0c..e9f8d66b2e433 100644 --- a/shell/common/isolate_configuration.h +++ b/shell/common/isolate_configuration.h @@ -1,4 +1,4 @@ -// Copyright 2018 The Flutter Authors. All rights reserved. +// 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. diff --git a/shell/common/persistent_cache.cc b/shell/common/persistent_cache.cc index f7327a40b1686..3d6737afb49a2 100644 --- a/shell/common/persistent_cache.cc +++ b/shell/common/persistent_cache.cc @@ -1,4 +1,4 @@ -// Copyright 2018 The Flutter Authors. All rights reserved. +// 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. diff --git a/shell/common/persistent_cache.h b/shell/common/persistent_cache.h index 2bc1280d63c3e..32465a5c8c091 100644 --- a/shell/common/persistent_cache.h +++ b/shell/common/persistent_cache.h @@ -1,4 +1,4 @@ -// Copyright 2018 The Flutter Authors. All rights reserved. +// 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. diff --git a/shell/common/platform_view.cc b/shell/common/platform_view.cc index 76c01dca9cef0..4a4e7df074248 100644 --- a/shell/common/platform_view.cc +++ b/shell/common/platform_view.cc @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/common/platform_view.h b/shell/common/platform_view.h index 153cae71d53a0..ed3b6e999a3ea 100644 --- a/shell/common/platform_view.h +++ b/shell/common/platform_view.h @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/common/rasterizer.cc b/shell/common/rasterizer.cc index 848590beb110d..f69a268861952 100644 --- a/shell/common/rasterizer.cc +++ b/shell/common/rasterizer.cc @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/common/rasterizer.h b/shell/common/rasterizer.h index 5bffb104f8519..4a7ca3a5cb847 100644 --- a/shell/common/rasterizer.h +++ b/shell/common/rasterizer.h @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/common/run_configuration.cc b/shell/common/run_configuration.cc index 4439d8f57413d..122b45e6b0eff 100644 --- a/shell/common/run_configuration.cc +++ b/shell/common/run_configuration.cc @@ -1,4 +1,4 @@ -// Copyright 2017 The Flutter Authors. All rights reserved. +// 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. diff --git a/shell/common/run_configuration.h b/shell/common/run_configuration.h index 7baeb30b9a55f..7cdebdd9f4a6b 100644 --- a/shell/common/run_configuration.h +++ b/shell/common/run_configuration.h @@ -1,4 +1,4 @@ -// Copyright 2017 The Flutter Authors. All rights reserved. +// 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. diff --git a/shell/common/shell.cc b/shell/common/shell.cc index 7fad4aef95d0e..c27525a609f45 100644 --- a/shell/common/shell.cc +++ b/shell/common/shell.cc @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/common/shell.h b/shell/common/shell.h index 62723fde78521..75404860f0f63 100644 --- a/shell/common/shell.h +++ b/shell/common/shell.h @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/common/shell_benchmarks.cc b/shell/common/shell_benchmarks.cc index 9d26a068bd327..df15b8f1b40ff 100644 --- a/shell/common/shell_benchmarks.cc +++ b/shell/common/shell_benchmarks.cc @@ -1,4 +1,4 @@ -// Copyright 2018 The Flutter Authors. All rights reserved. +// 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. diff --git a/shell/common/shell_unittests.cc b/shell/common/shell_unittests.cc index 91e0cf6f12168..aa4e86690ffe4 100644 --- a/shell/common/shell_unittests.cc +++ b/shell/common/shell_unittests.cc @@ -1,4 +1,4 @@ -// Copyright 2017 The Flutter Authors. All rights reserved. +// 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. diff --git a/shell/common/skia_event_tracer_impl.cc b/shell/common/skia_event_tracer_impl.cc index 2f1c386f08a0b..7b073a729638e 100644 --- a/shell/common/skia_event_tracer_impl.cc +++ b/shell/common/skia_event_tracer_impl.cc @@ -1,4 +1,4 @@ -// Copyright 2014 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/common/skia_event_tracer_impl.h b/shell/common/skia_event_tracer_impl.h index 55305b9cbdd4b..12e2fc41dee85 100644 --- a/shell/common/skia_event_tracer_impl.h +++ b/shell/common/skia_event_tracer_impl.h @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/common/surface.cc b/shell/common/surface.cc index 54fc364fa96fa..5cb621e0fd0d0 100644 --- a/shell/common/surface.cc +++ b/shell/common/surface.cc @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/common/surface.h b/shell/common/surface.h index 324ef4cb6df42..cd49110c8c7b4 100644 --- a/shell/common/surface.h +++ b/shell/common/surface.h @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/common/switches.cc b/shell/common/switches.cc index 98f0bb353015f..d2b4d56eb2070 100644 --- a/shell/common/switches.cc +++ b/shell/common/switches.cc @@ -1,4 +1,4 @@ -// Copyright 2013 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/common/switches.h b/shell/common/switches.h index bf23d06175cd1..bbaa5b4760ad1 100644 --- a/shell/common/switches.h +++ b/shell/common/switches.h @@ -1,4 +1,4 @@ -// Copyright 2013 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/common/thread_host.cc b/shell/common/thread_host.cc index f35594829d5d9..1845a3c529afb 100644 --- a/shell/common/thread_host.cc +++ b/shell/common/thread_host.cc @@ -1,4 +1,4 @@ -// Copyright 2017 The Flutter Authors. All rights reserved. +// 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. diff --git a/shell/common/thread_host.h b/shell/common/thread_host.h index 4fbe0f130910d..a0a6875b39878 100644 --- a/shell/common/thread_host.h +++ b/shell/common/thread_host.h @@ -1,4 +1,4 @@ -// Copyright 2017 The Flutter Authors. All rights reserved. +// 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. diff --git a/shell/common/vsync_waiter.cc b/shell/common/vsync_waiter.cc index 1629db908a685..eee6b54193d33 100644 --- a/shell/common/vsync_waiter.cc +++ b/shell/common/vsync_waiter.cc @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/common/vsync_waiter.h b/shell/common/vsync_waiter.h index a787e3554f993..0e3012c2de95e 100644 --- a/shell/common/vsync_waiter.h +++ b/shell/common/vsync_waiter.h @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/common/vsync_waiter_fallback.cc b/shell/common/vsync_waiter_fallback.cc index f8e091495e59d..a768380c4314b 100644 --- a/shell/common/vsync_waiter_fallback.cc +++ b/shell/common/vsync_waiter_fallback.cc @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/common/vsync_waiter_fallback.h b/shell/common/vsync_waiter_fallback.h index 1289dd91bd532..92930ee192c61 100644 --- a/shell/common/vsync_waiter_fallback.h +++ b/shell/common/vsync_waiter_fallback.h @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/config.gni b/shell/config.gni index 0c31d3acd316f..3088b2cc6544a 100644 --- a/shell/config.gni +++ b/shell/config.gni @@ -1,4 +1,4 @@ -# Copyright 2015 The Chromium Authors. All rights reserved. +# 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. diff --git a/shell/gpu/BUILD.gn b/shell/gpu/BUILD.gn index 2ad78b45d7a25..9356c86b1d2c1 100644 --- a/shell/gpu/BUILD.gn +++ b/shell/gpu/BUILD.gn @@ -1,4 +1,4 @@ -# Copyright 2018 The Flutter Authors. All rights reserved. +# 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. diff --git a/shell/gpu/gpu.gni b/shell/gpu/gpu.gni index 28eb061aea350..3a5771f47a178 100644 --- a/shell/gpu/gpu.gni +++ b/shell/gpu/gpu.gni @@ -1,4 +1,4 @@ -# Copyright 2016 The Chromium Authors. All rights reserved. +# 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. diff --git a/shell/gpu/gpu_surface_gl.cc b/shell/gpu/gpu_surface_gl.cc index 6fd78d8ae6810..91d004440366c 100644 --- a/shell/gpu/gpu_surface_gl.cc +++ b/shell/gpu/gpu_surface_gl.cc @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/gpu/gpu_surface_gl.h b/shell/gpu/gpu_surface_gl.h index 1b768c18cbb1a..6929604616436 100644 --- a/shell/gpu/gpu_surface_gl.h +++ b/shell/gpu/gpu_surface_gl.h @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/gpu/gpu_surface_software.cc b/shell/gpu/gpu_surface_software.cc index 3678f7ad28264..cea507c67bf01 100644 --- a/shell/gpu/gpu_surface_software.cc +++ b/shell/gpu/gpu_surface_software.cc @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/gpu/gpu_surface_software.h b/shell/gpu/gpu_surface_software.h index 29ddb126eb6b3..eb64920a33630 100644 --- a/shell/gpu/gpu_surface_software.h +++ b/shell/gpu/gpu_surface_software.h @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/gpu/gpu_surface_vulkan.cc b/shell/gpu/gpu_surface_vulkan.cc index 728fca6a0028e..3c42bf0876adc 100644 --- a/shell/gpu/gpu_surface_vulkan.cc +++ b/shell/gpu/gpu_surface_vulkan.cc @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/gpu/gpu_surface_vulkan.h b/shell/gpu/gpu_surface_vulkan.h index fe4a34b814240..ece0cbb81b97c 100644 --- a/shell/gpu/gpu_surface_vulkan.h +++ b/shell/gpu/gpu_surface_vulkan.h @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/BUILD.gn b/shell/platform/BUILD.gn index 1e12ffe1e604e..3a613d6b22b85 100644 --- a/shell/platform/BUILD.gn +++ b/shell/platform/BUILD.gn @@ -1,4 +1,4 @@ -# Copyright 2016 The Chromium Authors. All rights reserved. +# 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. diff --git a/shell/platform/android/AndroidManifest.xml b/shell/platform/android/AndroidManifest.xml index 1599c802a6af2..2c5c91095d2f2 100644 --- a/shell/platform/android/AndroidManifest.xml +++ b/shell/platform/android/AndroidManifest.xml @@ -1,5 +1,5 @@ - diff --git a/shell/platform/android/BUILD.gn b/shell/platform/android/BUILD.gn index f332a60f7a97d..eb8bff4cf00fd 100644 --- a/shell/platform/android/BUILD.gn +++ b/shell/platform/android/BUILD.gn @@ -1,4 +1,4 @@ -# Copyright 2016 The Chromium Authors. All rights reserved. +# 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. diff --git a/shell/platform/android/android_context_gl.cc b/shell/platform/android/android_context_gl.cc index b61f4ec7433c8..8ac43b4031a48 100644 --- a/shell/platform/android/android_context_gl.cc +++ b/shell/platform/android/android_context_gl.cc @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/android/android_context_gl.h b/shell/platform/android/android_context_gl.h index 7b420211f34df..e29dc7ac4f69d 100644 --- a/shell/platform/android/android_context_gl.h +++ b/shell/platform/android/android_context_gl.h @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/android/android_environment_gl.cc b/shell/platform/android/android_environment_gl.cc index 0482367823672..3d9f919bb0110 100644 --- a/shell/platform/android/android_environment_gl.cc +++ b/shell/platform/android/android_environment_gl.cc @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/android/android_environment_gl.h b/shell/platform/android/android_environment_gl.h index 3b9124e275de4..710064e75da12 100644 --- a/shell/platform/android/android_environment_gl.h +++ b/shell/platform/android/android_environment_gl.h @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/android/android_external_texture_gl.cc b/shell/platform/android/android_external_texture_gl.cc index f644376e5fdd4..c587becd60406 100644 --- a/shell/platform/android/android_external_texture_gl.cc +++ b/shell/platform/android/android_external_texture_gl.cc @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/android/android_external_texture_gl.h b/shell/platform/android/android_external_texture_gl.h index b96eb33191f5d..7ac9ce82b3516 100644 --- a/shell/platform/android/android_external_texture_gl.h +++ b/shell/platform/android/android_external_texture_gl.h @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/android/android_native_window.cc b/shell/platform/android/android_native_window.cc index d84e078857ac3..af8b179d1b094 100644 --- a/shell/platform/android/android_native_window.cc +++ b/shell/platform/android/android_native_window.cc @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/android/android_native_window.h b/shell/platform/android/android_native_window.h index 3337ba228107c..04938c59630b8 100644 --- a/shell/platform/android/android_native_window.h +++ b/shell/platform/android/android_native_window.h @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/android/android_shell_holder.cc b/shell/platform/android/android_shell_holder.cc index f7df86addccc6..4c9a1ba076ba4 100644 --- a/shell/platform/android/android_shell_holder.cc +++ b/shell/platform/android/android_shell_holder.cc @@ -1,4 +1,4 @@ -// Copyright 2018 The Flutter Authors. All rights reserved. +// 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. diff --git a/shell/platform/android/android_shell_holder.h b/shell/platform/android/android_shell_holder.h index e401816d3da7c..1fbca8a288f3c 100644 --- a/shell/platform/android/android_shell_holder.h +++ b/shell/platform/android/android_shell_holder.h @@ -1,4 +1,4 @@ -// Copyright 2018 The Flutter Authors. All rights reserved. +// 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. diff --git a/shell/platform/android/android_surface.cc b/shell/platform/android/android_surface.cc index a8b41bacbf7c5..cb1ee518ab941 100644 --- a/shell/platform/android/android_surface.cc +++ b/shell/platform/android/android_surface.cc @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/android/android_surface.h b/shell/platform/android/android_surface.h index e0a413c1e0dc2..0ecc9ffc76bc1 100644 --- a/shell/platform/android/android_surface.h +++ b/shell/platform/android/android_surface.h @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/android/android_surface_gl.cc b/shell/platform/android/android_surface_gl.cc index 207d2631a0404..4e1ff9f41cd6f 100644 --- a/shell/platform/android/android_surface_gl.cc +++ b/shell/platform/android/android_surface_gl.cc @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/android/android_surface_gl.h b/shell/platform/android/android_surface_gl.h index 5562523799096..11badede13e6c 100644 --- a/shell/platform/android/android_surface_gl.h +++ b/shell/platform/android/android_surface_gl.h @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/android/android_surface_software.cc b/shell/platform/android/android_surface_software.cc index a577ade5c91fb..475c1de26e48a 100644 --- a/shell/platform/android/android_surface_software.cc +++ b/shell/platform/android/android_surface_software.cc @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/android/android_surface_software.h b/shell/platform/android/android_surface_software.h index 6301515ca4254..c7410642cb22d 100644 --- a/shell/platform/android/android_surface_software.h +++ b/shell/platform/android/android_surface_software.h @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/android/android_surface_vulkan.cc b/shell/platform/android/android_surface_vulkan.cc index 05848f042715c..7753a42081550 100644 --- a/shell/platform/android/android_surface_vulkan.cc +++ b/shell/platform/android/android_surface_vulkan.cc @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/android/android_surface_vulkan.h b/shell/platform/android/android_surface_vulkan.h index 3bec57febc502..ef6eec003a431 100644 --- a/shell/platform/android/android_surface_vulkan.h +++ b/shell/platform/android/android_surface_vulkan.h @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/android/apk_asset_provider.h b/shell/platform/android/apk_asset_provider.h index e425ad205c575..bb8215a191a28 100644 --- a/shell/platform/android/apk_asset_provider.h +++ b/shell/platform/android/apk_asset_provider.h @@ -1,4 +1,4 @@ -// Copyright 2018 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/android/flutter_main.cc b/shell/platform/android/flutter_main.cc index 6311ed72a2b2a..bfbc4c1ce44e6 100644 --- a/shell/platform/android/flutter_main.cc +++ b/shell/platform/android/flutter_main.cc @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/android/flutter_main.h b/shell/platform/android/flutter_main.h index 7d738a15b9c7f..4ce8e49658662 100644 --- a/shell/platform/android/flutter_main.h +++ b/shell/platform/android/flutter_main.h @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/android/io/flutter/app/FlutterActivity.java b/shell/platform/android/io/flutter/app/FlutterActivity.java index 9751ef4a009ec..33c7e75d1772d 100644 --- a/shell/platform/android/io/flutter/app/FlutterActivity.java +++ b/shell/platform/android/io/flutter/app/FlutterActivity.java @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. @@ -109,7 +109,7 @@ public void onBackPressed() { super.onBackPressed(); } } - + @Override protected void onStop() { eventDelegate.onStop(); diff --git a/shell/platform/android/io/flutter/app/FlutterActivityDelegate.java b/shell/platform/android/io/flutter/app/FlutterActivityDelegate.java index 5c5c367723272..dad63b9e1a8e5 100644 --- a/shell/platform/android/io/flutter/app/FlutterActivityDelegate.java +++ b/shell/platform/android/io/flutter/app/FlutterActivityDelegate.java @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/android/io/flutter/app/FlutterActivityEvents.java b/shell/platform/android/io/flutter/app/FlutterActivityEvents.java index a9a51d7a7bfcb..69e783f59db19 100644 --- a/shell/platform/android/io/flutter/app/FlutterActivityEvents.java +++ b/shell/platform/android/io/flutter/app/FlutterActivityEvents.java @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. @@ -63,7 +63,7 @@ public interface FlutterActivityEvents * @see android.app.Activity#onStop() */ void onStop(); - + /** * Invoked when the activity has detected the user's press of the back key. * diff --git a/shell/platform/android/io/flutter/app/FlutterApplication.java b/shell/platform/android/io/flutter/app/FlutterApplication.java index d25d68eda35f9..5ac61fd449f1f 100644 --- a/shell/platform/android/io/flutter/app/FlutterApplication.java +++ b/shell/platform/android/io/flutter/app/FlutterApplication.java @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/android/io/flutter/app/FlutterFragmentActivity.java b/shell/platform/android/io/flutter/app/FlutterFragmentActivity.java index 1ecd8857666bd..b483ae9fd1e96 100644 --- a/shell/platform/android/io/flutter/app/FlutterFragmentActivity.java +++ b/shell/platform/android/io/flutter/app/FlutterFragmentActivity.java @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/android/io/flutter/app/FlutterPluginRegistry.java b/shell/platform/android/io/flutter/app/FlutterPluginRegistry.java index 4a8617ff2f3a6..02452620d9418 100644 --- a/shell/platform/android/io/flutter/app/FlutterPluginRegistry.java +++ b/shell/platform/android/io/flutter/app/FlutterPluginRegistry.java @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/android/io/flutter/plugin/common/ActivityLifecycleListener.java b/shell/platform/android/io/flutter/plugin/common/ActivityLifecycleListener.java index 5c27bd9613f45..beb51ecb54aca 100644 --- a/shell/platform/android/io/flutter/plugin/common/ActivityLifecycleListener.java +++ b/shell/platform/android/io/flutter/plugin/common/ActivityLifecycleListener.java @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/android/io/flutter/plugin/common/BasicMessageChannel.java b/shell/platform/android/io/flutter/plugin/common/BasicMessageChannel.java index 3e7a285793a54..74a193880eb31 100644 --- a/shell/platform/android/io/flutter/plugin/common/BasicMessageChannel.java +++ b/shell/platform/android/io/flutter/plugin/common/BasicMessageChannel.java @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/android/io/flutter/plugin/common/BinaryCodec.java b/shell/platform/android/io/flutter/plugin/common/BinaryCodec.java index 6514dc21b1148..2cc407ebba847 100644 --- a/shell/platform/android/io/flutter/plugin/common/BinaryCodec.java +++ b/shell/platform/android/io/flutter/plugin/common/BinaryCodec.java @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/android/io/flutter/plugin/common/BinaryMessenger.java b/shell/platform/android/io/flutter/plugin/common/BinaryMessenger.java index b382aba0b44fb..c8f54e9e88f2b 100644 --- a/shell/platform/android/io/flutter/plugin/common/BinaryMessenger.java +++ b/shell/platform/android/io/flutter/plugin/common/BinaryMessenger.java @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/android/io/flutter/plugin/common/EventChannel.java b/shell/platform/android/io/flutter/plugin/common/EventChannel.java index 8b9c1cbe7881b..57443a0aa1816 100644 --- a/shell/platform/android/io/flutter/plugin/common/EventChannel.java +++ b/shell/platform/android/io/flutter/plugin/common/EventChannel.java @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/android/io/flutter/plugin/common/FlutterException.java b/shell/platform/android/io/flutter/plugin/common/FlutterException.java index 72d1b9029d901..61eb12c13c11b 100644 --- a/shell/platform/android/io/flutter/plugin/common/FlutterException.java +++ b/shell/platform/android/io/flutter/plugin/common/FlutterException.java @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. @@ -10,7 +10,7 @@ public class FlutterException extends RuntimeException { public final String code; public final Object details; - + FlutterException(String code, String message, Object details) { super(message); assert code != null; diff --git a/shell/platform/android/io/flutter/plugin/common/JSONMessageCodec.java b/shell/platform/android/io/flutter/plugin/common/JSONMessageCodec.java index 85d14fcc290ee..6b2b88d0d0a23 100644 --- a/shell/platform/android/io/flutter/plugin/common/JSONMessageCodec.java +++ b/shell/platform/android/io/flutter/plugin/common/JSONMessageCodec.java @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/android/io/flutter/plugin/common/JSONMethodCodec.java b/shell/platform/android/io/flutter/plugin/common/JSONMethodCodec.java index 78c09a9d4935b..c87771d66a01e 100644 --- a/shell/platform/android/io/flutter/plugin/common/JSONMethodCodec.java +++ b/shell/platform/android/io/flutter/plugin/common/JSONMethodCodec.java @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/android/io/flutter/plugin/common/MessageCodec.java b/shell/platform/android/io/flutter/plugin/common/MessageCodec.java index 125186f213017..a1a0590df476c 100644 --- a/shell/platform/android/io/flutter/plugin/common/MessageCodec.java +++ b/shell/platform/android/io/flutter/plugin/common/MessageCodec.java @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/android/io/flutter/plugin/common/MethodCall.java b/shell/platform/android/io/flutter/plugin/common/MethodCall.java index 6864e42a4643c..9206ba5ecee25 100644 --- a/shell/platform/android/io/flutter/plugin/common/MethodCall.java +++ b/shell/platform/android/io/flutter/plugin/common/MethodCall.java @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/android/io/flutter/plugin/common/MethodChannel.java b/shell/platform/android/io/flutter/plugin/common/MethodChannel.java index b05c38027e836..d16671bc1c91e 100644 --- a/shell/platform/android/io/flutter/plugin/common/MethodChannel.java +++ b/shell/platform/android/io/flutter/plugin/common/MethodChannel.java @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/android/io/flutter/plugin/common/MethodCodec.java b/shell/platform/android/io/flutter/plugin/common/MethodCodec.java index d4e7307230913..49e058ae7efca 100644 --- a/shell/platform/android/io/flutter/plugin/common/MethodCodec.java +++ b/shell/platform/android/io/flutter/plugin/common/MethodCodec.java @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/android/io/flutter/plugin/common/PluginRegistry.java b/shell/platform/android/io/flutter/plugin/common/PluginRegistry.java index 4fd8a4def4368..33f30b300a8c8 100644 --- a/shell/platform/android/io/flutter/plugin/common/PluginRegistry.java +++ b/shell/platform/android/io/flutter/plugin/common/PluginRegistry.java @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/android/io/flutter/plugin/common/StandardMessageCodec.java b/shell/platform/android/io/flutter/plugin/common/StandardMessageCodec.java index db769b0482aef..63d63b2a2e236 100644 --- a/shell/platform/android/io/flutter/plugin/common/StandardMessageCodec.java +++ b/shell/platform/android/io/flutter/plugin/common/StandardMessageCodec.java @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/android/io/flutter/plugin/common/StandardMethodCodec.java b/shell/platform/android/io/flutter/plugin/common/StandardMethodCodec.java index 1284c11390e09..132f075f798e6 100644 --- a/shell/platform/android/io/flutter/plugin/common/StandardMethodCodec.java +++ b/shell/platform/android/io/flutter/plugin/common/StandardMethodCodec.java @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/android/io/flutter/plugin/common/StringCodec.java b/shell/platform/android/io/flutter/plugin/common/StringCodec.java index 9851cf4ccf60c..18f6a102df31c 100644 --- a/shell/platform/android/io/flutter/plugin/common/StringCodec.java +++ b/shell/platform/android/io/flutter/plugin/common/StringCodec.java @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/android/io/flutter/plugin/editing/InputConnectionAdaptor.java b/shell/platform/android/io/flutter/plugin/editing/InputConnectionAdaptor.java index ae3a1381e230a..e169d6ff6b080 100644 --- a/shell/platform/android/io/flutter/plugin/editing/InputConnectionAdaptor.java +++ b/shell/platform/android/io/flutter/plugin/editing/InputConnectionAdaptor.java @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/android/io/flutter/plugin/editing/TextInputPlugin.java b/shell/platform/android/io/flutter/plugin/editing/TextInputPlugin.java index 220776b35140a..cd7282f87b968 100644 --- a/shell/platform/android/io/flutter/plugin/editing/TextInputPlugin.java +++ b/shell/platform/android/io/flutter/plugin/editing/TextInputPlugin.java @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java b/shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java index 4396782279413..0722406645d5c 100644 --- a/shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java +++ b/shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/android/io/flutter/plugin/platform/PlatformView.java b/shell/platform/android/io/flutter/plugin/platform/PlatformView.java index 6e379e96a6ba0..36240f0cc3805 100644 --- a/shell/platform/android/io/flutter/plugin/platform/PlatformView.java +++ b/shell/platform/android/io/flutter/plugin/platform/PlatformView.java @@ -1,4 +1,4 @@ -// Copyright 2018 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/android/io/flutter/plugin/platform/PlatformViewFactory.java b/shell/platform/android/io/flutter/plugin/platform/PlatformViewFactory.java index f6fcd35b9c55f..e47f6e854ee82 100644 --- a/shell/platform/android/io/flutter/plugin/platform/PlatformViewFactory.java +++ b/shell/platform/android/io/flutter/plugin/platform/PlatformViewFactory.java @@ -1,4 +1,4 @@ -// Copyright 2018 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/android/io/flutter/plugin/platform/PlatformViewRegistry.java b/shell/platform/android/io/flutter/plugin/platform/PlatformViewRegistry.java index 0a45ab7a65b59..9b48d76799512 100644 --- a/shell/platform/android/io/flutter/plugin/platform/PlatformViewRegistry.java +++ b/shell/platform/android/io/flutter/plugin/platform/PlatformViewRegistry.java @@ -1,4 +1,4 @@ -// Copyright 2018 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/android/io/flutter/plugin/platform/PlatformViewRegistryImpl.java b/shell/platform/android/io/flutter/plugin/platform/PlatformViewRegistryImpl.java index ea1b02c4785ab..5c303034c764f 100644 --- a/shell/platform/android/io/flutter/plugin/platform/PlatformViewRegistryImpl.java +++ b/shell/platform/android/io/flutter/plugin/platform/PlatformViewRegistryImpl.java @@ -1,4 +1,4 @@ -// Copyright 2018 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/android/io/flutter/plugin/platform/PlatformViewsController.java b/shell/platform/android/io/flutter/plugin/platform/PlatformViewsController.java index 41b95dc5c7a2c..8e3afa6ca93c6 100644 --- a/shell/platform/android/io/flutter/plugin/platform/PlatformViewsController.java +++ b/shell/platform/android/io/flutter/plugin/platform/PlatformViewsController.java @@ -1,4 +1,4 @@ -// Copyright 2018 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/android/io/flutter/plugin/platform/SingleViewPresentation.java b/shell/platform/android/io/flutter/plugin/platform/SingleViewPresentation.java index 2ea3934ae88ee..24675bbbf8a28 100644 --- a/shell/platform/android/io/flutter/plugin/platform/SingleViewPresentation.java +++ b/shell/platform/android/io/flutter/plugin/platform/SingleViewPresentation.java @@ -1,4 +1,4 @@ -// Copyright 2018 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/android/io/flutter/plugin/platform/VirtualDisplayController.java b/shell/platform/android/io/flutter/plugin/platform/VirtualDisplayController.java index 4495b7388b016..77cf6a9dd06bc 100644 --- a/shell/platform/android/io/flutter/plugin/platform/VirtualDisplayController.java +++ b/shell/platform/android/io/flutter/plugin/platform/VirtualDisplayController.java @@ -1,4 +1,4 @@ -// Copyright 2018 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/android/io/flutter/util/PathUtils.java b/shell/platform/android/io/flutter/util/PathUtils.java index df187cbc0c1ec..94cf131916af2 100644 --- a/shell/platform/android/io/flutter/util/PathUtils.java +++ b/shell/platform/android/io/flutter/util/PathUtils.java @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/android/io/flutter/util/Preconditions.java b/shell/platform/android/io/flutter/util/Preconditions.java index cf39129d32910..968d2cb18e5f3 100644 --- a/shell/platform/android/io/flutter/util/Preconditions.java +++ b/shell/platform/android/io/flutter/util/Preconditions.java @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/android/io/flutter/view/AccessibilityBridge.java b/shell/platform/android/io/flutter/view/AccessibilityBridge.java index 261c3028a9849..4105ea8ef1211 100644 --- a/shell/platform/android/io/flutter/view/AccessibilityBridge.java +++ b/shell/platform/android/io/flutter/view/AccessibilityBridge.java @@ -1,4 +1,4 @@ -// Copyright 2013 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/android/io/flutter/view/FlutterCallbackInformation.java b/shell/platform/android/io/flutter/view/FlutterCallbackInformation.java index 20006dd60547c..f6157a0f31d1a 100644 --- a/shell/platform/android/io/flutter/view/FlutterCallbackInformation.java +++ b/shell/platform/android/io/flutter/view/FlutterCallbackInformation.java @@ -1,4 +1,4 @@ -// Copyright 2018 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/android/io/flutter/view/FlutterMain.java b/shell/platform/android/io/flutter/view/FlutterMain.java index cb4bd64e485bf..8223f3c4c36f2 100644 --- a/shell/platform/android/io/flutter/view/FlutterMain.java +++ b/shell/platform/android/io/flutter/view/FlutterMain.java @@ -1,4 +1,4 @@ -// Copyright 2013 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/android/io/flutter/view/FlutterNativeView.java b/shell/platform/android/io/flutter/view/FlutterNativeView.java index 3a9ab500bc6a8..00476172b42ae 100644 --- a/shell/platform/android/io/flutter/view/FlutterNativeView.java +++ b/shell/platform/android/io/flutter/view/FlutterNativeView.java @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/android/io/flutter/view/FlutterRunArguments.java b/shell/platform/android/io/flutter/view/FlutterRunArguments.java index f322cb8d24db5..04e13afbb5872 100644 --- a/shell/platform/android/io/flutter/view/FlutterRunArguments.java +++ b/shell/platform/android/io/flutter/view/FlutterRunArguments.java @@ -1,4 +1,4 @@ -// Copyright 2018 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/android/io/flutter/view/FlutterView.java b/shell/platform/android/io/flutter/view/FlutterView.java index d837522df052f..6b01e3c176504 100644 --- a/shell/platform/android/io/flutter/view/FlutterView.java +++ b/shell/platform/android/io/flutter/view/FlutterView.java @@ -1,4 +1,4 @@ -// Copyright 2013 The Chromium Authors. All rights reserved. +// 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. @@ -337,7 +337,7 @@ private void setLocales(Configuration config) { Locale locale = config.locale; // getScript() is gated because it is added in API 21. mFlutterLocalizationChannel.invokeMethod("setLocale", Arrays.asList(locale.getLanguage(), locale.getCountry(), Build.VERSION.SDK_INT >= 21 ? locale.getScript() : "", locale.getVariant())); - + } @Override diff --git a/shell/platform/android/io/flutter/view/ResourceCleaner.java b/shell/platform/android/io/flutter/view/ResourceCleaner.java index 7378a04d2d719..c45d2a22a4e41 100644 --- a/shell/platform/android/io/flutter/view/ResourceCleaner.java +++ b/shell/platform/android/io/flutter/view/ResourceCleaner.java @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/android/io/flutter/view/ResourceExtractor.java b/shell/platform/android/io/flutter/view/ResourceExtractor.java index a83d0530c5a6c..840977f3eaf54 100644 --- a/shell/platform/android/io/flutter/view/ResourceExtractor.java +++ b/shell/platform/android/io/flutter/view/ResourceExtractor.java @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/android/io/flutter/view/ResourcePaths.java b/shell/platform/android/io/flutter/view/ResourcePaths.java index 44bfb4a0a0c43..2e2305e0945a6 100644 --- a/shell/platform/android/io/flutter/view/ResourcePaths.java +++ b/shell/platform/android/io/flutter/view/ResourcePaths.java @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/android/io/flutter/view/TextureRegistry.java b/shell/platform/android/io/flutter/view/TextureRegistry.java index 992114dc07318..ed3134bb035dd 100644 --- a/shell/platform/android/io/flutter/view/TextureRegistry.java +++ b/shell/platform/android/io/flutter/view/TextureRegistry.java @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/android/io/flutter/view/VsyncWaiter.java b/shell/platform/android/io/flutter/view/VsyncWaiter.java index c7de31f860119..526d836167efd 100644 --- a/shell/platform/android/io/flutter/view/VsyncWaiter.java +++ b/shell/platform/android/io/flutter/view/VsyncWaiter.java @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/android/library_loader.cc b/shell/platform/android/library_loader.cc index 70a2b5af34da2..c625414470340 100644 --- a/shell/platform/android/library_loader.cc +++ b/shell/platform/android/library_loader.cc @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/android/platform_message_response_android.cc b/shell/platform/android/platform_message_response_android.cc index 3610d8baa0d73..d87e1a6237d22 100644 --- a/shell/platform/android/platform_message_response_android.cc +++ b/shell/platform/android/platform_message_response_android.cc @@ -1,4 +1,4 @@ -// Copyright 2018 The Flutter Authors. All rights reserved. +// 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. diff --git a/shell/platform/android/platform_message_response_android.h b/shell/platform/android/platform_message_response_android.h index fb4c5ac640645..71b080cc3348c 100644 --- a/shell/platform/android/platform_message_response_android.h +++ b/shell/platform/android/platform_message_response_android.h @@ -1,4 +1,4 @@ -// Copyright 2018 The Flutter Authors. All rights reserved. +// 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. diff --git a/shell/platform/android/platform_view_android.cc b/shell/platform/android/platform_view_android.cc index ee82b44e51604..034c059695014 100644 --- a/shell/platform/android/platform_view_android.cc +++ b/shell/platform/android/platform_view_android.cc @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/android/platform_view_android.h b/shell/platform/android/platform_view_android.h index 0a73fed04d5d6..c162ac5a2e8f3 100644 --- a/shell/platform/android/platform_view_android.h +++ b/shell/platform/android/platform_view_android.h @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/android/platform_view_android_jni.cc b/shell/platform/android/platform_view_android_jni.cc index eee6900cb2b11..a829e25f16654 100644 --- a/shell/platform/android/platform_view_android_jni.cc +++ b/shell/platform/android/platform_view_android_jni.cc @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/android/platform_view_android_jni.h b/shell/platform/android/platform_view_android_jni.h index 9a4a411a9d303..3423c745fd584 100644 --- a/shell/platform/android/platform_view_android_jni.h +++ b/shell/platform/android/platform_view_android_jni.h @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/android/vsync_waiter_android.cc b/shell/platform/android/vsync_waiter_android.cc index be04abcf1e61f..dc1cb11b3f21e 100644 --- a/shell/platform/android/vsync_waiter_android.cc +++ b/shell/platform/android/vsync_waiter_android.cc @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/android/vsync_waiter_android.h b/shell/platform/android/vsync_waiter_android.h index 6c664059ded28..46fa28fc48f2e 100644 --- a/shell/platform/android/vsync_waiter_android.h +++ b/shell/platform/android/vsync_waiter_android.h @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/darwin/BUILD.gn b/shell/platform/darwin/BUILD.gn index 3c04dda634945..0dba0a457e448 100644 --- a/shell/platform/darwin/BUILD.gn +++ b/shell/platform/darwin/BUILD.gn @@ -1,4 +1,4 @@ -# Copyright 2016 The Chromium Authors. All rights reserved. +# 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. diff --git a/shell/platform/darwin/common/BUILD.gn b/shell/platform/darwin/common/BUILD.gn index 38df59c502d75..8dd3387b3f871 100644 --- a/shell/platform/darwin/common/BUILD.gn +++ b/shell/platform/darwin/common/BUILD.gn @@ -1,4 +1,4 @@ -# Copyright 2016 The Chromium Authors. All rights reserved. +# 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. diff --git a/shell/platform/darwin/common/buffer_conversions.h b/shell/platform/darwin/common/buffer_conversions.h index 7b48a0c8b913d..a5b166d2e3c08 100644 --- a/shell/platform/darwin/common/buffer_conversions.h +++ b/shell/platform/darwin/common/buffer_conversions.h @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/darwin/common/buffer_conversions.mm b/shell/platform/darwin/common/buffer_conversions.mm index f7238f104db7d..237910b2cfbb4 100644 --- a/shell/platform/darwin/common/buffer_conversions.mm +++ b/shell/platform/darwin/common/buffer_conversions.mm @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/darwin/common/command_line.h b/shell/platform/darwin/common/command_line.h index 63add3f4285a0..fab7ff0aa21bf 100644 --- a/shell/platform/darwin/common/command_line.h +++ b/shell/platform/darwin/common/command_line.h @@ -1,4 +1,4 @@ -// Copyright 2017 The Flutter Authors. All rights reserved. +// 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. diff --git a/shell/platform/darwin/common/command_line.mm b/shell/platform/darwin/common/command_line.mm index 18e37f2b4f798..84ab3ca432c77 100644 --- a/shell/platform/darwin/common/command_line.mm +++ b/shell/platform/darwin/common/command_line.mm @@ -1,4 +1,4 @@ -// Copyright 2017 The Flutter Authors. All rights reserved. +// 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. diff --git a/shell/platform/darwin/ios/BUILD.gn b/shell/platform/darwin/ios/BUILD.gn index 80c2e31bd05f0..bca96ae9f5bd6 100644 --- a/shell/platform/darwin/ios/BUILD.gn +++ b/shell/platform/darwin/ios/BUILD.gn @@ -1,4 +1,4 @@ -# Copyright 2016 The Chromium Authors. All rights reserved. +# 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. diff --git a/shell/platform/darwin/ios/framework/Headers/Flutter.h b/shell/platform/darwin/ios/framework/Headers/Flutter.h index 0d2f831d8a1fe..364912afc04a8 100644 --- a/shell/platform/darwin/ios/framework/Headers/Flutter.h +++ b/shell/platform/darwin/ios/framework/Headers/Flutter.h @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/darwin/ios/framework/Headers/FlutterAppDelegate.h b/shell/platform/darwin/ios/framework/Headers/FlutterAppDelegate.h index 05c934b072c72..8684a22ea7733 100644 --- a/shell/platform/darwin/ios/framework/Headers/FlutterAppDelegate.h +++ b/shell/platform/darwin/ios/framework/Headers/FlutterAppDelegate.h @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/darwin/ios/framework/Headers/FlutterBinaryMessenger.h b/shell/platform/darwin/ios/framework/Headers/FlutterBinaryMessenger.h index 341aae91cdc5f..2c35fd42599c4 100644 --- a/shell/platform/darwin/ios/framework/Headers/FlutterBinaryMessenger.h +++ b/shell/platform/darwin/ios/framework/Headers/FlutterBinaryMessenger.h @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/darwin/ios/framework/Headers/FlutterCallbackCache.h b/shell/platform/darwin/ios/framework/Headers/FlutterCallbackCache.h index 8931d7e7b19fc..8849dca01e6d9 100644 --- a/shell/platform/darwin/ios/framework/Headers/FlutterCallbackCache.h +++ b/shell/platform/darwin/ios/framework/Headers/FlutterCallbackCache.h @@ -1,4 +1,4 @@ -// Copyright 2018 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/darwin/ios/framework/Headers/FlutterChannels.h b/shell/platform/darwin/ios/framework/Headers/FlutterChannels.h index 373f32293d609..d582ce46dc6bb 100644 --- a/shell/platform/darwin/ios/framework/Headers/FlutterChannels.h +++ b/shell/platform/darwin/ios/framework/Headers/FlutterChannels.h @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/darwin/ios/framework/Headers/FlutterCodecs.h b/shell/platform/darwin/ios/framework/Headers/FlutterCodecs.h index 4a8e0775ac0ae..0034a0709a09b 100644 --- a/shell/platform/darwin/ios/framework/Headers/FlutterCodecs.h +++ b/shell/platform/darwin/ios/framework/Headers/FlutterCodecs.h @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/darwin/ios/framework/Headers/FlutterDartProject.h b/shell/platform/darwin/ios/framework/Headers/FlutterDartProject.h index de491405fe601..f8850e202db4f 100644 --- a/shell/platform/darwin/ios/framework/Headers/FlutterDartProject.h +++ b/shell/platform/darwin/ios/framework/Headers/FlutterDartProject.h @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/darwin/ios/framework/Headers/FlutterEngine.h b/shell/platform/darwin/ios/framework/Headers/FlutterEngine.h index 0254139847e3a..1d435acd80b7f 100644 --- a/shell/platform/darwin/ios/framework/Headers/FlutterEngine.h +++ b/shell/platform/darwin/ios/framework/Headers/FlutterEngine.h @@ -1,4 +1,4 @@ -// Copyright 2018 The Flutter Authors. All rights reserved. +// 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. diff --git a/shell/platform/darwin/ios/framework/Headers/FlutterHeadlessDartRunner.h b/shell/platform/darwin/ios/framework/Headers/FlutterHeadlessDartRunner.h index eed2219fd821b..e51dc6d5068c0 100644 --- a/shell/platform/darwin/ios/framework/Headers/FlutterHeadlessDartRunner.h +++ b/shell/platform/darwin/ios/framework/Headers/FlutterHeadlessDartRunner.h @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/darwin/ios/framework/Headers/FlutterMacros.h b/shell/platform/darwin/ios/framework/Headers/FlutterMacros.h index d950856c73c5b..51b27bb789d6e 100644 --- a/shell/platform/darwin/ios/framework/Headers/FlutterMacros.h +++ b/shell/platform/darwin/ios/framework/Headers/FlutterMacros.h @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/darwin/ios/framework/Headers/FlutterPlatformViews.h b/shell/platform/darwin/ios/framework/Headers/FlutterPlatformViews.h index 2e3f85c6054e0..a8145fa628f95 100644 --- a/shell/platform/darwin/ios/framework/Headers/FlutterPlatformViews.h +++ b/shell/platform/darwin/ios/framework/Headers/FlutterPlatformViews.h @@ -1,4 +1,4 @@ -// Copyright 2018 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/darwin/ios/framework/Headers/FlutterPlugin.h b/shell/platform/darwin/ios/framework/Headers/FlutterPlugin.h index 8c15214a48a73..e76416b9fbcd5 100644 --- a/shell/platform/darwin/ios/framework/Headers/FlutterPlugin.h +++ b/shell/platform/darwin/ios/framework/Headers/FlutterPlugin.h @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/darwin/ios/framework/Headers/FlutterPluginAppLifeCycleDelegate.h b/shell/platform/darwin/ios/framework/Headers/FlutterPluginAppLifeCycleDelegate.h index 1b389b3e58dc9..36ba12ef2f5d8 100644 --- a/shell/platform/darwin/ios/framework/Headers/FlutterPluginAppLifeCycleDelegate.h +++ b/shell/platform/darwin/ios/framework/Headers/FlutterPluginAppLifeCycleDelegate.h @@ -1,4 +1,4 @@ -// Copyright 2018 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/darwin/ios/framework/Headers/FlutterTexture.h b/shell/platform/darwin/ios/framework/Headers/FlutterTexture.h index 9fe5887593b73..e7cd01337deb9 100644 --- a/shell/platform/darwin/ios/framework/Headers/FlutterTexture.h +++ b/shell/platform/darwin/ios/framework/Headers/FlutterTexture.h @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/darwin/ios/framework/Headers/FlutterViewController.h b/shell/platform/darwin/ios/framework/Headers/FlutterViewController.h index a53f14244cea9..49879149129c3 100644 --- a/shell/platform/darwin/ios/framework/Headers/FlutterViewController.h +++ b/shell/platform/darwin/ios/framework/Headers/FlutterViewController.h @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/darwin/ios/framework/Source/FlutterAppDelegate.mm b/shell/platform/darwin/ios/framework/Source/FlutterAppDelegate.mm index 601a787809ab9..37f0c9e006c2d 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterAppDelegate.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterAppDelegate.mm @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/darwin/ios/framework/Source/FlutterAppDelegate_Internal.h b/shell/platform/darwin/ios/framework/Source/FlutterAppDelegate_Internal.h index c01a33d6f3266..999e56c534ac0 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterAppDelegate_Internal.h +++ b/shell/platform/darwin/ios/framework/Source/FlutterAppDelegate_Internal.h @@ -1,4 +1,4 @@ -// Copyright 2018 The Flutter Authors. All rights reserved. +// 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. diff --git a/shell/platform/darwin/ios/framework/Source/FlutterCallbackCache.mm b/shell/platform/darwin/ios/framework/Source/FlutterCallbackCache.mm index eb353e019bed4..562155d319130 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterCallbackCache.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterCallbackCache.mm @@ -1,4 +1,4 @@ -// Copyright 2018 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/darwin/ios/framework/Source/FlutterCallbackCache_Internal.h b/shell/platform/darwin/ios/framework/Source/FlutterCallbackCache_Internal.h index 553c485dc2e9d..5bb2e7bf7646e 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterCallbackCache_Internal.h +++ b/shell/platform/darwin/ios/framework/Source/FlutterCallbackCache_Internal.h @@ -1,4 +1,4 @@ -// Copyright 2018 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/darwin/ios/framework/Source/FlutterChannels.mm b/shell/platform/darwin/ios/framework/Source/FlutterChannels.mm index 4cb4499e09a0e..732c983f0e3b1 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterChannels.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterChannels.mm @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/darwin/ios/framework/Source/FlutterCodecs.mm b/shell/platform/darwin/ios/framework/Source/FlutterCodecs.mm index e49ec86aadff1..0c2340038b828 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterCodecs.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterCodecs.mm @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/darwin/ios/framework/Source/FlutterDartProject.mm b/shell/platform/darwin/ios/framework/Source/FlutterDartProject.mm index 24ad9d97ff7a4..0e5bf4fdcbf8a 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterDartProject.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterDartProject.mm @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/darwin/ios/framework/Source/FlutterDartProject_Internal.h b/shell/platform/darwin/ios/framework/Source/FlutterDartProject_Internal.h index 32a2c50c1d80f..844c74d01ad34 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterDartProject_Internal.h +++ b/shell/platform/darwin/ios/framework/Source/FlutterDartProject_Internal.h @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/darwin/ios/framework/Source/FlutterEngine.mm b/shell/platform/darwin/ios/framework/Source/FlutterEngine.mm index e25f2db853bc9..ed501e59fb9ec 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterEngine.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterEngine.mm @@ -1,4 +1,4 @@ -// Copyright 2018 The Flutter Authors. All rights reserved. +// 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. diff --git a/shell/platform/darwin/ios/framework/Source/FlutterEngine_Internal.h b/shell/platform/darwin/ios/framework/Source/FlutterEngine_Internal.h index 196516be4f020..3627ae26e08ae 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterEngine_Internal.h +++ b/shell/platform/darwin/ios/framework/Source/FlutterEngine_Internal.h @@ -1,4 +1,4 @@ -// Copyright 2018 The Flutter Authors. All rights reserved. +// 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. diff --git a/shell/platform/darwin/ios/framework/Source/FlutterHeadlessDartRunner.mm b/shell/platform/darwin/ios/framework/Source/FlutterHeadlessDartRunner.mm index 34c854ada5885..8e7cb26d48a1d 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterHeadlessDartRunner.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterHeadlessDartRunner.mm @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/darwin/ios/framework/Source/FlutterObservatoryPublisher.h b/shell/platform/darwin/ios/framework/Source/FlutterObservatoryPublisher.h index fbcc9c8b0235a..68f97c6b6698e 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterObservatoryPublisher.h +++ b/shell/platform/darwin/ios/framework/Source/FlutterObservatoryPublisher.h @@ -1,4 +1,4 @@ -// Copyright 2018 The Flutter Authors. All rights reserved. +// 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. @@ -11,4 +11,4 @@ @end -#endif // FLUTTER_FLUTTEROBSERVATORYPUBLISHER_H_ \ No newline at end of file +#endif // FLUTTER_FLUTTEROBSERVATORYPUBLISHER_H_ diff --git a/shell/platform/darwin/ios/framework/Source/FlutterObservatoryPublisher.mm b/shell/platform/darwin/ios/framework/Source/FlutterObservatoryPublisher.mm index 73490540a61b9..b8111067c8b22 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterObservatoryPublisher.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterObservatoryPublisher.mm @@ -1,4 +1,4 @@ -// Copyright 2018 The Flutter Authors. All rights reserved. +// 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. diff --git a/shell/platform/darwin/ios/framework/Source/FlutterOverlayView.h b/shell/platform/darwin/ios/framework/Source/FlutterOverlayView.h index 527253fb73648..b104902689aff 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterOverlayView.h +++ b/shell/platform/darwin/ios/framework/Source/FlutterOverlayView.h @@ -1,4 +1,4 @@ -// Copyright 2018 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/darwin/ios/framework/Source/FlutterOverlayView.mm b/shell/platform/darwin/ios/framework/Source/FlutterOverlayView.mm index 9ed7c71ca9d72..81c4e815a4459 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterOverlayView.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterOverlayView.mm @@ -1,4 +1,4 @@ -// Copyright 2018 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/darwin/ios/framework/Source/FlutterPlatformPlugin.h b/shell/platform/darwin/ios/framework/Source/FlutterPlatformPlugin.h index 23d86c04c299f..b221134efd499 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterPlatformPlugin.h +++ b/shell/platform/darwin/ios/framework/Source/FlutterPlatformPlugin.h @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/darwin/ios/framework/Source/FlutterPlatformPlugin.mm b/shell/platform/darwin/ios/framework/Source/FlutterPlatformPlugin.mm index 71940926f4a3d..bfb3032dcc267 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterPlatformPlugin.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterPlatformPlugin.mm @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm index 798839fab4d1c..c6db8cae49b2a 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm @@ -1,4 +1,4 @@ -// Copyright 2018 The Flutter Authors. All rights reserved. +// 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. diff --git a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h index 92d308c244d43..709782c9987ca 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h +++ b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h @@ -1,4 +1,4 @@ -// Copyright 2018 The Flutter Authors. All rights reserved. +// 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. diff --git a/shell/platform/darwin/ios/framework/Source/FlutterPluginAppLifeCycleDelegate.mm b/shell/platform/darwin/ios/framework/Source/FlutterPluginAppLifeCycleDelegate.mm index 2ed844b23ecfd..f262d300f4332 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterPluginAppLifeCycleDelegate.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterPluginAppLifeCycleDelegate.mm @@ -1,4 +1,4 @@ -// Copyright 2018 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/darwin/ios/framework/Source/FlutterStandardCodec.mm b/shell/platform/darwin/ios/framework/Source/FlutterStandardCodec.mm index bd25217679c9b..c96887feb7b2c 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterStandardCodec.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterStandardCodec.mm @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/darwin/ios/framework/Source/FlutterStandardCodec_Internal.h b/shell/platform/darwin/ios/framework/Source/FlutterStandardCodec_Internal.h index 24197e1ea8d6a..c1eab20fa1ac3 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterStandardCodec_Internal.h +++ b/shell/platform/darwin/ios/framework/Source/FlutterStandardCodec_Internal.h @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/darwin/ios/framework/Source/FlutterTextInputDelegate.h b/shell/platform/darwin/ios/framework/Source/FlutterTextInputDelegate.h index 4c3cea566fc76..11e9f5bd5f86c 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterTextInputDelegate.h +++ b/shell/platform/darwin/ios/framework/Source/FlutterTextInputDelegate.h @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/darwin/ios/framework/Source/FlutterTextInputPlugin.h b/shell/platform/darwin/ios/framework/Source/FlutterTextInputPlugin.h index 06e5b68b69ed2..9283dd9b809a3 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterTextInputPlugin.h +++ b/shell/platform/darwin/ios/framework/Source/FlutterTextInputPlugin.h @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/darwin/ios/framework/Source/FlutterTextInputPlugin.mm b/shell/platform/darwin/ios/framework/Source/FlutterTextInputPlugin.mm index f8378d5d7174e..1e0bead42e5eb 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterTextInputPlugin.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterTextInputPlugin.mm @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/darwin/ios/framework/Source/FlutterUmbrellaImport.m b/shell/platform/darwin/ios/framework/Source/FlutterUmbrellaImport.m index dbdce3c596da9..b567d90dadee4 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterUmbrellaImport.m +++ b/shell/platform/darwin/ios/framework/Source/FlutterUmbrellaImport.m @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/darwin/ios/framework/Source/FlutterView.h b/shell/platform/darwin/ios/framework/Source/FlutterView.h index b070e25eace0e..88196def7a898 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterView.h +++ b/shell/platform/darwin/ios/framework/Source/FlutterView.h @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/darwin/ios/framework/Source/FlutterView.mm b/shell/platform/darwin/ios/framework/Source/FlutterView.mm index b64fe4c2488a2..fbf3270925828 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterView.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterView.mm @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm b/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm index f557d3433aef2..482e98dd136bd 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/darwin/ios/framework/Source/FlutterViewController_Internal.h b/shell/platform/darwin/ios/framework/Source/FlutterViewController_Internal.h index 79288b396f1d2..46705b9be8d23 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterViewController_Internal.h +++ b/shell/platform/darwin/ios/framework/Source/FlutterViewController_Internal.h @@ -1,4 +1,4 @@ -// Copyright 2017 The Flutter Authors. All rights reserved. +// 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. diff --git a/shell/platform/darwin/ios/framework/Source/accessibility_bridge.h b/shell/platform/darwin/ios/framework/Source/accessibility_bridge.h index 3c90a23af0851..bcfb5b5c6821b 100644 --- a/shell/platform/darwin/ios/framework/Source/accessibility_bridge.h +++ b/shell/platform/darwin/ios/framework/Source/accessibility_bridge.h @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/darwin/ios/framework/Source/accessibility_bridge.mm b/shell/platform/darwin/ios/framework/Source/accessibility_bridge.mm index b094579c9f408..029cfcfd77595 100644 --- a/shell/platform/darwin/ios/framework/Source/accessibility_bridge.mm +++ b/shell/platform/darwin/ios/framework/Source/accessibility_bridge.mm @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/darwin/ios/framework/Source/accessibility_text_entry.h b/shell/platform/darwin/ios/framework/Source/accessibility_text_entry.h index ecc26a240a159..163346d7b04dd 100644 --- a/shell/platform/darwin/ios/framework/Source/accessibility_text_entry.h +++ b/shell/platform/darwin/ios/framework/Source/accessibility_text_entry.h @@ -1,4 +1,4 @@ -// Copyright 2018 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/darwin/ios/framework/Source/accessibility_text_entry.mm b/shell/platform/darwin/ios/framework/Source/accessibility_text_entry.mm index c5b63d3d39644..0edde04a2c2c1 100644 --- a/shell/platform/darwin/ios/framework/Source/accessibility_text_entry.mm +++ b/shell/platform/darwin/ios/framework/Source/accessibility_text_entry.mm @@ -1,4 +1,4 @@ -// Copyright 2018 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/darwin/ios/framework/Source/flutter_codecs_unittest.mm b/shell/platform/darwin/ios/framework/Source/flutter_codecs_unittest.mm index 502df4b55ee80..0e257a42c634b 100644 --- a/shell/platform/darwin/ios/framework/Source/flutter_codecs_unittest.mm +++ b/shell/platform/darwin/ios/framework/Source/flutter_codecs_unittest.mm @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/darwin/ios/framework/Source/flutter_standard_codec_unittest.mm b/shell/platform/darwin/ios/framework/Source/flutter_standard_codec_unittest.mm index 41cb39a0792af..381b87f96ac20 100644 --- a/shell/platform/darwin/ios/framework/Source/flutter_standard_codec_unittest.mm +++ b/shell/platform/darwin/ios/framework/Source/flutter_standard_codec_unittest.mm @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/darwin/ios/framework/Source/platform_message_response_darwin.h b/shell/platform/darwin/ios/framework/Source/platform_message_response_darwin.h index dd6ec72d56db4..48a15dbb36f2a 100644 --- a/shell/platform/darwin/ios/framework/Source/platform_message_response_darwin.h +++ b/shell/platform/darwin/ios/framework/Source/platform_message_response_darwin.h @@ -1,4 +1,4 @@ -// Copyright 2018 The Flutter Authors. All rights reserved. +// 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. diff --git a/shell/platform/darwin/ios/framework/Source/platform_message_response_darwin.mm b/shell/platform/darwin/ios/framework/Source/platform_message_response_darwin.mm index 8590b4e36942b..3eb396a8f52df 100644 --- a/shell/platform/darwin/ios/framework/Source/platform_message_response_darwin.mm +++ b/shell/platform/darwin/ios/framework/Source/platform_message_response_darwin.mm @@ -1,4 +1,4 @@ -// Copyright 2018 The Flutter Authors. All rights reserved. +// 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. diff --git a/shell/platform/darwin/ios/framework/Source/platform_message_router.h b/shell/platform/darwin/ios/framework/Source/platform_message_router.h index 4013dc947da0b..1949d817d888d 100644 --- a/shell/platform/darwin/ios/framework/Source/platform_message_router.h +++ b/shell/platform/darwin/ios/framework/Source/platform_message_router.h @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/darwin/ios/framework/Source/platform_message_router.mm b/shell/platform/darwin/ios/framework/Source/platform_message_router.mm index 0378539deefab..6cfb3049ac63a 100644 --- a/shell/platform/darwin/ios/framework/Source/platform_message_router.mm +++ b/shell/platform/darwin/ios/framework/Source/platform_message_router.mm @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/darwin/ios/framework/Source/vsync_waiter_ios.h b/shell/platform/darwin/ios/framework/Source/vsync_waiter_ios.h index 000f84a4a35b9..335d47892ae81 100644 --- a/shell/platform/darwin/ios/framework/Source/vsync_waiter_ios.h +++ b/shell/platform/darwin/ios/framework/Source/vsync_waiter_ios.h @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/darwin/ios/framework/Source/vsync_waiter_ios.mm b/shell/platform/darwin/ios/framework/Source/vsync_waiter_ios.mm index 6b80c12946b85..702fdc9a51e13 100644 --- a/shell/platform/darwin/ios/framework/Source/vsync_waiter_ios.mm +++ b/shell/platform/darwin/ios/framework/Source/vsync_waiter_ios.mm @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/darwin/ios/ios_external_texture_gl.h b/shell/platform/darwin/ios/ios_external_texture_gl.h index 1a1fa997f8f4b..5ff841ba0b1b1 100644 --- a/shell/platform/darwin/ios/ios_external_texture_gl.h +++ b/shell/platform/darwin/ios/ios_external_texture_gl.h @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/darwin/ios/ios_external_texture_gl.mm b/shell/platform/darwin/ios/ios_external_texture_gl.mm index 638894b8aba5b..e77970697d079 100644 --- a/shell/platform/darwin/ios/ios_external_texture_gl.mm +++ b/shell/platform/darwin/ios/ios_external_texture_gl.mm @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/darwin/ios/ios_gl_context.h b/shell/platform/darwin/ios/ios_gl_context.h index e81954d58a0ef..e7a3f558f8285 100644 --- a/shell/platform/darwin/ios/ios_gl_context.h +++ b/shell/platform/darwin/ios/ios_gl_context.h @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/darwin/ios/ios_gl_context.mm b/shell/platform/darwin/ios/ios_gl_context.mm index b3debd6f64372..2cd3a8f4c90bd 100644 --- a/shell/platform/darwin/ios/ios_gl_context.mm +++ b/shell/platform/darwin/ios/ios_gl_context.mm @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/darwin/ios/ios_surface.h b/shell/platform/darwin/ios/ios_surface.h index d07fbbfec30a4..660844d318202 100644 --- a/shell/platform/darwin/ios/ios_surface.h +++ b/shell/platform/darwin/ios/ios_surface.h @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/darwin/ios/ios_surface.mm b/shell/platform/darwin/ios/ios_surface.mm index ba7bf4f93ed3f..e4f79576534c6 100644 --- a/shell/platform/darwin/ios/ios_surface.mm +++ b/shell/platform/darwin/ios/ios_surface.mm @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/darwin/ios/ios_surface_gl.h b/shell/platform/darwin/ios/ios_surface_gl.h index a6bcfbdf45d46..abc4f32aa509f 100644 --- a/shell/platform/darwin/ios/ios_surface_gl.h +++ b/shell/platform/darwin/ios/ios_surface_gl.h @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/darwin/ios/ios_surface_gl.mm b/shell/platform/darwin/ios/ios_surface_gl.mm index 9291455176070..c32d593210349 100644 --- a/shell/platform/darwin/ios/ios_surface_gl.mm +++ b/shell/platform/darwin/ios/ios_surface_gl.mm @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/darwin/ios/ios_surface_software.h b/shell/platform/darwin/ios/ios_surface_software.h index 2e5da95e2b48f..0e7fb305a7a7d 100644 --- a/shell/platform/darwin/ios/ios_surface_software.h +++ b/shell/platform/darwin/ios/ios_surface_software.h @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/darwin/ios/ios_surface_software.mm b/shell/platform/darwin/ios/ios_surface_software.mm index bcf57f5cd28d4..634c72749d52a 100644 --- a/shell/platform/darwin/ios/ios_surface_software.mm +++ b/shell/platform/darwin/ios/ios_surface_software.mm @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/darwin/ios/platform_view_ios.h b/shell/platform/darwin/ios/platform_view_ios.h index 50e8fa7a1ec35..85fe4c4a6dda6 100644 --- a/shell/platform/darwin/ios/platform_view_ios.h +++ b/shell/platform/darwin/ios/platform_view_ios.h @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/darwin/ios/platform_view_ios.mm b/shell/platform/darwin/ios/platform_view_ios.mm index 6a701d06669da..485b41d5cd46e 100644 --- a/shell/platform/darwin/ios/platform_view_ios.mm +++ b/shell/platform/darwin/ios/platform_view_ios.mm @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/embedder/BUILD.gn b/shell/platform/embedder/BUILD.gn index f00f6921968d4..9ad60a8f74a2b 100644 --- a/shell/platform/embedder/BUILD.gn +++ b/shell/platform/embedder/BUILD.gn @@ -1,4 +1,4 @@ -# Copyright 2017 The Chromium Authors. All rights reserved. +# 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. diff --git a/shell/platform/embedder/assets/EmbedderInfo.plist b/shell/platform/embedder/assets/EmbedderInfo.plist index 38352b319ff5b..37c1e436ccb5e 100644 --- a/shell/platform/embedder/assets/EmbedderInfo.plist +++ b/shell/platform/embedder/assets/EmbedderInfo.plist @@ -23,6 +23,6 @@ CFBundleVersion 1 NSHumanReadableCopyright - Copyright 2017 The Flutter Authors. All rights reserved. + Copyright 2013 The Flutter Authors. All rights reserved. diff --git a/shell/platform/embedder/embedder.cc b/shell/platform/embedder/embedder.cc index d8e1854e6b5df..d7acb7d4db068 100644 --- a/shell/platform/embedder/embedder.cc +++ b/shell/platform/embedder/embedder.cc @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/embedder/embedder.gni b/shell/platform/embedder/embedder.gni index 79d06f7c9151e..87a66cfd348b3 100644 --- a/shell/platform/embedder/embedder.gni +++ b/shell/platform/embedder/embedder.gni @@ -1,4 +1,4 @@ -# Copyright 2018 The Flutter Authors. All rights reserved. +# 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. diff --git a/shell/platform/embedder/embedder.h b/shell/platform/embedder/embedder.h index 6a4928f0d0172..dd1ba06ddcc20 100644 --- a/shell/platform/embedder/embedder.h +++ b/shell/platform/embedder/embedder.h @@ -1,4 +1,4 @@ -// Copyright 2017 The Flutter Authors. All rights reserved. +// 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. diff --git a/shell/platform/embedder/embedder_engine.cc b/shell/platform/embedder/embedder_engine.cc index 8c701c99bae00..7299e38e37e93 100644 --- a/shell/platform/embedder/embedder_engine.cc +++ b/shell/platform/embedder/embedder_engine.cc @@ -1,4 +1,4 @@ -// Copyright 2017 The Flutter Authors. All rights reserved. +// 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. diff --git a/shell/platform/embedder/embedder_engine.h b/shell/platform/embedder/embedder_engine.h index cd21e701d5c01..8ccac002754e0 100644 --- a/shell/platform/embedder/embedder_engine.h +++ b/shell/platform/embedder/embedder_engine.h @@ -1,4 +1,4 @@ -// Copyright 2017 The Flutter Authors. All rights reserved. +// 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. diff --git a/shell/platform/embedder/embedder_include.c b/shell/platform/embedder/embedder_include.c index 4c45bcb1addff..10d21dc1b44e7 100644 --- a/shell/platform/embedder/embedder_include.c +++ b/shell/platform/embedder/embedder_include.c @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/embedder/embedder_surface.cc b/shell/platform/embedder/embedder_surface.cc index d14b114e7410c..b61802cbce9ac 100644 --- a/shell/platform/embedder/embedder_surface.cc +++ b/shell/platform/embedder/embedder_surface.cc @@ -1,4 +1,4 @@ -// Copyright 2018 The Flutter Authors. All rights reserved. +// 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. diff --git a/shell/platform/embedder/embedder_surface.h b/shell/platform/embedder/embedder_surface.h index 5db1394875b29..74af9462b1af4 100644 --- a/shell/platform/embedder/embedder_surface.h +++ b/shell/platform/embedder/embedder_surface.h @@ -1,4 +1,4 @@ -// Copyright 2018 The Flutter Authors. All rights reserved. +// 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. diff --git a/shell/platform/embedder/embedder_surface_gl.cc b/shell/platform/embedder/embedder_surface_gl.cc index c54978e22f37e..7e43a1066cfcd 100644 --- a/shell/platform/embedder/embedder_surface_gl.cc +++ b/shell/platform/embedder/embedder_surface_gl.cc @@ -1,4 +1,4 @@ -// Copyright 2018 The Flutter Authors. All rights reserved. +// 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. diff --git a/shell/platform/embedder/embedder_surface_gl.h b/shell/platform/embedder/embedder_surface_gl.h index 8fd40885ee3b6..949997b687ac4 100644 --- a/shell/platform/embedder/embedder_surface_gl.h +++ b/shell/platform/embedder/embedder_surface_gl.h @@ -1,4 +1,4 @@ -// Copyright 2018 The Flutter Authors. All rights reserved. +// 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. diff --git a/shell/platform/embedder/embedder_surface_software.cc b/shell/platform/embedder/embedder_surface_software.cc index edc855b276116..b07c62b03dd65 100644 --- a/shell/platform/embedder/embedder_surface_software.cc +++ b/shell/platform/embedder/embedder_surface_software.cc @@ -1,4 +1,4 @@ -// Copyright 2018 The Flutter Authors. All rights reserved. +// 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. diff --git a/shell/platform/embedder/embedder_surface_software.h b/shell/platform/embedder/embedder_surface_software.h index 852a77b62a2e4..6bc5d98f89247 100644 --- a/shell/platform/embedder/embedder_surface_software.h +++ b/shell/platform/embedder/embedder_surface_software.h @@ -1,4 +1,4 @@ -// Copyright 2018 The Flutter Authors. All rights reserved. +// 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. diff --git a/shell/platform/embedder/platform_view_embedder.cc b/shell/platform/embedder/platform_view_embedder.cc index 47b83813d974b..5a5551b751729 100644 --- a/shell/platform/embedder/platform_view_embedder.cc +++ b/shell/platform/embedder/platform_view_embedder.cc @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/embedder/platform_view_embedder.h b/shell/platform/embedder/platform_view_embedder.h index af28dd83625c6..bea840387e7e1 100644 --- a/shell/platform/embedder/platform_view_embedder.h +++ b/shell/platform/embedder/platform_view_embedder.h @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/embedder/tests/embedder_unittests.cc b/shell/platform/embedder/tests/embedder_unittests.cc index ebf059f591e29..2230769654676 100644 --- a/shell/platform/embedder/tests/embedder_unittests.cc +++ b/shell/platform/embedder/tests/embedder_unittests.cc @@ -1,4 +1,4 @@ -// Copyright 2017 The Flutter Authors. All rights reserved. +// 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. diff --git a/shell/platform/linux/BUILD.gn b/shell/platform/linux/BUILD.gn index ed185e4541532..03724a9e7354c 100644 --- a/shell/platform/linux/BUILD.gn +++ b/shell/platform/linux/BUILD.gn @@ -1,4 +1,4 @@ -# Copyright 2018 The Flutter Authors. All rights reserved. +# 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. diff --git a/shell/testing/BUILD.gn b/shell/testing/BUILD.gn index cc3d835c42e04..29b5c5c13e89a 100644 --- a/shell/testing/BUILD.gn +++ b/shell/testing/BUILD.gn @@ -1,4 +1,4 @@ -# Copyright 2016 The Chromium Authors. All rights reserved. +# 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. diff --git a/shell/testing/observatory/empty_main.dart b/shell/testing/observatory/empty_main.dart index 0d653a819f728..94e557c8cadc7 100644 --- a/shell/testing/observatory/empty_main.dart +++ b/shell/testing/observatory/empty_main.dart @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/testing/observatory/launcher.dart b/shell/testing/observatory/launcher.dart index 9a88555199538..82fdd108f3c74 100644 --- a/shell/testing/observatory/launcher.dart +++ b/shell/testing/observatory/launcher.dart @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/testing/observatory/service_client.dart b/shell/testing/observatory/service_client.dart index badcaf669102b..f24b628ddae78 100644 --- a/shell/testing/observatory/service_client.dart +++ b/shell/testing/observatory/service_client.dart @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/testing/observatory/test.dart b/shell/testing/observatory/test.dart index d753d1522c9b8..9d97dba0c9dd6 100644 --- a/shell/testing/observatory/test.dart +++ b/shell/testing/observatory/test.dart @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/testing/tester_main.cc b/shell/testing/tester_main.cc index da61239bdda15..3d24032e951a3 100644 --- a/shell/testing/tester_main.cc +++ b/shell/testing/tester_main.cc @@ -1,4 +1,4 @@ -// Copyright 2018 The Flutter Authors. All rights reserved. +// 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. diff --git a/shell/version/BUILD.gn b/shell/version/BUILD.gn index 348ea3e26d2a7..ca9ee7d1bf84e 100644 --- a/shell/version/BUILD.gn +++ b/shell/version/BUILD.gn @@ -1,4 +1,4 @@ -# Copyright 2018 The Flutter Authors. All rights reserved. +# 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. diff --git a/shell/version/version.cc b/shell/version/version.cc index 86525de620191..4fac6a1043c92 100644 --- a/shell/version/version.cc +++ b/shell/version/version.cc @@ -1,4 +1,4 @@ -// Copyright 2018 The Flutter Authors. All rights reserved. +// 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. diff --git a/shell/version/version.gni b/shell/version/version.gni index 66ca9fdd8e10d..f06a89b8d555f 100644 --- a/shell/version/version.gni +++ b/shell/version/version.gni @@ -1,4 +1,4 @@ -# Copyright 2018 The Flutter Authors. All rights reserved. +# 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. diff --git a/shell/version/version.h b/shell/version/version.h index 1c9ca4d1d7c34..ce2647e0bddb6 100644 --- a/shell/version/version.h +++ b/shell/version/version.h @@ -1,4 +1,4 @@ -// Copyright 2018 The Flutter Authors. All rights reserved. +// 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. diff --git a/sky/BUILD.gn b/sky/BUILD.gn index 66045451407b5..b950560f5a080 100644 --- a/sky/BUILD.gn +++ b/sky/BUILD.gn @@ -1,4 +1,4 @@ -# Copyright 2014 The Chromium Authors. All rights reserved. +# 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. diff --git a/sky/dist/BUILD.gn b/sky/dist/BUILD.gn index a7068e32ab65a..c1b564a03ecce 100644 --- a/sky/dist/BUILD.gn +++ b/sky/dist/BUILD.gn @@ -1,4 +1,4 @@ -# Copyright 2015 The Chromium Authors. All rights reserved. +# 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. diff --git a/sky/packages/BUILD.gn b/sky/packages/BUILD.gn index f9dd45cd921a1..07766e6a4695c 100644 --- a/sky/packages/BUILD.gn +++ b/sky/packages/BUILD.gn @@ -1,4 +1,4 @@ -# Copyright 2015 The Chromium Authors. All rights reserved. +# 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. diff --git a/sky/packages/flutter_services/BUILD.gn b/sky/packages/flutter_services/BUILD.gn index f326037901b3d..6ec4f4b2e4504 100644 --- a/sky/packages/flutter_services/BUILD.gn +++ b/sky/packages/flutter_services/BUILD.gn @@ -1,4 +1,4 @@ -# Copyright 2016 The Chromium Authors. All rights reserved. +# 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. diff --git a/sky/packages/flutter_services/lib/empty.dart b/sky/packages/flutter_services/lib/empty.dart index a3f12bfd1109e..396832c3347e1 100644 --- a/sky/packages/flutter_services/lib/empty.dart +++ b/sky/packages/flutter_services/lib/empty.dart @@ -1,4 +1,4 @@ -/// Copyright 2016 The Chromium Authors. All rights reserved. +/// 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. diff --git a/sky/packages/sky_engine/BUILD.gn b/sky/packages/sky_engine/BUILD.gn index 3ea8c4f31b84e..9556957954b31 100644 --- a/sky/packages/sky_engine/BUILD.gn +++ b/sky/packages/sky_engine/BUILD.gn @@ -1,4 +1,4 @@ -# Copyright 2015 The Chromium Authors. All rights reserved. +# 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. diff --git a/sky/packages/sky_engine/LICENSE b/sky/packages/sky_engine/LICENSE index abca316eb9fc0..7334fbc6b9b0e 100644 --- a/sky/packages/sky_engine/LICENSE +++ b/sky/packages/sky_engine/LICENSE @@ -3440,314 +3440,6 @@ met: contributors may be used to endorse or promote products derived from this software without specific prior written permission. -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -engine - -Copyright (c) 2013 The Chromium Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -engine - -Copyright 2013 The Chromium Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -engine - -Copyright 2017 The Flutter Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -engine - -Copyright 2018 The Flutter Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -engine -icu - -Copyright 2014 The Chromium Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -engine -icu -skia - -Copyright 2015 The Chromium Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -engine -icu -skia - -Copyright 2016 The Chromium Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -engine -skia - -Copyright 2018 The Chromium Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -engine -tonic - -Copyright 2016 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -engine -tonic - -Copyright 2017 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR @@ -3763,7 +3455,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. engine txt -Copyright 2017 The Chromium Authors. All rights reserved. +Copyright 2013 The Flutter Authors. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are @@ -7177,6 +6869,36 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- icu +Copyright 2014 The Chromium Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +icu + Copyright © 1991-2018 Unicode, Inc. All rights reserved. Distributed under the Terms of Use in http://www.unicode.org/copyright.html. @@ -7332,6 +7054,68 @@ shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- +icu +skia + +Copyright 2015 The Chromium Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +icu +skia + +Copyright 2016 The Chromium Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- libjpeg-turbo Copyright (C) 1999-2006, MIYASAKA Masaru. @@ -10953,6 +10737,36 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- skia +Copyright 2018 The Chromium Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +skia + NEON optimized code (C) COPYRIGHT 2009 Motorola Redistribution and use in source and binary forms, with or without @@ -11075,6 +10889,66 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- tonic +Copyright 2016 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +tonic + +Copyright 2017 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +tonic + Copyright 2018 The Fuchsia Authors. All rights reserved. Redistribution and use in source and binary forms, with or without diff --git a/sky/packages/sky_services/BUILD.gn b/sky/packages/sky_services/BUILD.gn index 44132cc252183..582e57c319dc7 100644 --- a/sky/packages/sky_services/BUILD.gn +++ b/sky/packages/sky_services/BUILD.gn @@ -1,4 +1,4 @@ -# Copyright 2015 The Chromium Authors. All rights reserved. +# 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. diff --git a/sky/tools/change_install_name.py b/sky/tools/change_install_name.py index b6d479bc5c760..3d715c422ff43 100755 --- a/sky/tools/change_install_name.py +++ b/sky/tools/change_install_name.py @@ -1,5 +1,5 @@ #!/usr/bin/env python -# Copyright 2015 The Chromium Authors. All rights reserved. +# 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. diff --git a/sky/tools/create_ios_framework.py b/sky/tools/create_ios_framework.py index 73f17b4303ad2..f9dc2f7f56283 100755 --- a/sky/tools/create_ios_framework.py +++ b/sky/tools/create_ios_framework.py @@ -1,5 +1,5 @@ #!/usr/bin/env python -# Copyright 2016 The Chromium Authors. All rights reserved. +# 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. diff --git a/sky/tools/create_macos_gen_snapshot.py b/sky/tools/create_macos_gen_snapshot.py index 218ee2ad725de..a9ea7f88378ec 100755 --- a/sky/tools/create_macos_gen_snapshot.py +++ b/sky/tools/create_macos_gen_snapshot.py @@ -1,5 +1,5 @@ #!/usr/bin/env python -# Copyright 2018 The Chromium Authors. All rights reserved. +# 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. diff --git a/sky/tools/dist_dart_pkg.py b/sky/tools/dist_dart_pkg.py index 9a1318796eefd..af8bd1dbb201d 100644 --- a/sky/tools/dist_dart_pkg.py +++ b/sky/tools/dist_dart_pkg.py @@ -1,5 +1,5 @@ #!/usr/bin/env python -# Copyright 2015 The Chromium Authors. All rights reserved. +# 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. diff --git a/sky/tools/flutter_gdb b/sky/tools/flutter_gdb index 73a10a5468744..1ba48e6f98633 100755 --- a/sky/tools/flutter_gdb +++ b/sky/tools/flutter_gdb @@ -1,5 +1,5 @@ #!/usr/bin/env python -# Copyright 2016 The Chromium Authors. All rights reserved. +# 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. diff --git a/sky/tools/install_framework_headers.py b/sky/tools/install_framework_headers.py index f76ffcb16ab8f..a746ff90b0e7e 100644 --- a/sky/tools/install_framework_headers.py +++ b/sky/tools/install_framework_headers.py @@ -1,5 +1,5 @@ #!/usr/bin/env python -# Copyright 2017 The Chromium Authors. All rights reserved. +# 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. diff --git a/sky/tools/roll/patch.py b/sky/tools/roll/patch.py index fbc2389e26c1a..f08b610e31601 100755 --- a/sky/tools/roll/patch.py +++ b/sky/tools/roll/patch.py @@ -1,5 +1,5 @@ #!/usr/bin/env python -# Copyright 2014 The Chromium Authors. All rights reserved. +# 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. diff --git a/sky/tools/roll/roll.py b/sky/tools/roll/roll.py index 994685a42bb0f..c4d322cb9cebb 100755 --- a/sky/tools/roll/roll.py +++ b/sky/tools/roll/roll.py @@ -1,5 +1,5 @@ #!/usr/bin/env python -# Copyright 2015 The Chromium Authors. All rights reserved. +# 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. diff --git a/sky/tools/roll/utils.py b/sky/tools/roll/utils.py index d2de2c487d148..c14732e34d12d 100755 --- a/sky/tools/roll/utils.py +++ b/sky/tools/roll/utils.py @@ -1,5 +1,5 @@ #!/usr/bin/env python -# Copyright 2014 The Chromium Authors. All rights reserved. +# 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. diff --git a/synchronization/BUILD.gn b/synchronization/BUILD.gn index 258e49a182445..95b8655964b53 100644 --- a/synchronization/BUILD.gn +++ b/synchronization/BUILD.gn @@ -1,4 +1,4 @@ -# Copyright 2016 The Chromium Authors. All rights reserved. +# 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. diff --git a/synchronization/pipeline.cc b/synchronization/pipeline.cc index df8505dbee7a9..2baede8dfbd1f 100644 --- a/synchronization/pipeline.cc +++ b/synchronization/pipeline.cc @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/synchronization/pipeline.h b/synchronization/pipeline.h index 726adf64de842..30740c36befe2 100644 --- a/synchronization/pipeline.h +++ b/synchronization/pipeline.h @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/synchronization/semaphore.cc b/synchronization/semaphore.cc index f3a6039b15f11..4d8e5003d5921 100644 --- a/synchronization/semaphore.cc +++ b/synchronization/semaphore.cc @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/synchronization/semaphore.h b/synchronization/semaphore.h index e2df8b3d81ad8..594b0a559bc04 100644 --- a/synchronization/semaphore.h +++ b/synchronization/semaphore.h @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/synchronization/semaphore_unittest.cc b/synchronization/semaphore_unittest.cc index 42b898d53acb5..61810b641bee8 100644 --- a/synchronization/semaphore_unittest.cc +++ b/synchronization/semaphore_unittest.cc @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/testing/BUILD.gn b/testing/BUILD.gn index 7d5b8be9ae018..424d978f81570 100644 --- a/testing/BUILD.gn +++ b/testing/BUILD.gn @@ -1,4 +1,4 @@ -# Copyright 2016 The Chromium Authors. All rights reserved. +# 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. diff --git a/testing/build/gen_fixtures_location_symbol.py b/testing/build/gen_fixtures_location_symbol.py index c2c49d087d7b4..3b66475d4afb8 100644 --- a/testing/build/gen_fixtures_location_symbol.py +++ b/testing/build/gen_fixtures_location_symbol.py @@ -1,5 +1,5 @@ #!/usr/bin/env python -# Copyright 2017 The Chromium Authors. All rights reserved. +# 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. diff --git a/testing/dart/canvas_test.dart b/testing/dart/canvas_test.dart index 8ab5581317730..9d4704038e9f0 100644 --- a/testing/dart/canvas_test.dart +++ b/testing/dart/canvas_test.dart @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/testing/dart/codec_test.dart b/testing/dart/codec_test.dart index b205aef539f00..78b6930f5ea6c 100644 --- a/testing/dart/codec_test.dart +++ b/testing/dart/codec_test.dart @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/testing/dart/color_test.dart b/testing/dart/color_test.dart index 6bdccc7b72f6d..785c819aa7380 100644 --- a/testing/dart/color_test.dart +++ b/testing/dart/color_test.dart @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/testing/dart/encoding_test.dart b/testing/dart/encoding_test.dart index c8210d9b4e094..28bba46303e92 100644 --- a/testing/dart/encoding_test.dart +++ b/testing/dart/encoding_test.dart @@ -1,4 +1,4 @@ -// Copyright 2018 The Chromium Authors. All rights reserved. +// 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. diff --git a/testing/dart/geometry_test.dart b/testing/dart/geometry_test.dart index fc3ce17434233..4da3e6e825471 100644 --- a/testing/dart/geometry_test.dart +++ b/testing/dart/geometry_test.dart @@ -1,4 +1,4 @@ -// Copyright 2018 The Chromium Authors. All rights reserved. +// 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. diff --git a/testing/dart/gradient_test.dart b/testing/dart/gradient_test.dart index 881b70fec558d..b0160d019fd05 100644 --- a/testing/dart/gradient_test.dart +++ b/testing/dart/gradient_test.dart @@ -1,4 +1,4 @@ -// Copyright 2018 The Chromium Authors. All rights reserved. +// 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. diff --git a/testing/dart/isolate_name_server_test.dart b/testing/dart/isolate_name_server_test.dart index 37f6349d579a7..d48eefc084815 100644 --- a/testing/dart/isolate_name_server_test.dart +++ b/testing/dart/isolate_name_server_test.dart @@ -1,4 +1,4 @@ -// Copyright 2018 The Chromium Authors. All rights reserved. +// 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. diff --git a/testing/dart/locale_test.dart b/testing/dart/locale_test.dart index 66fd537a72444..9fcab7334ac5d 100644 --- a/testing/dart/locale_test.dart +++ b/testing/dart/locale_test.dart @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/testing/dart/paragraph_builder_test.dart b/testing/dart/paragraph_builder_test.dart index 0d5afc9e0bfa7..0743825f8e29b 100644 --- a/testing/dart/paragraph_builder_test.dart +++ b/testing/dart/paragraph_builder_test.dart @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/testing/dart/path_test.dart b/testing/dart/path_test.dart index 732f22304892b..1c569dd5ea286 100644 --- a/testing/dart/path_test.dart +++ b/testing/dart/path_test.dart @@ -1,4 +1,4 @@ -// Copyright 2018 The Chromium Authors. All rights reserved. +// 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. diff --git a/testing/dart/plugin_utilities_test.dart b/testing/dart/plugin_utilities_test.dart index 89f43824bc2dc..9d8849f40f4a7 100644 --- a/testing/dart/plugin_utilities_test.dart +++ b/testing/dart/plugin_utilities_test.dart @@ -1,4 +1,4 @@ -// Copyright 2018 The Chromium Authors. All rights reserved. +// 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. diff --git a/testing/dart/rect_test.dart b/testing/dart/rect_test.dart index c075826559714..ed352a1474491 100644 --- a/testing/dart/rect_test.dart +++ b/testing/dart/rect_test.dart @@ -1,4 +1,4 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// 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. diff --git a/testing/dart/window_hooks_integration_test.dart b/testing/dart/window_hooks_integration_test.dart index 1e362f403ceb2..d6df903eb7076 100644 --- a/testing/dart/window_hooks_integration_test.dart +++ b/testing/dart/window_hooks_integration_test.dart @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/testing/dart/window_test.dart b/testing/dart/window_test.dart index 5605355c0c390..110e9af4ec86f 100644 --- a/testing/dart/window_test.dart +++ b/testing/dart/window_test.dart @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/testing/fail_test.dart b/testing/fail_test.dart index 6c642710fe914..5d88caaaa5d47 100644 --- a/testing/fail_test.dart +++ b/testing/fail_test.dart @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/testing/run_all_unittests.cc b/testing/run_all_unittests.cc index d300edf026f17..1fa0019be22b4 100644 --- a/testing/run_all_unittests.cc +++ b/testing/run_all_unittests.cc @@ -1,4 +1,4 @@ -// Copyright 2016 The Fuchsia Authors. All rights reserved. +// 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. diff --git a/testing/testing.cc b/testing/testing.cc index 835ce4fe05684..93e135e7ab43d 100644 --- a/testing/testing.cc +++ b/testing/testing.cc @@ -1,4 +1,4 @@ -// Copyright 2017 The Fuchsia Authors. All rights reserved. +// 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. diff --git a/testing/testing.gni b/testing/testing.gni index a58876c38df6c..ad5badfe922fe 100644 --- a/testing/testing.gni +++ b/testing/testing.gni @@ -1,4 +1,4 @@ -# Copyright 2016 The Chromium Authors. All rights reserved. +# 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. diff --git a/testing/testing.h b/testing/testing.h index 2377ce5114917..dac2d229b9169 100644 --- a/testing/testing.h +++ b/testing/testing.h @@ -1,4 +1,4 @@ -// Copyright 2017 The Flutter Authors. All rights reserved. +// 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. diff --git a/testing/thread_test.cc b/testing/thread_test.cc index 1f4c1462bf387..513dbfd1a7eef 100644 --- a/testing/thread_test.cc +++ b/testing/thread_test.cc @@ -1,4 +1,4 @@ -// Copyright 2017 The Flutter Authors. All rights reserved. +// 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. diff --git a/testing/thread_test.h b/testing/thread_test.h index 131aa05273f54..8b4487c1b791f 100644 --- a/testing/thread_test.h +++ b/testing/thread_test.h @@ -1,4 +1,4 @@ -// Copyright 2017 The Flutter Authors. All rights reserved. +// 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. diff --git a/third_party/txt/src/txt/platform.cc b/third_party/txt/src/txt/platform.cc index b6a2154ddf136..411e96f0f4b9c 100644 --- a/third_party/txt/src/txt/platform.cc +++ b/third_party/txt/src/txt/platform.cc @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/third_party/txt/src/txt/platform.h b/third_party/txt/src/txt/platform.h index ed293c1967821..d45be43b0392a 100644 --- a/third_party/txt/src/txt/platform.h +++ b/third_party/txt/src/txt/platform.h @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/third_party/txt/src/txt/platform_android.cc b/third_party/txt/src/txt/platform_android.cc index e42a25dbf8e38..600d3d5ccfd9e 100644 --- a/third_party/txt/src/txt/platform_android.cc +++ b/third_party/txt/src/txt/platform_android.cc @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/third_party/txt/src/txt/platform_mac.mm b/third_party/txt/src/txt/platform_mac.mm index 9a97e06f099cc..423edddd97c07 100644 --- a/third_party/txt/src/txt/platform_mac.mm +++ b/third_party/txt/src/txt/platform_mac.mm @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/tools/android_support/download_android_support.py b/tools/android_support/download_android_support.py index 57a04afbab418..0a76bc1b4ce61 100644 --- a/tools/android_support/download_android_support.py +++ b/tools/android_support/download_android_support.py @@ -1,5 +1,5 @@ #!/usr/bin/env python -# Copyright 2018 The Chromium Authors. All rights reserved. +# 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. diff --git a/tools/gen_javadoc.py b/tools/gen_javadoc.py index fbc28a8682e0c..02a0732810b11 100755 --- a/tools/gen_javadoc.py +++ b/tools/gen_javadoc.py @@ -1,5 +1,5 @@ #!/usr/bin/env python -# Copyright 2017 The Chromium Authors. All rights reserved. +# 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. diff --git a/tools/gen_locale.dart b/tools/gen_locale.dart index 47d256c750858..2ee63adb20155 100644 --- a/tools/gen_locale.dart +++ b/tools/gen_locale.dart @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/tools/gen_objcdoc.sh b/tools/gen_objcdoc.sh index 0f921957e8fd3..3b8e038593f75 100755 --- a/tools/gen_objcdoc.sh +++ b/tools/gen_objcdoc.sh @@ -1,5 +1,5 @@ #!/usr/bin/env bash -# Copyright 2017 The Chromium Authors. All rights reserved. +# 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. diff --git a/tools/generate_package_files.py b/tools/generate_package_files.py index b32044d272f2f..39dc60d20905d 100644 --- a/tools/generate_package_files.py +++ b/tools/generate_package_files.py @@ -1,5 +1,5 @@ #!/usr/bin/env python -# Copyright 2018 The Flutter Authors. All rights reserved. +# 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. diff --git a/tools/gn b/tools/gn index f3d631a0c364e..4b4c5960b59af 100755 --- a/tools/gn +++ b/tools/gn @@ -1,5 +1,5 @@ #!/usr/bin/env python -# Copyright 2015 The Chromium Authors. All rights reserved. +# 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. diff --git a/tools/gn_test.py b/tools/gn_test.py index 7bbc37c014424..f0d671984ddba 100644 --- a/tools/gn_test.py +++ b/tools/gn_test.py @@ -1,4 +1,4 @@ -# Copyright 2015 The Chromium Authors. All rights reserved. +# 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. import unittest diff --git a/tools/licenses/lib/cache.dart b/tools/licenses/lib/cache.dart index 55d3928ab467c..5d55559917fb0 100644 --- a/tools/licenses/lib/cache.dart +++ b/tools/licenses/lib/cache.dart @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/tools/licenses/lib/filesystem.dart b/tools/licenses/lib/filesystem.dart index 4bbcc781f5e4b..5d066af5bb748 100644 --- a/tools/licenses/lib/filesystem.dart +++ b/tools/licenses/lib/filesystem.dart @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/tools/licenses/lib/licenses.dart b/tools/licenses/lib/licenses.dart index dc457411d6db4..091480ad77662 100644 --- a/tools/licenses/lib/licenses.dart +++ b/tools/licenses/lib/licenses.dart @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/tools/licenses/lib/limits.dart b/tools/licenses/lib/limits.dart index cd3a3cf37d33f..1a796461e237b 100644 --- a/tools/licenses/lib/limits.dart +++ b/tools/licenses/lib/limits.dart @@ -1,4 +1,4 @@ -// Copyright 2018 The Chromium Authors. All rights reserved. +// 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. diff --git a/tools/licenses/lib/main.dart b/tools/licenses/lib/main.dart index bb256015c0fc8..020ae2be939c4 100644 --- a/tools/licenses/lib/main.dart +++ b/tools/licenses/lib/main.dart @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/tools/licenses/lib/patterns.dart b/tools/licenses/lib/patterns.dart index 1f6be57254990..dde04c5438e7f 100644 --- a/tools/licenses/lib/patterns.dart +++ b/tools/licenses/lib/patterns.dart @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/vulkan/BUILD.gn b/vulkan/BUILD.gn index 2c021229456fa..5a0ed5361f1c3 100644 --- a/vulkan/BUILD.gn +++ b/vulkan/BUILD.gn @@ -1,4 +1,4 @@ -# Copyright 2015 The Chromium Authors. All rights reserved. +# 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. diff --git a/vulkan/skia_vulkan_header.h b/vulkan/skia_vulkan_header.h index e3f36ff0f96a8..7af41d7b5ec29 100644 --- a/vulkan/skia_vulkan_header.h +++ b/vulkan/skia_vulkan_header.h @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/vulkan/vulkan_application.cc b/vulkan/vulkan_application.cc index 7bc8d8f16f8fe..87c194ad7ee70 100644 --- a/vulkan/vulkan_application.cc +++ b/vulkan/vulkan_application.cc @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/vulkan/vulkan_application.h b/vulkan/vulkan_application.h index 82a1bbbf61b4e..fd2e7994efd93 100644 --- a/vulkan/vulkan_application.h +++ b/vulkan/vulkan_application.h @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/vulkan/vulkan_backbuffer.cc b/vulkan/vulkan_backbuffer.cc index 5943534063fda..e61045eaa8ad9 100644 --- a/vulkan/vulkan_backbuffer.cc +++ b/vulkan/vulkan_backbuffer.cc @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/vulkan/vulkan_backbuffer.h b/vulkan/vulkan_backbuffer.h index 3de06f76af89f..b6cdac62b89b3 100644 --- a/vulkan/vulkan_backbuffer.h +++ b/vulkan/vulkan_backbuffer.h @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/vulkan/vulkan_command_buffer.cc b/vulkan/vulkan_command_buffer.cc index 899963d9f204d..09ccf0e975805 100644 --- a/vulkan/vulkan_command_buffer.cc +++ b/vulkan/vulkan_command_buffer.cc @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/vulkan/vulkan_command_buffer.h b/vulkan/vulkan_command_buffer.h index f336a077ff308..bad0be185cfbf 100644 --- a/vulkan/vulkan_command_buffer.h +++ b/vulkan/vulkan_command_buffer.h @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/vulkan/vulkan_debug_report.cc b/vulkan/vulkan_debug_report.cc index 96e32de8ac566..bd8f36ff46f2d 100644 --- a/vulkan/vulkan_debug_report.cc +++ b/vulkan/vulkan_debug_report.cc @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/vulkan/vulkan_debug_report.h b/vulkan/vulkan_debug_report.h index 31e1b548a3e02..aa71f8cb4cd4a 100644 --- a/vulkan/vulkan_debug_report.h +++ b/vulkan/vulkan_debug_report.h @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/vulkan/vulkan_device.cc b/vulkan/vulkan_device.cc index 1cb7fc41b4d7f..50688c1bac16a 100644 --- a/vulkan/vulkan_device.cc +++ b/vulkan/vulkan_device.cc @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/vulkan/vulkan_device.h b/vulkan/vulkan_device.h index d48b02934a90f..f050fb889c7a7 100644 --- a/vulkan/vulkan_device.h +++ b/vulkan/vulkan_device.h @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/vulkan/vulkan_handle.cc b/vulkan/vulkan_handle.cc index 2b6e3def3f10d..eb15d9ff13147 100644 --- a/vulkan/vulkan_handle.cc +++ b/vulkan/vulkan_handle.cc @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/vulkan/vulkan_handle.h b/vulkan/vulkan_handle.h index 60be8a5f19fec..a829d0d10f6b7 100644 --- a/vulkan/vulkan_handle.h +++ b/vulkan/vulkan_handle.h @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/vulkan/vulkan_image.cc b/vulkan/vulkan_image.cc index 2dfb2cdc83d1f..492f9f310336a 100644 --- a/vulkan/vulkan_image.cc +++ b/vulkan/vulkan_image.cc @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/vulkan/vulkan_image.h b/vulkan/vulkan_image.h index 0ab5463154973..ac4690b8ca589 100644 --- a/vulkan/vulkan_image.h +++ b/vulkan/vulkan_image.h @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/vulkan/vulkan_interface.cc b/vulkan/vulkan_interface.cc index f5cadf22dddfa..fc83321e96355 100644 --- a/vulkan/vulkan_interface.cc +++ b/vulkan/vulkan_interface.cc @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/vulkan/vulkan_interface.h b/vulkan/vulkan_interface.h index f96b99eb8cb9c..6934ec97925eb 100644 --- a/vulkan/vulkan_interface.h +++ b/vulkan/vulkan_interface.h @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/vulkan/vulkan_native_surface.cc b/vulkan/vulkan_native_surface.cc index e05cfb1fc14bd..e85023208344e 100644 --- a/vulkan/vulkan_native_surface.cc +++ b/vulkan/vulkan_native_surface.cc @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/vulkan/vulkan_native_surface.h b/vulkan/vulkan_native_surface.h index e66bf01d030a1..0cf3c33fa5431 100644 --- a/vulkan/vulkan_native_surface.h +++ b/vulkan/vulkan_native_surface.h @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/vulkan/vulkan_native_surface_android.cc b/vulkan/vulkan_native_surface_android.cc index f635f60b7d9ff..0da17d90b4ebc 100644 --- a/vulkan/vulkan_native_surface_android.cc +++ b/vulkan/vulkan_native_surface_android.cc @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/vulkan/vulkan_native_surface_android.h b/vulkan/vulkan_native_surface_android.h index bd327d345ca77..9628eb5252925 100644 --- a/vulkan/vulkan_native_surface_android.h +++ b/vulkan/vulkan_native_surface_android.h @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/vulkan/vulkan_native_surface_magma.cc b/vulkan/vulkan_native_surface_magma.cc index e654594355f77..61c12d8d2d0ac 100644 --- a/vulkan/vulkan_native_surface_magma.cc +++ b/vulkan/vulkan_native_surface_magma.cc @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/vulkan/vulkan_native_surface_magma.h b/vulkan/vulkan_native_surface_magma.h index 87373289a834d..1f3bbfe2f09f2 100644 --- a/vulkan/vulkan_native_surface_magma.h +++ b/vulkan/vulkan_native_surface_magma.h @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/vulkan/vulkan_proc_table.cc b/vulkan/vulkan_proc_table.cc index bab2b9b54962d..50d25b44263ef 100644 --- a/vulkan/vulkan_proc_table.cc +++ b/vulkan/vulkan_proc_table.cc @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/vulkan/vulkan_proc_table.h b/vulkan/vulkan_proc_table.h index 54986a71a7138..12d4b5beb9b03 100644 --- a/vulkan/vulkan_proc_table.h +++ b/vulkan/vulkan_proc_table.h @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/vulkan/vulkan_provider.cc b/vulkan/vulkan_provider.cc index 1128d23ec0257..4b8cb5433e622 100644 --- a/vulkan/vulkan_provider.cc +++ b/vulkan/vulkan_provider.cc @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/vulkan/vulkan_provider.h b/vulkan/vulkan_provider.h index 041b5b2a9de75..eca43f53a0a3b 100644 --- a/vulkan/vulkan_provider.h +++ b/vulkan/vulkan_provider.h @@ -1,4 +1,4 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. +// 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. diff --git a/vulkan/vulkan_surface.cc b/vulkan/vulkan_surface.cc index 286438d0a3f5e..21224724d4f29 100644 --- a/vulkan/vulkan_surface.cc +++ b/vulkan/vulkan_surface.cc @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/vulkan/vulkan_surface.h b/vulkan/vulkan_surface.h index 81dd7cdfb7278..c1be63ed0ce71 100644 --- a/vulkan/vulkan_surface.h +++ b/vulkan/vulkan_surface.h @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/vulkan/vulkan_swapchain.cc b/vulkan/vulkan_swapchain.cc index 595614760aa1d..c69e9d263f7d0 100644 --- a/vulkan/vulkan_swapchain.cc +++ b/vulkan/vulkan_swapchain.cc @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/vulkan/vulkan_swapchain.h b/vulkan/vulkan_swapchain.h index 49b0e66cefbd9..e85eede05fc97 100644 --- a/vulkan/vulkan_swapchain.h +++ b/vulkan/vulkan_swapchain.h @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/vulkan/vulkan_utilities.cc b/vulkan/vulkan_utilities.cc index 4bce8e7a91d7a..6d952777a6cfd 100644 --- a/vulkan/vulkan_utilities.cc +++ b/vulkan/vulkan_utilities.cc @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/vulkan/vulkan_utilities.h b/vulkan/vulkan_utilities.h index ab3d52b4cc207..2e071075a2671 100644 --- a/vulkan/vulkan_utilities.h +++ b/vulkan/vulkan_utilities.h @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/vulkan/vulkan_window.cc b/vulkan/vulkan_window.cc index 43a4f3b000650..44ef7f4a22723 100644 --- a/vulkan/vulkan_window.cc +++ b/vulkan/vulkan_window.cc @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. diff --git a/vulkan/vulkan_window.h b/vulkan/vulkan_window.h index b205762079c8a..ade09d57ac765 100644 --- a/vulkan/vulkan_window.h +++ b/vulkan/vulkan_window.h @@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// 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. From b6f76e07ac3c8aabf6679ef9886bf0c0751995a2 Mon Sep 17 00:00:00 2001 From: Michael Goderbauer Date: Wed, 7 Nov 2018 13:23:18 -0800 Subject: [PATCH 0195/1537] Delete unused license goldens and add check (#6784) --- ci/licenses_golden/licenses_garnet | 960 ----------------------------- ci/licenses_golden/licenses_lib | 158 ----- tools/licenses/lib/main.dart | 14 +- 3 files changed, 12 insertions(+), 1120 deletions(-) delete mode 100644 ci/licenses_golden/licenses_garnet delete mode 100644 ci/licenses_golden/licenses_lib diff --git a/ci/licenses_golden/licenses_garnet b/ci/licenses_golden/licenses_garnet deleted file mode 100644 index 1792f6921fe63..0000000000000 --- a/ci/licenses_golden/licenses_garnet +++ /dev/null @@ -1,960 +0,0 @@ -Signature: e493a563f62df99aea315a223aa83d38 - -UNUSED LICENSES: - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -USED LICENSES: - -==================================================================================================== -LIBRARY: garnet -ORIGIN: ../../../LICENSE -TYPE: LicenseType.bsd -FILE: ../../../garnet/public/lib/fidl/cpp/bindings/macros.h ----------------------------------------------------------------------------------------------------- -Copyright 2014 The Chromium Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -==================================================================================================== - -==================================================================================================== -LIBRARY: garnet -ORIGIN: ../../../garnet/LICENSE -TYPE: LicenseType.bsd -FILE: ../../../garnet/.cargo/config -FILE: ../../../garnet/.dir-locals.el -FILE: ../../../garnet/Cargo.lock -FILE: ../../../garnet/Cargo.toml -FILE: ../../../garnet/manifest/garnet -FILE: ../../../garnet/manifest/minimal -FILE: ../../../garnet/manifest/third_party -FILE: ../../../garnet/public/lib/amber/fidl/amber.fidl -FILE: ../../../garnet/public/lib/auth/fidl/auth_provider.fidl -FILE: ../../../garnet/public/lib/auth/fidl/auth_provider_factory.fidl -FILE: ../../../garnet/public/lib/auth/fidl/token_manager.fidl -FILE: ../../../garnet/public/lib/bluetooth/fidl/common.fidl -FILE: ../../../garnet/public/lib/bluetooth/fidl/control.fidl -FILE: ../../../garnet/public/lib/bluetooth/fidl/gatt.fidl -FILE: ../../../garnet/public/lib/bluetooth/fidl/low_energy.fidl -FILE: ../../../garnet/public/lib/cobalt/fidl/cobalt.fidl -FILE: ../../../garnet/public/lib/cobalt/fidl/cobalt_controller.fidl -FILE: ../../../garnet/public/lib/device_settings/fidl/device_settings.fidl -FILE: ../../../garnet/public/lib/fidl/go/src/fidl/bindings2/test_types.fidl2 -FILE: ../../../garnet/public/lib/fidl/go/src/fidl/compiler/generated/fidl_files/fidl_files.core.go -FILE: ../../../garnet/public/lib/fidl/go/src/fidl/compiler/generated/fidl_types/fidl_types.core.go -FILE: ../../../garnet/public/lib/fidl/rust/fidl/Cargo.toml -FILE: ../../../garnet/public/lib/fidl/rust/fidl/src/endpoints.rs -FILE: ../../../garnet/public/lib/fidl/tools/sublime/FIDL.sublime-syntax -FILE: ../../../garnet/public/lib/fidl/tools/vim/ftdetect/fidl.vim -FILE: ../../../garnet/public/lib/fidl/tools/vim/syntax/fidl.vim -FILE: ../../../garnet/public/lib/fsl/fidl/sized_vmo_transport.fidl -FILE: ../../../garnet/public/lib/fsl/io/fd.cc -FILE: ../../../garnet/public/lib/fsl/io/fd.h -FILE: ../../../garnet/public/lib/fsl/socket/blocking_drain_unittest.cc -FILE: ../../../garnet/public/lib/fsl/socket/strings_unittest.cc -FILE: ../../../garnet/public/lib/fsl/tasks/fd_waiter.cc -FILE: ../../../garnet/public/lib/fsl/tasks/fd_waiter.h -FILE: ../../../garnet/public/lib/fsl/tasks/fd_waiter_unittest.cc -FILE: ../../../garnet/public/lib/fsl/threading/thread.cc -FILE: ../../../garnet/public/lib/fsl/threading/thread.h -FILE: ../../../garnet/public/lib/fsl/threading/thread_unittest.cc -FILE: ../../../garnet/public/lib/fsl/vmo/file_unittest.cc -FILE: ../../../garnet/public/lib/fsl/vmo/sized_vmo.cc -FILE: ../../../garnet/public/lib/fsl/vmo/sized_vmo.h -FILE: ../../../garnet/public/lib/fxl/files/directory_unittest.cc -FILE: ../../../garnet/public/lib/fxl/files/file_descriptor_unittest.cc -FILE: ../../../garnet/public/lib/fxl/files/path_win.cc -FILE: ../../../garnet/public/lib/fxl/files/symlink_win.cc -FILE: ../../../garnet/public/lib/fxl/functional/apply.h -FILE: ../../../garnet/public/lib/fxl/functional/apply_unittest.cc -FILE: ../../../garnet/public/lib/fxl/functional/auto_call_unittest.cc -FILE: ../../../garnet/public/lib/fxl/functional/cancelable_callback.h -FILE: ../../../garnet/public/lib/fxl/functional/cancelable_callback_unittest.cc -FILE: ../../../garnet/public/lib/fxl/fxl_export.h -FILE: ../../../garnet/public/lib/fxl/inttypes.h -FILE: ../../../garnet/public/lib/fxl/log_settings_command_line.cc -FILE: ../../../garnet/public/lib/fxl/log_settings_command_line.h -FILE: ../../../garnet/public/lib/fxl/portable_unistd.h -FILE: ../../../garnet/public/lib/fxl/random/rand_unittest.cc -FILE: ../../../garnet/public/lib/fxl/random/uuid_unittest.cc -FILE: ../../../garnet/public/lib/fxl/strings/join_strings.h -FILE: ../../../garnet/public/lib/fxl/strings/join_strings_unittest.cc -FILE: ../../../garnet/public/lib/fxl/threading/thread.cc -FILE: ../../../garnet/public/lib/fxl/threading/thread.h -FILE: ../../../garnet/public/lib/fxl/threading/thread_unittest.cc -FILE: ../../../garnet/public/lib/fxl/time/stopwatch_unittest.cc -FILE: ../../../garnet/public/lib/fxl/time/time_delta_unittest.cc -FILE: ../../../garnet/public/lib/fxl/time/time_point_unittest.cc -FILE: ../../../garnet/public/lib/images/fidl/image_info.fidl -FILE: ../../../garnet/public/lib/images/fidl/image_pipe.fidl -FILE: ../../../garnet/public/lib/images/fidl/memory_type.fidl -FILE: ../../../garnet/public/lib/mdns/fidl/mdns.fidl -FILE: ../../../garnet/public/lib/media/audio/lpcm_output_stream.cc -FILE: ../../../garnet/public/lib/media/audio/lpcm_output_stream.h -FILE: ../../../garnet/public/lib/media/audio/perceived_level.h -FILE: ../../../garnet/public/lib/media/audio/types.cc -FILE: ../../../garnet/public/lib/media/audio/types.h -FILE: ../../../garnet/public/lib/media/c/audio.h -FILE: ../../../garnet/public/lib/media/fidl/audio_capturer.fidl -FILE: ../../../garnet/public/lib/media/fidl/audio_policy_service.fidl -FILE: ../../../garnet/public/lib/media/fidl/net_media_player.fidl -FILE: ../../../garnet/public/lib/media/fidl/net_media_service.fidl -FILE: ../../../garnet/public/lib/netconnector/cpp/net_stub_responder.h -FILE: ../../../garnet/public/lib/netstack/c/netconfig.h -FILE: ../../../garnet/public/lib/power/fidl/power_manager.fidl -FILE: ../../../garnet/public/lib/svc/cpp/service_namespace.h -FILE: ../../../garnet/public/lib/svc/cpp/service_provider_bridge.cc -FILE: ../../../garnet/public/lib/svc/cpp/service_provider_bridge.h -FILE: ../../../garnet/public/lib/svc/cpp/services.cc -FILE: ../../../garnet/public/lib/svc/cpp/services.h -FILE: ../../../garnet/public/lib/svc/go/src/svc/svcfs/svcfs.go -FILE: ../../../garnet/public/lib/svc/go/src/svc/svcns/svcns.go -FILE: ../../../garnet/public/lib/test_runner/cpp/gtest_main.cc -FILE: ../../../garnet/public/lib/test_runner/cpp/reporting/gtest_listener.cc -FILE: ../../../garnet/public/lib/test_runner/cpp/reporting/gtest_listener.h -FILE: ../../../garnet/public/lib/test_runner/cpp/reporting/reporter.cc -FILE: ../../../garnet/public/lib/test_runner/cpp/reporting/reporter.h -FILE: ../../../garnet/public/lib/test_runner/cpp/test_runner.h -FILE: ../../../garnet/public/lib/test_runner/cpp/test_runner_store_impl.cc -FILE: ../../../garnet/public/lib/test_runner/cpp/test_runner_store_impl.h -FILE: ../../../garnet/public/lib/time_service/fidl/time_service.fidl -FILE: ../../../garnet/public/lib/ui/fun/sketchy/fidl/canvas.fidl -FILE: ../../../garnet/public/lib/ui/fun/sketchy/fidl/ops.fidl -FILE: ../../../garnet/public/lib/ui/fun/sketchy/fidl/resources.fidl -FILE: ../../../garnet/public/lib/ui/fun/sketchy/fidl/types.fidl -FILE: ../../../garnet/public/lib/ui/input/device_state.cc -FILE: ../../../garnet/public/lib/ui/input/device_state.h -FILE: ../../../garnet/public/lib/ui/input/fidl/ime_service.fidl -FILE: ../../../garnet/public/lib/ui/input/fidl/input_device_registry.fidl -FILE: ../../../garnet/public/lib/ui/input/fidl/input_reports.fidl -FILE: ../../../garnet/public/lib/ui/input/fidl/text_editing.fidl -FILE: ../../../garnet/public/lib/ui/input/fidl/text_input.fidl -FILE: ../../../garnet/public/lib/ui/input/fidl/usages.fidl -FILE: ../../../garnet/public/lib/ui/input/input_device_impl.cc -FILE: ../../../garnet/public/lib/ui/input/input_device_impl.h -FILE: ../../../garnet/public/lib/ui/mozart/fidl/presentation_info.fidl -FILE: ../../../garnet/public/lib/ui/presentation/fidl/presentation.fidl -FILE: ../../../garnet/public/lib/ui/scenic/client/host_image_cycler.cc -FILE: ../../../garnet/public/lib/ui/scenic/client/host_image_cycler.h -FILE: ../../../garnet/public/lib/ui/scenic/client/host_memory.cc -FILE: ../../../garnet/public/lib/ui/scenic/client/host_memory.h -FILE: ../../../garnet/public/lib/ui/scenic/client/resources.cc -FILE: ../../../garnet/public/lib/ui/scenic/client/resources.h -FILE: ../../../garnet/public/lib/ui/scenic/client/session.cc -FILE: ../../../garnet/public/lib/ui/scenic/client/session.h -FILE: ../../../garnet/public/lib/ui/scenic/fidl/display_info.fidl -FILE: ../../../garnet/public/lib/ui/scenic/fidl/events.fidl -FILE: ../../../garnet/public/lib/ui/scenic/fidl/hit.fidl -FILE: ../../../garnet/public/lib/ui/scenic/fidl/nodes.fidl -FILE: ../../../garnet/public/lib/ui/scenic/fidl/ops.fidl -FILE: ../../../garnet/public/lib/ui/scenic/fidl/renderer.fidl -FILE: ../../../garnet/public/lib/ui/scenic/fidl/resources.fidl -FILE: ../../../garnet/public/lib/ui/scenic/fidl/shapes.fidl -FILE: ../../../garnet/public/lib/ui/scenic/fidl/types.fidl -FILE: ../../../garnet/public/lib/ui/scenic/fidl_helpers.cc -FILE: ../../../garnet/public/lib/ui/scenic/fidl_helpers.h -FILE: ../../../garnet/public/lib/ui/scenic/types.h -FILE: ../../../garnet/public/lib/ui/sketchy/canvas.cc -FILE: ../../../garnet/public/lib/ui/sketchy/canvas.h -FILE: ../../../garnet/public/lib/ui/sketchy/glm_hack.h -FILE: ../../../garnet/public/lib/ui/sketchy/resources.cc -FILE: ../../../garnet/public/lib/ui/sketchy/resources.h -FILE: ../../../garnet/public/lib/ui/sketchy/types.cc -FILE: ../../../garnet/public/lib/ui/sketchy/types.h -FILE: ../../../garnet/public/lib/wlan/fidl/wlan_mlme.fidl -FILE: ../../../garnet/public/lib/wlan/fidl/wlan_mlme_ext.fidl -FILE: ../../../garnet/public/lib/wlan/fidl/wlan_service.fidl -FILE: ../../../garnet/tools/vboot_reference/futility_cmds.c -FILE: ../../../garnet/tools/vboot_reference/uuid/uuid.cc -FILE: ../../../garnet/tools/vboot_reference/uuid/uuid.h ----------------------------------------------------------------------------------------------------- -Copyright 2017 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -==================================================================================================== - -==================================================================================================== -LIBRARY: garnet -ORIGIN: ../../../garnet/public/lib/fidl/cpp/bindings/internal/array_internal.cc + ../../../garnet/LICENSE -TYPE: LicenseType.bsd -FILE: ../../../garnet/public/lib/fidl/cpp/bindings/array.h -FILE: ../../../garnet/public/lib/fidl/cpp/bindings/internal/array_internal.cc -FILE: ../../../garnet/public/lib/fidl/cpp/bindings/internal/array_internal.h -FILE: ../../../garnet/public/lib/fidl/cpp/bindings/internal/bindings_internal.h -FILE: ../../../garnet/public/lib/fidl/cpp/bindings/internal/bindings_serialization.cc -FILE: ../../../garnet/public/lib/fidl/cpp/bindings/internal/bindings_serialization.h -FILE: ../../../garnet/public/lib/fidl/cpp/bindings/internal/buffer.h -FILE: ../../../garnet/public/lib/fidl/cpp/bindings/internal/connector.cc -FILE: ../../../garnet/public/lib/fidl/cpp/bindings/internal/connector.h -FILE: ../../../garnet/public/lib/fidl/cpp/bindings/internal/message.cc -FILE: ../../../garnet/public/lib/fidl/cpp/bindings/internal/message_builder.cc -FILE: ../../../garnet/public/lib/fidl/cpp/bindings/internal/message_builder.h ----------------------------------------------------------------------------------------------------- -Copyright 2013 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -==================================================================================================== - -==================================================================================================== -LIBRARY: garnet -ORIGIN: ../../../garnet/public/lib/fidl/cpp/bindings/internal/array_serialization.h + ../../../garnet/LICENSE -TYPE: LicenseType.bsd -FILE: ../../../garnet/public/lib/fidl/cpp/bindings/binding.h -FILE: ../../../garnet/public/lib/fidl/cpp/bindings/binding_set.h -FILE: ../../../garnet/public/lib/fidl/cpp/bindings/interface_ptr.h -FILE: ../../../garnet/public/lib/fidl/cpp/bindings/interface_ptr_set.h -FILE: ../../../garnet/public/lib/fidl/cpp/bindings/interface_request.h -FILE: ../../../garnet/public/lib/fidl/cpp/bindings/internal/array_serialization.h -FILE: ../../../garnet/public/lib/fidl/cpp/bindings/internal/bounds_checker.cc -FILE: ../../../garnet/public/lib/fidl/cpp/bindings/internal/bounds_checker.h -FILE: ../../../garnet/public/lib/fidl/cpp/bindings/internal/fixed_buffer.cc -FILE: ../../../garnet/public/lib/fidl/cpp/bindings/internal/fixed_buffer.h -FILE: ../../../garnet/public/lib/fidl/cpp/bindings/internal/interface_ptr_internal.h -FILE: ../../../garnet/public/lib/fidl/cpp/bindings/internal/map_data_internal.h -FILE: ../../../garnet/public/lib/fidl/cpp/bindings/internal/map_internal.h -FILE: ../../../garnet/public/lib/fidl/cpp/bindings/internal/map_serialization.h -FILE: ../../../garnet/public/lib/fidl/cpp/bindings/internal/message_header_validator.cc -FILE: ../../../garnet/public/lib/fidl/cpp/bindings/internal/message_header_validator.h -FILE: ../../../garnet/public/lib/fidl/cpp/bindings/internal/message_internal.h -FILE: ../../../garnet/public/lib/fidl/cpp/bindings/internal/router.cc -FILE: ../../../garnet/public/lib/fidl/cpp/bindings/internal/router.h -FILE: ../../../garnet/public/lib/fidl/cpp/bindings/internal/shared_data.h -FILE: ../../../garnet/public/lib/fidl/cpp/bindings/internal/string_serialization.cc -FILE: ../../../garnet/public/lib/fidl/cpp/bindings/internal/string_serialization.h -FILE: ../../../garnet/public/lib/fidl/cpp/bindings/internal/template_util.h -FILE: ../../../garnet/public/lib/fidl/cpp/bindings/internal/validate_params.h -FILE: ../../../garnet/public/lib/fidl/cpp/bindings/internal/validation_errors.cc -FILE: ../../../garnet/public/lib/fidl/cpp/bindings/internal/validation_errors.h -FILE: ../../../garnet/public/lib/fidl/cpp/bindings/map.h -FILE: ../../../garnet/public/lib/fidl/cpp/bindings/message.h -FILE: ../../../garnet/public/lib/fidl/cpp/bindings/string.h -FILE: ../../../garnet/public/lib/fidl/cpp/bindings/struct_ptr.h -FILE: ../../../garnet/public/lib/fidl/cpp/bindings/type_converter.h -FILE: ../../../garnet/public/lib/ui/input/fidl/input_event_constants.fidl -FILE: ../../../garnet/public/lib/ui/input/fidl/input_events.fidl ----------------------------------------------------------------------------------------------------- -Copyright 2014 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -==================================================================================================== - -==================================================================================================== -LIBRARY: garnet -ORIGIN: ../../../garnet/public/lib/fidl/cpp/bindings/internal/iterator_util.h + ../../../garnet/LICENSE -TYPE: LicenseType.bsd -FILE: ../../../garnet/public/lib/fidl/cpp/bindings/interface_handle.h -FILE: ../../../garnet/public/lib/fidl/cpp/bindings/internal/iterator_util.h -FILE: ../../../garnet/public/lib/fidl/cpp/bindings/internal/map_serialization_forward.h -FILE: ../../../garnet/public/lib/fidl/cpp/bindings/internal/message_validation.cc -FILE: ../../../garnet/public/lib/fidl/cpp/bindings/internal/message_validation.h -FILE: ../../../garnet/public/lib/fidl/cpp/bindings/internal/union_accessor.h -FILE: ../../../garnet/public/lib/fidl/cpp/bindings/internal/validation_util.cc -FILE: ../../../garnet/public/lib/fidl/cpp/bindings/internal/validation_util.h -FILE: ../../../garnet/public/lib/icu_data/cpp/constants.h -FILE: ../../../garnet/public/lib/icu_data/cpp/icu_data.cc -FILE: ../../../garnet/public/lib/icu_data/cpp/icu_data.h -FILE: ../../../garnet/public/lib/ui/input/fidl/input_connection.fidl -FILE: ../../../garnet/public/lib/ui/input/fidl/input_dispatcher.fidl -FILE: ../../../garnet/public/lib/ui/view_framework/base_view.cc -FILE: ../../../garnet/public/lib/ui/view_framework/base_view.h -FILE: ../../../garnet/public/lib/ui/view_framework/view_provider_service.cc -FILE: ../../../garnet/public/lib/ui/view_framework/view_provider_service.h -FILE: ../../../garnet/public/lib/ui/views/cpp/formatting.cc -FILE: ../../../garnet/public/lib/ui/views/cpp/formatting.h -FILE: ../../../garnet/public/lib/ui/views/fidl/view_manager.fidl -FILE: ../../../garnet/public/lib/ui/views/fidl/view_provider.fidl -FILE: ../../../garnet/public/lib/ui/views/fidl/view_trees.fidl -FILE: ../../../garnet/public/lib/ui/views/fidl/views.fidl ----------------------------------------------------------------------------------------------------- -Copyright 2015 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -==================================================================================================== - -==================================================================================================== -LIBRARY: garnet -ORIGIN: ../../../garnet/public/lib/fidl/cpp/bindings/internal/type_converters.cc + ../../../garnet/LICENSE -TYPE: LicenseType.bsd -FILE: ../../../garnet/public/lib/fidl/cpp/binding.h -FILE: ../../../garnet/public/lib/fidl/cpp/binding_set.h -FILE: ../../../garnet/public/lib/fidl/cpp/binding_set_unittest.cc -FILE: ../../../garnet/public/lib/fidl/cpp/binding_unittest.cc -FILE: ../../../garnet/public/lib/fidl/cpp/bindings/internal/type_converters.cc -FILE: ../../../garnet/public/lib/fidl/cpp/bindings/type_converters.h -FILE: ../../../garnet/public/lib/fidl/cpp/clone.cc -FILE: ../../../garnet/public/lib/fidl/cpp/clone.h -FILE: ../../../garnet/public/lib/fidl/cpp/clone_unittest.cc -FILE: ../../../garnet/public/lib/fidl/cpp/coding_traits.cc -FILE: ../../../garnet/public/lib/fidl/cpp/coding_traits.h -FILE: ../../../garnet/public/lib/fidl/cpp/decoder.cc -FILE: ../../../garnet/public/lib/fidl/cpp/decoder.h -FILE: ../../../garnet/public/lib/fidl/cpp/encoder.cc -FILE: ../../../garnet/public/lib/fidl/cpp/encoder.h -FILE: ../../../garnet/public/lib/fidl/cpp/interface_handle.h -FILE: ../../../garnet/public/lib/fidl/cpp/interface_handle_unittest.cc -FILE: ../../../garnet/public/lib/fidl/cpp/interface_ptr.h -FILE: ../../../garnet/public/lib/fidl/cpp/interface_ptr_set.h -FILE: ../../../garnet/public/lib/fidl/cpp/interface_ptr_set_unittest.cc -FILE: ../../../garnet/public/lib/fidl/cpp/interface_ptr_unittest.cc -FILE: ../../../garnet/public/lib/fidl/cpp/interface_request.h -FILE: ../../../garnet/public/lib/fidl/cpp/interface_request_unittest.cc -FILE: ../../../garnet/public/lib/fidl/cpp/internal/header.h -FILE: ../../../garnet/public/lib/fidl/cpp/internal/implementation.h -FILE: ../../../garnet/public/lib/fidl/cpp/internal/message_handler.cc -FILE: ../../../garnet/public/lib/fidl/cpp/internal/message_handler.h -FILE: ../../../garnet/public/lib/fidl/cpp/internal/message_reader.cc -FILE: ../../../garnet/public/lib/fidl/cpp/internal/message_reader.h -FILE: ../../../garnet/public/lib/fidl/cpp/internal/message_reader_unittest.cc -FILE: ../../../garnet/public/lib/fidl/cpp/internal/pending_response.cc -FILE: ../../../garnet/public/lib/fidl/cpp/internal/pending_response.h -FILE: ../../../garnet/public/lib/fidl/cpp/internal/proxy_controller.cc -FILE: ../../../garnet/public/lib/fidl/cpp/internal/proxy_controller.h -FILE: ../../../garnet/public/lib/fidl/cpp/internal/proxy_controller_unittest.cc -FILE: ../../../garnet/public/lib/fidl/cpp/internal/stub.cc -FILE: ../../../garnet/public/lib/fidl/cpp/internal/stub.h -FILE: ../../../garnet/public/lib/fidl/cpp/internal/stub_controller.cc -FILE: ../../../garnet/public/lib/fidl/cpp/internal/stub_controller.h -FILE: ../../../garnet/public/lib/fidl/cpp/internal/stub_controller_unittest.cc -FILE: ../../../garnet/public/lib/fidl/cpp/internal/synchronous_proxy.cc -FILE: ../../../garnet/public/lib/fidl/cpp/internal/synchronous_proxy.h -FILE: ../../../garnet/public/lib/fidl/cpp/internal/weak_stub_controller.cc -FILE: ../../../garnet/public/lib/fidl/cpp/internal/weak_stub_controller.h -FILE: ../../../garnet/public/lib/fidl/cpp/string.cc -FILE: ../../../garnet/public/lib/fidl/cpp/string.h -FILE: ../../../garnet/public/lib/fidl/cpp/string_unittest.cc -FILE: ../../../garnet/public/lib/fidl/cpp/synchronous_interface_ptr.h -FILE: ../../../garnet/public/lib/fidl/cpp/synchronous_interface_ptr_unittest.cc -FILE: ../../../garnet/public/lib/fidl/cpp/traits.h -FILE: ../../../garnet/public/lib/fidl/cpp/vector.h -FILE: ../../../garnet/public/lib/fidl/cpp/vector_unittest.cc -FILE: ../../../garnet/public/lib/fidl/go/src/fidl/bindings2/encoding.go -FILE: ../../../garnet/public/lib/fidl/go/src/fidl/bindings2/encoding_test.go -FILE: ../../../garnet/public/lib/fidl/go/src/fidl/bindings2/message.go -FILE: ../../../garnet/public/lib/fidl/go/src/fidl/bindings2/test_types.go -FILE: ../../../garnet/public/lib/fidl/rust/fidl/src/encoding2.rs -FILE: ../../../garnet/public/lib/fsl/syslogger/init.cc -FILE: ../../../garnet/public/lib/fsl/syslogger/init.h -FILE: ../../../garnet/public/lib/fsl/syslogger/init_unittest.cc -FILE: ../../../garnet/public/lib/fxl/type_converter.h -FILE: ../../../garnet/public/lib/gralloc/fidl/gralloc.fidl -FILE: ../../../garnet/public/lib/images/fidl/encoded_image.fidl -FILE: ../../../garnet/public/lib/logger/fidl/logger.fidl -FILE: ../../../garnet/public/lib/mdns/cpp/service_subscriber.cc -FILE: ../../../garnet/public/lib/mdns/cpp/service_subscriber.h -FILE: ../../../garnet/public/lib/syslog/cpp/logger.cc -FILE: ../../../garnet/public/lib/syslog/cpp/logger.h -FILE: ../../../garnet/public/lib/syslog/cpp/logger_init.cc -FILE: ../../../garnet/public/lib/syslog/cpp/logger_unittest.cc -FILE: ../../../garnet/public/lib/ui/mozart/fidl/commands.fidl -FILE: ../../../garnet/public/lib/ui/mozart/fidl/dummy_system/commands.fidl -FILE: ../../../garnet/public/lib/ui/mozart/fidl/dummy_system/events.fidl -FILE: ../../../garnet/public/lib/ui/mozart/fidl/events.fidl -FILE: ../../../garnet/public/lib/ui/mozart/fidl/mozart.fidl -FILE: ../../../garnet/public/lib/ui/mozart/fidl/session.fidl -FILE: ../../../garnet/public/lib/ui/presentation/fidl/display_usage.fidl -FILE: ../../../garnet/public/lib/ui/views/fidl/commands.fidl -FILE: ../../../garnet/public/lib/ui/views/fidl/events.fidl -FILE: ../../../garnet/public/lib/xi/fidl/xi.fidl ----------------------------------------------------------------------------------------------------- -Copyright 2018 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -==================================================================================================== - -==================================================================================================== -LIBRARY: garnet -ORIGIN: ../../../garnet/public/lib/media/audio/lpcm_payload.cc + ../../../garnet/LICENSE -TYPE: LicenseType.bsd -FILE: ../../../garnet/public/lib/media/audio/lpcm_payload.cc -FILE: ../../../garnet/public/lib/media/audio/lpcm_payload.h ----------------------------------------------------------------------------------------------------- -Copyright 2017 The Fuchsia Authors.All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -==================================================================================================== - -==================================================================================================== -LIBRARY: garnet -ORIGIN: ../../../garnet/public/lib/netstack/fidl/netstack.fidl + ../../../LICENSE -TYPE: LicenseType.bsd -FILE: ../../../garnet/public/lib/netstack/fidl/netstack.fidl ----------------------------------------------------------------------------------------------------- -Copyright 2013 The Chromium Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -==================================================================================================== - -==================================================================================================== -LIBRARY: garnet -ORIGIN: ../../../garnet/public/lib/svc/cpp/service_namespace.cc + ../../../LICENSE -TYPE: LicenseType.bsd -FILE: ../../../garnet/public/lib/svc/cpp/service_namespace.cc ----------------------------------------------------------------------------------------------------- -Copyright 2017 The Chromium Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -==================================================================================================== - -==================================================================================================== -LIBRARY: garnet -ORIGIN: ../../../third_party/icu/scripts/LICENSE -TYPE: LicenseType.bsd -FILE: ../../../garnet/public/lib/fidl/go/src/fidl/bindings/async_waiter.go -FILE: ../../../garnet/public/lib/fidl/go/src/fidl/bindings/connector.go -FILE: ../../../garnet/public/lib/fidl/go/src/fidl/bindings/decoder.go -FILE: ../../../garnet/public/lib/fidl/go/src/fidl/bindings/encoder.go -FILE: ../../../garnet/public/lib/fidl/go/src/fidl/bindings/interface.go -FILE: ../../../garnet/public/lib/fidl/go/src/fidl/bindings/message.go -FILE: ../../../garnet/public/lib/fidl/go/src/fidl/bindings/router.go -FILE: ../../../garnet/public/lib/fidl/go/src/fidl/bindings/stub.go -FILE: ../../../garnet/public/lib/fidl/go/src/fidl/bindings/util.go -FILE: ../../../garnet/public/lib/netstack/fidl/net_address.fidl -FILE: ../../../garnet/public/lib/network/fidl/http_header.fidl -FILE: ../../../garnet/public/lib/network/fidl/network_error.fidl -FILE: ../../../garnet/public/lib/network/fidl/network_service.fidl -FILE: ../../../garnet/public/lib/network/fidl/url_loader.fidl -FILE: ../../../garnet/public/lib/network/fidl/url_request.fidl -FILE: ../../../garnet/public/lib/network/fidl/url_response.fidl ----------------------------------------------------------------------------------------------------- -Copyright 2015 The Chromium Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -==================================================================================================== - -==================================================================================================== -LIBRARY: garnet -ORIGIN: ../../../topaz/LICENSE -TYPE: LicenseType.bsd -FILE: ../../../garnet/public/lib/fidl/cpp/bindings/formatting.h -FILE: ../../../garnet/public/lib/fidl/cpp/bindings/internal/message_validator.cc -FILE: ../../../garnet/public/lib/fidl/cpp/bindings/message_validator.h -FILE: ../../../garnet/public/lib/fidl/cpp/bindings/synchronous_interface_ptr.h -FILE: ../../../garnet/public/lib/fidl/rust/fidl/src/client.rs -FILE: ../../../garnet/public/lib/fidl/rust/fidl/src/encoding.rs -FILE: ../../../garnet/public/lib/fidl/rust/fidl/src/error.rs -FILE: ../../../garnet/public/lib/fidl/rust/fidl/src/interface.rs -FILE: ../../../garnet/public/lib/fidl/rust/fidl/src/lib.rs -FILE: ../../../garnet/public/lib/fidl/rust/fidl/src/message.rs -FILE: ../../../garnet/public/lib/fidl/rust/fidl/src/server.rs -FILE: ../../../garnet/public/lib/fonts/fidl/font_provider.fidl -FILE: ../../../garnet/public/lib/fsl/handles/object_info.cc -FILE: ../../../garnet/public/lib/fsl/handles/object_info.h -FILE: ../../../garnet/public/lib/fsl/handles/object_info_unittest.cc -FILE: ../../../garnet/public/lib/fsl/io/device_watcher.cc -FILE: ../../../garnet/public/lib/fsl/io/device_watcher.h -FILE: ../../../garnet/public/lib/fsl/io/redirection.cc -FILE: ../../../garnet/public/lib/fsl/io/redirection.h -FILE: ../../../garnet/public/lib/fsl/io/redirection_unittest.cc -FILE: ../../../garnet/public/lib/fsl/socket/blocking_drain.cc -FILE: ../../../garnet/public/lib/fsl/socket/blocking_drain.h -FILE: ../../../garnet/public/lib/fsl/socket/files.cc -FILE: ../../../garnet/public/lib/fsl/socket/files.h -FILE: ../../../garnet/public/lib/fsl/socket/files_unittest.cc -FILE: ../../../garnet/public/lib/fsl/socket/socket_drainer.cc -FILE: ../../../garnet/public/lib/fsl/socket/socket_drainer.h -FILE: ../../../garnet/public/lib/fsl/socket/socket_drainer_unittest.cc -FILE: ../../../garnet/public/lib/fsl/socket/strings.cc -FILE: ../../../garnet/public/lib/fsl/socket/strings.h -FILE: ../../../garnet/public/lib/fsl/tasks/incoming_task_queue.cc -FILE: ../../../garnet/public/lib/fsl/tasks/incoming_task_queue.h -FILE: ../../../garnet/public/lib/fsl/tasks/message_loop.cc -FILE: ../../../garnet/public/lib/fsl/tasks/message_loop.h -FILE: ../../../garnet/public/lib/fsl/tasks/message_loop_handler.cc -FILE: ../../../garnet/public/lib/fsl/tasks/message_loop_handler.h -FILE: ../../../garnet/public/lib/fsl/tasks/message_loop_unittest.cc -FILE: ../../../garnet/public/lib/fsl/threading/create_thread.cc -FILE: ../../../garnet/public/lib/fsl/threading/create_thread.h -FILE: ../../../garnet/public/lib/fsl/threading/create_thread_unittest.cc -FILE: ../../../garnet/public/lib/fsl/vmo/file.cc -FILE: ../../../garnet/public/lib/fsl/vmo/file.h -FILE: ../../../garnet/public/lib/fsl/vmo/shared_vmo.cc -FILE: ../../../garnet/public/lib/fsl/vmo/shared_vmo.h -FILE: ../../../garnet/public/lib/fsl/vmo/shared_vmo_unittest.cc -FILE: ../../../garnet/public/lib/fsl/vmo/strings.h -FILE: ../../../garnet/public/lib/fsl/vmo/strings_unittest.cc -FILE: ../../../garnet/public/lib/fsl/vmo/vector.h -FILE: ../../../garnet/public/lib/fsl/vmo/vector_unittest.cc -FILE: ../../../garnet/public/lib/fsl/vmo/vmo.cc -FILE: ../../../garnet/public/lib/fxl/arraysize.h -FILE: ../../../garnet/public/lib/fxl/arraysize_unittest.cc -FILE: ../../../garnet/public/lib/fxl/build_config.h -FILE: ../../../garnet/public/lib/fxl/command_line.cc -FILE: ../../../garnet/public/lib/fxl/command_line.h -FILE: ../../../garnet/public/lib/fxl/command_line_unittest.cc -FILE: ../../../garnet/public/lib/fxl/compiler_specific.h -FILE: ../../../garnet/public/lib/fxl/debug/debugger.cc -FILE: ../../../garnet/public/lib/fxl/debug/debugger.h -FILE: ../../../garnet/public/lib/fxl/files/directory.cc -FILE: ../../../garnet/public/lib/fxl/files/directory.h -FILE: ../../../garnet/public/lib/fxl/files/eintr_wrapper.h -FILE: ../../../garnet/public/lib/fxl/files/file.cc -FILE: ../../../garnet/public/lib/fxl/files/file.h -FILE: ../../../garnet/public/lib/fxl/files/file_descriptor.cc -FILE: ../../../garnet/public/lib/fxl/files/file_descriptor.h -FILE: ../../../garnet/public/lib/fxl/files/file_unittest.cc -FILE: ../../../garnet/public/lib/fxl/files/path.h -FILE: ../../../garnet/public/lib/fxl/files/path_posix.cc -FILE: ../../../garnet/public/lib/fxl/files/path_unittest.cc -FILE: ../../../garnet/public/lib/fxl/files/scoped_temp_dir.cc -FILE: ../../../garnet/public/lib/fxl/files/scoped_temp_dir.h -FILE: ../../../garnet/public/lib/fxl/files/scoped_temp_dir_unittest.cc -FILE: ../../../garnet/public/lib/fxl/files/symlink.h -FILE: ../../../garnet/public/lib/fxl/files/symlink_posix.cc -FILE: ../../../garnet/public/lib/fxl/files/unique_fd.cc -FILE: ../../../garnet/public/lib/fxl/files/unique_fd.h -FILE: ../../../garnet/public/lib/fxl/functional/auto_call.h -FILE: ../../../garnet/public/lib/fxl/functional/closure.h -FILE: ../../../garnet/public/lib/fxl/functional/make_copyable.h -FILE: ../../../garnet/public/lib/fxl/functional/make_copyable_unittest.cc -FILE: ../../../garnet/public/lib/fxl/log_level.h -FILE: ../../../garnet/public/lib/fxl/log_settings.cc -FILE: ../../../garnet/public/lib/fxl/log_settings.h -FILE: ../../../garnet/public/lib/fxl/log_settings_state.cc -FILE: ../../../garnet/public/lib/fxl/log_settings_unittest.cc -FILE: ../../../garnet/public/lib/fxl/logging.cc -FILE: ../../../garnet/public/lib/fxl/logging.h -FILE: ../../../garnet/public/lib/fxl/macros.h -FILE: ../../../garnet/public/lib/fxl/memory/ref_counted.h -FILE: ../../../garnet/public/lib/fxl/memory/ref_counted_internal.h -FILE: ../../../garnet/public/lib/fxl/memory/ref_counted_unittest.cc -FILE: ../../../garnet/public/lib/fxl/memory/ref_ptr.h -FILE: ../../../garnet/public/lib/fxl/memory/ref_ptr_internal.h -FILE: ../../../garnet/public/lib/fxl/memory/unique_object.h -FILE: ../../../garnet/public/lib/fxl/memory/weak_ptr.h -FILE: ../../../garnet/public/lib/fxl/memory/weak_ptr_internal.cc -FILE: ../../../garnet/public/lib/fxl/memory/weak_ptr_internal.h -FILE: ../../../garnet/public/lib/fxl/memory/weak_ptr_unittest.cc -FILE: ../../../garnet/public/lib/fxl/random/rand.cc -FILE: ../../../garnet/public/lib/fxl/random/rand.h -FILE: ../../../garnet/public/lib/fxl/random/uuid.cc -FILE: ../../../garnet/public/lib/fxl/random/uuid.h -FILE: ../../../garnet/public/lib/fxl/strings/ascii.cc -FILE: ../../../garnet/public/lib/fxl/strings/ascii.h -FILE: ../../../garnet/public/lib/fxl/strings/ascii_unittest.cc -FILE: ../../../garnet/public/lib/fxl/strings/concatenate.cc -FILE: ../../../garnet/public/lib/fxl/strings/concatenate.h -FILE: ../../../garnet/public/lib/fxl/strings/concatenate_unittest.cc -FILE: ../../../garnet/public/lib/fxl/strings/split_string.cc -FILE: ../../../garnet/public/lib/fxl/strings/split_string.h -FILE: ../../../garnet/public/lib/fxl/strings/split_string_unittest.cc -FILE: ../../../garnet/public/lib/fxl/strings/string_number_conversions.cc -FILE: ../../../garnet/public/lib/fxl/strings/string_number_conversions.h -FILE: ../../../garnet/public/lib/fxl/strings/string_number_conversions_unittest.cc -FILE: ../../../garnet/public/lib/fxl/strings/string_printf.cc -FILE: ../../../garnet/public/lib/fxl/strings/string_printf.h -FILE: ../../../garnet/public/lib/fxl/strings/string_printf_unittest.cc -FILE: ../../../garnet/public/lib/fxl/strings/string_view.cc -FILE: ../../../garnet/public/lib/fxl/strings/string_view.h -FILE: ../../../garnet/public/lib/fxl/strings/string_view_unittest.cc -FILE: ../../../garnet/public/lib/fxl/strings/trim.cc -FILE: ../../../garnet/public/lib/fxl/strings/trim.h -FILE: ../../../garnet/public/lib/fxl/strings/trim_unittest.cc -FILE: ../../../garnet/public/lib/fxl/strings/utf_codecs.cc -FILE: ../../../garnet/public/lib/fxl/strings/utf_codecs.h -FILE: ../../../garnet/public/lib/fxl/synchronization/sleep.cc -FILE: ../../../garnet/public/lib/fxl/synchronization/sleep.h -FILE: ../../../garnet/public/lib/fxl/synchronization/thread_annotations.h -FILE: ../../../garnet/public/lib/fxl/synchronization/thread_annotations_unittest.cc -FILE: ../../../garnet/public/lib/fxl/synchronization/thread_checker.h -FILE: ../../../garnet/public/lib/fxl/synchronization/thread_checker_unittest.cc -FILE: ../../../garnet/public/lib/fxl/synchronization/waitable_event.cc -FILE: ../../../garnet/public/lib/fxl/synchronization/waitable_event.h -FILE: ../../../garnet/public/lib/fxl/synchronization/waitable_event_unittest.cc -FILE: ../../../garnet/public/lib/fxl/tasks/one_shot_timer.cc -FILE: ../../../garnet/public/lib/fxl/tasks/one_shot_timer.h -FILE: ../../../garnet/public/lib/fxl/tasks/one_shot_timer_unittest.cc -FILE: ../../../garnet/public/lib/fxl/tasks/task_runner.cc -FILE: ../../../garnet/public/lib/fxl/tasks/task_runner.h -FILE: ../../../garnet/public/lib/fxl/time/stopwatch.cc -FILE: ../../../garnet/public/lib/fxl/time/stopwatch.h -FILE: ../../../garnet/public/lib/fxl/time/time_delta.h -FILE: ../../../garnet/public/lib/fxl/time/time_point.cc -FILE: ../../../garnet/public/lib/fxl/time/time_point.h -FILE: ../../../garnet/public/lib/fxl/time/time_printers.cc -FILE: ../../../garnet/public/lib/fxl/time/time_unittest.cc -FILE: ../../../garnet/public/lib/icu_data/fidl/icu_data.fidl -FILE: ../../../garnet/public/lib/media/audio/perceived_level.cc -FILE: ../../../garnet/public/lib/media/fidl/audio_renderer.fidl -FILE: ../../../garnet/public/lib/media/fidl/audio_server.fidl -FILE: ../../../garnet/public/lib/media/fidl/media_capturer.fidl -FILE: ../../../garnet/public/lib/media/fidl/media_metadata.fidl -FILE: ../../../garnet/public/lib/media/fidl/media_player.fidl -FILE: ../../../garnet/public/lib/media/fidl/media_renderer.fidl -FILE: ../../../garnet/public/lib/media/fidl/media_result.fidl -FILE: ../../../garnet/public/lib/media/fidl/media_sink.fidl -FILE: ../../../garnet/public/lib/media/fidl/media_source.fidl -FILE: ../../../garnet/public/lib/media/fidl/media_transport.fidl -FILE: ../../../garnet/public/lib/media/fidl/media_type_converter.fidl -FILE: ../../../garnet/public/lib/media/fidl/media_types.fidl -FILE: ../../../garnet/public/lib/media/fidl/problem.fidl -FILE: ../../../garnet/public/lib/media/fidl/seeking_reader.fidl -FILE: ../../../garnet/public/lib/media/fidl/timeline_controller.fidl -FILE: ../../../garnet/public/lib/media/fidl/timelines.fidl -FILE: ../../../garnet/public/lib/media/fidl/tts_service.fidl -FILE: ../../../garnet/public/lib/media/fidl/video_renderer.fidl -FILE: ../../../garnet/public/lib/media/timeline/timeline.h -FILE: ../../../garnet/public/lib/media/timeline/timeline_function.cc -FILE: ../../../garnet/public/lib/media/timeline/timeline_function.h -FILE: ../../../garnet/public/lib/media/timeline/timeline_rate.cc -FILE: ../../../garnet/public/lib/media/timeline/timeline_rate.h -FILE: ../../../garnet/public/lib/media/transport/fifo_allocator.cc -FILE: ../../../garnet/public/lib/media/transport/fifo_allocator.h -FILE: ../../../garnet/public/lib/media/transport/mapped_shared_buffer.cc -FILE: ../../../garnet/public/lib/media/transport/mapped_shared_buffer.h -FILE: ../../../garnet/public/lib/media/transport/media_packet_consumer_base.cc -FILE: ../../../garnet/public/lib/media/transport/media_packet_consumer_base.h -FILE: ../../../garnet/public/lib/media/transport/media_packet_producer_base.cc -FILE: ../../../garnet/public/lib/media/transport/media_packet_producer_base.h -FILE: ../../../garnet/public/lib/media/transport/shared_buffer_set.cc -FILE: ../../../garnet/public/lib/media/transport/shared_buffer_set.h -FILE: ../../../garnet/public/lib/media/transport/shared_buffer_set_allocator.cc -FILE: ../../../garnet/public/lib/media/transport/shared_buffer_set_allocator.h -FILE: ../../../garnet/public/lib/netconnector/cpp/message_relay.cc -FILE: ../../../garnet/public/lib/netconnector/cpp/message_relay.h -FILE: ../../../garnet/public/lib/netconnector/fidl/netconnector.fidl -FILE: ../../../garnet/public/lib/network/fidl/url_body.fidl -FILE: ../../../garnet/public/lib/syslog/cpp/run_all_unittests.cc -FILE: ../../../garnet/public/lib/test_runner/cpp/scope.cc -FILE: ../../../garnet/public/lib/test_runner/cpp/scope.h -FILE: ../../../garnet/public/lib/test_runner/cpp/test_runner.cc -FILE: ../../../garnet/public/lib/test_runner/fidl/test_runner.fidl -FILE: ../../../garnet/public/lib/tracing/fidl/trace_controller.fidl -FILE: ../../../garnet/public/lib/tracing/fidl/trace_provider.fidl -FILE: ../../../garnet/public/lib/tracing/fidl/trace_registry.fidl -FILE: ../../../garnet/public/lib/ui/geometry/cpp/formatting.cc -FILE: ../../../garnet/public/lib/ui/geometry/cpp/formatting.h -FILE: ../../../garnet/public/lib/ui/geometry/cpp/geometry_util.cc -FILE: ../../../garnet/public/lib/ui/geometry/cpp/geometry_util.h -FILE: ../../../garnet/public/lib/ui/geometry/fidl/geometry.fidl -FILE: ../../../garnet/public/lib/ui/input/cpp/formatting.cc -FILE: ../../../garnet/public/lib/ui/input/cpp/formatting.h -FILE: ../../../garnet/public/lib/ui/presentation/fidl/presenter.fidl -FILE: ../../../garnet/public/lib/ui/view_framework/view_provider_app.cc -FILE: ../../../garnet/public/lib/ui/view_framework/view_provider_app.h -FILE: ../../../garnet/public/lib/ui/views/fidl/view_containers.fidl -FILE: ../../../garnet/public/lib/ui/views/fidl/view_properties.fidl -FILE: ../../../garnet/public/lib/ui/views/fidl/view_token.fidl -FILE: ../../../garnet/public/lib/ui/views/fidl/view_tree_token.fidl -FILE: ../../../garnet/public/lib/zip/create_unzipper.cc -FILE: ../../../garnet/public/lib/zip/create_unzipper.h -FILE: ../../../garnet/public/lib/zip/memory_io.cc -FILE: ../../../garnet/public/lib/zip/memory_io.h -FILE: ../../../garnet/public/lib/zip/unique_unzipper.cc -FILE: ../../../garnet/public/lib/zip/unique_unzipper.h -FILE: ../../../garnet/public/lib/zip/unique_zipper.cc -FILE: ../../../garnet/public/lib/zip/unique_zipper.h -FILE: ../../../garnet/public/lib/zip/unzipper.cc -FILE: ../../../garnet/public/lib/zip/unzipper.h -FILE: ../../../garnet/public/lib/zip/zipper.cc -FILE: ../../../garnet/public/lib/zip/zipper.h ----------------------------------------------------------------------------------------------------- -Copyright 2016 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -==================================================================================================== - -==================================================================================================== -LIBRARY: icu -ORIGIN: ../../../garnet/public/lib/fxl/third_party/icu/LICENSE -TYPE: LicenseType.unknown -FILE: ../../../garnet/public/lib/fxl/third_party/icu/icu_utf.cc -FILE: ../../../garnet/public/lib/fxl/third_party/icu/icu_utf.h ----------------------------------------------------------------------------------------------------- -ICU License - ICU 1.8.1 and later - -COPYRIGHT AND PERMISSION NOTICE - -Copyright (c) 1995-2009 International Business Machines Corporation and others - -All rights reserved. - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, and/or sell copies of the Software, and to permit persons -to whom the Software is furnished to do so, provided that the above -copyright notice(s) and this permission notice appear in all copies of -the Software and that both the above copyright notice(s) and this -permission notice appear in supporting documentation. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT -OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR -HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY -SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER -RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF -CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN -CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -Except as contained in this notice, the name of a copyright holder -shall not be used in advertising or otherwise to promote the sale, use -or other dealings in this Software without prior written authorization -of the copyright holder. -==================================================================================================== -Total license count: 12 diff --git a/ci/licenses_golden/licenses_lib b/ci/licenses_golden/licenses_lib deleted file mode 100644 index 53bb313e2d357..0000000000000 --- a/ci/licenses_golden/licenses_lib +++ /dev/null @@ -1,158 +0,0 @@ -Signature: c6853c1bbc8db501fa71fb05acb5f2ba - -UNUSED LICENSES: - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -USED LICENSES: - -==================================================================================================== -LIBRARY: lib -ORIGIN: ../../../garnet/LICENSE -TYPE: LicenseType.bsd -FILE: ../../../lib/tonic/dart_list.cc -FILE: ../../../lib/tonic/dart_list.h ----------------------------------------------------------------------------------------------------- -Copyright 2017 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -==================================================================================================== - -==================================================================================================== -LIBRARY: lib -ORIGIN: ../../../lib/tonic/LICENSE -TYPE: LicenseType.bsd -FILE: ../../../lib/tonic/converter/dart_converter.cc -FILE: ../../../lib/tonic/converter/dart_converter.h -FILE: ../../../lib/tonic/dart_message_handler.cc -FILE: ../../../lib/tonic/dart_message_handler.h -FILE: ../../../lib/tonic/dart_microtask_queue.cc -FILE: ../../../lib/tonic/dart_microtask_queue.h -FILE: ../../../lib/tonic/dart_sticky_error.cc -FILE: ../../../lib/tonic/dart_sticky_error.h -FILE: ../../../lib/tonic/debugger/dart_debugger.cc -FILE: ../../../lib/tonic/debugger/dart_debugger.h -FILE: ../../../lib/tonic/file_loader/file_loader.cc -FILE: ../../../lib/tonic/file_loader/file_loader.h -FILE: ../../../lib/tonic/logging/dart_error.cc -FILE: ../../../lib/tonic/logging/dart_error.h -FILE: ../../../lib/tonic/logging/dart_invoke.cc -FILE: ../../../lib/tonic/logging/dart_invoke.h -FILE: ../../../lib/tonic/parsers/packages_map.cc -FILE: ../../../lib/tonic/parsers/packages_map.h -FILE: ../../../lib/tonic/scopes/dart_api_scope.h -FILE: ../../../lib/tonic/scopes/dart_isolate_scope.cc -FILE: ../../../lib/tonic/scopes/dart_isolate_scope.h -FILE: ../../../lib/tonic/typed_data/dart_byte_data.h -FILE: ../../../lib/tonic/typed_data/int32_list.h -FILE: ../../../lib/tonic/typed_data/uint8_list.h ----------------------------------------------------------------------------------------------------- -Copyright 2016 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -==================================================================================================== - -==================================================================================================== -LIBRARY: lib -ORIGIN: ../../../lib/tonic/typed_data/dart_byte_data.cc + ../../../lib/tonic/LICENSE -TYPE: LicenseType.bsd -FILE: ../../../lib/tonic/dart_args.h -FILE: ../../../lib/tonic/dart_binding_macros.h -FILE: ../../../lib/tonic/dart_class_library.cc -FILE: ../../../lib/tonic/dart_class_library.h -FILE: ../../../lib/tonic/dart_class_provider.cc -FILE: ../../../lib/tonic/dart_class_provider.h -FILE: ../../../lib/tonic/dart_library_natives.cc -FILE: ../../../lib/tonic/dart_library_natives.h -FILE: ../../../lib/tonic/dart_persistent_value.cc -FILE: ../../../lib/tonic/dart_persistent_value.h -FILE: ../../../lib/tonic/dart_state.cc -FILE: ../../../lib/tonic/dart_state.h -FILE: ../../../lib/tonic/dart_wrappable.cc -FILE: ../../../lib/tonic/dart_wrappable.h -FILE: ../../../lib/tonic/dart_wrapper_info.h -FILE: ../../../lib/tonic/typed_data/dart_byte_data.cc -FILE: ../../../lib/tonic/typed_data/float32_list.cc -FILE: ../../../lib/tonic/typed_data/float32_list.h -FILE: ../../../lib/tonic/typed_data/float64_list.cc -FILE: ../../../lib/tonic/typed_data/float64_list.h -FILE: ../../../lib/tonic/typed_data/int32_list.cc -FILE: ../../../lib/tonic/typed_data/uint8_list.cc ----------------------------------------------------------------------------------------------------- -Copyright 2015 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -==================================================================================================== -Total license count: 3 diff --git a/tools/licenses/lib/main.dart b/tools/licenses/lib/main.dart index 020ae2be939c4..478d8533b800a 100644 --- a/tools/licenses/lib/main.dart +++ b/tools/licenses/lib/main.dart @@ -2423,6 +2423,7 @@ Future main(List arguments) async { } else { RegExp signaturePattern = new RegExp(r'Signature: (\w+)'); + final List usedGoldens = []; bool isFirstComponent = true; for (RepositoryDirectory component in root.subdirectories) { system.stderr.writeln('Collecting licenses for ${component.io.name}'); @@ -2441,10 +2442,11 @@ Future main(List arguments) async { // Check whether the golden file matches the signature of the current contents // of this directory. try { - system.File goldenFile = new system.File( - path.join(argResults['golden'], 'licenses_${component.io.name}')); + final String goldenFileName = 'licenses_${component.io.name}'; + system.File goldenFile = new system.File(path.join(argResults['golden'], goldenFileName)); String goldenSignature = await goldenFile.openRead() .transform(utf8.decoder).transform(new LineSplitter()).first; + usedGoldens.add(goldenFileName); Match goldenMatch = signaturePattern.matchAsPrefix(goldenSignature); if (goldenMatch != null && goldenMatch.group(1) == signature) { system.stderr.writeln(' Skipping this component - no change in signature'); @@ -2500,6 +2502,14 @@ Future main(List arguments) async { progress.flush(); system.stderr.writeln(''); } + + final Set unusedGoldens = system.Directory(argResults['golden']).listSync().map((system.FileSystemEntity file) => path.basename(file.path)).toSet() + ..removeAll(usedGoldens); + if (unusedGoldens.isNotEmpty) { + system.stderr.writeln('The following golden files in ${argResults['golden']} are unused and need to be deleted:'); + unusedGoldens.map((String s) => ' * $s').forEach(system.stderr.writeln); + system.exit(1); + } } } catch (e, stack) { system.stderr.writeln('failure: $e\n$stack'); From 547b8585eac5a0ad10b403eadf767fce59b07007 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Wed, 7 Nov 2018 18:07:18 -0500 Subject: [PATCH 0196/1537] Roll src/third_party/skia b52c273d3f05..f49563bf9276 (7 commits) (#6785) https://skia.googlesource.com/skia.git/+log/b52c273d3f05..f49563bf9276 Created with: gclient setdep -r src/third_party/skia@f49563bf9276 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 93295e0e32b3f..7d442c731bd1b 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'b52c273d3f052f89c075f5c3208fd26d01e84f2b', + 'skia_revision': 'f49563bf9276f70441fd22da83413d585b2bcc17', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index c3314e892637d..2172de60d2b76 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: f14b492e93bb0c0650e71e3e47ba21ca +Signature: 0bb38b6e27602e273279946664cfde23 UNUSED LICENSES: From 94dd7165effc9c19c5356e62af694005f65060e1 Mon Sep 17 00:00:00 2001 From: Mehmet Fidanboylu Date: Wed, 7 Nov 2018 15:29:52 -0800 Subject: [PATCH 0197/1537] Skia Cleanup (#6786) --- flow/BUILD.gn | 1 - lib/ui/BUILD.gn | 2 -- lib/ui/painting/codec.cc | 2 +- shell/common/BUILD.gn | 1 - shell/gpu/BUILD.gn | 4 ++-- shell/platform/android/BUILD.gn | 1 - shell/platform/darwin/ios/BUILD.gn | 1 - shell/platform/embedder/BUILD.gn | 1 - third_party/txt/BUILD.gn | 2 +- vulkan/BUILD.gn | 2 -- 10 files changed, 4 insertions(+), 13 deletions(-) diff --git a/flow/BUILD.gn b/flow/BUILD.gn index 6b5cacb54df61..5a1f50d2ee5ba 100644 --- a/flow/BUILD.gn +++ b/flow/BUILD.gn @@ -66,7 +66,6 @@ source_set("flow") { "$flutter_root/fml", "$flutter_root/synchronization", "//third_party/skia", - "//third_party/skia:gpu", ] if (is_fuchsia) { diff --git a/lib/ui/BUILD.gn b/lib/ui/BUILD.gn index a27321c406504..8ecf508e5a2f7 100644 --- a/lib/ui/BUILD.gn +++ b/lib/ui/BUILD.gn @@ -108,8 +108,6 @@ source_set("ui") { "//third_party/dart/runtime/bin:dart_io_api", "//third_party/rapidjson", "//third_party/skia", - "//third_party/skia:effects", - "//third_party/skia:gpu", "//third_party/tonic", ] if (is_fuchsia) { diff --git a/lib/ui/painting/codec.cc b/lib/ui/painting/codec.cc index ba82f81386fd2..608d332f673d5 100644 --- a/lib/ui/painting/codec.cc +++ b/lib/ui/painting/codec.cc @@ -400,7 +400,7 @@ sk_sp MultiFrameCodec::GetNextFrameImage( SkCodec::Options options; options.fFrameIndex = nextFrameIndex_; const int requiredFrame = frameInfos_[nextFrameIndex_].fRequiredFrame; - if (requiredFrame != SkCodec::kNone) { + if (requiredFrame != SkCodec::kNoFrame) { const SkBitmap* requiredBitmap = frameBitmaps_[requiredFrame]->bitmap_.get(); if (requiredBitmap == nullptr) { diff --git a/shell/common/BUILD.gn b/shell/common/BUILD.gn index 012dbccc9f5ce..c17dd8b60bd39 100644 --- a/shell/common/BUILD.gn +++ b/shell/common/BUILD.gn @@ -102,7 +102,6 @@ source_set("common") { "$flutter_root/synchronization", "//third_party/dart/runtime:dart_api", "//third_party/skia", - "//third_party/skia:gpu", ] public_deps = [ diff --git a/shell/gpu/BUILD.gn b/shell/gpu/BUILD.gn index 9356c86b1d2c1..a886b0192c903 100644 --- a/shell/gpu/BUILD.gn +++ b/shell/gpu/BUILD.gn @@ -30,7 +30,7 @@ source_set("gpu_surface_gl") { "$gpu_dir/gpu_surface_gl.h", ] - deps = gpu_common_deps + [ "//third_party/skia:gpu" ] + deps = gpu_common_deps + [ "//third_party/skia" ] } source_set("gpu_surface_vulkan") { @@ -40,7 +40,7 @@ source_set("gpu_surface_vulkan") { ] deps = gpu_common_deps + [ - "//third_party/skia:gpu", + "//third_party/skia", "$flutter_root/vulkan", ] } diff --git a/shell/platform/android/BUILD.gn b/shell/platform/android/BUILD.gn index eb8bff4cf00fd..aad27b2f9dd37 100644 --- a/shell/platform/android/BUILD.gn +++ b/shell/platform/android/BUILD.gn @@ -61,7 +61,6 @@ shared_library("flutter_shell_native") { "$flutter_root/runtime", "$flutter_root/shell/common", "//third_party/skia", - "//third_party/skia:gpu", ] if (flutter_runtime_mode == "debug" || flutter_runtime_mode == "dynamic_profile" || diff --git a/shell/platform/darwin/ios/BUILD.gn b/shell/platform/darwin/ios/BUILD.gn index bca96ae9f5bd6..a11cf1cd33db5 100644 --- a/shell/platform/darwin/ios/BUILD.gn +++ b/shell/platform/darwin/ios/BUILD.gn @@ -109,7 +109,6 @@ shared_library("create_flutter_framework_dylib") { "$flutter_root/shell/common", "$flutter_root/shell/platform/darwin/common", "//third_party/skia", - "//third_party/skia:gpu", ] if (flutter_runtime_mode == "debug" || flutter_runtime_mode == "dynamic_profile" || diff --git a/shell/platform/embedder/BUILD.gn b/shell/platform/embedder/BUILD.gn index 9ad60a8f74a2b..1e4142bab59af 100644 --- a/shell/platform/embedder/BUILD.gn +++ b/shell/platform/embedder/BUILD.gn @@ -39,7 +39,6 @@ source_set("embedder") { "//third_party/dart/runtime:libdart_jit", "//third_party/dart/runtime/bin:dart_io_api", "//third_party/skia", - "//third_party/skia:gpu", "//third_party/tonic", ] diff --git a/third_party/txt/BUILD.gn b/third_party/txt/BUILD.gn index 722a4af4dc84a..a6a4bd82d170d 100644 --- a/third_party/txt/BUILD.gn +++ b/third_party/txt/BUILD.gn @@ -113,7 +113,7 @@ source_set("txt") { ] deps = [ - "//third_party/skia:effects", + "//third_party/skia", ] if (is_mac || is_ios) { diff --git a/vulkan/BUILD.gn b/vulkan/BUILD.gn index 5a0ed5361f1c3..e5412a6431a21 100644 --- a/vulkan/BUILD.gn +++ b/vulkan/BUILD.gn @@ -60,12 +60,10 @@ source_set("vulkan") { deps = [ "$flutter_root/fml", "//third_party/skia", - "//third_party/skia:gpu", ] public_configs = [ ":vulkan_config", "$flutter_root:config", - "//third_party/skia:skia_private", ] } From c8da288269971596e66682c52d09eb142a07a349 Mon Sep 17 00:00:00 2001 From: Siva Date: Wed, 7 Nov 2018 16:30:07 -0800 Subject: [PATCH 0198/1537] Roll Dart version to 9c07fb64c48adb3d6fde50bab6b8b641c5b67683 (#6788) This hash corresponds to 2.10-dev.9.2 Changes in this roll include: - Fix for https://github.com/flutter/flutter/issues/23879 (Revert "[vm/compiler] Fine tune operator and phi handling.) - Fix for Dart issue https://github.com/dart-lang/sdk/issues/35009 - Recover from default values in function types - [vm, reload] On the path for no shape changes, defer freeing the old - [vm] Fix misc printf format bugs. - [VM] Added cleanup for Dart IO API --- DEPS | 4 ++-- ci/licenses_golden/licenses_third_party | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/DEPS b/DEPS index 7d442c731bd1b..b3437e9dd975d 100644 --- a/DEPS +++ b/DEPS @@ -31,7 +31,7 @@ vars = { # Dart is: https://github.com/dart-lang/sdk/blob/master/DEPS. # You can use //tools/dart/create_updated_flutter_deps.py to produce # updated revision list of existing dependencies. - 'dart_revision': 'bf26f760b1bb3d5fea6bda110f6a17b590364120', + 'dart_revision': '9c07fb64c48adb3d6fde50bab6b8b641c5b67683', # WARNING: DO NOT EDIT MANUALLY # The lines between blank lines above and below are generated by a script. See create_updated_flutter_deps.py @@ -60,7 +60,7 @@ vars = { 'dart_http_throttle_tag': '1.0.2', 'dart_intl_tag': '0.15.7', 'dart_json_rpc_2_tag': '2.0.9', - 'dart_linter_tag': '0.1.70', + 'dart_linter_tag': '0.1.71', 'dart_logging_tag': '0.11.3+2', 'dart_markdown_tag': '2.0.2', 'dart_matcher_tag': '0.12.3', diff --git a/ci/licenses_golden/licenses_third_party b/ci/licenses_golden/licenses_third_party index acfa37c89f4f6..320c80fa927a8 100644 --- a/ci/licenses_golden/licenses_third_party +++ b/ci/licenses_golden/licenses_third_party @@ -1,4 +1,4 @@ -Signature: b024268129b905906ae3c9a0d7a30782 +Signature: 03e52cfdea768cb5721891aa95f26166 UNUSED LICENSES: From bd793c01119ee9d9b1cdfaf4ed5445d4d9914467 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Wed, 7 Nov 2018 21:25:18 -0500 Subject: [PATCH 0199/1537] Roll src/third_party/skia f49563bf9276..71bcc7d63f8c (3 commits) (#6790) https://skia.googlesource.com/skia.git/+log/f49563bf9276..71bcc7d63f8c Created with: gclient setdep -r src/third_party/skia@71bcc7d63f8c The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index b3437e9dd975d..a671fe2572193 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'f49563bf9276f70441fd22da83413d585b2bcc17', + 'skia_revision': '71bcc7d63f8ce4a1b5a33d743c2dc8d630cd4aaa', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 2172de60d2b76..ede1216255dfa 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 0bb38b6e27602e273279946664cfde23 +Signature: 3a39ec0024d13b86aad95156c48cbb66 UNUSED LICENSES: From 09ff6dc479fe93c20e92643e19b5bc10077d4db1 Mon Sep 17 00:00:00 2001 From: Dan Field Date: Wed, 7 Nov 2018 21:19:14 -0800 Subject: [PATCH 0200/1537] avoid overreleasing FlutterView (#6791) --- .../darwin/ios/framework/Source/FlutterPlatformViews.mm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm index c6db8cae49b2a..73a2779bb6757 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm @@ -18,7 +18,7 @@ namespace shell { void FlutterPlatformViewsController::SetFlutterView(UIView* flutter_view) { - flutter_view_.reset(flutter_view); + flutter_view_.reset([flutter_view retain]); } void FlutterPlatformViewsController::OnMethodCall(FlutterMethodCall* call, FlutterResult& result) { From 0ce31d66056471f3639a4ab937bea0ad2b05a7be Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Thu, 8 Nov 2018 00:43:18 -0500 Subject: [PATCH 0201/1537] Roll src/third_party/skia 71bcc7d63f8c..2f8889b876d3 (1 commits) (#6792) https://skia.googlesource.com/skia.git/+log/71bcc7d63f8c..2f8889b876d3 Created with: gclient setdep -r src/third_party/skia@2f8889b876d3 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index a671fe2572193..2b4cff98e8ea5 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '71bcc7d63f8ce4a1b5a33d743c2dc8d630cd4aaa', + 'skia_revision': '2f8889b876d3326711e1210749f4e8493e97a8d9', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index ede1216255dfa..d30db07b88369 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 3a39ec0024d13b86aad95156c48cbb66 +Signature: daa004742c9f99f011ef6471d72ed66d UNUSED LICENSES: From 8f105d79c9b3d509d2a5df2ceda44235e997642f Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Thu, 8 Nov 2018 04:02:45 -0500 Subject: [PATCH 0202/1537] Roll src/third_party/skia 2f8889b876d3..23d1f94faac1 (1 commits) (#6793) https://skia.googlesource.com/skia.git/+log/2f8889b876d3..23d1f94faac1 Created with: gclient setdep -r src/third_party/skia@23d1f94faac1 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 2b4cff98e8ea5..ce763954c30e4 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '2f8889b876d3326711e1210749f4e8493e97a8d9', + 'skia_revision': '23d1f94faac1e61e1df2379aae51fc65e4c57b36', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index d30db07b88369..6e6625beaee62 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: daa004742c9f99f011ef6471d72ed66d +Signature: 23ea33c1e375d51310cc4fc160521b2e UNUSED LICENSES: From d372d56ae438cf8c60f132db79fce52496c8b96b Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Thu, 8 Nov 2018 07:20:18 -0500 Subject: [PATCH 0203/1537] Roll src/third_party/skia 23d1f94faac1..fa8898747551 (1 commits) (#6794) https://skia.googlesource.com/skia.git/+log/23d1f94faac1..fa8898747551 Created with: gclient setdep -r src/third_party/skia@fa8898747551 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index ce763954c30e4..bd83fc5cff143 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '23d1f94faac1e61e1df2379aae51fc65e4c57b36', + 'skia_revision': 'fa8898747551053978329a24ce9fbceda99ab4f6', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 6e6625beaee62..30ec3c632efee 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 23ea33c1e375d51310cc4fc160521b2e +Signature: 9ab674944eb7ee2e4b0d1233b4cde1d2 UNUSED LICENSES: From 22fc02028306d09bcc6fecee64d99d9e0510e106 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Thu, 8 Nov 2018 09:31:43 -0500 Subject: [PATCH 0204/1537] Roll src/third_party/skia fa8898747551..5d58d09ae77d (4 commits) (#6796) https://skia.googlesource.com/skia.git/+log/fa8898747551..5d58d09ae77d Created with: gclient setdep -r src/third_party/skia@5d58d09ae77d The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index bd83fc5cff143..6f801170b47c7 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'fa8898747551053978329a24ce9fbceda99ab4f6', + 'skia_revision': '5d58d09ae77d43b38c313b627bddda3ae944e830', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 30ec3c632efee..3c5eb3816cca2 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 9ab674944eb7ee2e4b0d1233b4cde1d2 +Signature: 1e38091680d313d59e87eba0e29f3e67 UNUSED LICENSES: From 387ca2ef86fbd39b37b9eb557bff3e2da41aff4c Mon Sep 17 00:00:00 2001 From: Amir Hardon Date: Thu, 8 Nov 2018 09:31:40 -0800 Subject: [PATCH 0205/1537] Add an internal_nodes_canvas to PaintContext. (#6728) When we visit a PlatformViewLayer during the paint traversal it replaces the PaintContext's canvas with a new one that is painted ontop of the embedded view. We need to make sure that operations applied by parent layers are also applied to the new canvas. To achieve this we collect all the canvases in a SkNWayCanvas and use this canvas by non leaf nodes. Leaf nodes still paint only to the "current" canvas. This PR moves the overlay canvas creation from the paint phase to the preroll phase, collects them into a SkNWayCanvas and set it in PaintContext. To keep this PR focused, I only used the internal_nodes_canvas in the tranform_layer. Will followup with a PR that changes all internal layers to use the internal_nodes_canvas. --- flow/embedded_views.h | 7 ++++- flow/layers/layer.h | 17 +++++++++++ flow/layers/layer_tree.cc | 19 ++++++++++++ flow/layers/platform_view_layer.cc | 10 +++++-- flow/layers/transform_layer.cc | 4 +-- flow/raster_cache.cc | 5 ++++ flow/scene_update_context.cc | 1 + shell/common/rasterizer.cc | 5 ++++ .../framework/Source/FlutterPlatformViews.mm | 30 ++++++++++++++----- .../Source/FlutterPlatformViews_Internal.h | 9 +++++- shell/platform/darwin/ios/ios_surface_gl.h | 9 ++++++ shell/platform/darwin/ios/ios_surface_gl.mm | 18 +++++++++++ .../darwin/ios/ios_surface_software.h | 9 ++++++ .../darwin/ios/ios_surface_software.mm | 18 +++++++++++ 14 files changed, 147 insertions(+), 14 deletions(-) diff --git a/flow/embedded_views.h b/flow/embedded_views.h index c1213a2e5b3d9..62ec08ad4094f 100644 --- a/flow/embedded_views.h +++ b/flow/embedded_views.h @@ -16,7 +16,6 @@ class EmbeddedViewParams { public: SkPoint offsetPixels; SkSize sizePoints; - SkISize canvasBaseLayerSize; }; // This is only used on iOS when running in a non headless mode, @@ -26,6 +25,12 @@ class ExternalViewEmbedder { public: ExternalViewEmbedder() = default; + virtual void SetFrameSize(SkISize frame_size) = 0; + + virtual void PrerollCompositeEmbeddedView(int view_id) = 0; + + virtual std::vector GetCurrentCanvases() = 0; + // Must be called on the UI thread. virtual SkCanvas* CompositeEmbeddedView(int view_id, const EmbeddedViewParams& params) = 0; diff --git a/flow/layers/layer.h b/flow/layers/layer.h index 97177e9585bd2..724c89edfba5f 100644 --- a/flow/layers/layer.h +++ b/flow/layers/layer.h @@ -25,6 +25,7 @@ #include "third_party/skia/include/core/SkPicture.h" #include "third_party/skia/include/core/SkRRect.h" #include "third_party/skia/include/core/SkRect.h" +#include "third_party/skia/include/utils/SkNWayCanvas.h" #if defined(OS_FUCHSIA) @@ -44,6 +45,7 @@ class ContainerLayer; struct PrerollContext { RasterCache* raster_cache; GrContext* gr_context; + ExternalViewEmbedder* view_embedder; SkColorSpace* dst_color_space; SkRect child_paint_bounds; @@ -64,6 +66,21 @@ class Layer { virtual void Preroll(PrerollContext* context, const SkMatrix& matrix); struct PaintContext { + // When splitting the scene into multiple canvases (e.g when embedding + // a platform view on iOS) during the paint traversal we apply the non leaf + // flow layers to all canvases, and leaf layers just to the "current" + // canvas. Applying the non leaf layers to all canvases ensures that when + // we switch a canvas (when painting a PlatformViewLayer) the next canvas + // has the exact same state as the current canvas. + // The internal_nodes_canvas is a SkNWayCanvas which is used by non leaf + // and applies the operations to all canvases. + // The leaf_nodes_canvas is the "current" canvas and is used by leaf + // layers. + SkCanvas* internal_nodes_canvas; + // I'm temporarily leaving the name of this field to be canvas to reduce + // noise in the incremental change. A followup change will rename this + // and use the corrrect canvas in each callsite. + // TODO(amirh) rename canvas to leaf_nodes_canvas. SkCanvas* canvas; ExternalViewEmbedder* view_embedder; const Stopwatch& frame_time; diff --git a/flow/layers/layer_tree.cc b/flow/layers/layer_tree.cc index 2968da8c33747..19df3d27c1286 100644 --- a/flow/layers/layer_tree.cc +++ b/flow/layers/layer_tree.cc @@ -7,6 +7,7 @@ #include "flutter/flow/layers/layer.h" #include "flutter/fml/trace_event.h" #include "third_party/skia/include/core/SkPictureRecorder.h" +#include "third_party/skia/include/utils/SkNWayCanvas.h" namespace flow { @@ -28,6 +29,7 @@ void LayerTree::Preroll(CompositorContext::ScopedFrame& frame, PrerollContext context = { ignore_raster_cache ? nullptr : &frame.context().raster_cache(), frame.gr_context(), + frame.view_embedder(), color_space, SkRect::MakeEmpty(), frame.context().frame_time(), @@ -66,7 +68,18 @@ void LayerTree::UpdateScene(SceneUpdateContext& context, void LayerTree::Paint(CompositorContext::ScopedFrame& frame, bool ignore_raster_cache) const { TRACE_EVENT0("flutter", "LayerTree::Paint"); + SkISize canvas_size = frame.canvas()->getBaseLayerSize(); + SkNWayCanvas internal_nodes_canvas(canvas_size.width(), canvas_size.height()); + internal_nodes_canvas.addCanvas(frame.canvas()); + if (frame.view_embedder() != nullptr) { + auto overlay_canvases = frame.view_embedder()->GetCurrentCanvases(); + for (size_t i = 0; i < overlay_canvases.size(); i++) { + internal_nodes_canvas.addCanvas(overlay_canvases[i]); + } + } + Layer::PaintContext context = { + (SkCanvas*)&internal_nodes_canvas, frame.canvas(), frame.view_embedder(), frame.context().frame_time(), @@ -98,6 +111,7 @@ sk_sp LayerTree::Flatten(const SkRect& bounds) { PrerollContext preroll_context{ nullptr, // raster_cache (don't consult the cache) nullptr, // gr_context (used for the raster cache) + nullptr, // external view embedder nullptr, // SkColorSpace* dst_color_space SkRect::MakeEmpty(), // SkRect child_paint_bounds unused_stopwatch, // frame time (dont care) @@ -106,7 +120,12 @@ sk_sp LayerTree::Flatten(const SkRect& bounds) { false, // checkerboard_offscreen_layers }; + SkISize canvas_size = canvas->getBaseLayerSize(); + SkNWayCanvas internal_nodes_canvas(canvas_size.width(), canvas_size.height()); + internal_nodes_canvas.addCanvas(canvas); + Layer::PaintContext paint_context = { + (SkCanvas*)&internal_nodes_canvas, canvas, // canvas nullptr, unused_stopwatch, // frame time (dont care) diff --git a/flow/layers/platform_view_layer.cc b/flow/layers/platform_view_layer.cc index 75153ab472a78..a53e4c7321a7c 100644 --- a/flow/layers/platform_view_layer.cc +++ b/flow/layers/platform_view_layer.cc @@ -14,6 +14,13 @@ void PlatformViewLayer::Preroll(PrerollContext* context, const SkMatrix& matrix) { set_paint_bounds(SkRect::MakeXYWH(offset_.x(), offset_.y(), size_.width(), size_.height())); + + if (context->view_embedder == nullptr) { + FML_LOG(ERROR) << "Trying to embed a platform view but the PrerollContext " + "does not support embedding"; + return; + } + context->view_embedder->PrerollCompositeEmbeddedView(view_id_); } void PlatformViewLayer::Paint(PaintContext& context) const { @@ -27,12 +34,9 @@ void PlatformViewLayer::Paint(PaintContext& context) const { params.offsetPixels = SkPoint::Make(transform.getTranslateX(), transform.getTranslateY()); params.sizePoints = size_; - params.canvasBaseLayerSize = context.canvas->getBaseLayerSize(); SkCanvas* canvas = context.view_embedder->CompositeEmbeddedView(view_id_, params); - // TODO(amirh): copy the full canvas state here - canvas->concat(context.canvas->getTotalMatrix()); context.canvas = canvas; } } // namespace flow diff --git a/flow/layers/transform_layer.cc b/flow/layers/transform_layer.cc index d4f93063f07ef..410204bed34c3 100644 --- a/flow/layers/transform_layer.cc +++ b/flow/layers/transform_layer.cc @@ -36,8 +36,8 @@ void TransformLayer::Paint(PaintContext& context) const { TRACE_EVENT0("flutter", "TransformLayer::Paint"); FML_DCHECK(needs_painting()); - SkAutoCanvasRestore save(context.canvas, true); - context.canvas->concat(transform_); + SkAutoCanvasRestore save(context.internal_nodes_canvas, true); + context.internal_nodes_canvas->concat(transform_); PaintChildren(context); } diff --git a/flow/raster_cache.cc b/flow/raster_cache.cc index c2e43bda0e434..4de4e1e89a8a4 100644 --- a/flow/raster_cache.cc +++ b/flow/raster_cache.cc @@ -156,7 +156,12 @@ void RasterCache::Prepare(PrerollContext* context, entry.image = Rasterize(context->gr_context, ctm, context->dst_color_space, checkerboard_images_, layer->paint_bounds(), [layer, context](SkCanvas* canvas) { + SkISize canvas_size = canvas->getBaseLayerSize(); + SkNWayCanvas internal_nodes_canvas( + canvas_size.width(), canvas_size.height()); + internal_nodes_canvas.addCanvas(canvas); Layer::PaintContext paintContext = { + (SkCanvas*)&internal_nodes_canvas, canvas, nullptr, context->frame_time, diff --git a/flow/scene_update_context.cc b/flow/scene_update_context.cc index 0404c849d6852..89a474bcdff1b 100644 --- a/flow/scene_update_context.cc +++ b/flow/scene_update_context.cc @@ -188,6 +188,7 @@ SceneUpdateContext::ExecutePaintTasks(CompositorContext::ScopedFrame& frame) { FML_DCHECK(task.surface); SkCanvas* canvas = task.surface->GetSkiaSurface()->getCanvas(); Layer::PaintContext context = {canvas, + canvas, nullptr, frame.context().frame_time(), frame.context().engine_time(), diff --git a/shell/common/rasterizer.cc b/shell/common/rasterizer.cc index f69a268861952..9684b4dcd9da5 100644 --- a/shell/common/rasterizer.cc +++ b/shell/common/rasterizer.cc @@ -164,6 +164,11 @@ bool Rasterizer::DrawToSurface(flow::LayerTree& layer_tree) { auto external_view_embedder = surface_->GetExternalViewEmbedder(); + // TODO(amirh): uncomment this once external_view_embedder is populated. + // if (external_view_embedder != nullptr) { + // external_view_embedder->SetFrameSize(layer_tree.frame_size()); + // } + auto compositor_frame = compositor_context_->AcquireFrame( surface_->GetContext(), canvas, external_view_embedder, surface_->GetRootTransformation(), true); diff --git a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm index 73a2779bb6757..f9fbd6f2992d2 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm @@ -128,6 +128,25 @@ fml::scoped_nsobject>([factory retain]); } +void FlutterPlatformViewsController::SetFrameSize(SkISize frame_size) { + frame_size_ = frame_size; +} + +void FlutterPlatformViewsController::PrerollCompositeEmbeddedView(int view_id) { + EnsureOverlayInitialized(view_id); + composition_frames_[view_id] = (overlays_[view_id]->surface->AcquireFrame(frame_size_)); + composition_order_.push_back(view_id); +} + +std::vector FlutterPlatformViewsController::GetCurrentCanvases() { + std::vector canvases; + for (size_t i = 0; i < composition_order_.size(); i++) { + int64_t view_id = composition_order_[i]; + canvases.push_back(composition_frames_[view_id]->SkiaCanvas()); + } + return canvases; +} + SkCanvas* FlutterPlatformViewsController::CompositeEmbeddedView( int view_id, const flow::EmbeddedViewParams& params, @@ -135,7 +154,6 @@ // TODO(amirh): assert that this is running on the platform thread once we support the iOS // embedded views thread configuration. // TODO(amirh): do nothing if the params didn't change. - EnsureOverlayInitialized(view_id); CGFloat screenScale = [[UIScreen mainScreen] scale]; CGRect rect = CGRectMake(params.offsetPixels.x() / screenScale, params.offsetPixels.y() / screenScale, @@ -143,19 +161,17 @@ UIView* view = views_[view_id].get(); [view setFrame:rect]; - composition_order_.push_back(view_id); - composition_frames_.push_back( - overlays_[view_id]->surface->AcquireFrame(params.canvasBaseLayerSize)); - SkCanvas* canvas = composition_frames_.back()->SkiaCanvas(); + SkCanvas* canvas = composition_frames_[view_id]->SkiaCanvas(); canvas->clear(SK_ColorTRANSPARENT); return canvas; } bool FlutterPlatformViewsController::Present() { bool did_submit = true; - for (size_t i = 0; i < composition_frames_.size(); i++) { - did_submit &= composition_frames_[i]->Submit(); + for (size_t i = 0; i < composition_order_.size(); i++) { + int64_t view_id = composition_order_[i]; + did_submit &= composition_frames_[view_id]->Submit(); } composition_frames_.clear(); if (composition_order_ == active_composition_order_) { diff --git a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h index 709782c9987ca..db15c713bbe77 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h +++ b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h @@ -49,6 +49,12 @@ class FlutterPlatformViewsController { void RegisterViewFactory(NSObject* factory, NSString* factoryId); + void SetFrameSize(SkISize frame_size); + + void PrerollCompositeEmbeddedView(int view_id); + + std::vector GetCurrentCanvases(); + SkCanvas* CompositeEmbeddedView(int view_id, const flow::EmbeddedViewParams& params, IOSSurface& surface); @@ -63,6 +69,7 @@ class FlutterPlatformViewsController { std::map>> factories_; std::map> views_; std::map> overlays_; + SkISize frame_size_; // A vector of embedded view IDs according to their composition order. // The last ID in this vector belond to the that is composited on top of all others. @@ -71,7 +78,7 @@ class FlutterPlatformViewsController { // The latest composition order that was presented in Present(). std::vector active_composition_order_; - std::vector> composition_frames_; + std::map> composition_frames_; void OnCreate(FlutterMethodCall* call, FlutterResult& result); void OnDispose(FlutterMethodCall* call, FlutterResult& result); diff --git a/shell/platform/darwin/ios/ios_surface_gl.h b/shell/platform/darwin/ios/ios_surface_gl.h index abc4f32aa509f..066e5fdcaf6ce 100644 --- a/shell/platform/darwin/ios/ios_surface_gl.h +++ b/shell/platform/darwin/ios/ios_surface_gl.h @@ -45,6 +45,15 @@ class IOSSurfaceGL : public IOSSurface, // |shell::GPUSurfaceGLDelegate| flow::ExternalViewEmbedder* GetExternalViewEmbedder() override; + // |flow::ExternalViewEmbedder| + void SetFrameSize(SkISize frame_size) override; + + // |flow::ExternalViewEmbedder| + void PrerollCompositeEmbeddedView(int view_id) override; + + // |flow::ExternalViewEmbedder| + std::vector GetCurrentCanvases() override; + // |flow::ExternalViewEmbedder| SkCanvas* CompositeEmbeddedView(int view_id, const flow::EmbeddedViewParams& params) override; diff --git a/shell/platform/darwin/ios/ios_surface_gl.mm b/shell/platform/darwin/ios/ios_surface_gl.mm index c32d593210349..6f0d7648051af 100644 --- a/shell/platform/darwin/ios/ios_surface_gl.mm +++ b/shell/platform/darwin/ios/ios_surface_gl.mm @@ -74,6 +74,24 @@ } } +void IOSSurfaceGL::SetFrameSize(SkISize frame_size) { + FlutterPlatformViewsController* platform_views_controller = GetPlatformViewsController(); + FML_CHECK(platform_views_controller != nullptr); + platform_views_controller->SetFrameSize(frame_size); +} + +void IOSSurfaceGL::PrerollCompositeEmbeddedView(int view_id) { + FlutterPlatformViewsController* platform_views_controller = GetPlatformViewsController(); + FML_CHECK(platform_views_controller != nullptr); + platform_views_controller->PrerollCompositeEmbeddedView(view_id); +} + +std::vector IOSSurfaceGL::GetCurrentCanvases() { + FlutterPlatformViewsController* platform_views_controller = GetPlatformViewsController(); + FML_CHECK(platform_views_controller != nullptr); + return platform_views_controller->GetCurrentCanvases(); +} + SkCanvas* IOSSurfaceGL::CompositeEmbeddedView(int view_id, const flow::EmbeddedViewParams& params) { FlutterPlatformViewsController* platform_views_controller = GetPlatformViewsController(); FML_CHECK(platform_views_controller != nullptr); diff --git a/shell/platform/darwin/ios/ios_surface_software.h b/shell/platform/darwin/ios/ios_surface_software.h index 0e7fb305a7a7d..068d9f132257a 100644 --- a/shell/platform/darwin/ios/ios_surface_software.h +++ b/shell/platform/darwin/ios/ios_surface_software.h @@ -45,6 +45,15 @@ class IOSSurfaceSoftware final : public IOSSurface, // |shell::GPUSurfaceSoftwareDelegate| flow::ExternalViewEmbedder* GetExternalViewEmbedder() override; + // |flow::ExternalViewEmbedder| + void SetFrameSize(SkISize frame_size) override; + + // |flow::ExternalViewEmbedder| + void PrerollCompositeEmbeddedView(int view_id) override; + + // |flow::ExternalViewEmbedder| + std::vector GetCurrentCanvases() override; + // |flow::ExternalViewEmbedder| SkCanvas* CompositeEmbeddedView(int view_id, const flow::EmbeddedViewParams& params) override; diff --git a/shell/platform/darwin/ios/ios_surface_software.mm b/shell/platform/darwin/ios/ios_surface_software.mm index 634c72749d52a..a5ca5357372d9 100644 --- a/shell/platform/darwin/ios/ios_surface_software.mm +++ b/shell/platform/darwin/ios/ios_surface_software.mm @@ -138,6 +138,24 @@ } } +void IOSSurfaceSoftware::SetFrameSize(SkISize frame_size) { + FlutterPlatformViewsController* platform_views_controller = GetPlatformViewsController(); + FML_CHECK(platform_views_controller != nullptr); + platform_views_controller->SetFrameSize(frame_size); +} + +void IOSSurfaceSoftware::PrerollCompositeEmbeddedView(int view_id) { + FlutterPlatformViewsController* platform_views_controller = GetPlatformViewsController(); + FML_CHECK(platform_views_controller != nullptr); + platform_views_controller->PrerollCompositeEmbeddedView(view_id); +} + +std::vector IOSSurfaceSoftware::GetCurrentCanvases() { + FlutterPlatformViewsController* platform_views_controller = GetPlatformViewsController(); + FML_CHECK(platform_views_controller != nullptr); + return platform_views_controller->GetCurrentCanvases(); +} + SkCanvas* IOSSurfaceSoftware::CompositeEmbeddedView(int view_id, const flow::EmbeddedViewParams& params) { FlutterPlatformViewsController* platform_views_controller = GetPlatformViewsController(); From 18ca035cfdbac02dc7ff66705e8829788f8892ed Mon Sep 17 00:00:00 2001 From: Amir Hardon Date: Thu, 8 Nov 2018 09:32:01 -0800 Subject: [PATCH 0206/1537] Discard embedded UIViews on hot restart. (#6772) --- .../ios/framework/Source/FlutterPlatformViews.mm | 12 ++++++++++++ .../framework/Source/FlutterPlatformViews_Internal.h | 3 +++ .../ios/framework/Source/FlutterViewController.mm | 3 +-- shell/platform/darwin/ios/platform_view_ios.h | 3 +++ shell/platform/darwin/ios/platform_view_ios.mm | 8 ++++++++ 5 files changed, 27 insertions(+), 2 deletions(-) diff --git a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm index f9fbd6f2992d2..20f089d6d97b7 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm @@ -167,6 +167,18 @@ return canvas; } +void FlutterPlatformViewsController::Reset() { + UIView* flutter_view = flutter_view_.get(); + for (UIView* sub_view in [flutter_view subviews]) { + [sub_view removeFromSuperview]; + } + views_.clear(); + overlays_.clear(); + composition_order_.clear(); + active_composition_order_.clear(); + composition_frames_.clear(); +} + bool FlutterPlatformViewsController::Present() { bool did_submit = true; for (size_t i = 0; i < composition_order_.size(); i++) { diff --git a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h index db15c713bbe77..e3cfa4141dcf0 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h +++ b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h @@ -59,6 +59,9 @@ class FlutterPlatformViewsController { const flow::EmbeddedViewParams& params, IOSSurface& surface); + // Discards all platform views instances and auxiliary resources. + void Reset(); + bool Present(); void OnMethodCall(FlutterMethodCall* call, FlutterResult& result); diff --git a/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm b/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm index 482e98dd136bd..ceda1dd6c94bc 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm @@ -31,7 +31,6 @@ @implementation FlutterViewController { fml::scoped_nsobject _flutterView; fml::scoped_nsobject _splashScreenView; fml::ScopedBlock _flutterViewRenderedCallback; - std::unique_ptr _platformViewsController; UIInterfaceOrientationMask _orientationPreferences; UIStatusBarStyle _statusBarStyle; blink::ViewportMetrics _viewportMetrics; @@ -899,7 +898,7 @@ - (void)onPreferredStatusBarStyleUpdated:(NSNotification*)notification { #pragma mark - Platform views - (shell::FlutterPlatformViewsController*)platformViewsController { - return _platformViewsController.get(); + return [_engine.get() platformViewsController]; } #pragma mark - FlutterBinaryMessenger diff --git a/shell/platform/darwin/ios/platform_view_ios.h b/shell/platform/darwin/ios/platform_view_ios.h index 85fe4c4a6dda6..6db35651d7f8b 100644 --- a/shell/platform/darwin/ios/platform_view_ios.h +++ b/shell/platform/darwin/ios/platform_view_ios.h @@ -70,6 +70,9 @@ class PlatformViewIOS final : public PlatformView { // |shell::PlatformView| std::unique_ptr CreateVSyncWaiter() override; + // |shell::PlatformView| + void OnPreEngineRestart() const override; + FML_DISALLOW_COPY_AND_ASSIGN(PlatformViewIOS); }; diff --git a/shell/platform/darwin/ios/platform_view_ios.mm b/shell/platform/darwin/ios/platform_view_ios.mm index 485b41d5cd46e..0f3a1b8ca2467 100644 --- a/shell/platform/darwin/ios/platform_view_ios.mm +++ b/shell/platform/darwin/ios/platform_view_ios.mm @@ -12,6 +12,7 @@ #include "flutter/fml/synchronization/waitable_event.h" #include "flutter/fml/trace_event.h" #include "flutter/shell/common/io_manager.h" +#include "flutter/shell/platform/darwin/ios/framework/Source/FlutterViewController_Internal.h" #include "flutter/shell/platform/darwin/ios/framework/Source/vsync_waiter_ios.h" #include "flutter/shell/platform/darwin/ios/ios_external_texture_gl.h" @@ -118,6 +119,13 @@ return std::make_unique(task_runners_); } +void PlatformViewIOS::OnPreEngineRestart() const { + if (!owner_controller_) { + return; + } + [owner_controller_.get() platformViewsController] -> Reset(); +} + fml::scoped_nsprotocol PlatformViewIOS::GetTextInputPlugin() const { return text_input_plugin_; } From 01f6ad0fba7905f5077b78e22b0b90dff3ce3bbb Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Thu, 8 Nov 2018 12:53:43 -0500 Subject: [PATCH 0207/1537] Roll src/third_party/skia 5d58d09ae77d..06a477c3300d (5 commits) (#6797) https://skia.googlesource.com/skia.git/+log/5d58d09ae77d..06a477c3300d Created with: gclient setdep -r src/third_party/skia@06a477c3300d The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 5 +---- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/DEPS b/DEPS index 6f801170b47c7..001bcafdf0504 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '5d58d09ae77d43b38c313b627bddda3ae944e830', + 'skia_revision': '06a477c3300d7e1ceae339f704df7b6e0710dc1d', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 3c5eb3816cca2..f06c5241d4cbf 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 1e38091680d313d59e87eba0e29f3e67 +Signature: 0d532a482c297b3600bfa72396105ec9 UNUSED LICENSES: @@ -2942,7 +2942,6 @@ FILE: ../../../third_party/skia/src/pdf/SkPDFTypes.cpp FILE: ../../../third_party/skia/src/pdf/SkPDFUtils.cpp FILE: ../../../third_party/skia/src/pdf/SkPDFUtils.h FILE: ../../../third_party/skia/src/ports/SkGlobalInitialization_default.cpp -FILE: ../../../third_party/skia/src/ports/SkGlobalInitialization_default_imagefilters.cpp FILE: ../../../third_party/skia/src/ports/SkImageEncoder_WIC.cpp FILE: ../../../third_party/skia/src/ports/SkMemory_malloc.cpp FILE: ../../../third_party/skia/src/ports/SkScalerContext_win_dw.cpp @@ -4487,8 +4486,6 @@ FILE: ../../../third_party/skia/src/pdf/SkPDFGradientShader.h FILE: ../../../third_party/skia/src/ports/SkFontMgr_custom_directory.cpp FILE: ../../../third_party/skia/src/ports/SkFontMgr_custom_embedded.cpp FILE: ../../../third_party/skia/src/ports/SkFontMgr_custom_empty.cpp -FILE: ../../../third_party/skia/src/ports/SkGlobalInitialization_none.cpp -FILE: ../../../third_party/skia/src/ports/SkGlobalInitialization_none_imagefilters.cpp FILE: ../../../third_party/skia/src/ports/SkOSFile_ios.h FILE: ../../../third_party/skia/src/sfnt/SkOTTable_fvar.h FILE: ../../../third_party/skia/src/shaders/SkShaderBase.h From 86d34e02dd050812b6cf03963365f42e3fd369f7 Mon Sep 17 00:00:00 2001 From: Dan Field Date: Thu, 8 Nov 2018 11:18:21 -0800 Subject: [PATCH 0208/1537] disable embedder_unittests (#6798) --- testing/run_tests.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/testing/run_tests.sh b/testing/run_tests.sh index 82090afbfea63..38fcaf7ba6ee0 100755 --- a/testing/run_tests.sh +++ b/testing/run_tests.sh @@ -2,7 +2,8 @@ set -o pipefail -e; -out/host_debug_unopt/embedder_unittests +# TODO(dnfield): Re-enable this when the upstream Dart changes that make it not be flaky land. +# out/host_debug_unopt/embedder_unittests out/host_debug_unopt/flow_unittests out/host_debug_unopt/fml_unittests --gtest_filter="-*TimeSensitiveTest*" out/host_debug_unopt/runtime_unittests From 7ed4909fc8fca88bcdecfba26e5eb16ed076c0db Mon Sep 17 00:00:00 2001 From: Dan Field Date: Thu, 8 Nov 2018 11:18:59 -0800 Subject: [PATCH 0209/1537] Fix mDNS publishing for iOS simulator (#6789) * Don't block the platfrorm thread on simulator mDNS publishing --- .../Source/FlutterObservatoryPublisher.mm | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/shell/platform/darwin/ios/framework/Source/FlutterObservatoryPublisher.mm b/shell/platform/darwin/ios/framework/Source/FlutterObservatoryPublisher.mm index b8111067c8b22..980bec0854e7f 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterObservatoryPublisher.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterObservatoryPublisher.mm @@ -67,7 +67,7 @@ - (instancetype)init { return self; } -- (void)dealloc { +- (void)stopService { #if TARGET_IPHONE_SIMULATOR if (_dnsServiceRef) { DNSServiceRefDeallocate(_dnsServiceRef); @@ -76,20 +76,17 @@ - (void)dealloc { #else // TARGET_IPHONE_SIMULATOR [_netService.get() stop]; #endif // TARGET_IPHONE_SIMULATOR +} + +- (void)dealloc { + [self stopService]; blink::DartServiceIsolate::RemoveServerStatusCallback(std::move(_callbackHandle)); [super dealloc]; } - (void)publishServiceProtocolPort:(std::string)uri { -#if TARGET_IPHONE_SIMULATOR - if (_dnsServiceRef) { - DNSServiceRefDeallocate(_dnsServiceRef); - _dnsServiceRef = NULL; - } -#else // TARGET_IPHONE_SIMULATOR - [_netService.get() stop]; -#endif // TARGET_IPHONE_SIMULATOR + [self stopService]; if (uri.empty()) { return; } @@ -115,7 +112,7 @@ - (void)publishServiceProtocolPort:(std::string)uri { if (err != 0) { FML_LOG(ERROR) << "Failed to register observatory port with mDNS."; } else { - DNSServiceProcessResult(_dnsServiceRef); + DNSServiceSetDispatchQueue(_dnsServiceRef, dispatch_get_main_queue()); } #else // TARGET_IPHONE_SIMULATOR _netService.reset([[NSNetService alloc] initWithDomain:@"local." @@ -128,7 +125,7 @@ - (void)publishServiceProtocolPort:(std::string)uri { } - (void)netServiceDidPublish:(NSNetService*)sender { - FML_LOG(INFO) << "FlutterObservatoryPublisher is ready!"; + FML_DLOG(INFO) << "FlutterObservatoryPublisher is ready!"; } - (void)netService:(NSNetService*)sender didNotPublish:(NSDictionary*)errorDict { From a0efb9419179317e89b10bdb46e1205af791c256 Mon Sep 17 00:00:00 2001 From: Amir Hardon Date: Thu, 8 Nov 2018 11:21:55 -0800 Subject: [PATCH 0210/1537] Make the FlutterPlatformViewFactory create FlutterPlatformViews. (#6782) Handing a UIView refererence directly to the engine makes it challenging for plugin authors to retain a controller for that UIView (e.g the controller that talks over the platform channel) for as long as the embedded view is needed. We instead make the factory return a FlutterPlatformView which is a wrapper around the UIView that the engine retains as long as the platform view instance is needed. This allows plugin authors to keep their control logic in the FlutterPlatformView and know that the engine is responsible for retaining the reference. --- shell/common/rasterizer.cc | 7 ++--- .../framework/Headers/FlutterPlatformViews.h | 16 ++++++++-- .../framework/Source/FlutterPlatformViews.mm | 29 +++++++++++-------- .../Source/FlutterPlatformViews_Internal.h | 3 +- 4 files changed, 35 insertions(+), 20 deletions(-) diff --git a/shell/common/rasterizer.cc b/shell/common/rasterizer.cc index 9684b4dcd9da5..b5be5e49e51eb 100644 --- a/shell/common/rasterizer.cc +++ b/shell/common/rasterizer.cc @@ -164,10 +164,9 @@ bool Rasterizer::DrawToSurface(flow::LayerTree& layer_tree) { auto external_view_embedder = surface_->GetExternalViewEmbedder(); - // TODO(amirh): uncomment this once external_view_embedder is populated. - // if (external_view_embedder != nullptr) { - // external_view_embedder->SetFrameSize(layer_tree.frame_size()); - // } + if (external_view_embedder != nullptr) { + external_view_embedder->SetFrameSize(layer_tree.frame_size()); + } auto compositor_frame = compositor_context_->AcquireFrame( surface_->GetContext(), canvas, external_view_embedder, diff --git a/shell/platform/darwin/ios/framework/Headers/FlutterPlatformViews.h b/shell/platform/darwin/ios/framework/Headers/FlutterPlatformViews.h index a8145fa628f95..72086dec13a83 100644 --- a/shell/platform/darwin/ios/framework/Headers/FlutterPlatformViews.h +++ b/shell/platform/darwin/ios/framework/Headers/FlutterPlatformViews.h @@ -12,6 +12,16 @@ NS_ASSUME_NONNULL_BEGIN +/** + * Wraps a `UIView` for embedding in the Flutter hierarchy + */ +@protocol FlutterPlatformView +/** + * Returns a reference to the `UIView` that is wrapped by this `FlutterPlatformView`. + */ +- (UIView*)view; +@end + FLUTTER_EXPORT @protocol FlutterPlatformViewFactory /** @@ -28,9 +38,9 @@ FLUTTER_EXPORT * code, this will be null. Otherwise this will be the value sent from the Dart code as decoded by * `createArgsCodec`. */ -- (UIView*)createWithFrame:(CGRect)frame - viewIdentifier:(int64_t)viewId - arguments:(id _Nullable)args; +- (NSObject*)createWithFrame:(CGRect)frame + viewIdentifier:(int64_t)viewId + arguments:(id _Nullable)args; /** * Returns the `FlutterMessageCodec` for decoding the args parameter of `createWithFrame`. diff --git a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm index 20f089d6d97b7..f0b800737aa42 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm @@ -72,13 +72,17 @@ } } - UIView* embedded_view = [factory createWithFrame:CGRectZero - viewIdentifier:viewId - arguments:params]; - FlutterTouchInterceptingView* view = - [[[FlutterTouchInterceptingView alloc] initWithEmbeddedView:embedded_view + NSObject* embedded_view = [factory createWithFrame:CGRectZero + viewIdentifier:viewId + arguments:params]; + views_[viewId] = fml::scoped_nsobject>([embedded_view retain]); + + FlutterTouchInterceptingView* touch_interceptor = + [[[FlutterTouchInterceptingView alloc] initWithEmbeddedView:embedded_view.view flutterView:flutter_view_] autorelease]; - views_[viewId] = fml::scoped_nsobject([view retain]); + + touch_interceptors_[viewId] = + fml::scoped_nsobject([touch_interceptor retain]); result(nil); } @@ -94,9 +98,10 @@ return; } - UIView* view = views_[viewId].get(); - [view removeFromSuperview]; + UIView* touch_interceptor = touch_interceptors_[viewId].get(); + [touch_interceptor removeFromSuperview]; views_.erase(viewId); + touch_interceptors_.erase(viewId); overlays_.erase(viewId); result(nil); } @@ -113,7 +118,7 @@ return; } - FlutterTouchInterceptingView* view = views_[viewId].get(); + FlutterTouchInterceptingView* view = touch_interceptors_[viewId].get(); [view releaseGesture]; result(nil); @@ -159,8 +164,8 @@ CGRectMake(params.offsetPixels.x() / screenScale, params.offsetPixels.y() / screenScale, params.sizePoints.width(), params.sizePoints.height()); - UIView* view = views_[view_id].get(); - [view setFrame:rect]; + UIView* touch_interceptor = touch_interceptors_[view_id].get(); + [touch_interceptor setFrame:rect]; SkCanvas* canvas = composition_frames_[view_id]->SkiaCanvas(); canvas->clear(SK_ColorTRANSPARENT); @@ -204,7 +209,7 @@ active_composition_order_.clear(); for (size_t i = 0; i < composition_order_.size(); i++) { int view_id = composition_order_[i]; - [flutter_view addSubview:views_[view_id].get()]; + [flutter_view addSubview:touch_interceptors_[view_id].get()]; [flutter_view addSubview:overlays_[view_id]->overlay_view.get()]; active_composition_order_.push_back(view_id); } diff --git a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h index e3cfa4141dcf0..2e40d9c861743 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h +++ b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h @@ -70,7 +70,8 @@ class FlutterPlatformViewsController { fml::scoped_nsobject channel_; fml::scoped_nsobject flutter_view_; std::map>> factories_; - std::map> views_; + std::map>> views_; + std::map> touch_interceptors_; std::map> overlays_; SkISize frame_size_; From 47ef89ee5c3d7fcba9b9abbb25e8d2437f9aea6b Mon Sep 17 00:00:00 2001 From: Amir Hardon Date: Thu, 8 Nov 2018 12:54:36 -0800 Subject: [PATCH 0211/1537] Include vector in embedded_views.h (#6800) --- flow/embedded_views.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/flow/embedded_views.h b/flow/embedded_views.h index 62ec08ad4094f..983e091448762 100644 --- a/flow/embedded_views.h +++ b/flow/embedded_views.h @@ -5,6 +5,8 @@ #ifndef FLUTTER_FLOW_EMBEDDED_VIEWS_H_ #define FLUTTER_FLOW_EMBEDDED_VIEWS_H_ +#include + #include "flutter/fml/memory/ref_counted.h" #include "third_party/skia/include/core/SkCanvas.h" #include "third_party/skia/include/core/SkPoint.h" From e011d544b4e3ff0c2af5babddacdbb1f677f7cca Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Thu, 8 Nov 2018 16:12:43 -0500 Subject: [PATCH 0212/1537] Roll src/third_party/skia 06a477c3300d..dd650c40d148 (11 commits) (#6801) https://skia.googlesource.com/skia.git/+log/06a477c3300d..dd650c40d148 Created with: gclient setdep -r src/third_party/skia@dd650c40d148 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 001bcafdf0504..39835b5cc47b6 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '06a477c3300d7e1ceae339f704df7b6e0710dc1d', + 'skia_revision': 'dd650c40d14894730653cb9b1227598ff3786264', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index f06c5241d4cbf..825611ea32416 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 0d532a482c297b3600bfa72396105ec9 +Signature: cf4c71c50e5d15aace6821ad4bdb3a93 UNUSED LICENSES: From 16f8c67f0b5b915eefb4651deaf93d199fc4b027 Mon Sep 17 00:00:00 2001 From: Rusino Date: Thu, 8 Nov 2018 16:53:24 -0500 Subject: [PATCH 0213/1537] Update paint hinting for upcoming Skia API changes. (#6802) --- third_party/txt/src/txt/paragraph.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/third_party/txt/src/txt/paragraph.cc b/third_party/txt/src/txt/paragraph.cc index 270a094a0d947..fde4c43955716 100644 --- a/third_party/txt/src/txt/paragraph.cc +++ b/third_party/txt/src/txt/paragraph.cc @@ -439,7 +439,7 @@ void Paragraph::Layout(double width, bool force) { paint.setAntiAlias(true); paint.setTextEncoding(SkPaint::kGlyphID_TextEncoding); paint.setSubpixelText(true); - paint.setHinting(SkPaint::kSlight_Hinting); + paint.setHinting(kSlight_SkFontHinting); records_.clear(); line_heights_.clear(); From b2479f8d299141b7405272515f2c6b1457a3835e Mon Sep 17 00:00:00 2001 From: Jason Simmons Date: Thu, 8 Nov 2018 17:07:02 -0800 Subject: [PATCH 0214/1537] Revert "Roll src/third_party/skia 06a477c3300d..dd650c40d148 (11 commits) (#6801)" (#6809) This reverts commit e011d544b4e3ff0c2af5babddacdbb1f677f7cca. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 39835b5cc47b6..001bcafdf0504 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'dd650c40d14894730653cb9b1227598ff3786264', + 'skia_revision': '06a477c3300d7e1ceae339f704df7b6e0710dc1d', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 825611ea32416..f06c5241d4cbf 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: cf4c71c50e5d15aace6821ad4bdb3a93 +Signature: 0d532a482c297b3600bfa72396105ec9 UNUSED LICENSES: From 099b4eeada852df67ed5d36a638762de3a8fa079 Mon Sep 17 00:00:00 2001 From: Amir Hardon Date: Thu, 8 Nov 2018 19:52:43 -0800 Subject: [PATCH 0215/1537] Support platform view overlays with GL rendering (#6769) Moved the frame buffer specific logic from IOSGLContext to IOSGLRenderTarget. use recording canvases for overlays Support platform view overlays with gl rendering. This also changes the overlay canvases (for both software and gl rendering) be recording canvases, and only rasterize them after finishing the paint traversal. --- ci/licenses_golden/licenses_flutter | 38 ++++- flow/embedded_views.h | 2 + shell/common/rasterizer.cc | 3 + shell/gpu/gpu_surface_gl.cc | 22 ++- shell/gpu/gpu_surface_gl.h | 4 + shell/platform/darwin/ios/BUILD.gn | 2 + .../ios/framework/Source/FlutterOverlayView.h | 6 +- .../framework/Source/FlutterOverlayView.mm | 17 ++- .../framework/Source/FlutterPlatformViews.mm | 56 +++++-- .../Source/FlutterPlatformViews_Internal.h | 18 ++- shell/platform/darwin/ios/ios_gl_context.h | 18 +-- shell/platform/darwin/ios/ios_gl_context.mm | 117 +-------------- .../darwin/ios/ios_gl_render_target.h | 57 +++++++ .../darwin/ios/ios_gl_render_target.mm | 140 ++++++++++++++++++ shell/platform/darwin/ios/ios_surface_gl.h | 11 +- shell/platform/darwin/ios/ios_surface_gl.mm | 48 ++++-- .../darwin/ios/ios_surface_software.h | 3 + .../darwin/ios/ios_surface_software.mm | 16 +- 18 files changed, 399 insertions(+), 179 deletions(-) create mode 100644 shell/platform/darwin/ios/ios_gl_render_target.h create mode 100644 shell/platform/darwin/ios/ios_gl_render_target.mm diff --git a/ci/licenses_golden/licenses_flutter b/ci/licenses_golden/licenses_flutter index b4e6ed14db649..125b745183048 100644 --- a/ci/licenses_golden/licenses_flutter +++ b/ci/licenses_golden/licenses_flutter @@ -626,6 +626,42 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ==================================================================================================== +==================================================================================================== +LIBRARY: engine +ORIGIN: ../../../flutter/shell/platform/darwin/ios/ios_gl_render_target.h + ../../../LICENSE +TYPE: LicenseType.bsd +FILE: ../../../flutter/shell/platform/darwin/ios/ios_gl_render_target.h +FILE: ../../../flutter/shell/platform/darwin/ios/ios_gl_render_target.mm +---------------------------------------------------------------------------------------------------- +Copyright 2018 The Chromium Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +==================================================================================================== + ==================================================================================================== LIBRARY: txt ORIGIN: ../../../flutter/third_party/txt/LICENSE @@ -912,4 +948,4 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. ==================================================================================================== -Total license count: 2 +Total license count: 3 diff --git a/flow/embedded_views.h b/flow/embedded_views.h index 983e091448762..e98c98a6e1cc7 100644 --- a/flow/embedded_views.h +++ b/flow/embedded_views.h @@ -37,6 +37,8 @@ class ExternalViewEmbedder { virtual SkCanvas* CompositeEmbeddedView(int view_id, const EmbeddedViewParams& params) = 0; + virtual bool SubmitFrame(GrContext* context) { return false; }; + virtual ~ExternalViewEmbedder() = default; FML_DISALLOW_COPY_AND_ASSIGN(ExternalViewEmbedder); diff --git a/shell/common/rasterizer.cc b/shell/common/rasterizer.cc index b5be5e49e51eb..29d534b2a4430 100644 --- a/shell/common/rasterizer.cc +++ b/shell/common/rasterizer.cc @@ -178,6 +178,9 @@ bool Rasterizer::DrawToSurface(flow::LayerTree& layer_tree) { if (compositor_frame && compositor_frame->Raster(layer_tree, false)) { frame->Submit(); + if (external_view_embedder != nullptr) { + external_view_embedder->SubmitFrame(surface_->GetContext()); + } FireNextFrameCallbackIfPresent(); return true; } diff --git a/shell/gpu/gpu_surface_gl.cc b/shell/gpu/gpu_surface_gl.cc index 91d004440366c..5978584f74cea 100644 --- a/shell/gpu/gpu_surface_gl.cc +++ b/shell/gpu/gpu_surface_gl.cc @@ -89,6 +89,24 @@ GPUSurfaceGL::GPUSurfaceGL(GPUSurfaceGLDelegate* delegate) delegate_->GLContextClearCurrent(); valid_ = true; + context_owner_ = true; +} + +GPUSurfaceGL::GPUSurfaceGL(sk_sp gr_context, + GPUSurfaceGLDelegate* delegate) + : delegate_(delegate), context_(gr_context), weak_factory_(this) { + if (!delegate_->GLContextMakeCurrent()) { + FML_LOG(ERROR) + << "Could not make the context current to setup the gr context."; + return; + } + + proc_resolver_ = delegate_->GetGLProcResolver(); + + delegate_->GLContextClearCurrent(); + + valid_ = true; + context_owner_ = false; } GPUSurfaceGL::~GPUSurfaceGL() { @@ -103,7 +121,9 @@ GPUSurfaceGL::~GPUSurfaceGL() { } onscreen_surface_ = nullptr; - context_->releaseResourcesAndAbandonContext(); + if (context_owner_) { + context_->releaseResourcesAndAbandonContext(); + } context_ = nullptr; delegate_->GLContextClearCurrent(); diff --git a/shell/gpu/gpu_surface_gl.h b/shell/gpu/gpu_surface_gl.h index 6929604616436..d00345d2c3477 100644 --- a/shell/gpu/gpu_surface_gl.h +++ b/shell/gpu/gpu_surface_gl.h @@ -49,6 +49,9 @@ class GPUSurfaceGL : public Surface { public: GPUSurfaceGL(GPUSurfaceGLDelegate* delegate); + // Creates a new GL surface reusing an existing GrContext. + GPUSurfaceGL(sk_sp gr_context, GPUSurfaceGLDelegate* delegate); + ~GPUSurfaceGL() override; // |shell::Surface| @@ -74,6 +77,7 @@ class GPUSurfaceGL : public Surface { sk_sp offscreen_surface_; bool valid_ = false; fml::WeakPtrFactory weak_factory_; + bool context_owner_; bool CreateOrUpdateSurfaces(const SkISize& size); diff --git a/shell/platform/darwin/ios/BUILD.gn b/shell/platform/darwin/ios/BUILD.gn index a11cf1cd33db5..235dfa054facd 100644 --- a/shell/platform/darwin/ios/BUILD.gn +++ b/shell/platform/darwin/ios/BUILD.gn @@ -87,6 +87,8 @@ shared_library("create_flutter_framework_dylib") { "ios_external_texture_gl.mm", "ios_gl_context.h", "ios_gl_context.mm", + "ios_gl_render_target.h", + "ios_gl_render_target.mm", "ios_surface.h", "ios_surface.mm", "ios_surface_gl.h", diff --git a/shell/platform/darwin/ios/framework/Source/FlutterOverlayView.h b/shell/platform/darwin/ios/framework/Source/FlutterOverlayView.h index b104902689aff..a344179057bab 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterOverlayView.h +++ b/shell/platform/darwin/ios/framework/Source/FlutterOverlayView.h @@ -13,7 +13,9 @@ #include "flutter/fml/memory/weak_ptr.h" #include "flutter/shell/common/shell.h" +#include "flutter/shell/platform/darwin/ios/ios_gl_context.h" #include "flutter/shell/platform/darwin/ios/ios_surface.h" +#include "flutter/shell/platform/darwin/ios/ios_surface_gl.h" @interface FlutterOverlayView : UIView @@ -21,7 +23,9 @@ - (instancetype)initWithCoder:(NSCoder*)aDecoder NS_UNAVAILABLE; - (instancetype)init NS_DESIGNATED_INITIALIZER; -- (std::unique_ptr)createSurface; +- (std::unique_ptr)createSoftwareSurface; +- (std::unique_ptr)createGLSurfaceWithContext: + (std::shared_ptr)gl_context; @end diff --git a/shell/platform/darwin/ios/framework/Source/FlutterOverlayView.mm b/shell/platform/darwin/ios/framework/Source/FlutterOverlayView.mm index 81c4e815a4459..6b7d8bbf093e5 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterOverlayView.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterOverlayView.mm @@ -63,14 +63,15 @@ + (Class)layerClass { #endif // TARGET_IPHONE_SIMULATOR } -- (std::unique_ptr)createSurface { - if ([self.layer isKindOfClass:[CAEAGLLayer class]]) { - // TODO(amirh): create a GL surface. - return nullptr; - } else { - fml::scoped_nsobject layer(reinterpret_cast([self.layer retain])); - return std::make_unique(std::move(layer), nullptr); - } +- (std::unique_ptr)createSoftwareSurface { + fml::scoped_nsobject layer(reinterpret_cast([self.layer retain])); + return std::make_unique(std::move(layer), nullptr); +} + +- (std::unique_ptr)createGLSurfaceWithContext: + (std::shared_ptr)gl_context { + fml::scoped_nsobject eagl_layer(reinterpret_cast([self.layer retain])); + return std::make_unique(eagl_layer, std::move(gl_context)); } // TODO(amirh): implement drawLayer to suppoer snapshotting. diff --git a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm index f0b800737aa42..01c7e63126c7e 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm @@ -6,6 +6,7 @@ #import "FlutterOverlayView.h" #import "flutter/shell/platform/darwin/ios/ios_surface.h" +#import "flutter/shell/platform/darwin/ios/ios_surface_gl.h" #include #include @@ -138,8 +139,9 @@ } void FlutterPlatformViewsController::PrerollCompositeEmbeddedView(int view_id) { - EnsureOverlayInitialized(view_id); - composition_frames_[view_id] = (overlays_[view_id]->surface->AcquireFrame(frame_size_)); + picture_recorders_[view_id] = std::make_unique(); + picture_recorders_[view_id]->beginRecording(SkRect::Make(frame_size_)); + picture_recorders_[view_id]->getRecordingCanvas()->clear(SK_ColorTRANSPARENT); composition_order_.push_back(view_id); } @@ -147,15 +149,14 @@ std::vector canvases; for (size_t i = 0; i < composition_order_.size(); i++) { int64_t view_id = composition_order_[i]; - canvases.push_back(composition_frames_[view_id]->SkiaCanvas()); + canvases.push_back(picture_recorders_[view_id]->getRecordingCanvas()); } return canvases; } SkCanvas* FlutterPlatformViewsController::CompositeEmbeddedView( int view_id, - const flow::EmbeddedViewParams& params, - IOSSurface& ios_surface) { + const flow::EmbeddedViewParams& params) { // TODO(amirh): assert that this is running on the platform thread once we support the iOS // embedded views thread configuration. // TODO(amirh): do nothing if the params didn't change. @@ -167,9 +168,7 @@ UIView* touch_interceptor = touch_interceptors_[view_id].get(); [touch_interceptor setFrame:rect]; - SkCanvas* canvas = composition_frames_[view_id]->SkiaCanvas(); - canvas->clear(SK_ColorTRANSPARENT); - return canvas; + return picture_recorders_[view_id]->getRecordingCanvas(); } void FlutterPlatformViewsController::Reset() { @@ -181,16 +180,27 @@ overlays_.clear(); composition_order_.clear(); active_composition_order_.clear(); - composition_frames_.clear(); + picture_recorders_.clear(); } -bool FlutterPlatformViewsController::Present() { +bool FlutterPlatformViewsController::SubmitFrame(bool gl_rendering, + GrContext* gr_context, + std::shared_ptr gl_context) { bool did_submit = true; for (size_t i = 0; i < composition_order_.size(); i++) { int64_t view_id = composition_order_[i]; - did_submit &= composition_frames_[view_id]->Submit(); + if (gl_rendering) { + EnsureGLOverlayInitialized(view_id, gl_context, gr_context); + } else { + EnsureOverlayInitialized(view_id); + } + auto frame = overlays_[view_id]->surface->AcquireFrame(frame_size_); + SkCanvas* canvas = frame->SkiaCanvas(); + canvas->drawPicture(picture_recorders_[view_id]->finishRecordingAsPicture()); + canvas->flush(); + did_submit &= frame->Submit(); } - composition_frames_.clear(); + picture_recorders_.clear(); if (composition_order_ == active_composition_order_) { composition_order_.clear(); return did_submit; @@ -226,10 +236,28 @@ overlay_view.frame = flutter_view_.get().bounds; overlay_view.autoresizingMask = (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight); - std::unique_ptr ios_surface = overlay_view.createSurface; + std::unique_ptr ios_surface = overlay_view.createSoftwareSurface; std::unique_ptr surface = ios_surface->CreateGPUSurface(); overlays_[overlay_id] = std::make_unique( - overlay_view, std::move(ios_surface), std::move(surface)); + fml::scoped_nsobject(overlay_view), std::move(ios_surface), std::move(surface)); +} + +void FlutterPlatformViewsController::EnsureGLOverlayInitialized( + int64_t overlay_id, + std::shared_ptr gl_context, + GrContext* gr_context) { + if (overlays_.count(overlay_id) != 0) { + return; + } + FlutterOverlayView* overlay_view = [[FlutterOverlayView alloc] init]; + overlay_view.frame = flutter_view_.get().bounds; + overlay_view.autoresizingMask = + (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight); + std::unique_ptr ios_surface = + [overlay_view createGLSurfaceWithContext:std::move(gl_context)]; + std::unique_ptr surface = ios_surface->CreateSecondaryGPUSurface(gr_context); + overlays_[overlay_id] = std::make_unique( + fml::scoped_nsobject(overlay_view), std::move(ios_surface), std::move(surface)); } } // namespace shell diff --git a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h index 2e40d9c861743..f6fa9c4a02a97 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h +++ b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h @@ -26,13 +26,14 @@ namespace shell { +class IOSGLContext; class IOSSurface; struct FlutterPlatformViewLayer { - FlutterPlatformViewLayer(UIView* overlay_view, + FlutterPlatformViewLayer(fml::scoped_nsobject overlay_view, std::unique_ptr ios_surface, std::unique_ptr surface) - : overlay_view([overlay_view retain]), + : overlay_view(std::move(overlay_view)), ios_surface(std::move(ios_surface)), surface(std::move(surface)){}; @@ -55,14 +56,14 @@ class FlutterPlatformViewsController { std::vector GetCurrentCanvases(); - SkCanvas* CompositeEmbeddedView(int view_id, - const flow::EmbeddedViewParams& params, - IOSSurface& surface); + SkCanvas* CompositeEmbeddedView(int view_id, const flow::EmbeddedViewParams& params); // Discards all platform views instances and auxiliary resources. void Reset(); - bool Present(); + bool SubmitFrame(bool gl_rendering, + GrContext* gr_context, + std::shared_ptr gl_context); void OnMethodCall(FlutterMethodCall* call, FlutterResult& result); @@ -82,13 +83,16 @@ class FlutterPlatformViewsController { // The latest composition order that was presented in Present(). std::vector active_composition_order_; - std::map> composition_frames_; + std::map> picture_recorders_; void OnCreate(FlutterMethodCall* call, FlutterResult& result); void OnDispose(FlutterMethodCall* call, FlutterResult& result); void OnAcceptGesture(FlutterMethodCall* call, FlutterResult& result); void EnsureOverlayInitialized(int64_t overlay_id); + void EnsureGLOverlayInitialized(int64_t overlay_id, + std::shared_ptr gl_context, + GrContext* gr_context); FML_DISALLOW_COPY_AND_ASSIGN(FlutterPlatformViewsController); }; diff --git a/shell/platform/darwin/ios/ios_gl_context.h b/shell/platform/darwin/ios/ios_gl_context.h index e7a3f558f8285..08778d21319a7 100644 --- a/shell/platform/darwin/ios/ios_gl_context.h +++ b/shell/platform/darwin/ios/ios_gl_context.h @@ -13,22 +13,18 @@ #include "flutter/fml/macros.h" #include "flutter/fml/platform/darwin/scoped_nsobject.h" #include "flutter/shell/common/platform_view.h" +#include "ios_gl_render_target.h" namespace shell { class IOSGLContext { public: - IOSGLContext(fml::scoped_nsobject layer); + IOSGLContext(); ~IOSGLContext(); - bool IsValid() const; - - bool PresentRenderBuffer() const; - - GLuint framebuffer() const { return framebuffer_; } - - bool UpdateStorageSizeIfNecessary(); + std::unique_ptr CreateRenderTarget( + fml::scoped_nsobject layer); bool MakeCurrent(); @@ -37,15 +33,9 @@ class IOSGLContext { sk_sp ColorSpace() const { return color_space_; } private: - fml::scoped_nsobject layer_; fml::scoped_nsobject context_; fml::scoped_nsobject resource_context_; - GLuint framebuffer_; - GLuint colorbuffer_; - GLint storage_size_width_; - GLint storage_size_height_; sk_sp color_space_; - bool valid_; FML_DISALLOW_COPY_AND_ASSIGN(IOSGLContext); }; diff --git a/shell/platform/darwin/ios/ios_gl_context.mm b/shell/platform/darwin/ios/ios_gl_context.mm index 2cd3a8f4c90bd..c8819a78b8372 100644 --- a/shell/platform/darwin/ios/ios_gl_context.mm +++ b/shell/platform/darwin/ios/ios_gl_context.mm @@ -12,13 +12,7 @@ namespace shell { -IOSGLContext::IOSGLContext(fml::scoped_nsobject layer) - : layer_(std::move(layer)), - framebuffer_(GL_NONE), - colorbuffer_(GL_NONE), - storage_size_width_(0), - storage_size_height_(0), - valid_(false) { +IOSGLContext::IOSGLContext() { context_.reset([[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES3]); if (context_ != nullptr) { resource_context_.reset([[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES3 @@ -29,35 +23,6 @@ sharegroup:context_.get().sharegroup]); } - FML_DCHECK(layer_ != nullptr); - FML_DCHECK(context_ != nullptr); - FML_DCHECK(resource_context_ != nullptr); - - bool context_current = [EAGLContext setCurrentContext:context_]; - - FML_DCHECK(context_current); - FML_DCHECK(glGetError() == GL_NO_ERROR); - - // Generate the framebuffer - - glGenFramebuffers(1, &framebuffer_); - FML_DCHECK(glGetError() == GL_NO_ERROR); - FML_DCHECK(framebuffer_ != GL_NONE); - - glBindFramebuffer(GL_FRAMEBUFFER, framebuffer_); - FML_DCHECK(glGetError() == GL_NO_ERROR); - - // Setup color attachment - - glGenRenderbuffers(1, &colorbuffer_); - FML_DCHECK(colorbuffer_ != GL_NONE); - - glBindRenderbuffer(GL_RENDERBUFFER, colorbuffer_); - FML_DCHECK(glGetError() == GL_NO_ERROR); - - glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, colorbuffer_); - FML_DCHECK(glGetError() == GL_NO_ERROR); - // TODO: // iOS displays are more variable than just P3 or sRGB. Reading the display // gamut just tells us what color space it makes sense to render into. We @@ -78,86 +43,18 @@ break; } } - - NSString* drawableColorFormat = kEAGLColorFormatRGBA8; - layer_.get().drawableProperties = @{ - kEAGLDrawablePropertyColorFormat : drawableColorFormat, - kEAGLDrawablePropertyRetainedBacking : @(NO), - }; - - valid_ = true; -} - -IOSGLContext::~IOSGLContext() { - FML_DCHECK(glGetError() == GL_NO_ERROR); - - // Deletes on GL_NONEs are ignored - glDeleteFramebuffers(1, &framebuffer_); - glDeleteRenderbuffers(1, &colorbuffer_); - - FML_DCHECK(glGetError() == GL_NO_ERROR); -} - -bool IOSGLContext::IsValid() const { - return valid_; } -bool IOSGLContext::PresentRenderBuffer() const { - const GLenum discards[] = { - GL_DEPTH_ATTACHMENT, - GL_STENCIL_ATTACHMENT, - }; - - glDiscardFramebufferEXT(GL_FRAMEBUFFER, sizeof(discards) / sizeof(GLenum), discards); - - glBindRenderbuffer(GL_RENDERBUFFER, colorbuffer_); - return [[EAGLContext currentContext] presentRenderbuffer:GL_RENDERBUFFER]; -} - -bool IOSGLContext::UpdateStorageSizeIfNecessary() { - const CGSize layer_size = [layer_.get() bounds].size; - const CGFloat contents_scale = layer_.get().contentsScale; - const GLint size_width = layer_size.width * contents_scale; - const GLint size_height = layer_size.height * contents_scale; - - if (size_width == storage_size_width_ && size_height == storage_size_height_) { - // Nothing to since the stoage size is already consistent with the layer. - return true; - } - TRACE_EVENT_INSTANT0("flutter", "IOSGLContext::UpdateStorageSizeIfNecessary"); - FML_DLOG(INFO) << "Updating render buffer storage size."; - - FML_DCHECK(glGetError() == GL_NO_ERROR); - - if (![EAGLContext setCurrentContext:context_]) { - return false; - } - - FML_DCHECK(glGetError() == GL_NO_ERROR); - - glBindFramebuffer(GL_FRAMEBUFFER, framebuffer_); - - glBindRenderbuffer(GL_RENDERBUFFER, colorbuffer_); - FML_DCHECK(glGetError() == GL_NO_ERROR); - - if (![context_.get() renderbufferStorage:GL_RENDERBUFFER fromDrawable:layer_.get()]) { - return false; - } - - // Fetch the dimensions of the color buffer whose backing was just updated. - glGetRenderbufferParameteriv(GL_RENDERBUFFER, GL_RENDERBUFFER_WIDTH, &storage_size_width_); - FML_DCHECK(glGetError() == GL_NO_ERROR); - - glGetRenderbufferParameteriv(GL_RENDERBUFFER, GL_RENDERBUFFER_HEIGHT, &storage_size_height_); - FML_DCHECK(glGetError() == GL_NO_ERROR); - - FML_DCHECK(glCheckFramebufferStatus(GL_FRAMEBUFFER) == GL_FRAMEBUFFER_COMPLETE); +IOSGLContext::~IOSGLContext() = default; - return true; +std::unique_ptr IOSGLContext::CreateRenderTarget( + fml::scoped_nsobject layer) { + return std::make_unique(std::move(layer), context_.get(), + resource_context_.get()); } bool IOSGLContext::MakeCurrent() { - return UpdateStorageSizeIfNecessary() && [EAGLContext setCurrentContext:context_.get()]; + return [EAGLContext setCurrentContext:context_.get()]; } bool IOSGLContext::ResourceMakeCurrent() { diff --git a/shell/platform/darwin/ios/ios_gl_render_target.h b/shell/platform/darwin/ios/ios_gl_render_target.h new file mode 100644 index 0000000000000..9b9639f7f997b --- /dev/null +++ b/shell/platform/darwin/ios/ios_gl_render_target.h @@ -0,0 +1,57 @@ +// Copyright 2018 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_SHELL_PLATFORM_DARWIN_IOS_IOS_GL_RENDER_TARGET_H_ +#define FLUTTER_SHELL_PLATFORM_DARWIN_IOS_IOS_GL_RENDER_TARGET_H_ + +#import +#import +#import +#import + +#include "flutter/fml/macros.h" +#include "flutter/fml/platform/darwin/scoped_nsobject.h" +#include "flutter/shell/common/platform_view.h" + +namespace shell { + +class IOSGLRenderTarget { + public: + IOSGLRenderTarget(fml::scoped_nsobject layer, + EAGLContext* context, + EAGLContext* resource_context); + + ~IOSGLRenderTarget(); + + bool IsValid() const; + + bool PresentRenderBuffer() const; + + GLuint framebuffer() const { return framebuffer_; } + + bool UpdateStorageSizeIfNecessary(); + + bool MakeCurrent(); + + bool ResourceMakeCurrent(); + + sk_sp ColorSpace() const { return color_space_; } + + private: + fml::scoped_nsobject layer_; + fml::scoped_nsobject context_; + fml::scoped_nsobject resource_context_; + GLuint framebuffer_; + GLuint colorbuffer_; + GLint storage_size_width_; + GLint storage_size_height_; + sk_sp color_space_; + bool valid_; + + FML_DISALLOW_COPY_AND_ASSIGN(IOSGLRenderTarget); +}; + +} // namespace shell + +#endif // FLUTTER_SHELL_PLATFORM_DARWIN_IOS_IOS_GL_RENDER_TARGET_H_ diff --git a/shell/platform/darwin/ios/ios_gl_render_target.mm b/shell/platform/darwin/ios/ios_gl_render_target.mm new file mode 100644 index 0000000000000..ffeee8f30bb79 --- /dev/null +++ b/shell/platform/darwin/ios/ios_gl_render_target.mm @@ -0,0 +1,140 @@ +// Copyright 2018 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/shell/platform/darwin/ios/ios_gl_render_target.h" + +#include + +#include "flutter/fml/trace_event.h" +#include "third_party/skia/include/gpu/GrContextOptions.h" +#include "third_party/skia/include/gpu/gl/GrGLInterface.h" + +namespace shell { + +IOSGLRenderTarget::IOSGLRenderTarget(fml::scoped_nsobject layer, + EAGLContext* context, + EAGLContext* resource_context) + : layer_(std::move(layer)), + context_([context retain]), + resource_context_([resource_context retain]), + framebuffer_(GL_NONE), + colorbuffer_(GL_NONE), + storage_size_width_(0), + storage_size_height_(0), + valid_(false) { + FML_DCHECK(layer_ != nullptr); + FML_DCHECK(context_ != nullptr); + FML_DCHECK(resource_context_ != nullptr); + + bool context_current = [EAGLContext setCurrentContext:context_]; + + FML_DCHECK(context_current); + FML_DCHECK(glGetError() == GL_NO_ERROR); + + // Generate the framebuffer + + glGenFramebuffers(1, &framebuffer_); + FML_DCHECK(glGetError() == GL_NO_ERROR); + FML_DCHECK(framebuffer_ != GL_NONE); + + glBindFramebuffer(GL_FRAMEBUFFER, framebuffer_); + FML_DCHECK(glGetError() == GL_NO_ERROR); + + // Setup color attachment + + glGenRenderbuffers(1, &colorbuffer_); + FML_DCHECK(colorbuffer_ != GL_NONE); + + glBindRenderbuffer(GL_RENDERBUFFER, colorbuffer_); + FML_DCHECK(glGetError() == GL_NO_ERROR); + + glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, colorbuffer_); + FML_DCHECK(glGetError() == GL_NO_ERROR); + + NSString* drawableColorFormat = kEAGLColorFormatRGBA8; + layer_.get().drawableProperties = @{ + kEAGLDrawablePropertyColorFormat : drawableColorFormat, + kEAGLDrawablePropertyRetainedBacking : @(NO), + }; + + valid_ = true; +} + +IOSGLRenderTarget::~IOSGLRenderTarget() { + FML_DCHECK(glGetError() == GL_NO_ERROR); + + // Deletes on GL_NONEs are ignored + glDeleteFramebuffers(1, &framebuffer_); + glDeleteRenderbuffers(1, &colorbuffer_); + + FML_DCHECK(glGetError() == GL_NO_ERROR); +} + +bool IOSGLRenderTarget::IsValid() const { + return valid_; +} + +bool IOSGLRenderTarget::PresentRenderBuffer() const { + const GLenum discards[] = { + GL_DEPTH_ATTACHMENT, + GL_STENCIL_ATTACHMENT, + }; + + glDiscardFramebufferEXT(GL_FRAMEBUFFER, sizeof(discards) / sizeof(GLenum), discards); + + glBindRenderbuffer(GL_RENDERBUFFER, colorbuffer_); + return [[EAGLContext currentContext] presentRenderbuffer:GL_RENDERBUFFER]; +} + +bool IOSGLRenderTarget::UpdateStorageSizeIfNecessary() { + const CGSize layer_size = [layer_.get() bounds].size; + const CGFloat contents_scale = layer_.get().contentsScale; + const GLint size_width = layer_size.width * contents_scale; + const GLint size_height = layer_size.height * contents_scale; + + if (size_width == storage_size_width_ && size_height == storage_size_height_) { + // Nothing to since the stoage size is already consistent with the layer. + return true; + } + TRACE_EVENT_INSTANT0("flutter", "IOSGLRenderTarget::UpdateStorageSizeIfNecessary"); + FML_DLOG(INFO) << "Updating render buffer storage size."; + + FML_DCHECK(glGetError() == GL_NO_ERROR); + + if (![EAGLContext setCurrentContext:context_]) { + return false; + } + + FML_DCHECK(glGetError() == GL_NO_ERROR); + + glBindFramebuffer(GL_FRAMEBUFFER, framebuffer_); + + glBindRenderbuffer(GL_RENDERBUFFER, colorbuffer_); + FML_DCHECK(glGetError() == GL_NO_ERROR); + + if (![context_.get() renderbufferStorage:GL_RENDERBUFFER fromDrawable:layer_.get()]) { + return false; + } + + // Fetch the dimensions of the color buffer whose backing was just updated. + glGetRenderbufferParameteriv(GL_RENDERBUFFER, GL_RENDERBUFFER_WIDTH, &storage_size_width_); + FML_DCHECK(glGetError() == GL_NO_ERROR); + + glGetRenderbufferParameteriv(GL_RENDERBUFFER, GL_RENDERBUFFER_HEIGHT, &storage_size_height_); + FML_DCHECK(glGetError() == GL_NO_ERROR); + + FML_DCHECK(glCheckFramebufferStatus(GL_FRAMEBUFFER) == GL_FRAMEBUFFER_COMPLETE); + + return true; +} + +bool IOSGLRenderTarget::MakeCurrent() { + return UpdateStorageSizeIfNecessary() && [EAGLContext setCurrentContext:context_.get()]; +} + +bool IOSGLRenderTarget::ResourceMakeCurrent() { + return [EAGLContext setCurrentContext:resource_context_.get()]; +} + +} // namespace shell diff --git a/shell/platform/darwin/ios/ios_surface_gl.h b/shell/platform/darwin/ios/ios_surface_gl.h index 066e5fdcaf6ce..f0e898a1bb00e 100644 --- a/shell/platform/darwin/ios/ios_surface_gl.h +++ b/shell/platform/darwin/ios/ios_surface_gl.h @@ -9,6 +9,7 @@ #include "flutter/fml/platform/darwin/scoped_nsobject.h" #include "flutter/shell/gpu/gpu_surface_gl.h" #include "flutter/shell/platform/darwin/ios/ios_gl_context.h" +#include "flutter/shell/platform/darwin/ios/ios_gl_render_target.h" #include "flutter/shell/platform/darwin/ios/ios_surface.h" @class CAEAGLLayer; @@ -22,6 +23,8 @@ class IOSSurfaceGL : public IOSSurface, IOSSurfaceGL(fml::scoped_nsobject layer, FlutterPlatformViewsController* platform_views_controller); + IOSSurfaceGL(fml::scoped_nsobject layer, std::shared_ptr context); + ~IOSSurfaceGL() override; bool IsValid() const override; @@ -32,6 +35,8 @@ class IOSSurfaceGL : public IOSSurface, std::unique_ptr CreateGPUSurface() override; + std::unique_ptr CreateSecondaryGPUSurface(GrContext* gr_context); + bool GLContextMakeCurrent() override; bool GLContextClearCurrent() override; @@ -57,8 +62,12 @@ class IOSSurfaceGL : public IOSSurface, // |flow::ExternalViewEmbedder| SkCanvas* CompositeEmbeddedView(int view_id, const flow::EmbeddedViewParams& params) override; + // |flow::ExternalViewEmbedder| + virtual bool SubmitFrame(GrContext* context) override; + private: - IOSGLContext context_; + std::shared_ptr context_; + std::unique_ptr render_target_; FML_DISALLOW_COPY_AND_ASSIGN(IOSSurfaceGL); }; diff --git a/shell/platform/darwin/ios/ios_surface_gl.mm b/shell/platform/darwin/ios/ios_surface_gl.mm index 6f0d7648051af..3a5315a261713 100644 --- a/shell/platform/darwin/ios/ios_surface_gl.mm +++ b/shell/platform/darwin/ios/ios_surface_gl.mm @@ -11,21 +11,30 @@ IOSSurfaceGL::IOSSurfaceGL(fml::scoped_nsobject layer, FlutterPlatformViewsController* platform_views_controller) - : IOSSurface(platform_views_controller), context_(std::move(layer)) {} + : IOSSurface(platform_views_controller) { + context_ = std::make_shared(); + render_target_ = context_->CreateRenderTarget(std::move(layer)); +} + +IOSSurfaceGL::IOSSurfaceGL(fml::scoped_nsobject layer, + std::shared_ptr context) + : IOSSurface(nullptr), context_(context) { + render_target_ = context_->CreateRenderTarget(std::move(layer)); +} IOSSurfaceGL::~IOSSurfaceGL() = default; bool IOSSurfaceGL::IsValid() const { - return context_.IsValid(); + return render_target_->IsValid(); } bool IOSSurfaceGL::ResourceContextMakeCurrent() { - return IsValid() ? context_.ResourceMakeCurrent() : false; + return render_target_->IsValid() ? context_->ResourceMakeCurrent() : false; } void IOSSurfaceGL::UpdateStorageSizeIfNecessary() { if (IsValid()) { - context_.UpdateStorageSizeIfNecessary(); + render_target_->UpdateStorageSizeIfNecessary(); } } @@ -33,8 +42,12 @@ return std::make_unique(this); } +std::unique_ptr IOSSurfaceGL::CreateSecondaryGPUSurface(GrContext* gr_context) { + return std::make_unique(sk_ref_sp(gr_context), this); +} + intptr_t IOSSurfaceGL::GLContextFBO() const { - return IsValid() ? context_.framebuffer() : GL_NONE; + return IsValid() ? render_target_->framebuffer() : GL_NONE; } bool IOSSurfaceGL::UseOffscreenSurface() const { @@ -45,7 +58,10 @@ } bool IOSSurfaceGL::GLContextMakeCurrent() { - return IsValid() ? context_.MakeCurrent() : false; + if (!IsValid()) { + return false; + } + return render_target_->UpdateStorageSizeIfNecessary() && context_->MakeCurrent(); } bool IOSSurfaceGL::GLContextClearCurrent() { @@ -55,15 +71,7 @@ bool IOSSurfaceGL::GLContextPresent() { TRACE_EVENT0("flutter", "IOSSurfaceGL::GLContextPresent"); - if (!IsValid() || !context_.PresentRenderBuffer()) { - return false; - } - - FlutterPlatformViewsController* platform_views_controller = GetPlatformViewsController(); - if (platform_views_controller == nullptr) { - return true; - } - return platform_views_controller->Present(); + return IsValid() && render_target_->PresentRenderBuffer(); } flow::ExternalViewEmbedder* IOSSurfaceGL::GetExternalViewEmbedder() { @@ -95,7 +103,15 @@ SkCanvas* IOSSurfaceGL::CompositeEmbeddedView(int view_id, const flow::EmbeddedViewParams& params) { FlutterPlatformViewsController* platform_views_controller = GetPlatformViewsController(); FML_CHECK(platform_views_controller != nullptr); - return platform_views_controller->CompositeEmbeddedView(view_id, params, *this); + return platform_views_controller->CompositeEmbeddedView(view_id, params); +} + +bool IOSSurfaceGL::SubmitFrame(GrContext* context) { + FlutterPlatformViewsController* platform_views_controller = GetPlatformViewsController(); + if (platform_views_controller == nullptr) { + return true; + } + return platform_views_controller->SubmitFrame(true, std::move(context), context_); } } // namespace shell diff --git a/shell/platform/darwin/ios/ios_surface_software.h b/shell/platform/darwin/ios/ios_surface_software.h index 068d9f132257a..1642497f27dfd 100644 --- a/shell/platform/darwin/ios/ios_surface_software.h +++ b/shell/platform/darwin/ios/ios_surface_software.h @@ -57,6 +57,9 @@ class IOSSurfaceSoftware final : public IOSSurface, // |flow::ExternalViewEmbedder| SkCanvas* CompositeEmbeddedView(int view_id, const flow::EmbeddedViewParams& params) override; + // |flow::ExternalViewEmbedder| + virtual bool SubmitFrame(GrContext* context) override; + private: fml::scoped_nsobject layer_; sk_sp sk_surface_; diff --git a/shell/platform/darwin/ios/ios_surface_software.mm b/shell/platform/darwin/ios/ios_surface_software.mm index a5ca5357372d9..3252b3e1cd418 100644 --- a/shell/platform/darwin/ios/ios_surface_software.mm +++ b/shell/platform/darwin/ios/ios_surface_software.mm @@ -123,11 +123,7 @@ layer_.get().contents = reinterpret_cast(static_cast(pixmap_image)); - FlutterPlatformViewsController* platform_views_controller = GetPlatformViewsController(); - if (platform_views_controller == nullptr) { - return true; - } - return platform_views_controller->Present(); + return true; } flow::ExternalViewEmbedder* IOSSurfaceSoftware::GetExternalViewEmbedder() { @@ -160,7 +156,15 @@ const flow::EmbeddedViewParams& params) { FlutterPlatformViewsController* platform_views_controller = GetPlatformViewsController(); FML_CHECK(platform_views_controller != nullptr); - return platform_views_controller->CompositeEmbeddedView(view_id, params, *this); + return platform_views_controller->CompositeEmbeddedView(view_id, params); +} + +bool IOSSurfaceSoftware::SubmitFrame(GrContext* context) { + FlutterPlatformViewsController* platform_views_controller = GetPlatformViewsController(); + if (platform_views_controller == nullptr) { + return true; + } + return platform_views_controller->SubmitFrame(false, nullptr, nullptr); } } // namespace shell From 59f79d0d64c915c6ba04099206e3fed5b9d5a4a1 Mon Sep 17 00:00:00 2001 From: Michael Goderbauer Date: Thu, 8 Nov 2018 22:43:38 -0800 Subject: [PATCH 0216/1537] Reland "Roll freetype2 to a10b062df0c8958d69377aa04ea6554a9961a111 (#6738)" (#6787) This reverts commit fb5b097e5c20d2af9d4178530f0f4acd9d173401. --- DEPS | 4 ++-- ci/licenses_golden/licenses_third_party | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/DEPS b/DEPS index 001bcafdf0504..0d63849b85651 100644 --- a/DEPS +++ b/DEPS @@ -117,7 +117,7 @@ allowed_hosts = [ ] deps = { - 'src': 'https://github.com/flutter/buildroot.git' + '@' + '11a934e99eaa4aa8e278cd2772aff4f51f1f3c41', + 'src': 'https://github.com/flutter/buildroot.git' + '@' + '2b7fe9635c00c932f86627988e797a097574929e', # Fuchsia compatibility # @@ -353,7 +353,7 @@ deps = { Var('chromium_git') + '/external/colorama.git' + '@' + '799604a1041e9b3bc5d2789ecbd7e8db2e18e6b8', 'src/third_party/freetype2': - Var('fuchsia_git') + '/third_party/freetype2' + '@' + '6581fd3e9c8645f01c0d51e4f53893f5391f2bf3', + Var('fuchsia_git') + '/third_party/freetype2' + '@' + 'a10b062df0c8958d69377aa04ea6554a9961a111', 'src/third_party/root_certificates': Var('dart_git') + '/root_certificates.git' + '@' + Var('dart_root_certificates_rev'), diff --git a/ci/licenses_golden/licenses_third_party b/ci/licenses_golden/licenses_third_party index 320c80fa927a8..03a3440ed7d91 100644 --- a/ci/licenses_golden/licenses_third_party +++ b/ci/licenses_golden/licenses_third_party @@ -1,4 +1,4 @@ -Signature: 03e52cfdea768cb5721891aa95f26166 +Signature: fedb7db24a1a6d3e75988ebfaa58fe5c UNUSED LICENSES: From 316f6365a64bd66fdf9c1ada3ed0a91d9533b9c7 Mon Sep 17 00:00:00 2001 From: Amir Hardon Date: Fri, 9 Nov 2018 10:21:44 -0800 Subject: [PATCH 0217/1537] Fix wrong `flutter/platform_views` protocol implementation on iOS. (#6803) The `id` parameter of onDispose is passed as the method argument and not as part of a map. --- .../darwin/ios/framework/Source/FlutterPlatformViews.mm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm index 01c7e63126c7e..6ca2f334dd488 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm @@ -89,8 +89,8 @@ } void FlutterPlatformViewsController::OnDispose(FlutterMethodCall* call, FlutterResult& result) { - NSDictionary* args = [call arguments]; - int64_t viewId = [args[@"id"] longLongValue]; + NSNumber* arg = [call arguments]; + int64_t viewId = [arg longLongValue]; if (views_.count(viewId) == 0) { result([FlutterError errorWithCode:@"unknown_view" From f5e5d81eed80051f28126be910f143b2a386ccc2 Mon Sep 17 00:00:00 2001 From: Amir Hardon Date: Fri, 9 Nov 2018 11:24:14 -0800 Subject: [PATCH 0218/1537] Move the embedded view preview flag check to a common function. (#6813) --- .../platform/darwin/ios/framework/Source/FlutterEngine.mm | 4 +--- shell/platform/darwin/ios/ios_surface.h | 5 +++-- shell/platform/darwin/ios/ios_surface.mm | 7 +++++++ shell/platform/darwin/ios/ios_surface_gl.mm | 2 +- shell/platform/darwin/ios/ios_surface_software.mm | 2 +- 5 files changed, 13 insertions(+), 7 deletions(-) diff --git a/shell/platform/darwin/ios/framework/Source/FlutterEngine.mm b/shell/platform/darwin/ios/framework/Source/FlutterEngine.mm index ed501e59fb9ec..c5f3b8d9accf0 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterEngine.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterEngine.mm @@ -296,8 +296,6 @@ - (BOOL)createShell:(NSString*)entrypoint libraryURI:(NSString*)libraryURI { threadLabel.UTF8String, // label shell::ThreadHost::Type::UI | shell::ThreadHost::Type::GPU | shell::ThreadHost::Type::IO}; - bool embedded_views_preview_enabled = [[[NSBundle mainBundle] - objectForInfoDictionaryKey:@(shell::kEmbeddedViewsPreview)] boolValue]; // Lambda captures by pointers to ObjC objects are fine here because the // create call is // synchronous. @@ -310,7 +308,7 @@ - (BOOL)createShell:(NSString*)entrypoint libraryURI:(NSString*)libraryURI { return std::make_unique(shell.GetTaskRunners()); }; - if (embedded_views_preview_enabled) { + if (shell::IsIosEmbeddedViewsPreviewEnabled()) { // Embedded views requires the gpu and the platform views to be the same. // The plan is to eventually dynamically merge the threads when there's a // platform view in the layer tree. diff --git a/shell/platform/darwin/ios/ios_surface.h b/shell/platform/darwin/ios/ios_surface.h index 660844d318202..1fc6a4218dc75 100644 --- a/shell/platform/darwin/ios/ios_surface.h +++ b/shell/platform/darwin/ios/ios_surface.h @@ -15,8 +15,9 @@ namespace shell { -// The name of the Info.plist flag to enable the embedded iOS views preview. -const char* const kEmbeddedViewsPreview = "io.flutter.embedded_views_preview"; +// Returns true if the app explicitly specified to use the iOS view embedding +// mechanism which is still in a release preview. +bool IsIosEmbeddedViewsPreviewEnabled(); class IOSSurface { public: diff --git a/shell/platform/darwin/ios/ios_surface.mm b/shell/platform/darwin/ios/ios_surface.mm index e4f79576534c6..f9d2d4cfbd500 100644 --- a/shell/platform/darwin/ios/ios_surface.mm +++ b/shell/platform/darwin/ios/ios_surface.mm @@ -11,6 +11,13 @@ namespace shell { +// The name of the Info.plist flag to enable the embedded iOS views preview. +const char* const kEmbeddedViewsPreview = "io.flutter.embedded_views_preview"; + +bool IsIosEmbeddedViewsPreviewEnabled() { + return [[[NSBundle mainBundle] objectForInfoDictionaryKey:@(kEmbeddedViewsPreview)] boolValue]; +} + IOSSurface::IOSSurface(FlutterPlatformViewsController* platform_views_controller) : platform_views_controller_(platform_views_controller) {} diff --git a/shell/platform/darwin/ios/ios_surface_gl.mm b/shell/platform/darwin/ios/ios_surface_gl.mm index 3a5315a261713..236b05dacae05 100644 --- a/shell/platform/darwin/ios/ios_surface_gl.mm +++ b/shell/platform/darwin/ios/ios_surface_gl.mm @@ -75,7 +75,7 @@ } flow::ExternalViewEmbedder* IOSSurfaceGL::GetExternalViewEmbedder() { - if ([[[NSBundle mainBundle] objectForInfoDictionaryKey:@(kEmbeddedViewsPreview)] boolValue]) { + if (IsIosEmbeddedViewsPreviewEnabled()) { return this; } else { return nullptr; diff --git a/shell/platform/darwin/ios/ios_surface_software.mm b/shell/platform/darwin/ios/ios_surface_software.mm index 3252b3e1cd418..a1017439c0057 100644 --- a/shell/platform/darwin/ios/ios_surface_software.mm +++ b/shell/platform/darwin/ios/ios_surface_software.mm @@ -127,7 +127,7 @@ } flow::ExternalViewEmbedder* IOSSurfaceSoftware::GetExternalViewEmbedder() { - if ([[[NSBundle mainBundle] objectForInfoDictionaryKey:@(kEmbeddedViewsPreview)] boolValue]) { + if (IsIosEmbeddedViewsPreviewEnabled()) { return this; } else { return nullptr; From a64049a14e4a02da74daa9bb0a1b7153312b02bf Mon Sep 17 00:00:00 2001 From: Jason Simmons Date: Fri, 9 Nov 2018 12:01:57 -0800 Subject: [PATCH 0219/1537] Update Vulkan headers to 1.1 (#6806) --- DEPS | 4 ++-- ci/licenses_golden/licenses_third_party | 17 ++++++++++++++--- tools/licenses/lib/main.dart | 4 ++-- vulkan/vulkan_interface.cc | 4 ++++ vulkan/vulkan_native_surface_android.cc | 2 ++ 5 files changed, 24 insertions(+), 7 deletions(-) diff --git a/DEPS b/DEPS index 0d63849b85651..33ff64e140729 100644 --- a/DEPS +++ b/DEPS @@ -370,9 +370,9 @@ deps = { 'src/third_party/gyp': Var('chromium_git') + '/external/gyp.git' + '@' + '4801a5331ae62da9769a327f11c4213d32fb0dad', - # Headers for Vulkan 1.0 + # Headers for Vulkan 1.1 'src/third_party/vulkan': - Var('github_git') + '/KhronosGroup/Vulkan-Docs.git' + '@' + 'e29c2489e238509c41aeb8c7bce9d669a496344b', + Var('github_git') + '/KhronosGroup/Vulkan-Docs.git' + '@' + 'v1.1.91', 'src/third_party/pkg/when': Var('dart_git') + '/when.git' + '@' + '0.2.0', diff --git a/ci/licenses_golden/licenses_third_party b/ci/licenses_golden/licenses_third_party index 03a3440ed7d91..58aef0b77fa54 100644 --- a/ci/licenses_golden/licenses_third_party +++ b/ci/licenses_golden/licenses_third_party @@ -1,4 +1,4 @@ -Signature: fedb7db24a1a6d3e75988ebfaa58fe5c +Signature: fc569d77237ef4247eb7a93bb2c989be UNUSED LICENSES: @@ -466,8 +466,19 @@ FILE: ../../../third_party/dart/third_party/observatory_pub_packages/packages/qu FILE: ../../../third_party/dart/third_party/observatory_pub_packages/packages/quiver/lib/src/time/util.dart FILE: ../../../third_party/dart/third_party/observatory_pub_packages/packages/quiver/lib/strings.dart FILE: ../../../third_party/dart/third_party/observatory_pub_packages/packages/quiver/lib/time.dart -FILE: ../../../third_party/vulkan/src/vulkan/vk_platform.h -FILE: ../../../third_party/vulkan/src/vulkan/vulkan.h +FILE: ../../../third_party/vulkan/include/vulkan/vk_platform.h +FILE: ../../../third_party/vulkan/include/vulkan/vulkan.h +FILE: ../../../third_party/vulkan/include/vulkan/vulkan_android.h +FILE: ../../../third_party/vulkan/include/vulkan/vulkan_core.h +FILE: ../../../third_party/vulkan/include/vulkan/vulkan_fuchsia.h +FILE: ../../../third_party/vulkan/include/vulkan/vulkan_ios.h +FILE: ../../../third_party/vulkan/include/vulkan/vulkan_macos.h +FILE: ../../../third_party/vulkan/include/vulkan/vulkan_vi.h +FILE: ../../../third_party/vulkan/include/vulkan/vulkan_wayland.h +FILE: ../../../third_party/vulkan/include/vulkan/vulkan_win32.h +FILE: ../../../third_party/vulkan/include/vulkan/vulkan_xcb.h +FILE: ../../../third_party/vulkan/include/vulkan/vulkan_xlib.h +FILE: ../../../third_party/vulkan/include/vulkan/vulkan_xlib_xrandr.h ---------------------------------------------------------------------------------------------------- Apache License Version 2.0, January 2004 diff --git a/tools/licenses/lib/main.dart b/tools/licenses/lib/main.dart index 478d8533b800a..9ea879f73fb98 100644 --- a/tools/licenses/lib/main.dart +++ b/tools/licenses/lib/main.dart @@ -1903,8 +1903,8 @@ class RepositoryVulkanDirectory extends RepositoryDirectory { @override bool shouldRecurse(fs.IoNode entry) { - return entry.name != 'doc' // documentation - && entry.name != 'out' // documentation + // Flutter only uses the headers in the include directory. + return entry.name == 'include' && super.shouldRecurse(entry); } diff --git a/vulkan/vulkan_interface.cc b/vulkan/vulkan_interface.cc index fc83321e96355..cd89954c0d0a1 100644 --- a/vulkan/vulkan_interface.cc +++ b/vulkan/vulkan_interface.cc @@ -62,6 +62,10 @@ std::string VulkanResultToString(VkResult result) { return "VK_RESULT_RANGE_SIZE"; case VK_RESULT_MAX_ENUM: return "VK_RESULT_MAX_ENUM"; + case VK_ERROR_INVALID_EXTERNAL_HANDLE: + return "VK_ERROR_INVALID_EXTERNAL_HANDLE"; + case VK_ERROR_OUT_OF_POOL_MEMORY: + return "VK_ERROR_OUT_OF_POOL_MEMORY"; #if VK_HEADER_VERSION >= 63 case VK_ERROR_NOT_PERMITTED_EXT: diff --git a/vulkan/vulkan_native_surface_android.cc b/vulkan/vulkan_native_surface_android.cc index 0da17d90b4ebc..ba36e9f17fcff 100644 --- a/vulkan/vulkan_native_surface_android.cc +++ b/vulkan/vulkan_native_surface_android.cc @@ -4,6 +4,8 @@ #include "flutter/vulkan/vulkan_native_surface_android.h" +#include + #include "third_party/skia/include/gpu/vk/GrVkBackendContext.h" namespace vulkan { From 21c265cce4c4a9bf98036ae2c5fee5a9c0814b9e Mon Sep 17 00:00:00 2001 From: Amir Hardon Date: Fri, 9 Nov 2018 12:10:09 -0800 Subject: [PATCH 0220/1537] Synchronize Flutter's rendering with CA. (#6807) Right now we do it whenever the platform views preview flag is on. This is less efficient, filed https://github.com/flutter/flutter/issues/24133 to only do this when there's a platform view in the tree. --- flow/embedded_views.h | 2 +- shell/common/rasterizer.cc | 2 +- .../darwin/ios/framework/Source/FlutterOverlayView.mm | 5 +++++ .../platform/darwin/ios/framework/Source/FlutterView.mm | 9 +++++++++ shell/platform/darwin/ios/ios_surface_gl.h | 2 +- shell/platform/darwin/ios/ios_surface_gl.mm | 8 ++++++-- shell/platform/darwin/ios/ios_surface_software.h | 2 +- shell/platform/darwin/ios/ios_surface_software.mm | 2 +- 8 files changed, 25 insertions(+), 7 deletions(-) diff --git a/flow/embedded_views.h b/flow/embedded_views.h index e98c98a6e1cc7..81c67de9784b5 100644 --- a/flow/embedded_views.h +++ b/flow/embedded_views.h @@ -27,7 +27,7 @@ class ExternalViewEmbedder { public: ExternalViewEmbedder() = default; - virtual void SetFrameSize(SkISize frame_size) = 0; + virtual void BeginFrame(SkISize frame_size) = 0; virtual void PrerollCompositeEmbeddedView(int view_id) = 0; diff --git a/shell/common/rasterizer.cc b/shell/common/rasterizer.cc index 29d534b2a4430..9e30a4c561a4e 100644 --- a/shell/common/rasterizer.cc +++ b/shell/common/rasterizer.cc @@ -165,7 +165,7 @@ bool Rasterizer::DrawToSurface(flow::LayerTree& layer_tree) { auto external_view_embedder = surface_->GetExternalViewEmbedder(); if (external_view_embedder != nullptr) { - external_view_embedder->SetFrameSize(layer_tree.frame_size()); + external_view_embedder->BeginFrame(layer_tree.frame_size()); } auto compositor_frame = compositor_context_->AcquireFrame( diff --git a/shell/platform/darwin/ios/framework/Source/FlutterOverlayView.mm b/shell/platform/darwin/ios/framework/Source/FlutterOverlayView.mm index 6b7d8bbf093e5..83f59d24e0b81 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterOverlayView.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterOverlayView.mm @@ -71,6 +71,11 @@ + (Class)layerClass { - (std::unique_ptr)createGLSurfaceWithContext: (std::shared_ptr)gl_context { fml::scoped_nsobject eagl_layer(reinterpret_cast([self.layer retain])); + // TODO(amirh): We can lower this to iOS 8.0 once we have a Metal rendering backend. + // https://github.com/flutter/flutter/issues/24132 + if (@available(iOS 9.0, *)) { + eagl_layer.get().presentsWithTransaction = YES; + } return std::make_unique(eagl_layer, std::move(gl_context)); } diff --git a/shell/platform/darwin/ios/framework/Source/FlutterView.mm b/shell/platform/darwin/ios/framework/Source/FlutterView.mm index fbf3270925828..f60f114f2ea1c 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterView.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterView.mm @@ -79,6 +79,15 @@ + (Class)layerClass { if ([self.layer isKindOfClass:[CAEAGLLayer class]]) { fml::scoped_nsobject eagl_layer( reinterpret_cast([self.layer retain])); + if (shell::IsIosEmbeddedViewsPreviewEnabled()) { + // TODO(amirh): We can lower this to iOS 8.0 once we have a Metal rendering backend. + // https://github.com/flutter/flutter/issues/24132 + if (@available(iOS 9.0, *)) { + // TODO(amirh): only do this if there's an embedded view. + // https://github.com/flutter/flutter/issues/24133 + eagl_layer.get().presentsWithTransaction = YES; + } + } return std::make_unique(std::move(eagl_layer), [_delegate platformViewsController]); } else { diff --git a/shell/platform/darwin/ios/ios_surface_gl.h b/shell/platform/darwin/ios/ios_surface_gl.h index f0e898a1bb00e..9f7013c29b100 100644 --- a/shell/platform/darwin/ios/ios_surface_gl.h +++ b/shell/platform/darwin/ios/ios_surface_gl.h @@ -51,7 +51,7 @@ class IOSSurfaceGL : public IOSSurface, flow::ExternalViewEmbedder* GetExternalViewEmbedder() override; // |flow::ExternalViewEmbedder| - void SetFrameSize(SkISize frame_size) override; + void BeginFrame(SkISize frame_size) override; // |flow::ExternalViewEmbedder| void PrerollCompositeEmbeddedView(int view_id) override; diff --git a/shell/platform/darwin/ios/ios_surface_gl.mm b/shell/platform/darwin/ios/ios_surface_gl.mm index 236b05dacae05..cd0bb093d87d4 100644 --- a/shell/platform/darwin/ios/ios_surface_gl.mm +++ b/shell/platform/darwin/ios/ios_surface_gl.mm @@ -82,10 +82,11 @@ } } -void IOSSurfaceGL::SetFrameSize(SkISize frame_size) { +void IOSSurfaceGL::BeginFrame(SkISize frame_size) { FlutterPlatformViewsController* platform_views_controller = GetPlatformViewsController(); FML_CHECK(platform_views_controller != nullptr); platform_views_controller->SetFrameSize(frame_size); + [CATransaction begin]; } void IOSSurfaceGL::PrerollCompositeEmbeddedView(int view_id) { @@ -111,7 +112,10 @@ if (platform_views_controller == nullptr) { return true; } - return platform_views_controller->SubmitFrame(true, std::move(context), context_); + + bool submitted = platform_views_controller->SubmitFrame(true, std::move(context), context_); + [CATransaction commit]; + return submitted; } } // namespace shell diff --git a/shell/platform/darwin/ios/ios_surface_software.h b/shell/platform/darwin/ios/ios_surface_software.h index 1642497f27dfd..5106bdfb0aa3e 100644 --- a/shell/platform/darwin/ios/ios_surface_software.h +++ b/shell/platform/darwin/ios/ios_surface_software.h @@ -46,7 +46,7 @@ class IOSSurfaceSoftware final : public IOSSurface, flow::ExternalViewEmbedder* GetExternalViewEmbedder() override; // |flow::ExternalViewEmbedder| - void SetFrameSize(SkISize frame_size) override; + void BeginFrame(SkISize frame_size) override; // |flow::ExternalViewEmbedder| void PrerollCompositeEmbeddedView(int view_id) override; diff --git a/shell/platform/darwin/ios/ios_surface_software.mm b/shell/platform/darwin/ios/ios_surface_software.mm index a1017439c0057..5d120ef47c061 100644 --- a/shell/platform/darwin/ios/ios_surface_software.mm +++ b/shell/platform/darwin/ios/ios_surface_software.mm @@ -134,7 +134,7 @@ } } -void IOSSurfaceSoftware::SetFrameSize(SkISize frame_size) { +void IOSSurfaceSoftware::BeginFrame(SkISize frame_size) { FlutterPlatformViewsController* platform_views_controller = GetPlatformViewsController(); FML_CHECK(platform_views_controller != nullptr); platform_views_controller->SetFrameSize(frame_size); From 5646e86a6f442dc6f4158ae7010ab13d72a0b356 Mon Sep 17 00:00:00 2001 From: Amir Hardon Date: Fri, 9 Nov 2018 12:10:29 -0800 Subject: [PATCH 0221/1537] Use the internal_nodes_canvas for all leaf node operations. (#6804) This also renames the PaintContext's canvas to lead_nodes_canvas so that it is more explicit on the call sites which canvas is being used. --- flow/layers/clip_path_layer.cc | 9 +++++---- flow/layers/clip_rect_layer.cc | 9 +++++---- flow/layers/clip_rrect_layer.cc | 9 +++++---- flow/layers/layer.cc | 8 ++++---- flow/layers/layer.h | 6 +----- flow/layers/opacity_layer.cc | 12 ++++++------ flow/layers/performance_overlay_layer.cc | 11 ++++++----- flow/layers/physical_shape_layer.cc | 18 +++++++++--------- flow/layers/picture_layer.cc | 14 +++++++------- flow/layers/platform_view_layer.cc | 4 ++-- flow/layers/shader_mask_layer.cc | 4 ++-- flow/layers/texture_layer.cc | 2 +- 12 files changed, 53 insertions(+), 53 deletions(-) diff --git a/flow/layers/clip_path_layer.cc b/flow/layers/clip_path_layer.cc index 4eef378229b48..17fd4db739acf 100644 --- a/flow/layers/clip_path_layer.cc +++ b/flow/layers/clip_path_layer.cc @@ -50,14 +50,15 @@ void ClipPathLayer::Paint(PaintContext& context) const { TRACE_EVENT0("flutter", "ClipPathLayer::Paint"); FML_DCHECK(needs_painting()); - SkAutoCanvasRestore save(context.canvas, true); - context.canvas->clipPath(clip_path_, clip_behavior_ != Clip::hardEdge); + SkAutoCanvasRestore save(context.internal_nodes_canvas, true); + context.internal_nodes_canvas->clipPath(clip_path_, + clip_behavior_ != Clip::hardEdge); if (clip_behavior_ == Clip::antiAliasWithSaveLayer) { - context.canvas->saveLayer(paint_bounds(), nullptr); + context.internal_nodes_canvas->saveLayer(paint_bounds(), nullptr); } PaintChildren(context); if (clip_behavior_ == Clip::antiAliasWithSaveLayer) { - context.canvas->restore(); + context.internal_nodes_canvas->restore(); } } diff --git a/flow/layers/clip_rect_layer.cc b/flow/layers/clip_rect_layer.cc index e230bb86a5cc4..cb4ed56daff89 100644 --- a/flow/layers/clip_rect_layer.cc +++ b/flow/layers/clip_rect_layer.cc @@ -41,14 +41,15 @@ void ClipRectLayer::Paint(PaintContext& context) const { TRACE_EVENT0("flutter", "ClipRectLayer::Paint"); FML_DCHECK(needs_painting()); - SkAutoCanvasRestore save(context.canvas, true); - context.canvas->clipRect(paint_bounds(), clip_behavior_ != Clip::hardEdge); + SkAutoCanvasRestore save(context.internal_nodes_canvas, true); + context.internal_nodes_canvas->clipRect(paint_bounds(), + clip_behavior_ != Clip::hardEdge); if (clip_behavior_ == Clip::antiAliasWithSaveLayer) { - context.canvas->saveLayer(paint_bounds(), nullptr); + context.internal_nodes_canvas->saveLayer(paint_bounds(), nullptr); } PaintChildren(context); if (clip_behavior_ == Clip::antiAliasWithSaveLayer) { - context.canvas->restore(); + context.internal_nodes_canvas->restore(); } } diff --git a/flow/layers/clip_rrect_layer.cc b/flow/layers/clip_rrect_layer.cc index e616488c66851..9016c7f5b7bff 100644 --- a/flow/layers/clip_rrect_layer.cc +++ b/flow/layers/clip_rrect_layer.cc @@ -48,14 +48,15 @@ void ClipRRectLayer::Paint(PaintContext& context) const { TRACE_EVENT0("flutter", "ClipRRectLayer::Paint"); FML_DCHECK(needs_painting()); - SkAutoCanvasRestore save(context.canvas, true); - context.canvas->clipRRect(clip_rrect_, clip_behavior_ != Clip::hardEdge); + SkAutoCanvasRestore save(context.internal_nodes_canvas, true); + context.internal_nodes_canvas->clipRRect(clip_rrect_, + clip_behavior_ != Clip::hardEdge); if (clip_behavior_ == Clip::antiAliasWithSaveLayer) { - context.canvas->saveLayer(paint_bounds(), nullptr); + context.internal_nodes_canvas->saveLayer(paint_bounds(), nullptr); } PaintChildren(context); if (clip_behavior_ == Clip::antiAliasWithSaveLayer) { - context.canvas->restore(); + context.internal_nodes_canvas->restore(); } } diff --git a/flow/layers/layer.cc b/flow/layers/layer.cc index ce2a6b427ace7..c3653ed52d0cf 100644 --- a/flow/layers/layer.cc +++ b/flow/layers/layer.cc @@ -26,13 +26,13 @@ Layer::AutoSaveLayer::AutoSaveLayer(const PaintContext& paint_context, const SkRect& bounds, const SkPaint* paint) : paint_context_(paint_context), bounds_(bounds) { - paint_context_.canvas->saveLayer(bounds_, paint); + paint_context_.internal_nodes_canvas->saveLayer(bounds_, paint); } Layer::AutoSaveLayer::AutoSaveLayer(const PaintContext& paint_context, const SkCanvas::SaveLayerRec& layer_rec) : paint_context_(paint_context), bounds_(*layer_rec.fBounds) { - paint_context_.canvas->saveLayer(layer_rec); + paint_context_.internal_nodes_canvas->saveLayer(layer_rec); } Layer::AutoSaveLayer Layer::AutoSaveLayer::Create( @@ -50,9 +50,9 @@ Layer::AutoSaveLayer Layer::AutoSaveLayer::Create( Layer::AutoSaveLayer::~AutoSaveLayer() { if (paint_context_.checkerboard_offscreen_layers) { - DrawCheckerboard(paint_context_.canvas, bounds_); + DrawCheckerboard(paint_context_.internal_nodes_canvas, bounds_); } - paint_context_.canvas->restore(); + paint_context_.internal_nodes_canvas->restore(); } } // namespace flow diff --git a/flow/layers/layer.h b/flow/layers/layer.h index 724c89edfba5f..0e53e9281c64c 100644 --- a/flow/layers/layer.h +++ b/flow/layers/layer.h @@ -77,11 +77,7 @@ class Layer { // The leaf_nodes_canvas is the "current" canvas and is used by leaf // layers. SkCanvas* internal_nodes_canvas; - // I'm temporarily leaving the name of this field to be canvas to reduce - // noise in the incremental change. A followup change will rename this - // and use the corrrect canvas in each callsite. - // TODO(amirh) rename canvas to leaf_nodes_canvas. - SkCanvas* canvas; + SkCanvas* leaf_nodes_canvas; ExternalViewEmbedder* view_embedder; const Stopwatch& frame_time; const Stopwatch& engine_time; diff --git a/flow/layers/opacity_layer.cc b/flow/layers/opacity_layer.cc index bd2c05188c725..3e94abdbb6568 100644 --- a/flow/layers/opacity_layer.cc +++ b/flow/layers/opacity_layer.cc @@ -31,12 +31,12 @@ void OpacityLayer::Paint(PaintContext& context) const { SkPaint paint; paint.setAlpha(alpha_); - SkAutoCanvasRestore save(context.canvas, true); - context.canvas->translate(offset_.fX, offset_.fY); + SkAutoCanvasRestore save(context.internal_nodes_canvas, true); + context.internal_nodes_canvas->translate(offset_.fX, offset_.fY); #ifndef SUPPORT_FRACTIONAL_TRANSLATION - context.canvas->setMatrix( - RasterCache::GetIntegralTransCTM(context.canvas->getTotalMatrix())); + context.internal_nodes_canvas->setMatrix(RasterCache::GetIntegralTransCTM( + context.leaf_nodes_canvas->getTotalMatrix())); #endif // Embedded platform views are changing the canvas in the middle of the paint @@ -45,11 +45,11 @@ void OpacityLayer::Paint(PaintContext& context) const { // don't use the cache. if (context.view_embedder == nullptr && layers().size() == 1 && context.raster_cache) { - const SkMatrix& ctm = context.canvas->getTotalMatrix(); + const SkMatrix& ctm = context.leaf_nodes_canvas->getTotalMatrix(); RasterCacheResult child_cache = context.raster_cache->Get(layers()[0].get(), ctm); if (child_cache.is_valid()) { - child_cache.draw(*context.canvas, &paint); + child_cache.draw(*context.leaf_nodes_canvas, &paint); return; } } diff --git a/flow/layers/performance_overlay_layer.cc b/flow/layers/performance_overlay_layer.cc index 7189ae392dc3d..1ec2eeaa3b9bd 100644 --- a/flow/layers/performance_overlay_layer.cc +++ b/flow/layers/performance_overlay_layer.cc @@ -73,15 +73,16 @@ void PerformanceOverlayLayer::Paint(PaintContext& context) const { SkScalar y = paint_bounds().y() + padding; SkScalar width = paint_bounds().width() - (padding * 2); SkScalar height = paint_bounds().height() / 2; - SkAutoCanvasRestore save(context.canvas, true); + SkAutoCanvasRestore save(context.leaf_nodes_canvas, true); - VisualizeStopWatch(*context.canvas, context.frame_time, x, y, width, - height - padding, + VisualizeStopWatch(*context.leaf_nodes_canvas, context.frame_time, x, y, + width, height - padding, options_ & kVisualizeRasterizerStatistics, options_ & kDisplayRasterizerStatistics, "GPU"); - VisualizeStopWatch(*context.canvas, context.engine_time, x, y + height, width, - height - padding, options_ & kVisualizeEngineStatistics, + VisualizeStopWatch(*context.leaf_nodes_canvas, context.engine_time, x, + y + height, width, height - padding, + options_ & kVisualizeEngineStatistics, options_ & kDisplayEngineStatistics, "UI"); } diff --git a/flow/layers/physical_shape_layer.cc b/flow/layers/physical_shape_layer.cc index f3adc33bd910f..3e8e1a4118f43 100644 --- a/flow/layers/physical_shape_layer.cc +++ b/flow/layers/physical_shape_layer.cc @@ -83,7 +83,7 @@ void PhysicalShapeLayer::Paint(PaintContext& context) const { FML_DCHECK(needs_painting()); if (elevation_ != 0) { - DrawShadow(context.canvas, path_, shadow_color_, elevation_, + DrawShadow(context.leaf_nodes_canvas, path_, shadow_color_, elevation_, SkColorGetA(color_) != 0xff, device_pixel_ratio_); } @@ -91,20 +91,20 @@ void PhysicalShapeLayer::Paint(PaintContext& context) const { SkPaint paint; paint.setColor(color_); if (clip_behavior_ != Clip::antiAliasWithSaveLayer) { - context.canvas->drawPath(path_, paint); + context.leaf_nodes_canvas->drawPath(path_, paint); } - int saveCount = context.canvas->save(); + int saveCount = context.internal_nodes_canvas->save(); switch (clip_behavior_) { case Clip::hardEdge: - context.canvas->clipPath(path_, false); + context.internal_nodes_canvas->clipPath(path_, false); break; case Clip::antiAlias: - context.canvas->clipPath(path_, true); + context.internal_nodes_canvas->clipPath(path_, true); break; case Clip::antiAliasWithSaveLayer: - context.canvas->clipPath(path_, true); - context.canvas->saveLayer(paint_bounds(), nullptr); + context.internal_nodes_canvas->clipPath(path_, true); + context.internal_nodes_canvas->saveLayer(paint_bounds(), nullptr); break; case Clip::none: break; @@ -115,12 +115,12 @@ void PhysicalShapeLayer::Paint(PaintContext& context) const { // (https://github.com/flutter/flutter/issues/18057#issue-328003931) // using saveLayer, we have to call drawPaint instead of drawPath as // anti-aliased drawPath will always have such artifacts. - context.canvas->drawPaint(paint); + context.leaf_nodes_canvas->drawPaint(paint); } PaintChildren(context); - context.canvas->restoreToCount(saveCount); + context.internal_nodes_canvas->restoreToCount(saveCount); } void PhysicalShapeLayer::DrawShadow(SkCanvas* canvas, diff --git a/flow/layers/picture_layer.cc b/flow/layers/picture_layer.cc index 0532e1ddef41c..74057039d304d 100644 --- a/flow/layers/picture_layer.cc +++ b/flow/layers/picture_layer.cc @@ -34,22 +34,22 @@ void PictureLayer::Paint(PaintContext& context) const { FML_DCHECK(picture_.get()); FML_DCHECK(needs_painting()); - SkAutoCanvasRestore save(context.canvas, true); - context.canvas->translate(offset_.x(), offset_.y()); + SkAutoCanvasRestore save(context.leaf_nodes_canvas, true); + context.leaf_nodes_canvas->translate(offset_.x(), offset_.y()); #ifndef SUPPORT_FRACTIONAL_TRANSLATION - context.canvas->setMatrix( - RasterCache::GetIntegralTransCTM(context.canvas->getTotalMatrix())); + context.leaf_nodes_canvas->setMatrix(RasterCache::GetIntegralTransCTM( + context.leaf_nodes_canvas->getTotalMatrix())); #endif if (context.raster_cache) { - const SkMatrix& ctm = context.canvas->getTotalMatrix(); + const SkMatrix& ctm = context.leaf_nodes_canvas->getTotalMatrix(); RasterCacheResult result = context.raster_cache->Get(*picture(), ctm); if (result.is_valid()) { - result.draw(*context.canvas); + result.draw(*context.leaf_nodes_canvas); return; } } - context.canvas->drawPicture(picture()); + context.leaf_nodes_canvas->drawPicture(picture()); } } // namespace flow diff --git a/flow/layers/platform_view_layer.cc b/flow/layers/platform_view_layer.cc index a53e4c7321a7c..d10bd2ac4f309 100644 --- a/flow/layers/platform_view_layer.cc +++ b/flow/layers/platform_view_layer.cc @@ -30,13 +30,13 @@ void PlatformViewLayer::Paint(PaintContext& context) const { return; } EmbeddedViewParams params; - SkMatrix transform = context.canvas->getTotalMatrix(); + SkMatrix transform = context.leaf_nodes_canvas->getTotalMatrix(); params.offsetPixels = SkPoint::Make(transform.getTranslateX(), transform.getTranslateY()); params.sizePoints = size_; SkCanvas* canvas = context.view_embedder->CompositeEmbeddedView(view_id_, params); - context.canvas = canvas; + context.leaf_nodes_canvas = canvas; } } // namespace flow diff --git a/flow/layers/shader_mask_layer.cc b/flow/layers/shader_mask_layer.cc index 15f994ad28d93..5c13f56e8b9a1 100644 --- a/flow/layers/shader_mask_layer.cc +++ b/flow/layers/shader_mask_layer.cc @@ -21,8 +21,8 @@ void ShaderMaskLayer::Paint(PaintContext& context) const { SkPaint paint; paint.setBlendMode(blend_mode_); paint.setShader(shader_); - context.canvas->translate(mask_rect_.left(), mask_rect_.top()); - context.canvas->drawRect( + context.leaf_nodes_canvas->translate(mask_rect_.left(), mask_rect_.top()); + context.leaf_nodes_canvas->drawRect( SkRect::MakeWH(mask_rect_.width(), mask_rect_.height()), paint); } diff --git a/flow/layers/texture_layer.cc b/flow/layers/texture_layer.cc index 65ab470bf73c5..df845caf80215 100644 --- a/flow/layers/texture_layer.cc +++ b/flow/layers/texture_layer.cc @@ -23,7 +23,7 @@ void TextureLayer::Paint(PaintContext& context) const { if (!texture) { return; } - texture->Paint(*context.canvas, paint_bounds(), freeze_); + texture->Paint(*context.leaf_nodes_canvas, paint_bounds(), freeze_); } } // namespace flow From 9669aeb9538f3df2653724f9a5cea2dacf56465d Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Fri, 9 Nov 2018 16:01:54 -0500 Subject: [PATCH 0222/1537] Roll src/third_party/skia 06a477c3300d..ef4709b7850d (31 commits) (#6811) https://skia.googlesource.com/skia.git/+log/06a477c3300d..ef4709b7850d Created with: gclient setdep -r src/third_party/skia@ef4709b7850d The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 8 ++--- sky/packages/sky_engine/LICENSE | 61 ++++++++++++++++---------------- 3 files changed, 35 insertions(+), 36 deletions(-) diff --git a/DEPS b/DEPS index 33ff64e140729..da580b296ad40 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '06a477c3300d7e1ceae339f704df7b6e0710dc1d', + 'skia_revision': 'ef4709b7850d0da575010e64f7a4d9eeeefcc83f', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index f06c5241d4cbf..9e4bb703098bc 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 0d532a482c297b3600bfa72396105ec9 +Signature: fe389c93e3525da74cfc573a37b46cfa UNUSED LICENSES: @@ -860,8 +860,6 @@ FILE: ../../../third_party/skia/samplecode/SampleMegaStroke.cpp FILE: ../../../third_party/skia/samplecode/SamplePathOverstroke.cpp FILE: ../../../third_party/skia/samplecode/SampleSVGFile.cpp FILE: ../../../third_party/skia/src/codec/SkCodecAnimationPriv.h -FILE: ../../../third_party/skia/src/codec/SkRawAdapterCodec.cpp -FILE: ../../../third_party/skia/src/codec/SkRawAdapterCodec.h FILE: ../../../third_party/skia/src/codec/SkRawCodec.cpp FILE: ../../../third_party/skia/src/codec/SkRawCodec.h FILE: ../../../third_party/skia/src/codec/SkStreamBuffer.cpp @@ -3612,6 +3610,8 @@ FILE: ../../../third_party/skia/src/c/sk_c_from_to.h FILE: ../../../third_party/skia/src/c/sk_paint.cpp FILE: ../../../third_party/skia/src/c/sk_types_priv.h FILE: ../../../third_party/skia/src/codec/SkAndroidCodec.cpp +FILE: ../../../third_party/skia/src/codec/SkAndroidCodecAdapter.cpp +FILE: ../../../third_party/skia/src/codec/SkAndroidCodecAdapter.h FILE: ../../../third_party/skia/src/codec/SkBmpCodec.cpp FILE: ../../../third_party/skia/src/codec/SkBmpCodec.h FILE: ../../../third_party/skia/src/codec/SkBmpMaskCodec.cpp @@ -3647,8 +3647,6 @@ FILE: ../../../third_party/skia/src/codec/SkSwizzler.cpp FILE: ../../../third_party/skia/src/codec/SkSwizzler.h FILE: ../../../third_party/skia/src/codec/SkWbmpCodec.cpp FILE: ../../../third_party/skia/src/codec/SkWbmpCodec.h -FILE: ../../../third_party/skia/src/codec/SkWebpAdapterCodec.cpp -FILE: ../../../third_party/skia/src/codec/SkWebpAdapterCodec.h FILE: ../../../third_party/skia/src/codec/SkWebpCodec.cpp FILE: ../../../third_party/skia/src/codec/SkWebpCodec.h FILE: ../../../third_party/skia/src/core/Sk4px.h diff --git a/sky/packages/sky_engine/LICENSE b/sky/packages/sky_engine/LICENSE index 7334fbc6b9b0e..6468e59fd70b2 100644 --- a/sky/packages/sky_engine/LICENSE +++ b/sky/packages/sky_engine/LICENSE @@ -3440,6 +3440,37 @@ met: contributors may be used to endorse or promote products derived from this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +engine +skia + +Copyright 2018 The Chromium Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR @@ -10737,36 +10768,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- skia -Copyright 2018 The Chromium Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -skia - NEON optimized code (C) COPYRIGHT 2009 Motorola Redistribution and use in source and binary forms, with or without From 2584816d78a365bd8192edbeec2d509d5df90b01 Mon Sep 17 00:00:00 2001 From: Siva Date: Fri, 9 Nov 2018 14:56:49 -0800 Subject: [PATCH 0223/1537] Roll Dart version to f9ebf2129732fd2b606286fdf58e500384b8a0bc (#6812) * Roll Dart version to f9ebf2129732fd2b606286fdf58e500384b8a0bc This roll includes the following fixes: - Fix obfuscation (issue https://github.com/flutter/flutter/issues/22322) - Fix for issue 34839 Service isolate hangs during shutdown if - Fix bug in unboxed constant spilling (https://github.com/flutter/flutter/issues/23879) - Reland Fine tune operator and phi handling which was reverted due to the above bug. --- DEPS | 2 +- ci/licenses_golden/licenses_third_party | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index da580b296ad40..93e6462c76407 100644 --- a/DEPS +++ b/DEPS @@ -31,7 +31,7 @@ vars = { # Dart is: https://github.com/dart-lang/sdk/blob/master/DEPS. # You can use //tools/dart/create_updated_flutter_deps.py to produce # updated revision list of existing dependencies. - 'dart_revision': '9c07fb64c48adb3d6fde50bab6b8b641c5b67683', + 'dart_revision': 'f9ebf2129732fd2b606286fdf58e500384b8a0bc', # WARNING: DO NOT EDIT MANUALLY # The lines between blank lines above and below are generated by a script. See create_updated_flutter_deps.py diff --git a/ci/licenses_golden/licenses_third_party b/ci/licenses_golden/licenses_third_party index 58aef0b77fa54..a06c935614ec2 100644 --- a/ci/licenses_golden/licenses_third_party +++ b/ci/licenses_golden/licenses_third_party @@ -1,4 +1,4 @@ -Signature: fc569d77237ef4247eb7a93bb2c989be +Signature: 688d05f1b8d8726e65b28a27ccc7dfcb UNUSED LICENSES: From 3e4c8cca735d4655801d1e1b50bccfde6f00a88b Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Fri, 9 Nov 2018 19:20:42 -0500 Subject: [PATCH 0224/1537] Roll src/third_party/skia ef4709b7850d..95af4726bf91 (22 commits) (#6815) https://skia.googlesource.com/skia.git/+log/ef4709b7850d..95af4726bf91 Created with: gclient setdep -r src/third_party/skia@95af4726bf91 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 14 +------------- 2 files changed, 2 insertions(+), 14 deletions(-) diff --git a/DEPS b/DEPS index 93e6462c76407..0d1467744d1d9 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'ef4709b7850d0da575010e64f7a4d9eeeefcc83f', + 'skia_revision': '95af4726bf91669e51250ebd3baa2925b6975e8e', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 9e4bb703098bc..cb69099d76331 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: fe389c93e3525da74cfc573a37b46cfa +Signature: 36be643c6f38266195bab130600ee40f UNUSED LICENSES: @@ -2844,7 +2844,6 @@ FILE: ../../../third_party/skia/src/core/SkBitmapProcState_matrix.h FILE: ../../../third_party/skia/src/core/SkBitmapProcState_procs.h FILE: ../../../third_party/skia/src/core/SkBitmapProcState_sample.h FILE: ../../../third_party/skia/src/core/SkBitmapProcState_shaderproc.h -FILE: ../../../third_party/skia/src/core/SkBlitMask.h FILE: ../../../third_party/skia/src/core/SkBlitRow.h FILE: ../../../third_party/skia/src/core/SkBlitRow_D32.cpp FILE: ../../../third_party/skia/src/core/SkClipStack.cpp @@ -2925,7 +2924,6 @@ FILE: ../../../third_party/skia/src/gpu/ops/GrAAHairLinePathRenderer.h FILE: ../../../third_party/skia/src/gpu/ops/GrDefaultPathRenderer.cpp FILE: ../../../third_party/skia/src/gpu/ops/GrDefaultPathRenderer.h FILE: ../../../third_party/skia/src/opts/SkBitmapProcState_opts_none.cpp -FILE: ../../../third_party/skia/src/opts/SkBlitRow_opts_none.cpp FILE: ../../../third_party/skia/src/pdf/SkPDFConvertType1FontStream.cpp FILE: ../../../third_party/skia/src/pdf/SkPDFDevice.cpp FILE: ../../../third_party/skia/src/pdf/SkPDFDevice.h @@ -3088,7 +3086,6 @@ FILE: ../../../third_party/skia/src/c/sk_surface.cpp FILE: ../../../third_party/skia/src/core/SkBBHFactory.cpp FILE: ../../../third_party/skia/src/core/SkBitmapCache.cpp FILE: ../../../third_party/skia/src/core/SkBitmapCache.h -FILE: ../../../third_party/skia/src/core/SkBlitMask_D32.cpp FILE: ../../../third_party/skia/src/core/SkCachedData.cpp FILE: ../../../third_party/skia/src/core/SkCachedData.h FILE: ../../../third_party/skia/src/core/SkCanvasPriv.h @@ -3184,8 +3181,6 @@ FILE: ../../../third_party/skia/src/gpu/ops/GrSmallPathRenderer.h FILE: ../../../third_party/skia/src/image/SkReadPixelsRec.h FILE: ../../../third_party/skia/src/image/SkSurface_Gpu.h FILE: ../../../third_party/skia/src/opts/SkBitmapProcState_matrix_neon.h -FILE: ../../../third_party/skia/src/opts/SkBlitMask_opts_arm.cpp -FILE: ../../../third_party/skia/src/opts/SkBlitMask_opts_none.cpp FILE: ../../../third_party/skia/src/pathops/SkOpBuilder.cpp FILE: ../../../third_party/skia/src/pathops/SkOpSpan.cpp FILE: ../../../third_party/skia/src/pathops/SkPathOpsTSect.cpp @@ -3362,7 +3357,6 @@ FILE: ../../../third_party/skia/src/image/SkSurface_Base.h FILE: ../../../third_party/skia/src/image/SkSurface_Gpu.cpp FILE: ../../../third_party/skia/src/image/SkSurface_Raster.cpp FILE: ../../../third_party/skia/src/opts/SkBitmapProcState_arm_neon.cpp -FILE: ../../../third_party/skia/src/opts/SkBlitRow_opts_arm_neon.h FILE: ../../../third_party/skia/src/pathops/SkAddIntersections.cpp FILE: ../../../third_party/skia/src/pathops/SkAddIntersections.h FILE: ../../../third_party/skia/src/pathops/SkDCubicLineIntersection.cpp @@ -3826,8 +3820,6 @@ FILE: ../../../third_party/skia/src/opts/Sk4px_NEON.h FILE: ../../../third_party/skia/src/opts/Sk4px_SSE2.h FILE: ../../../third_party/skia/src/opts/Sk4px_none.h FILE: ../../../third_party/skia/src/opts/SkBlitMask_opts.h -FILE: ../../../third_party/skia/src/opts/SkBlitMask_opts_arm_neon.cpp -FILE: ../../../third_party/skia/src/opts/SkBlitMask_opts_arm_neon.h FILE: ../../../third_party/skia/src/opts/SkBlitRow_opts.h FILE: ../../../third_party/skia/src/opts/SkColor_opts_neon.h FILE: ../../../third_party/skia/src/opts/SkOpts_sse41.cpp @@ -4587,9 +4579,6 @@ FILE: ../../../third_party/skia/src/images/SkImageEncoderFns.h FILE: ../../../third_party/skia/src/opts/SkBitmapProcState_filter_neon.h FILE: ../../../third_party/skia/src/opts/SkBitmapProcState_opts_SSSE3.cpp FILE: ../../../third_party/skia/src/opts/SkBitmapProcState_opts_SSSE3.h -FILE: ../../../third_party/skia/src/opts/SkBlitRow_opts_SSE2.cpp -FILE: ../../../third_party/skia/src/opts/SkBlitRow_opts_arm.cpp -FILE: ../../../third_party/skia/src/opts/SkBlitRow_opts_arm_neon.cpp ---------------------------------------------------------------------------------------------------- Copyright 2012 The Android Open Source Project @@ -5438,7 +5427,6 @@ FILE: ../../../third_party/skia/src/core/SkQuadClipper.h FILE: ../../../third_party/skia/src/images/SkImageEncoder.cpp FILE: ../../../third_party/skia/src/opts/SkBitmapProcState_opts_SSE2.cpp FILE: ../../../third_party/skia/src/opts/SkBitmapProcState_opts_SSE2.h -FILE: ../../../third_party/skia/src/opts/SkBlitRow_opts_SSE2.h FILE: ../../../third_party/skia/src/opts/opts_check_x86.cpp ---------------------------------------------------------------------------------------------------- Copyright 2009 The Android Open Source Project From 799ce8742d1dbd9515cef91530927eb9a63ca5ba Mon Sep 17 00:00:00 2001 From: Dan Field Date: Fri, 9 Nov 2018 16:46:49 -0800 Subject: [PATCH 0225/1537] fix log (#6817) --- .../darwin/ios/framework/Source/FlutterObservatoryPublisher.mm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shell/platform/darwin/ios/framework/Source/FlutterObservatoryPublisher.mm b/shell/platform/darwin/ios/framework/Source/FlutterObservatoryPublisher.mm index 980bec0854e7f..c0add5502389c 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterObservatoryPublisher.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterObservatoryPublisher.mm @@ -142,7 +142,7 @@ static void DNSSD_API registrationCallback(DNSServiceRef sdRef, const char* domain, void* context) { if (errorCode == kDNSServiceErr_NoError) { - FML_LOG(ERROR) << "FlutterObservatoryPublisher is ready!"; + FML_DLOG(INFO) << "FlutterObservatoryPublisher is ready!"; } else { FML_LOG(ERROR) << "Could not register as server for FlutterObservatoryPublisher. Check your " "network settings and relaunch the application."; From 4dbdf94aaf9ed6cbf3cc54b3595ccbaf50fb6cb0 Mon Sep 17 00:00:00 2001 From: Jason Simmons Date: Fri, 9 Nov 2018 17:05:05 -0800 Subject: [PATCH 0226/1537] Ensure that the EGL rendering context is bound to the GPU thread in Rasterizer::MakeRasterSnapshot (#6816) Fixes https://github.com/flutter/flutter/issues/24083 --- shell/common/rasterizer.cc | 4 ++++ shell/common/surface.cc | 4 ++++ shell/common/surface.h | 2 ++ shell/gpu/gpu_surface_gl.cc | 5 +++++ shell/gpu/gpu_surface_gl.h | 3 +++ 5 files changed, 18 insertions(+) diff --git a/shell/common/rasterizer.cc b/shell/common/rasterizer.cc index 9e30a4c561a4e..3560690e38831 100644 --- a/shell/common/rasterizer.cc +++ b/shell/common/rasterizer.cc @@ -93,6 +93,10 @@ sk_sp Rasterizer::MakeRasterSnapshot(sk_sp picture, SkISize picture_size) { TRACE_EVENT0("flutter", __FUNCTION__); + if (!surface_->MakeRenderContextCurrent()) { + return nullptr; + } + sk_sp surface; if (surface_ == nullptr || surface_->GetContext() == nullptr) { // Raster surface is fine if there is no on screen surface. This might diff --git a/shell/common/surface.cc b/shell/common/surface.cc index 5cb621e0fd0d0..99896ad7e38d0 100644 --- a/shell/common/surface.cc +++ b/shell/common/surface.cc @@ -68,4 +68,8 @@ flow::ExternalViewEmbedder* Surface::GetExternalViewEmbedder() { return nullptr; } +bool Surface::MakeRenderContextCurrent() { + return true; +} + } // namespace shell diff --git a/shell/common/surface.h b/shell/common/surface.h index cd49110c8c7b4..97450feaa211e 100644 --- a/shell/common/surface.h +++ b/shell/common/surface.h @@ -58,6 +58,8 @@ class Surface { virtual flow::ExternalViewEmbedder* GetExternalViewEmbedder(); + virtual bool MakeRenderContextCurrent(); + private: FML_DISALLOW_COPY_AND_ASSIGN(Surface); }; diff --git a/shell/gpu/gpu_surface_gl.cc b/shell/gpu/gpu_surface_gl.cc index 5978584f74cea..d7c014382f696 100644 --- a/shell/gpu/gpu_surface_gl.cc +++ b/shell/gpu/gpu_surface_gl.cc @@ -363,4 +363,9 @@ flow::ExternalViewEmbedder* GPUSurfaceGL::GetExternalViewEmbedder() { return delegate_->GetExternalViewEmbedder(); } +// |shell::Surface| +bool GPUSurfaceGL::MakeRenderContextCurrent() { + return delegate_->GLContextMakeCurrent(); +} + } // namespace shell diff --git a/shell/gpu/gpu_surface_gl.h b/shell/gpu/gpu_surface_gl.h index d00345d2c3477..28c22d6a72e8d 100644 --- a/shell/gpu/gpu_surface_gl.h +++ b/shell/gpu/gpu_surface_gl.h @@ -69,6 +69,9 @@ class GPUSurfaceGL : public Surface { // |shell::Surface| flow::ExternalViewEmbedder* GetExternalViewEmbedder() override; + // |shell::Surface| + bool MakeRenderContextCurrent() override; + private: GPUSurfaceGLDelegate* delegate_; GPUSurfaceGLDelegate::GLProcResolver proc_resolver_; From 961930688e23be0e5afe911492fdf88b339f320f Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Fri, 9 Nov 2018 22:52:42 -0500 Subject: [PATCH 0227/1537] Roll src/third_party/skia 95af4726bf91..1c3f17fffa79 (1 commits) (#6819) https://skia.googlesource.com/skia.git/+log/95af4726bf91..1c3f17fffa79 Created with: gclient setdep -r src/third_party/skia@1c3f17fffa79 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 0d1467744d1d9..d1e14c913c25b 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '95af4726bf91669e51250ebd3baa2925b6975e8e', + 'skia_revision': '1c3f17fffa79d42b50b2bca756245478da9ea037', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index cb69099d76331..9ea59ef7afcdb 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 36be643c6f38266195bab130600ee40f +Signature: 2feeb28e3d1e8c083b86d5b98d506cf1 UNUSED LICENSES: From a5bc33546c726b707aa32182eccdbfdebc784e0e Mon Sep 17 00:00:00 2001 From: Dan Field Date: Fri, 9 Nov 2018 20:25:47 -0800 Subject: [PATCH 0228/1537] Revert "Roll Dart version to f9ebf2129732fd2b606286fdf58e500384b8a0bc (#6812)" (#6820) This reverts commit 2584816d78a365bd8192edbeec2d509d5df90b01. --- DEPS | 2 +- ci/licenses_golden/licenses_third_party | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index d1e14c913c25b..e79a48e3050d9 100644 --- a/DEPS +++ b/DEPS @@ -31,7 +31,7 @@ vars = { # Dart is: https://github.com/dart-lang/sdk/blob/master/DEPS. # You can use //tools/dart/create_updated_flutter_deps.py to produce # updated revision list of existing dependencies. - 'dart_revision': 'f9ebf2129732fd2b606286fdf58e500384b8a0bc', + 'dart_revision': '9c07fb64c48adb3d6fde50bab6b8b641c5b67683', # WARNING: DO NOT EDIT MANUALLY # The lines between blank lines above and below are generated by a script. See create_updated_flutter_deps.py diff --git a/ci/licenses_golden/licenses_third_party b/ci/licenses_golden/licenses_third_party index a06c935614ec2..58aef0b77fa54 100644 --- a/ci/licenses_golden/licenses_third_party +++ b/ci/licenses_golden/licenses_third_party @@ -1,4 +1,4 @@ -Signature: 688d05f1b8d8726e65b28a27ccc7dfcb +Signature: fc569d77237ef4247eb7a93bb2c989be UNUSED LICENSES: From bdd5640f3d1c695f631b3df497d402e06608cb8f Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Sat, 10 Nov 2018 02:13:42 -0500 Subject: [PATCH 0229/1537] Roll src/third_party/skia 1c3f17fffa79..c7a34cae21d2 (2 commits) (#6821) https://skia.googlesource.com/skia.git/+log/1c3f17fffa79..c7a34cae21d2 Created with: gclient setdep -r src/third_party/skia@c7a34cae21d2 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index e79a48e3050d9..4b705b7147cc3 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '1c3f17fffa79d42b50b2bca756245478da9ea037', + 'skia_revision': 'c7a34cae21d2edb0dcb0be3a7e2f119090b1cc54', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 9ea59ef7afcdb..c73ba98f94d69 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 2feeb28e3d1e8c083b86d5b98d506cf1 +Signature: 8c147e63983e38eb86ab5e87c56a62cb UNUSED LICENSES: From 06377b10763bfbda156cd1c15991640dc9ac6de4 Mon Sep 17 00:00:00 2001 From: Gary Qian Date: Sun, 11 Nov 2018 03:42:28 -0800 Subject: [PATCH 0230/1537] Document not passing empty-strings into Locale (#6818) --- lib/ui/window.dart | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/lib/ui/window.dart b/lib/ui/window.dart index c6d5a754f6ba1..76ef10a932b18 100644 --- a/lib/ui/window.dart +++ b/lib/ui/window.dart @@ -135,7 +135,8 @@ class WindowPadding { /// [Locale]. class Locale { /// Creates a new Locale object. The first argument is the - /// primary language subtag, the second is the region subtag. + /// primary language subtag, the second is the region (also + /// referred to as 'country') subtag. /// /// For example: /// @@ -145,7 +146,8 @@ class Locale { /// ``` /// /// The primary language subtag must not be null. The region subtag is - /// optional. + /// optional. When there is no region/country subtag, the parameter should + /// be omitted or passed `null` instead of an empty-string. /// /// The subtag values are _case sensitive_ and must be one of the valid /// subtags according to CLDR supplemental data: @@ -182,6 +184,9 @@ class Locale { /// [region](http://unicode.org/cldr/latest/common/validity/region.xml) for /// each of languageCode, scriptCode and countryCode respectively. /// + /// The [countryCode] subtag is optional. When there is no country subtag, + /// the parameter should be omitted or passed `null` instead of an empty-string. + /// /// Validity is not checked by default, but some methods may throw away /// invalid data. const Locale.fromSubtags({ From 1f739931306e4f4f5d740716238b6bfacd1b8cbe Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Mon, 12 Nov 2018 08:47:14 -0500 Subject: [PATCH 0231/1537] Roll src/third_party/skia c7a34cae21d2..0243949545eb (11 commits) (#6823) https://skia.googlesource.com/skia.git/+log/c7a34cae21d2..0243949545eb Created with: gclient setdep -r src/third_party/skia@0243949545eb The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 4b705b7147cc3..a68d17cebdde7 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'c7a34cae21d2edb0dcb0be3a7e2f119090b1cc54', + 'skia_revision': '0243949545eb0a69ceb3df743786e6c458ea7250', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index c73ba98f94d69..3d226006f6f8a 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 8c147e63983e38eb86ab5e87c56a62cb +Signature: df483882f00582d8a804e6d63503cf82 UNUSED LICENSES: @@ -1313,6 +1313,7 @@ FILE: ../../../third_party/skia/gm/crbug_847759.cpp FILE: ../../../third_party/skia/gm/crbug_884166.cpp FILE: ../../../third_party/skia/gm/crbug_887103.cpp FILE: ../../../third_party/skia/gm/drawimageset.cpp +FILE: ../../../third_party/skia/gm/gradients_degenerate.cpp FILE: ../../../third_party/skia/gm/hugepath.cpp FILE: ../../../third_party/skia/gm/localmatrixshader.cpp FILE: ../../../third_party/skia/gm/makeRasterImage.cpp @@ -1370,6 +1371,8 @@ FILE: ../../../third_party/skia/modules/skottie/src/SkottieShapeLayer.cpp FILE: ../../../third_party/skia/modules/skottie/src/SkottieTest.cpp FILE: ../../../third_party/skia/modules/skottie/src/SkottieTextLayer.cpp FILE: ../../../third_party/skia/modules/skottie/src/SkottieTool.cpp +FILE: ../../../third_party/skia/modules/skottie/utils/SkottieUtils.cpp +FILE: ../../../third_party/skia/modules/skottie/utils/SkottieUtils.h FILE: ../../../third_party/skia/modules/sksg/include/SkSGClipEffect.h FILE: ../../../third_party/skia/modules/sksg/include/SkSGColorFilter.h FILE: ../../../third_party/skia/modules/sksg/include/SkSGGeometryTransform.h From 453fc8f5124d70311cbbb9731a53da3c258b974f Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Mon, 12 Nov 2018 12:06:14 -0500 Subject: [PATCH 0232/1537] Roll src/third_party/skia 0243949545eb..eb4d641d9437 (10 commits) (#6825) https://skia.googlesource.com/skia.git/+log/0243949545eb..eb4d641d9437 Created with: gclient setdep -r src/third_party/skia@eb4d641d9437 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index a68d17cebdde7..37c8ce90d1733 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '0243949545eb0a69ceb3df743786e6c458ea7250', + 'skia_revision': 'eb4d641d943767a37814a0b4bab8a3e88fd01ca4', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 3d226006f6f8a..1ed3b38a99bca 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: df483882f00582d8a804e6d63503cf82 +Signature: 3a8e96d6879bb874f12d600dea0a1f2d UNUSED LICENSES: From 14db8b397a63a59c0c837221f07d9511d7f3dfd2 Mon Sep 17 00:00:00 2001 From: Rusino Date: Mon, 12 Nov 2018 12:55:34 -0500 Subject: [PATCH 0233/1537] SkPaint::FontMetrics -> SkFontMetrics (#6824) * SkPaint::FontMetrics -> SkFontMetrics * fix file formatting * another attempt to correct file formatting --- .../txt/benchmarks/paint_record_benchmarks.cc | 2 +- third_party/txt/src/txt/paint_record.cc | 4 +- third_party/txt/src/txt/paint_record.h | 8 ++-- third_party/txt/src/txt/paragraph.cc | 42 ++++++++++--------- third_party/txt/src/txt/paragraph.h | 4 +- 5 files changed, 31 insertions(+), 29 deletions(-) diff --git a/third_party/txt/benchmarks/paint_record_benchmarks.cc b/third_party/txt/benchmarks/paint_record_benchmarks.cc index 29bbaa94b10bf..1b6cf98d48cdf 100644 --- a/third_party/txt/benchmarks/paint_record_benchmarks.cc +++ b/third_party/txt/benchmarks/paint_record_benchmarks.cc @@ -39,7 +39,7 @@ static void BM_PaintRecordInit(benchmark::State& state) { auto text_blob = builder.make(); while (state.KeepRunning()) { - PaintRecord PaintRecord(style, text_blob, SkPaint::FontMetrics(), 0, 0); + PaintRecord PaintRecord(style, text_blob, SkFontMetrics(), 0, 0); } } BENCHMARK(BM_PaintRecordInit); diff --git a/third_party/txt/src/txt/paint_record.cc b/third_party/txt/src/txt/paint_record.cc index f37429499ce71..200c48665aa81 100644 --- a/third_party/txt/src/txt/paint_record.cc +++ b/third_party/txt/src/txt/paint_record.cc @@ -24,7 +24,7 @@ PaintRecord::~PaintRecord() = default; PaintRecord::PaintRecord(TextStyle style, SkPoint offset, sk_sp text, - SkPaint::FontMetrics metrics, + SkFontMetrics metrics, size_t line, double run_width) : style_(style), @@ -36,7 +36,7 @@ PaintRecord::PaintRecord(TextStyle style, PaintRecord::PaintRecord(TextStyle style, sk_sp text, - SkPaint::FontMetrics metrics, + SkFontMetrics metrics, size_t line, double run_width) : style_(style), diff --git a/third_party/txt/src/txt/paint_record.h b/third_party/txt/src/txt/paint_record.h index 2b9248ef7c169..d78cd621ae542 100644 --- a/third_party/txt/src/txt/paint_record.h +++ b/third_party/txt/src/txt/paint_record.h @@ -37,13 +37,13 @@ class PaintRecord { PaintRecord(TextStyle style, SkPoint offset, sk_sp text, - SkPaint::FontMetrics metrics, + SkFontMetrics metrics, size_t line, double run_width); PaintRecord(TextStyle style, sk_sp text, - SkPaint::FontMetrics metrics, + SkFontMetrics metrics, size_t line, double run_width); @@ -57,7 +57,7 @@ class PaintRecord { SkTextBlob* text() const { return text_.get(); } - const SkPaint::FontMetrics& metrics() const { return metrics_; } + const SkFontMetrics& metrics() const { return metrics_; } const TextStyle& style() const { return style_; } @@ -72,7 +72,7 @@ class PaintRecord { // SkTextBlob stores the glyphs and coordinates to draw them. sk_sp text_; // FontMetrics stores the measurements of the font used. - SkPaint::FontMetrics metrics_; + SkFontMetrics metrics_; size_t line_; double run_width_ = 0.0f; diff --git a/third_party/txt/src/txt/paragraph.cc b/third_party/txt/src/txt/paragraph.cc index fde4c43955716..dd1c7e6718f1c 100644 --- a/third_party/txt/src/txt/paragraph.cc +++ b/third_party/txt/src/txt/paragraph.cc @@ -205,7 +205,7 @@ Paragraph::CodeUnitRun::CodeUnitRun(std::vector&& p, Range cu, Range x, size_t line, - const SkPaint::FontMetrics& metrics, + const SkFontMetrics& metrics, TextDirection dir) : positions(std::move(p)), code_units(cu), @@ -686,7 +686,7 @@ void Paragraph::Layout(double width, bool force) { if (glyph_positions.empty()) continue; - SkPaint::FontMetrics metrics; + SkFontMetrics metrics; paint.getFontMetrics(&metrics); paint_records.emplace_back(run.style(), SkPoint::Make(run_x_offset, 0), builder.make(), metrics, line_number, @@ -738,7 +738,7 @@ void Paragraph::Layout(double width, bool force) { double max_line_spacing = 0; double max_descent = 0; SkScalar max_unscaled_ascent = 0; - auto update_line_metrics = [&](const SkPaint::FontMetrics& metrics, + auto update_line_metrics = [&](const SkFontMetrics& metrics, const TextStyle& style) { // TODO(garyq): Multipling in the style.height on the first line is // probably wrong. Figure out how paragraph and line heights are supposed @@ -768,7 +768,7 @@ void Paragraph::Layout(double width, bool force) { // If no fonts were actually rendered, then compute a baseline based on the // font of the paragraph style. if (paint_records.empty()) { - SkPaint::FontMetrics metrics; + SkFontMetrics metrics; TextStyle style(paragraph_style_.GetTextStyle()); paint.setTypeface(GetDefaultSkiaTypeface(style)); paint.setTextSize(style.font_size); @@ -923,7 +923,7 @@ void Paragraph::PaintDecorations(SkCanvas* canvas, if (record.style().decoration == TextDecoration::kNone) return; - const SkPaint::FontMetrics& metrics = record.metrics(); + const SkFontMetrics& metrics = record.metrics(); SkPaint paint; paint.setStyle(SkPaint::kStroke_Style); if (record.style().decoration_color == SK_ColorTRANSPARENT) { @@ -948,8 +948,8 @@ void Paragraph::PaintDecorations(SkCanvas* canvas, } SkScalar underline_thickness; - if ((metrics.fFlags & SkPaint::FontMetrics::FontMetricsFlags:: - kUnderlineThicknessIsValid_Flag) && + if ((metrics.fFlags & + SkFontMetrics::FontMetricsFlags::kUnderlineThicknessIsValid_Flag) && metrics.fUnderlineThickness > 0) { underline_thickness = metrics.fUnderlineThickness; } else { @@ -1024,10 +1024,11 @@ void Paragraph::PaintDecorations(SkCanvas* canvas, double y_offset_original = y_offset; // Underline if (record.style().decoration & TextDecoration::kUnderline) { - y_offset += (metrics.fFlags & SkPaint::FontMetrics::FontMetricsFlags:: - kUnderlinePositionIsValid_Flag) - ? metrics.fUnderlinePosition - : underline_thickness; + y_offset += + (metrics.fFlags & + SkFontMetrics::FontMetricsFlags::kUnderlinePositionIsValid_Flag) + ? metrics.fUnderlinePosition + : underline_thickness; if (record.style().decoration_style != TextDecorationStyle::kWavy) { canvas->drawLine(x, y + y_offset, x + width, y + y_offset, paint); } else { @@ -1053,19 +1054,20 @@ void Paragraph::PaintDecorations(SkCanvas* canvas, } // Strikethrough if (record.style().decoration & TextDecoration::kLineThrough) { - if (metrics.fFlags & SkPaint::FontMetrics::FontMetricsFlags:: - kStrikeoutThicknessIsValid_Flag) + if (metrics.fFlags & + SkFontMetrics::FontMetricsFlags::kStrikeoutThicknessIsValid_Flag) paint.setStrokeWidth(metrics.fStrikeoutThickness * record.style().decoration_thickness_multiplier); // Make sure the double line is "centered" vertically. y_offset += (decoration_count - 1.0) * underline_thickness * kDoubleDecorationSpacing / -2.0; - y_offset += (metrics.fFlags & SkPaint::FontMetrics::FontMetricsFlags:: - kStrikeoutThicknessIsValid_Flag) - ? metrics.fStrikeoutPosition - // Backup value if the strikeoutposition metric is not - // available: - : metrics.fXHeight / -2.0; + y_offset += + (metrics.fFlags & + SkFontMetrics::FontMetricsFlags::kStrikeoutThicknessIsValid_Flag) + ? metrics.fStrikeoutPosition + // Backup value if the strikeoutposition metric is not + // available: + : metrics.fXHeight / -2.0; if (record.style().decoration_style != TextDecorationStyle::kWavy) { canvas->drawLine(x, y + y_offset, x + width, y + y_offset, paint); } else { @@ -1084,7 +1086,7 @@ void Paragraph::PaintBackground(SkCanvas* canvas, if (!record.style().has_background) return; - const SkPaint::FontMetrics& metrics = record.metrics(); + const SkFontMetrics& metrics = record.metrics(); SkRect rect(SkRect::MakeLTRB(0, metrics.fAscent, record.GetRunWidth(), metrics.fDescent)); rect.offset(base_offset + record.offset()); diff --git a/third_party/txt/src/txt/paragraph.h b/third_party/txt/src/txt/paragraph.h index 708482aa628f1..850bd1b5b499b 100644 --- a/third_party/txt/src/txt/paragraph.h +++ b/third_party/txt/src/txt/paragraph.h @@ -310,14 +310,14 @@ class Paragraph { Range code_units; Range x_pos; size_t line_number; - SkPaint::FontMetrics font_metrics; + SkFontMetrics font_metrics; TextDirection direction; CodeUnitRun(std::vector&& p, Range cu, Range x, size_t line, - const SkPaint::FontMetrics& metrics, + const SkFontMetrics& metrics, TextDirection dir); void Shift(double delta); From faabf0ced34cc0f18459be1d7e7fc0b7fe5c57ed Mon Sep 17 00:00:00 2001 From: Jason Simmons Date: Mon, 12 Nov 2018 11:20:49 -0800 Subject: [PATCH 0234/1537] Fix MakeRenderContextCurrent to handle software rendering (#6827) --- shell/common/rasterizer.cc | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/shell/common/rasterizer.cc b/shell/common/rasterizer.cc index 3560690e38831..e2274c9a51280 100644 --- a/shell/common/rasterizer.cc +++ b/shell/common/rasterizer.cc @@ -93,16 +93,16 @@ sk_sp Rasterizer::MakeRasterSnapshot(sk_sp picture, SkISize picture_size) { TRACE_EVENT0("flutter", __FUNCTION__); - if (!surface_->MakeRenderContextCurrent()) { - return nullptr; - } - sk_sp surface; if (surface_ == nullptr || surface_->GetContext() == nullptr) { // Raster surface is fine if there is no on screen surface. This might // happen in case of software rendering. surface = SkSurface::MakeRaster(SkImageInfo::MakeN32Premul(picture_size)); } else { + if (!surface_->MakeRenderContextCurrent()) { + return nullptr; + } + // When there is an on screen surface, we need a render target SkSurface // because we want to access texture backed images. surface = SkSurface::MakeRenderTarget( From 2c389678f08ff8d242cc39c25660ec958067a514 Mon Sep 17 00:00:00 2001 From: KyleWong Date: Tue, 13 Nov 2018 03:21:20 +0800 Subject: [PATCH 0235/1537] Fix a minikin crash (nullptr& EXC_BAD_ACCESS) on iOS8. (#6795) * Fix a minikin crash (nullptr& EXC_BAD_ACCESS) on iOS8. * Use find for vector to avoid side effect. --- third_party/txt/src/txt/font_collection.cc | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/third_party/txt/src/txt/font_collection.cc b/third_party/txt/src/txt/font_collection.cc index 03e960a8d6dda..5503e54e03ff2 100644 --- a/third_party/txt/src/txt/font_collection.cc +++ b/third_party/txt/src/txt/font_collection.cc @@ -132,8 +132,12 @@ FontCollection::GetMinikinFontCollectionForFamily( minikin_family, }; if (enable_font_fallback_) { - for (std::string fallback_family : fallback_fonts_for_locale_[locale]) - minikin_families.push_back(fallback_fonts_[fallback_family]); + for (std::string fallback_family : fallback_fonts_for_locale_[locale]) { + auto it = fallback_fonts_.find(fallback_family); + if (it != fallback_fonts_.end()) { + minikin_families.push_back(it->second); + } + } } // Create the minikin font collection. From 28e700214b84d17fdb0aba9ab91a736e89795faa Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Mon, 12 Nov 2018 15:24:15 -0500 Subject: [PATCH 0236/1537] Roll src/third_party/skia eb4d641d9437..6b90dfed6742 (5 commits) (#6828) https://skia.googlesource.com/skia.git/+log/eb4d641d9437..6b90dfed6742 Created with: gclient setdep -r src/third_party/skia@6b90dfed6742 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 37c8ce90d1733..b63dcc06a411d 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'eb4d641d943767a37814a0b4bab8a3e88fd01ca4', + 'skia_revision': '6b90dfed6742b3e80d32fc0a7c32115c03198594', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 1ed3b38a99bca..53a79611e5503 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 3a8e96d6879bb874f12d600dea0a1f2d +Signature: 54829d39f737dc165c60bf325d2c1759 UNUSED LICENSES: From b1b58911f674d08485a351a4de627b71994e65c0 Mon Sep 17 00:00:00 2001 From: liyuqian Date: Mon, 12 Nov 2018 12:52:18 -0800 Subject: [PATCH 0237/1537] Respect offset in OpacityLayer's paint bounds (#6826) This fixes https://github.com/flutter/flutter/issues/23890 I'll add unit tests to flutter/flutter shortly. --- flow/layers/opacity_layer.cc | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/flow/layers/opacity_layer.cc b/flow/layers/opacity_layer.cc index 3e94abdbb6568..1a2a3e3e1a453 100644 --- a/flow/layers/opacity_layer.cc +++ b/flow/layers/opacity_layer.cc @@ -14,6 +14,7 @@ void OpacityLayer::Preroll(PrerollContext* context, const SkMatrix& matrix) { SkMatrix child_matrix = matrix; child_matrix.postTranslate(offset_.fX, offset_.fY); ContainerLayer::Preroll(context, child_matrix); + set_paint_bounds(paint_bounds().makeOffset(offset_.fX, offset_.fY)); if (context->raster_cache && layers().size() == 1) { Layer* child = layers()[0].get(); SkMatrix ctm = child_matrix; @@ -54,8 +55,22 @@ void OpacityLayer::Paint(PaintContext& context) const { } } + // Skia may clip the content with saveLayerBounds (although it's not a + // guaranteed clip). So we have to provide a big enough saveLayerBounds. To do + // so, we first remove the offset from paint bounds since it's already in the + // matrix. Then we round out the bounds because of our + // RasterCache::GetIntegralTransCTM optimization. + // + // Note that the following lines are only accessible when the raster cache is + // not available (e.g., when we're using the software backend in golden + // tests). + SkRect saveLayerBounds; + paint_bounds() + .makeOffset(-offset_.fX, -offset_.fY) + .roundOut(&saveLayerBounds); + Layer::AutoSaveLayer save_layer = - Layer::AutoSaveLayer::Create(context, paint_bounds(), &paint); + Layer::AutoSaveLayer::Create(context, saveLayerBounds, &paint); PaintChildren(context); } From 266b0986de63b5bbcbfc227c7d1f3badee48eb12 Mon Sep 17 00:00:00 2001 From: Amir Hardon Date: Mon, 12 Nov 2018 14:23:25 -0800 Subject: [PATCH 0238/1537] Release the surface texture entry when the platform view is disposed. (#6829) We were leaking the texture after the view was disposed. --- .../platform/PlatformViewsController.java | 2 +- .../platform/VirtualDisplayController.java | 18 ++++++++++-------- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/shell/platform/android/io/flutter/plugin/platform/PlatformViewsController.java b/shell/platform/android/io/flutter/plugin/platform/PlatformViewsController.java index 8e3afa6ca93c6..e7297567e198c 100644 --- a/shell/platform/android/io/flutter/plugin/platform/PlatformViewsController.java +++ b/shell/platform/android/io/flutter/plugin/platform/PlatformViewsController.java @@ -179,7 +179,7 @@ private void createPlatformView(MethodCall call, MethodChannel.Result result) { VirtualDisplayController vdController = VirtualDisplayController.create( mContext, viewFactory, - textureEntry.surfaceTexture(), + textureEntry, toPhysicalPixels(logicalWidth), toPhysicalPixels(logicalHeight), id, diff --git a/shell/platform/android/io/flutter/plugin/platform/VirtualDisplayController.java b/shell/platform/android/io/flutter/plugin/platform/VirtualDisplayController.java index 77cf6a9dd06bc..59f49d3b96152 100644 --- a/shell/platform/android/io/flutter/plugin/platform/VirtualDisplayController.java +++ b/shell/platform/android/io/flutter/plugin/platform/VirtualDisplayController.java @@ -13,6 +13,7 @@ import android.view.Surface; import android.view.View; import android.view.ViewTreeObserver; +import io.flutter.view.TextureRegistry; @TargetApi(Build.VERSION_CODES.KITKAT_WATCH) class VirtualDisplayController { @@ -20,14 +21,14 @@ class VirtualDisplayController { public static VirtualDisplayController create( Context context, PlatformViewFactory viewFactory, - SurfaceTexture surfaceTexture, + TextureRegistry.SurfaceTextureEntry textureEntry, int width, int height, int viewId, Object createParams ) { - surfaceTexture.setDefaultBufferSize(width, height); - Surface surface = new Surface(surfaceTexture); + textureEntry.surfaceTexture().setDefaultBufferSize(width, height); + Surface surface = new Surface(textureEntry.surfaceTexture()); DisplayManager displayManager = (DisplayManager) context.getSystemService(Context.DISPLAY_SERVICE); int densityDpi = context.getResources().getDisplayMetrics().densityDpi; @@ -45,12 +46,12 @@ public static VirtualDisplayController create( } return new VirtualDisplayController( - context, virtualDisplay, viewFactory, surface, surfaceTexture, viewId, createParams); + context, virtualDisplay, viewFactory, surface, textureEntry, viewId, createParams); } private final Context mContext; private final int mDensityDpi; - private final SurfaceTexture mSurfaceTexture; + private final TextureRegistry.SurfaceTextureEntry mTextureEntry; private VirtualDisplay mVirtualDisplay; private SingleViewPresentation mPresentation; private Surface mSurface; @@ -61,11 +62,11 @@ private VirtualDisplayController( VirtualDisplay virtualDisplay, PlatformViewFactory viewFactory, Surface surface, - SurfaceTexture surfaceTexture, + TextureRegistry.SurfaceTextureEntry textureEntry, int viewId, Object createParams ) { - mSurfaceTexture = surfaceTexture; + mTextureEntry = textureEntry; mSurface = surface; mContext = context; mVirtualDisplay = virtualDisplay; @@ -85,7 +86,7 @@ public void resize(final int width, final int height, final Runnable onNewSizeFr mVirtualDisplay.setSurface(null); mVirtualDisplay.release(); - mSurfaceTexture.setDefaultBufferSize(width, height); + mTextureEntry.surfaceTexture().setDefaultBufferSize(width, height); DisplayManager displayManager = (DisplayManager) mContext.getSystemService(Context.DISPLAY_SERVICE); mVirtualDisplay = displayManager.createVirtualDisplay( "flutter-vd", @@ -130,6 +131,7 @@ public void dispose() { mPresentation.detachState(); view.dispose(); mVirtualDisplay.release(); + mTextureEntry.release(); } public View getView() { From 5fb9b18c6ea23dda1be285848cb045d77bd277d6 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Mon, 12 Nov 2018 18:42:14 -0500 Subject: [PATCH 0239/1537] Roll src/third_party/skia 6b90dfed6742..82cd7e80a98d (4 commits) (#6831) https://skia.googlesource.com/skia.git/+log/6b90dfed6742..82cd7e80a98d Created with: gclient setdep -r src/third_party/skia@82cd7e80a98d The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index b63dcc06a411d..ba070d9d24372 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '6b90dfed6742b3e80d32fc0a7c32115c03198594', + 'skia_revision': '82cd7e80a98d7c3a08b0615baa90b4a89e24fe67', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 53a79611e5503..719691b57e573 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 54829d39f737dc165c60bf325d2c1759 +Signature: dc4797307657b9c35fedd3094a8a6295 UNUSED LICENSES: From ea4bbbd440617a139737ba4aed103650dde7d8fb Mon Sep 17 00:00:00 2001 From: Dan Field Date: Mon, 12 Nov 2018 16:08:59 -0800 Subject: [PATCH 0240/1537] Avoid announcing text field when it lacks a11y focus (#6830) * Avoid announcing text field when it lacks a11y focus --- .../android/io/flutter/view/AccessibilityBridge.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/shell/platform/android/io/flutter/view/AccessibilityBridge.java b/shell/platform/android/io/flutter/view/AccessibilityBridge.java index 4105ea8ef1211..4fc808e9eea5f 100644 --- a/shell/platform/android/io/flutter/view/AccessibilityBridge.java +++ b/shell/platform/android/io/flutter/view/AccessibilityBridge.java @@ -763,7 +763,12 @@ void updateSemantics(ByteBuffer buffer, String[] strings) { sendAccessibilityEvent(event); } if (mInputFocusedObject != null && mInputFocusedObject.id == object.id - && object.hadFlag(Flag.IS_TEXT_FIELD) && object.hasFlag(Flag.IS_TEXT_FIELD)) { + && object.hadFlag(Flag.IS_TEXT_FIELD) && object.hasFlag(Flag.IS_TEXT_FIELD) + // If we have a TextField that has InputFocus, we should avoid announcing it if something + // else we track has a11y focus. This needs to still work when, e.g., IME has a11y focus + // or the "PASTE" popup is used though. + // See more discussion at https://github.com/flutter/flutter/issues/23180 + && (mA11yFocusedObject == null || (mA11yFocusedObject.id == mInputFocusedObject.id))) { String oldValue = object.previousValue != null ? object.previousValue : ""; String newValue = object.value != null ? object.value : ""; AccessibilityEvent event = createTextChangedEvent(object.id, oldValue, newValue); From 4959b71d6a1b1473911970428b16ac02397d930b Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Mon, 12 Nov 2018 22:02:14 -0500 Subject: [PATCH 0241/1537] Roll src/third_party/skia 82cd7e80a98d..f04fb3cacbad (2 commits) (#6836) https://skia.googlesource.com/skia.git/+log/82cd7e80a98d..f04fb3cacbad Created with: gclient setdep -r src/third_party/skia@f04fb3cacbad The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index ba070d9d24372..d3b5ed00ab939 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '82cd7e80a98d7c3a08b0615baa90b4a89e24fe67', + 'skia_revision': 'f04fb3cacbad4cfa55519589489bd09b4d960dc5', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 719691b57e573..7ce410ba8c607 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: dc4797307657b9c35fedd3094a8a6295 +Signature: 6ef83af8ed9efa6506df1e98866dd46d UNUSED LICENSES: From 09ef73ff6eb0d3306571be62c59176008a465de1 Mon Sep 17 00:00:00 2001 From: Michael Goderbauer Date: Mon, 12 Nov 2018 19:59:29 -0800 Subject: [PATCH 0242/1537] Fix code smells reported by chrome's clang plugin (#6833) --- assets/asset_manager.h | 2 +- ci/licenses_golden/licenses_flutter | 4 ++ common/settings.cc | 6 +++ common/settings.h | 6 +++ common/task_runners.cc | 2 + common/task_runners.h | 2 + flow/BUILD.gn | 1 + flow/embedded_views.cc | 12 ++++++ flow/embedded_views.h | 2 +- flow/layers/layer_tree.cc | 2 +- flow/layers/picture_layer.cc | 2 +- flow/raster_cache.cc | 10 +++++ flow/raster_cache.h | 9 +++-- fml/BUILD.gn | 1 + fml/file.cc | 15 ++++++++ fml/file.h | 17 ++------- fml/logging.cc | 2 +- fml/mapping.cc | 8 ++++ fml/mapping.h | 4 +- fml/message.cc | 6 ++- fml/message.h | 6 +-- fml/message_loop.cc | 2 +- fml/message_loop_impl.cc | 9 +++++ fml/message_loop_impl.h | 7 +++- fml/platform/posix/file_posix.cc | 2 +- fml/platform/posix/mapping_posix.cc | 2 +- fml/platform/posix/native_library_posix.cc | 2 +- fml/string_view.cc | 8 ++-- fml/thread_local.cc | 36 ++++++++++++++++++ fml/thread_local.h | 32 +++++----------- lib/ui/BUILD.gn | 1 + lib/ui/compositing/scene.cc | 4 +- .../isolate_name_server.cc | 4 ++ .../isolate_name_server/isolate_name_server.h | 4 +- lib/ui/painting/codec.cc | 32 +++++++++++++++- lib/ui/painting/codec.h | 21 ++++++----- lib/ui/painting/engine_layer.cc | 3 ++ lib/ui/painting/engine_layer.h | 3 +- lib/ui/painting/frame_info.cc | 5 +++ lib/ui/painting/frame_info.h | 6 +-- lib/ui/painting/image.h | 2 +- lib/ui/painting/picture.h | 2 +- lib/ui/painting/picture_recorder.h | 2 +- lib/ui/plugins/callback_cache.cc | 2 +- lib/ui/semantics/semantics_node.cc | 2 + lib/ui/semantics/semantics_node.h | 3 ++ lib/ui/text/asset_manager_font_provider.cc | 8 ++++ lib/ui/text/asset_manager_font_provider.h | 7 +++- lib/ui/text/paragraph.h | 2 +- lib/ui/ui_dart_state.h | 2 +- lib/ui/window/viewport_metrics.cc | 35 ++++++++++++++++++ lib/ui/window/viewport_metrics.h | 16 ++++++++ runtime/dart_isolate.cc | 13 ++++++- runtime/dart_isolate.h | 9 ++--- runtime/dart_vm.cc | 2 +- runtime/runtime_controller.cc | 37 ++++++++++++++----- runtime/runtime_controller.h | 16 +++++--- runtime/service_protocol.cc | 4 +- shell/common/rasterizer.cc | 17 +++++++-- shell/common/rasterizer.h | 9 +++-- shell/common/shell.cc | 6 +-- shell/common/thread_host.cc | 2 + shell/common/thread_host.h | 2 +- shell/gpu/gpu_surface_gl.cc | 23 ++++++++++++ shell/gpu/gpu_surface_gl.h | 16 +++----- .../android/android_external_texture_gl.h | 8 ++-- shell/platform/android/apk_asset_provider.h | 2 +- .../platform_message_response_android.cc | 6 ++- .../platform_message_response_android.h | 2 + .../android/platform_view_android_jni.cc | 27 +++++++------- .../platform/android/vsync_waiter_android.cc | 2 +- shell/platform/darwin/ios/BUILD.gn | 1 + .../Source/FlutterPlatformViews_Internal.h | 11 +++--- .../Source/FlutterPlatformViews_Internal.mm | 23 ++++++++++++ .../Source/platform_message_response_darwin.h | 21 +++-------- .../platform_message_response_darwin.mm | 21 ++++++++++- .../darwin/ios/ios_external_texture_gl.h | 8 ++-- shell/platform/darwin/ios/ios_surface_gl.h | 2 +- .../darwin/ios/ios_surface_software.h | 2 +- shell/platform/darwin/ios/platform_view_ios.h | 2 +- 80 files changed, 491 insertions(+), 188 deletions(-) create mode 100644 flow/embedded_views.cc create mode 100644 fml/thread_local.cc create mode 100644 lib/ui/window/viewport_metrics.cc create mode 100644 shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.mm diff --git a/assets/asset_manager.h b/assets/asset_manager.h index 84ae784f66573..42ffa9b1053c4 100644 --- a/assets/asset_manager.h +++ b/assets/asset_manager.h @@ -19,7 +19,7 @@ class AssetManager final : public AssetResolver { public: AssetManager(); - ~AssetManager(); + ~AssetManager() override; void PushFront(std::unique_ptr resolver); diff --git a/ci/licenses_golden/licenses_flutter b/ci/licenses_golden/licenses_flutter index 125b745183048..79f415685ceff 100644 --- a/ci/licenses_golden/licenses_flutter +++ b/ci/licenses_golden/licenses_flutter @@ -27,6 +27,7 @@ FILE: ../../../flutter/flow/compositor_context.cc FILE: ../../../flutter/flow/compositor_context.h FILE: ../../../flutter/flow/debug_print.cc FILE: ../../../flutter/flow/debug_print.h +FILE: ../../../flutter/flow/embedded_views.cc FILE: ../../../flutter/flow/embedded_views.h FILE: ../../../flutter/flow/export_node.cc FILE: ../../../flutter/flow/export_node.h @@ -189,6 +190,7 @@ FILE: ../../../flutter/fml/task_runner.cc FILE: ../../../flutter/fml/task_runner.h FILE: ../../../flutter/fml/thread.cc FILE: ../../../flutter/fml/thread.h +FILE: ../../../flutter/fml/thread_local.cc FILE: ../../../flutter/fml/thread_local.h FILE: ../../../flutter/fml/thread_local_unittests.cc FILE: ../../../flutter/fml/thread_unittests.cc @@ -311,6 +313,7 @@ FILE: ../../../flutter/lib/ui/window/pointer_data.cc FILE: ../../../flutter/lib/ui/window/pointer_data.h FILE: ../../../flutter/lib/ui/window/pointer_data_packet.cc FILE: ../../../flutter/lib/ui/window/pointer_data_packet.h +FILE: ../../../flutter/lib/ui/window/viewport_metrics.cc FILE: ../../../flutter/lib/ui/window/viewport_metrics.h FILE: ../../../flutter/lib/ui/window/window.cc FILE: ../../../flutter/lib/ui/window/window.h @@ -496,6 +499,7 @@ FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterPlatfor FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterPlatformPlugin.mm FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h +FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.mm FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterPluginAppLifeCycleDelegate.mm FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterStandardCodec.mm FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterStandardCodec_Internal.h diff --git a/common/settings.cc b/common/settings.cc index 620733817eb88..a85d69fc8596c 100644 --- a/common/settings.cc +++ b/common/settings.cc @@ -8,6 +8,12 @@ namespace blink { +Settings::Settings() = default; + +Settings::Settings(const Settings& other) = default; + +Settings::~Settings() = default; + std::string Settings::ToString() const { std::stringstream stream; stream << "Settings: " << std::endl; diff --git a/common/settings.h b/common/settings.h index c7252aa921fa3..92a8e37109ff2 100644 --- a/common/settings.h +++ b/common/settings.h @@ -22,6 +22,12 @@ using TaskObserverAdd = using TaskObserverRemove = std::function; struct Settings { + Settings(); + + Settings(const Settings& other); + + ~Settings(); + // VM settings std::string vm_snapshot_data_path; std::string vm_snapshot_instr_path; diff --git a/common/task_runners.cc b/common/task_runners.cc index f9d251460e1a0..d76bc20f6ae38 100644 --- a/common/task_runners.cc +++ b/common/task_runners.cc @@ -19,6 +19,8 @@ TaskRunners::TaskRunners(std::string label, ui_(std::move(ui)), io_(std::move(io)) {} +TaskRunners::TaskRunners(const TaskRunners& other) = default; + TaskRunners::~TaskRunners() = default; const std::string& TaskRunners::GetLabel() const { diff --git a/common/task_runners.h b/common/task_runners.h index aca38bebaa227..0bd0c301903ae 100644 --- a/common/task_runners.h +++ b/common/task_runners.h @@ -20,6 +20,8 @@ class TaskRunners { fml::RefPtr ui, fml::RefPtr io); + TaskRunners(const TaskRunners& other); + ~TaskRunners(); const std::string& GetLabel() const; diff --git a/flow/BUILD.gn b/flow/BUILD.gn index 5a1f50d2ee5ba..799c23caf02d3 100644 --- a/flow/BUILD.gn +++ b/flow/BUILD.gn @@ -8,6 +8,7 @@ source_set("flow") { "compositor_context.h", "debug_print.cc", "debug_print.h", + "embedded_views.cc", "embedded_views.h", "instrumentation.cc", "instrumentation.h", diff --git a/flow/embedded_views.cc b/flow/embedded_views.cc new file mode 100644 index 0000000000000..8dc634ecdd62d --- /dev/null +++ b/flow/embedded_views.cc @@ -0,0 +1,12 @@ +// 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/flow/embedded_views.h" + +namespace flow { + +bool ExternalViewEmbedder::SubmitFrame(GrContext* context) { + return false; +}; +} // namespace flow diff --git a/flow/embedded_views.h b/flow/embedded_views.h index 81c67de9784b5..6f2e684c4841e 100644 --- a/flow/embedded_views.h +++ b/flow/embedded_views.h @@ -37,7 +37,7 @@ class ExternalViewEmbedder { virtual SkCanvas* CompositeEmbeddedView(int view_id, const EmbeddedViewParams& params) = 0; - virtual bool SubmitFrame(GrContext* context) { return false; }; + virtual bool SubmitFrame(GrContext* context); virtual ~ExternalViewEmbedder() = default; diff --git a/flow/layers/layer_tree.cc b/flow/layers/layer_tree.cc index 19df3d27c1286..37b9b0a23b9fb 100644 --- a/flow/layers/layer_tree.cc +++ b/flow/layers/layer_tree.cc @@ -96,7 +96,7 @@ sk_sp LayerTree::Flatten(const SkRect& bounds) { TRACE_EVENT0("flutter", "LayerTree::Flatten"); SkPictureRecorder recorder; - auto canvas = recorder.beginRecording(bounds); + auto* canvas = recorder.beginRecording(bounds); if (!canvas) { return nullptr; diff --git a/flow/layers/picture_layer.cc b/flow/layers/picture_layer.cc index 74057039d304d..cef3321df4d19 100644 --- a/flow/layers/picture_layer.cc +++ b/flow/layers/picture_layer.cc @@ -15,7 +15,7 @@ PictureLayer::~PictureLayer() = default; void PictureLayer::Preroll(PrerollContext* context, const SkMatrix& matrix) { SkPicture* sk_picture = picture(); - if (auto cache = context->raster_cache) { + if (auto* cache = context->raster_cache) { SkMatrix ctm = matrix; ctm.postTranslate(offset_.x(), offset_.y()); #ifndef SUPPORT_FRACTIONAL_TRANSLATION diff --git a/flow/raster_cache.cc b/flow/raster_cache.cc index 4de4e1e89a8a4..ccb88ab48c7c7 100644 --- a/flow/raster_cache.cc +++ b/flow/raster_cache.cc @@ -18,6 +18,16 @@ namespace flow { +RasterCacheResult::RasterCacheResult() {} + +RasterCacheResult::RasterCacheResult(const RasterCacheResult& other) = default; + +RasterCacheResult::~RasterCacheResult() = default; + +RasterCacheResult::RasterCacheResult(sk_sp image, + const SkRect& logical_rect) + : image_(std::move(image)), logical_rect_(logical_rect) {} + void RasterCacheResult::draw(SkCanvas& canvas, const SkPaint* paint) const { SkAutoCanvasRestore auto_restore(&canvas, true); SkIRect bounds = diff --git a/flow/raster_cache.h b/flow/raster_cache.h index e5a081bb78100..cb4383f41fb52 100644 --- a/flow/raster_cache.h +++ b/flow/raster_cache.h @@ -19,10 +19,13 @@ namespace flow { class RasterCacheResult { public: - RasterCacheResult() {} + RasterCacheResult(); - RasterCacheResult(sk_sp image, const SkRect& logical_rect) - : image_(std::move(image)), logical_rect_(logical_rect) {} + RasterCacheResult(const RasterCacheResult& other); + + ~RasterCacheResult(); + + RasterCacheResult(sk_sp image, const SkRect& logical_rect); operator bool() const { return static_cast(image_); } diff --git a/fml/BUILD.gn b/fml/BUILD.gn index ed5cb2f1ea3f3..f73f7f40714c4 100644 --- a/fml/BUILD.gn +++ b/fml/BUILD.gn @@ -56,6 +56,7 @@ source_set("fml") { "task_runner.h", "thread.cc", "thread.h", + "thread_local.cc", "thread_local.h", "time/time_delta.h", "time/time_point.cc", diff --git a/fml/file.cc b/fml/file.cc index 1c90b2cfef7ee..8deb76c91da0f 100644 --- a/fml/file.cc +++ b/fml/file.cc @@ -43,4 +43,19 @@ fml::UniqueFD CreateDirectory(const fml::UniqueFD& base_directory, return CreateDirectory(base_directory, components, permission, 0); } +ScopedTemporaryDirectory::ScopedTemporaryDirectory() { + path_ = CreateTemporaryDirectory(); + if (path_ != "") { + dir_fd_ = OpenDirectory(path_.c_str(), false, FilePermission::kRead); + } +} + +ScopedTemporaryDirectory::~ScopedTemporaryDirectory() { + if (path_ != "") { + if (!UnlinkDirectory(path_.c_str())) { + FML_LOG(ERROR) << "Could not remove directory: " << path_; + } + } +} + } // namespace fml diff --git a/fml/file.h b/fml/file.h index a0d604f3f2c96..068ddc84c999d 100644 --- a/fml/file.h +++ b/fml/file.h @@ -75,20 +75,9 @@ bool WriteAtomically(const fml::UniqueFD& base_directory, class ScopedTemporaryDirectory { public: - ScopedTemporaryDirectory() { - path_ = CreateTemporaryDirectory(); - if (path_ != "") { - dir_fd_ = OpenDirectory(path_.c_str(), false, FilePermission::kRead); - } - } - - ~ScopedTemporaryDirectory() { - if (path_ != "") { - if (!UnlinkDirectory(path_.c_str())) { - FML_LOG(ERROR) << "Could not remove directory: " << path_; - } - } - } + ScopedTemporaryDirectory(); + + ~ScopedTemporaryDirectory(); const UniqueFD& fd() { return dir_fd_; } diff --git a/fml/logging.cc b/fml/logging.cc index 20aef13d83d80..3cf7c86964392 100644 --- a/fml/logging.cc +++ b/fml/logging.cc @@ -34,7 +34,7 @@ const char* StripDots(const char* path) { } const char* StripPath(const char* path) { - auto p = strrchr(path, '/'); + auto* p = strrchr(path, '/'); if (p) return p + 1; else diff --git a/fml/mapping.cc b/fml/mapping.cc index c3ebb60ff5b87..11882b6662bbf 100644 --- a/fml/mapping.cc +++ b/fml/mapping.cc @@ -22,4 +22,12 @@ const uint8_t* DataMapping::GetMapping() const { return data_.data(); } +size_t NonOwnedMapping::GetSize() const { + return size_; +} + +const uint8_t* NonOwnedMapping::GetMapping() const { + return data_; +} + } // namespace fml diff --git a/fml/mapping.h b/fml/mapping.h index 7d16366c5f19c..05894a5c219a4 100644 --- a/fml/mapping.h +++ b/fml/mapping.h @@ -84,9 +84,9 @@ class NonOwnedMapping : public Mapping { NonOwnedMapping(const uint8_t* data, size_t size) : data_(data), size_(size) {} - size_t GetSize() const override { return size_; } + size_t GetSize() const override; - const uint8_t* GetMapping() const override { return data_; } + const uint8_t* GetMapping() const override; private: const uint8_t* const data_; diff --git a/fml/message.cc b/fml/message.cc index c5c3682ba5626..4ef7ab3b32274 100644 --- a/fml/message.cc +++ b/fml/message.cc @@ -8,6 +8,10 @@ namespace fml { +size_t MessageSerializable::GetSerializableTag() const { + return 0; +}; + Message::Message() = default; Message::~Message() = default; @@ -96,7 +100,7 @@ uint8_t* Message::PrepareDecode(size_t size) { if ((size + size_read_) > buffer_length_) { return nullptr; } - auto buffer = buffer_ + size_read_; + auto* buffer = buffer_ + size_read_; size_read_ += size; return buffer; } diff --git a/fml/message.h b/fml/message.h index 8d7e63a2e7896..f9d6bf804ed85 100644 --- a/fml/message.h +++ b/fml/message.h @@ -47,7 +47,7 @@ class MessageSerializable { virtual bool Deserialize(Message& message) = 0; - virtual size_t GetSerializableTag() const { return 0; }; + virtual size_t GetSerializableTag() const; }; // The traits passed to the encode/decode calls that accept traits should be @@ -88,7 +88,7 @@ class Message { template ::value>> FML_WARN_UNUSED_RESULT bool Encode(const T& value) { - if (auto buffer = PrepareEncode(sizeof(T))) { + if (auto* buffer = PrepareEncode(sizeof(T))) { ::memcpy(buffer, &value, sizeof(T)); return true; } @@ -131,7 +131,7 @@ class Message { template ::value>> FML_WARN_UNUSED_RESULT bool Decode(T& value) { - if (auto buffer = PrepareDecode(sizeof(T))) { + if (auto* buffer = PrepareDecode(sizeof(T))) { ::memcpy(&value, buffer, sizeof(T)); return true; } diff --git a/fml/message_loop.cc b/fml/message_loop.cc index 3238e6f443742..469d47207566a 100644 --- a/fml/message_loop.cc +++ b/fml/message_loop.cc @@ -19,7 +19,7 @@ FML_THREAD_LOCAL ThreadLocal tls_message_loop([](intptr_t value) { }); MessageLoop& MessageLoop::GetCurrent() { - auto loop = reinterpret_cast(tls_message_loop.Get()); + auto* loop = reinterpret_cast(tls_message_loop.Get()); FML_CHECK(loop != nullptr) << "MessageLoop::EnsureInitializedForCurrentThread was not called on " "this thread prior to message loop use."; diff --git a/fml/message_loop_impl.cc b/fml/message_loop_impl.cc index 6c5024a9a25de..4d2c5bf4ff614 100644 --- a/fml/message_loop_impl.cc +++ b/fml/message_loop_impl.cc @@ -145,4 +145,13 @@ void MessageLoopImpl::RunExpiredTasks() { } } +MessageLoopImpl::DelayedTask::DelayedTask(size_t p_order, + fml::closure p_task, + fml::TimePoint p_target_time) + : order(p_order), task(std::move(p_task)), target_time(p_target_time) {} + +MessageLoopImpl::DelayedTask::DelayedTask(const DelayedTask& other) = default; + +MessageLoopImpl::DelayedTask::~DelayedTask() = default; + } // namespace fml diff --git a/fml/message_loop_impl.h b/fml/message_loop_impl.h index de1c4147081fe..9dab218d0d1db 100644 --- a/fml/message_loop_impl.h +++ b/fml/message_loop_impl.h @@ -57,8 +57,11 @@ class MessageLoopImpl : public fml::RefCountedThreadSafe { DelayedTask(size_t p_order, fml::closure p_task, - fml::TimePoint p_target_time) - : order(p_order), task(std::move(p_task)), target_time(p_target_time) {} + fml::TimePoint p_target_time); + + DelayedTask(const DelayedTask& other); + + ~DelayedTask(); }; struct DelayedTaskCompare { diff --git a/fml/platform/posix/file_posix.cc b/fml/platform/posix/file_posix.cc index c6911bd0489d3..d30a9c2f1d2df 100644 --- a/fml/platform/posix/file_posix.cc +++ b/fml/platform/posix/file_posix.cc @@ -19,7 +19,7 @@ namespace fml { std::string CreateTemporaryDirectory() { char directory_name[] = "/tmp/flutter_XXXXXXXX"; - auto result = ::mkdtemp(directory_name); + auto* result = ::mkdtemp(directory_name); if (result == nullptr) { return ""; } diff --git a/fml/platform/posix/mapping_posix.cc b/fml/platform/posix/mapping_posix.cc index 670b3873303b4..bc5adbd107544 100644 --- a/fml/platform/posix/mapping_posix.cc +++ b/fml/platform/posix/mapping_posix.cc @@ -69,7 +69,7 @@ FileMapping::FileMapping(const fml::UniqueFD& handle, const auto is_writable = IsWritable(protection); - auto mapping = + auto* mapping = ::mmap(nullptr, stat_buffer.st_size, ToPosixProtectionFlags(protection), is_writable ? MAP_SHARED : MAP_PRIVATE, handle.get(), 0); diff --git a/fml/platform/posix/native_library_posix.cc b/fml/platform/posix/native_library_posix.cc index 9d10152848ec8..558061e739673 100644 --- a/fml/platform/posix/native_library_posix.cc +++ b/fml/platform/posix/native_library_posix.cc @@ -58,7 +58,7 @@ fml::RefPtr NativeLibrary::CreateForCurrentProcess() { } const uint8_t* NativeLibrary::ResolveSymbol(const char* symbol) { - auto resolved_symbol = static_cast(::dlsym(handle_, symbol)); + auto* resolved_symbol = static_cast(::dlsym(handle_, symbol)); if (resolved_symbol == nullptr) { FML_DLOG(INFO) << "Could not resolve symbol in library: " << symbol; } diff --git a/fml/string_view.cc b/fml/string_view.cc index bca1452b82e19..5f217c439f50c 100644 --- a/fml/string_view.cc +++ b/fml/string_view.cc @@ -84,7 +84,7 @@ size_t StringView::find(StringView s, size_t pos) const { if (s.empty()) return pos; - auto result = std::search(begin() + pos, end(), s.begin(), s.end()); + auto* result = std::search(begin() + pos, end(), s.begin(), s.end()); if (result == end()) return npos; return result - begin(); @@ -94,7 +94,7 @@ size_t StringView::find(char c, size_t pos) const { if (pos > size_) return npos; - auto result = std::find(begin() + pos, end(), c); + auto* result = std::find(begin() + pos, end(), c); if (result == end()) return npos; return result - begin(); @@ -106,8 +106,8 @@ size_t StringView::rfind(StringView s, size_t pos) const { if (s.empty()) return std::min(pos, size_); - auto last = begin() + std::min(size_ - s.size(), pos) + s.size(); - auto result = std::find_end(begin(), last, s.begin(), s.end()); + auto* last = begin() + std::min(size_ - s.size(), pos) + s.size(); + auto* result = std::find_end(begin(), last, s.begin(), s.end()); if (result == last) return npos; return result - begin(); diff --git a/fml/thread_local.cc b/fml/thread_local.cc new file mode 100644 index 0000000000000..4617f8243c17d --- /dev/null +++ b/fml/thread_local.cc @@ -0,0 +1,36 @@ +// 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/fml/thread_local.h" + +namespace fml { + +ThreadLocal::ThreadLocal() : ThreadLocal(nullptr) {} + +ThreadLocal::ThreadLocal(ThreadLocalDestroyCallback destroy) + : destroy_(destroy) { + auto callback = + reinterpret_cast(&ThreadLocal::ThreadLocalDestroy); + FML_CHECK(pthread_key_create(&_key, callback) == 0); +} + +ThreadLocal::~ThreadLocal() { + // This will NOT call the destroy callbacks on thread local values still + // active in other threads. Those must be cleared manually. The usage + // of this class should be similar to the thread_local keyword but with + // with a static storage specifier + + // Collect the container + delete reinterpret_cast(pthread_getspecific(_key)); + + // Finally, collect the key + FML_CHECK(pthread_key_delete(_key) == 0); +} + +ThreadLocal::Box::Box(ThreadLocalDestroyCallback destroy, intptr_t value) + : destroy_(destroy), value_(value) {} + +ThreadLocal::Box::~Box() = default; + +} // namespace fml diff --git a/fml/thread_local.h b/fml/thread_local.h index daff25bac1155..b2d4bdfa774c0 100644 --- a/fml/thread_local.h +++ b/fml/thread_local.h @@ -31,8 +31,9 @@ class ThreadLocal { private: class Box { public: - Box(ThreadLocalDestroyCallback destroy, intptr_t value) - : destroy_(destroy), value_(value) {} + Box(ThreadLocalDestroyCallback destroy, intptr_t value); + + ~Box(); intptr_t Value() const { return value_; } @@ -60,22 +61,18 @@ class ThreadLocal { static inline void ThreadLocalDestroy(void* value) { FML_CHECK(value != nullptr); - auto box = reinterpret_cast(value); + auto* box = reinterpret_cast(value); box->DestroyValue(); delete box; } public: - ThreadLocal() : ThreadLocal(nullptr) {} + ThreadLocal(); - ThreadLocal(ThreadLocalDestroyCallback destroy) : destroy_(destroy) { - auto callback = - reinterpret_cast(&ThreadLocal::ThreadLocalDestroy); - FML_CHECK(pthread_key_create(&_key, callback) == 0); - } + ThreadLocal(ThreadLocalDestroyCallback destroy); void Set(intptr_t value) { - auto box = reinterpret_cast(pthread_getspecific(_key)); + auto* box = reinterpret_cast(pthread_getspecific(_key)); if (box == nullptr) { box = new Box(destroy_, value); FML_CHECK(pthread_setspecific(_key, box) == 0); @@ -85,22 +82,11 @@ class ThreadLocal { } intptr_t Get() { - auto box = reinterpret_cast(pthread_getspecific(_key)); + auto* box = reinterpret_cast(pthread_getspecific(_key)); return box != nullptr ? box->Value() : 0; } - ~ThreadLocal() { - // This will NOT call the destroy callbacks on thread local values still - // active in other threads. Those must be cleared manually. The usage - // of this class should be similar to the thread_local keyword but with - // with a static storage specifier - - // Collect the container - delete reinterpret_cast(pthread_getspecific(_key)); - - // Finally, collect the key - FML_CHECK(pthread_key_delete(_key) == 0); - } + ~ThreadLocal(); private: pthread_key_t _key; diff --git a/lib/ui/BUILD.gn b/lib/ui/BUILD.gn index 8ecf508e5a2f7..dcfd483638eca 100644 --- a/lib/ui/BUILD.gn +++ b/lib/ui/BUILD.gn @@ -92,6 +92,7 @@ source_set("ui") { "window/pointer_data.h", "window/pointer_data_packet.cc", "window/pointer_data_packet.h", + "window/viewport_metrics.cc", "window/viewport_metrics.h", "window/window.cc", "window/window.h", diff --git a/lib/ui/compositing/scene.cc b/lib/ui/compositing/scene.cc index 2dea867733e25..8d3537750f5fa 100644 --- a/lib/ui/compositing/scene.cc +++ b/lib/ui/compositing/scene.cc @@ -69,7 +69,7 @@ Dart_Handle Scene::toImage(uint32_t width, return tonic::ToDart("Image dimensions for scene were invalid."); } - auto dart_state = UIDartState::Current(); + auto* dart_state = UIDartState::Current(); auto image_callback = std::make_unique( dart_state, raw_image_callback); auto unref_queue = dart_state->GetSkiaUnrefQueue(); @@ -114,7 +114,7 @@ Dart_Handle Scene::toImage(uint32_t width, auto dart_image = CanvasImage::Create(); dart_image->set_image({std::move(raster_image), std::move(unref_queue)}); - auto raw_dart_image = tonic::ToDart(std::move(dart_image)); + auto* raw_dart_image = tonic::ToDart(std::move(dart_image)); // All done! tonic::DartInvoke(image_callback->Get(), {raw_dart_image}); diff --git a/lib/ui/isolate_name_server/isolate_name_server.cc b/lib/ui/isolate_name_server/isolate_name_server.cc index 0fe928e7e1df2..deae4fe6f8f16 100644 --- a/lib/ui/isolate_name_server/isolate_name_server.cc +++ b/lib/ui/isolate_name_server/isolate_name_server.cc @@ -6,6 +6,10 @@ namespace blink { +IsolateNameServer::IsolateNameServer() {} + +IsolateNameServer::~IsolateNameServer() = default; + Dart_Port IsolateNameServer::LookupIsolatePortByName(const std::string& name) { std::lock_guard lock(mutex_); return LookupIsolatePortByNameUnprotected(name); diff --git a/lib/ui/isolate_name_server/isolate_name_server.h b/lib/ui/isolate_name_server/isolate_name_server.h index 97c44d5cd47b4..db62ad871f771 100644 --- a/lib/ui/isolate_name_server/isolate_name_server.h +++ b/lib/ui/isolate_name_server/isolate_name_server.h @@ -17,7 +17,9 @@ namespace blink { class IsolateNameServer { public: - IsolateNameServer() {} + IsolateNameServer(); + + ~IsolateNameServer(); // Looks up the Dart_Port associated with a given name. Returns ILLEGAL_PORT // if the name does not exist. diff --git a/lib/ui/painting/codec.cc b/lib/ui/painting/codec.cc index 608d332f673d5..4cec237fd9ed5 100644 --- a/lib/ui/painting/codec.cc +++ b/lib/ui/painting/codec.cc @@ -283,7 +283,7 @@ void InstantiateImageCodec(Dart_NativeArguments args) { auto buffer = SkData::MakeWithCopy(list.data(), list.num_elements()); - auto dart_state = UIDartState::Current(); + auto* dart_state = UIDartState::Current(); const auto& task_runners = dart_state->GetTaskRunners(); task_runners.GetIOTaskRunner()->PostTask(fml::MakeCopyable( @@ -387,6 +387,16 @@ MultiFrameCodec::MultiFrameCodec(std::unique_ptr codec, nextFrameIndex_ = 0; } +MultiFrameCodec::~MultiFrameCodec() {} + +int MultiFrameCodec::frameCount() { + return frameInfos_.size(); +} + +int MultiFrameCodec::repetitionCount() { + return repetitionCount_; +} + sk_sp MultiFrameCodec::GetNextFrameImage( fml::WeakPtr resourceContext) { // Populate this bitmap from the cache if it exists @@ -481,7 +491,7 @@ Dart_Handle MultiFrameCodec::getNextFrame(Dart_Handle callback_handle) { return ToDart("Callback must be a function"); } - auto dart_state = UIDartState::Current(); + auto* dart_state = UIDartState::Current(); const auto& task_runners = dart_state->GetTaskRunners(); @@ -499,6 +509,24 @@ Dart_Handle MultiFrameCodec::getNextFrame(Dart_Handle callback_handle) { return Dart_Null(); } +MultiFrameCodec::DecodedFrame::DecodedFrame(bool required) + : required_(required) {} + +MultiFrameCodec::DecodedFrame::~DecodedFrame() = default; + +SingleFrameCodec::SingleFrameCodec(fml::RefPtr frame) + : frame_(std::move(frame)) {} + +SingleFrameCodec::~SingleFrameCodec() {} + +int SingleFrameCodec::frameCount() { + return 1; +} + +int SingleFrameCodec::repetitionCount() { + return 0; +} + Dart_Handle SingleFrameCodec::getNextFrame(Dart_Handle callback_handle) { if (!Dart_IsClosure(callback_handle)) { return ToDart("Callback must be a function"); diff --git a/lib/ui/painting/codec.h b/lib/ui/painting/codec.h index 4a61d328a828e..e853556e2b4ac 100644 --- a/lib/ui/painting/codec.h +++ b/lib/ui/painting/codec.h @@ -36,15 +36,15 @@ class Codec : public RefCountedDartWrappable { class MultiFrameCodec : public Codec { public: - int frameCount() { return frameInfos_.size(); } - int repetitionCount() { return repetitionCount_; } - Dart_Handle getNextFrame(Dart_Handle args); + int frameCount() override; + int repetitionCount() override; + Dart_Handle getNextFrame(Dart_Handle args) override; private: MultiFrameCodec(std::unique_ptr codec, const float decodedCacheRatioCap); - ~MultiFrameCodec() {} + ~MultiFrameCodec() override; sk_sp GetNextFrameImage(fml::WeakPtr resourceContext); @@ -71,7 +71,8 @@ class MultiFrameCodec : public Codec { std::unique_ptr bitmap_ = nullptr; const bool required_; - DecodedFrame(bool required) : required_(required) {} + DecodedFrame(bool required); + ~DecodedFrame(); }; // A cache of previously loaded bitmaps, indexed by the frame they belong to. @@ -86,13 +87,13 @@ class MultiFrameCodec : public Codec { class SingleFrameCodec : public Codec { public: - int frameCount() { return 1; } - int repetitionCount() { return 0; } - Dart_Handle getNextFrame(Dart_Handle args); + int frameCount() override; + int repetitionCount() override; + Dart_Handle getNextFrame(Dart_Handle args) override; private: - SingleFrameCodec(fml::RefPtr frame) : frame_(std::move(frame)) {} - ~SingleFrameCodec() {} + SingleFrameCodec(fml::RefPtr frame); + ~SingleFrameCodec() override; fml::RefPtr frame_; diff --git a/lib/ui/painting/engine_layer.cc b/lib/ui/painting/engine_layer.cc index f5afb9fde0b43..f365e37cb8fbc 100644 --- a/lib/ui/painting/engine_layer.cc +++ b/lib/ui/painting/engine_layer.cc @@ -15,6 +15,9 @@ using tonic::ToDart; namespace blink { +EngineLayer::EngineLayer(std::shared_ptr layer) + : layer_(layer) {} + EngineLayer::~EngineLayer() = default; size_t EngineLayer::GetAllocationSize() { diff --git a/lib/ui/painting/engine_layer.h b/lib/ui/painting/engine_layer.h index 0f1e32bd77ca1..a95e58a9e2e6a 100644 --- a/lib/ui/painting/engine_layer.h +++ b/lib/ui/painting/engine_layer.h @@ -35,8 +35,7 @@ class EngineLayer : public RefCountedDartWrappable { std::shared_ptr Layer() const { return layer_; } private: - explicit EngineLayer(std::shared_ptr layer) - : layer_(layer) {} + explicit EngineLayer(std::shared_ptr layer); std::shared_ptr layer_; FML_FRIEND_MAKE_REF_COUNTED(EngineLayer); diff --git a/lib/ui/painting/frame_info.cc b/lib/ui/painting/frame_info.cc index 123fc955efccf..40359a02dce77 100644 --- a/lib/ui/painting/frame_info.cc +++ b/lib/ui/painting/frame_info.cc @@ -18,6 +18,11 @@ IMPLEMENT_WRAPPERTYPEINFO(ui, FrameInfo); FOR_EACH_BINDING(DART_NATIVE_CALLBACK) +FrameInfo::FrameInfo(fml::RefPtr image, int durationMillis) + : image_(std::move(image)), durationMillis_(durationMillis) {} + +FrameInfo::~FrameInfo(){}; + void FrameInfo::RegisterNatives(tonic::DartLibraryNatives* natives) { natives->Register({FOR_EACH_BINDING(DART_REGISTER_NATIVE)}); } diff --git a/lib/ui/painting/frame_info.h b/lib/ui/painting/frame_info.h index 15a663dab8a7c..57ff23d91c43a 100644 --- a/lib/ui/painting/frame_info.h +++ b/lib/ui/painting/frame_info.h @@ -25,9 +25,9 @@ class FrameInfo final : public RefCountedDartWrappable { static void RegisterNatives(tonic::DartLibraryNatives* natives); private: - FrameInfo(fml::RefPtr image, int durationMillis) - : image_(std::move(image)), durationMillis_(durationMillis) {} - ~FrameInfo(){}; + FrameInfo(fml::RefPtr image, int durationMillis); + + ~FrameInfo() override; const fml::RefPtr image_; const int durationMillis_; diff --git a/lib/ui/painting/image.h b/lib/ui/painting/image.h index 51b24df128e62..a2db734b57516 100644 --- a/lib/ui/painting/image.h +++ b/lib/ui/painting/image.h @@ -39,7 +39,7 @@ class CanvasImage final : public RefCountedDartWrappable { image_ = std::move(image); } - virtual size_t GetAllocationSize() override; + size_t GetAllocationSize() override; static void RegisterNatives(tonic::DartLibraryNatives* natives); diff --git a/lib/ui/painting/picture.h b/lib/ui/painting/picture.h index b7b42acba206d..c95afd30f1f75 100644 --- a/lib/ui/painting/picture.h +++ b/lib/ui/painting/picture.h @@ -31,7 +31,7 @@ class Picture : public RefCountedDartWrappable { void dispose(); - virtual size_t GetAllocationSize() override; + size_t GetAllocationSize() override; static void RegisterNatives(tonic::DartLibraryNatives* natives); diff --git a/lib/ui/painting/picture_recorder.h b/lib/ui/painting/picture_recorder.h index f2842ae4a966d..90e5a4c03f365 100644 --- a/lib/ui/painting/picture_recorder.h +++ b/lib/ui/painting/picture_recorder.h @@ -23,7 +23,7 @@ class PictureRecorder : public RefCountedDartWrappable { public: static fml::RefPtr Create(); - ~PictureRecorder(); + ~PictureRecorder() override; SkCanvas* BeginRecording(SkRect bounds); fml::RefPtr endRecording(); diff --git a/lib/ui/plugins/callback_cache.cc b/lib/ui/plugins/callback_cache.cc index 94cb981dc5556..b2d4cc0d72d44 100644 --- a/lib/ui/plugins/callback_cache.cc +++ b/lib/ui/plugins/callback_cache.cc @@ -134,7 +134,7 @@ void DartCallbackCache::LoadCacheFromDisk() { return; } const auto entries = d.GetArray(); - for (auto it = entries.begin(); it != entries.end(); ++it) { + for (auto* it = entries.begin(); it != entries.end(); ++it) { const auto root_obj = it->GetObject(); const auto representation = root_obj[kRepresentationKey].GetObject(); diff --git a/lib/ui/semantics/semantics_node.cc b/lib/ui/semantics/semantics_node.cc index 4931f8ca5c830..cb655bdde8831 100644 --- a/lib/ui/semantics/semantics_node.cc +++ b/lib/ui/semantics/semantics_node.cc @@ -10,6 +10,8 @@ namespace blink { SemanticsNode::SemanticsNode() = default; +SemanticsNode::SemanticsNode(const SemanticsNode& other) = default; + SemanticsNode::~SemanticsNode() = default; bool SemanticsNode::HasAction(SemanticsAction action) { diff --git a/lib/ui/semantics/semantics_node.h b/lib/ui/semantics/semantics_node.h index 1752b73b5aac9..4275cb7d83d30 100644 --- a/lib/ui/semantics/semantics_node.h +++ b/lib/ui/semantics/semantics_node.h @@ -69,6 +69,9 @@ enum class SemanticsFlags : int32_t { struct SemanticsNode { SemanticsNode(); + + SemanticsNode(const SemanticsNode& other); + ~SemanticsNode(); bool HasAction(SemanticsAction action); diff --git a/lib/ui/text/asset_manager_font_provider.cc b/lib/ui/text/asset_manager_font_provider.cc index 3147573404871..da2d0a15be9d7 100644 --- a/lib/ui/text/asset_manager_font_provider.cc +++ b/lib/ui/text/asset_manager_font_provider.cc @@ -123,4 +123,12 @@ SkTypeface* AssetManagerFontStyleSet::matchStyle(const SkFontStyle& pattern) { return SkRef(assets_[0].typeface.get()); } +AssetManagerFontStyleSet::TypefaceAsset::TypefaceAsset(std::string a) + : asset(std::move(a)) {} + +AssetManagerFontStyleSet::TypefaceAsset::TypefaceAsset( + const AssetManagerFontStyleSet::TypefaceAsset& other) = default; + +AssetManagerFontStyleSet::TypefaceAsset::~TypefaceAsset() = default; + } // namespace blink diff --git a/lib/ui/text/asset_manager_font_provider.h b/lib/ui/text/asset_manager_font_provider.h index 785ff66700907..d55cf71e3bd93 100644 --- a/lib/ui/text/asset_manager_font_provider.h +++ b/lib/ui/text/asset_manager_font_provider.h @@ -42,7 +42,12 @@ class AssetManagerFontStyleSet : public SkFontStyleSet { std::shared_ptr asset_manager_; struct TypefaceAsset { - TypefaceAsset(std::string a) : asset(std::move(a)) {} + TypefaceAsset(std::string a); + + TypefaceAsset(const TypefaceAsset& other); + + ~TypefaceAsset(); + std::string asset; sk_sp typeface; }; diff --git a/lib/ui/text/paragraph.h b/lib/ui/text/paragraph.h index f5648440fe65b..15df77310c17a 100644 --- a/lib/ui/text/paragraph.h +++ b/lib/ui/text/paragraph.h @@ -49,7 +49,7 @@ class Paragraph : public RefCountedDartWrappable { Dart_Handle getPositionForOffset(double dx, double dy); Dart_Handle getWordBoundary(unsigned offset); - virtual size_t GetAllocationSize() override; + size_t GetAllocationSize() override; static void RegisterNatives(tonic::DartLibraryNatives* natives); diff --git a/lib/ui/ui_dart_state.h b/lib/ui/ui_dart_state.h index 80758ae0c27ec..9d45cf479dc5b 100644 --- a/lib/ui/ui_dart_state.h +++ b/lib/ui/ui_dart_state.h @@ -61,7 +61,7 @@ class UIDartState : public tonic::DartState { if (!object) { return {}; } - auto state = UIDartState::Current(); + auto* state = UIDartState::Current(); FML_DCHECK(state); auto queue = state->GetSkiaUnrefQueue(); return {std::move(object), std::move(queue)}; diff --git a/lib/ui/window/viewport_metrics.cc b/lib/ui/window/viewport_metrics.cc new file mode 100644 index 0000000000000..1047b3e4da1cf --- /dev/null +++ b/lib/ui/window/viewport_metrics.cc @@ -0,0 +1,35 @@ +// 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/lib/ui/window/viewport_metrics.h" + +namespace blink { +ViewportMetrics::ViewportMetrics() = default; + +ViewportMetrics::ViewportMetrics(double p_device_pixel_ratio, + double p_physical_width, + double p_physical_height, + double p_physical_padding_top, + double p_physical_padding_right, + double p_physical_padding_bottom, + double p_physical_padding_left, + double p_physical_view_inset_top, + double p_physical_view_inset_right, + double p_physical_view_inset_bottom, + double p_physical_view_inset_left) + : device_pixel_ratio(p_device_pixel_ratio), + physical_width(p_physical_width), + physical_height(p_physical_height), + physical_padding_top(p_physical_padding_top), + physical_padding_right(p_physical_padding_right), + physical_padding_bottom(p_physical_padding_bottom), + physical_padding_left(p_physical_padding_left), + physical_view_inset_top(p_physical_view_inset_top), + physical_view_inset_right(p_physical_view_inset_right), + physical_view_inset_bottom(p_physical_view_inset_bottom), + physical_view_inset_left(p_physical_view_inset_left) {} + +ViewportMetrics::ViewportMetrics(const ViewportMetrics& other) = default; + +} // namespace blink diff --git a/lib/ui/window/viewport_metrics.h b/lib/ui/window/viewport_metrics.h index 41fe229a5a396..c4daa9ebe7192 100644 --- a/lib/ui/window/viewport_metrics.h +++ b/lib/ui/window/viewport_metrics.h @@ -10,6 +10,22 @@ namespace blink { struct ViewportMetrics { + ViewportMetrics(); + + ViewportMetrics(double p_device_pixel_ratio, + double p_physical_width, + double p_physical_height, + double p_physical_padding_top, + double p_physical_padding_right, + double p_physical_padding_bottom, + double p_physical_padding_left, + double p_physical_view_inset_top, + double p_physical_view_inset_right, + double p_physical_view_inset_bottom, + double p_physical_view_inset_left); + + ViewportMetrics(const ViewportMetrics& other); + double device_pixel_ratio = 1.0; double physical_width = 0; double physical_height = 0; diff --git a/runtime/dart_isolate.cc b/runtime/dart_isolate.cc index c443e7b2eb5e6..ee480a68ba6b5 100644 --- a/runtime/dart_isolate.cc +++ b/runtime/dart_isolate.cc @@ -152,7 +152,7 @@ bool DartIsolate::Initialize(Dart_Isolate dart_isolate, bool is_root_isolate) { return false; } - auto isolate_data = static_cast*>( + auto* isolate_data = static_cast*>( Dart_IsolateData(dart_isolate)); if (isolate_data->get() != this) { return false; @@ -620,7 +620,7 @@ DartIsolate::CreateDartVMAndEmbedderObjectPair( DartVM* const vm = (*embedder_isolate)->GetDartVM(); if (!is_root_isolate) { - auto raw_embedder_isolate = embedder_isolate.release(); + auto* raw_embedder_isolate = embedder_isolate.release(); blink::TaskRunners null_task_runners(advisory_script_uri, nullptr, nullptr, nullptr, nullptr); @@ -730,4 +730,13 @@ void DartIsolate::AddIsolateShutdownCallback(fml::closure closure) { std::make_unique(std::move(closure))); } +DartIsolate::AutoFireClosure::AutoFireClosure(fml::closure closure) + : closure_(std::move(closure)) {} + +DartIsolate::AutoFireClosure::~AutoFireClosure() { + if (closure_) { + closure_(); + } +} + } // namespace blink diff --git a/runtime/dart_isolate.h b/runtime/dart_isolate.h index 1eba6219c0d90..86fce82aaf3b2 100644 --- a/runtime/dart_isolate.h +++ b/runtime/dart_isolate.h @@ -98,12 +98,9 @@ class DartIsolate : public UIDartState { class AutoFireClosure { public: - AutoFireClosure(fml::closure closure) : closure_(std::move(closure)) {} - ~AutoFireClosure() { - if (closure_) { - closure_(); - } - } + AutoFireClosure(fml::closure closure); + + ~AutoFireClosure(); private: fml::closure closure_; diff --git a/runtime/dart_vm.cc b/runtime/dart_vm.cc index 55e37f9dd3db3..4c3f67c9f6ff6 100644 --- a/runtime/dart_vm.cc +++ b/runtime/dart_vm.cc @@ -313,7 +313,7 @@ DartVM::DartVM(const Settings& settings, // it does not recognize, it exits immediately. args.push_back("--ignore-unrecognized-flags"); - for (const auto& profiler_flag : + for (auto* const profiler_flag : ProfilingFlags(settings.enable_dart_profiling)) { args.push_back(profiler_flag); } diff --git a/runtime/runtime_controller.cc b/runtime/runtime_controller.cc index 6af501054e586..0beacff828fcd 100644 --- a/runtime/runtime_controller.cc +++ b/runtime/runtime_controller.cc @@ -75,7 +75,7 @@ RuntimeController::RuntimeController( root_isolate->SetReturnCodeCallback([this](uint32_t code) { root_isolate_return_code_ = {true, code}; }); - if (auto window = GetWindowIfAvailable()) { + if (auto* window = GetWindowIfAvailable()) { tonic::DartState::Scope scope(root_isolate); window->DidCreateIsolate(); if (!FlushRuntimeStateToIsolate()) { @@ -134,7 +134,7 @@ bool RuntimeController::FlushRuntimeStateToIsolate() { bool RuntimeController::SetViewportMetrics(const ViewportMetrics& metrics) { window_data_.viewport_metrics = metrics; - if (auto window = GetWindowIfAvailable()) { + if (auto* window = GetWindowIfAvailable()) { window->UpdateWindowMetrics(metrics); return true; } @@ -145,7 +145,7 @@ bool RuntimeController::SetLocales( const std::vector& locale_data) { window_data_.locale_data = locale_data; - if (auto window = GetWindowIfAvailable()) { + if (auto* window = GetWindowIfAvailable()) { window->UpdateLocales(locale_data); return true; } @@ -155,7 +155,7 @@ bool RuntimeController::SetLocales( bool RuntimeController::SetUserSettingsData(const std::string& data) { window_data_.user_settings_data = data; - if (auto window = GetWindowIfAvailable()) { + if (auto* window = GetWindowIfAvailable()) { window->UpdateUserSettingsData(window_data_.user_settings_data); return true; } @@ -166,7 +166,7 @@ bool RuntimeController::SetUserSettingsData(const std::string& data) { bool RuntimeController::SetSemanticsEnabled(bool enabled) { window_data_.semantics_enabled = enabled; - if (auto window = GetWindowIfAvailable()) { + if (auto* window = GetWindowIfAvailable()) { window->UpdateSemanticsEnabled(window_data_.semantics_enabled); return true; } @@ -176,7 +176,7 @@ bool RuntimeController::SetSemanticsEnabled(bool enabled) { bool RuntimeController::SetAccessibilityFeatures(int32_t flags) { window_data_.accessibility_feature_flags_ = flags; - if (auto window = GetWindowIfAvailable()) { + if (auto* window = GetWindowIfAvailable()) { window->UpdateAccessibilityFeatures( window_data_.accessibility_feature_flags_); return true; @@ -186,7 +186,7 @@ bool RuntimeController::SetAccessibilityFeatures(int32_t flags) { } bool RuntimeController::BeginFrame(fml::TimePoint frame_time) { - if (auto window = GetWindowIfAvailable()) { + if (auto* window = GetWindowIfAvailable()) { window->BeginFrame(frame_time); return true; } @@ -206,7 +206,7 @@ bool RuntimeController::NotifyIdle(int64_t deadline) { bool RuntimeController::DispatchPlatformMessage( fml::RefPtr message) { - if (auto window = GetWindowIfAvailable()) { + if (auto* window = GetWindowIfAvailable()) { TRACE_EVENT1("flutter", "RuntimeController::DispatchPlatformMessage", "mode", "basic"); window->DispatchPlatformMessage(std::move(message)); @@ -217,7 +217,7 @@ bool RuntimeController::DispatchPlatformMessage( bool RuntimeController::DispatchPointerDataPacket( const PointerDataPacket& packet) { - if (auto window = GetWindowIfAvailable()) { + if (auto* window = GetWindowIfAvailable()) { TRACE_EVENT1("flutter", "RuntimeController::DispatchPointerDataPacket", "mode", "basic"); window->DispatchPointerDataPacket(packet); @@ -231,7 +231,7 @@ bool RuntimeController::DispatchSemanticsAction(int32_t id, std::vector args) { TRACE_EVENT1("flutter", "RuntimeController::DispatchSemanticsAction", "mode", "basic"); - if (auto window = GetWindowIfAvailable()) { + if (auto* window = GetWindowIfAvailable()) { window->DispatchSemanticsAction(id, action, std::move(args)); return true; } @@ -310,4 +310,21 @@ std::pair RuntimeController::GetRootIsolateReturnCode() { return root_isolate_return_code_; } +RuntimeController::Locale::Locale(std::string language_code_, + std::string country_code_, + std::string script_code_, + std::string variant_code_) + : language_code(language_code_), + country_code(country_code_), + script_code(script_code_), + variant_code(variant_code_) {} + +RuntimeController::Locale::~Locale() = default; + +RuntimeController::WindowData::WindowData() = default; + +RuntimeController::WindowData::WindowData(const WindowData& other) = default; + +RuntimeController::WindowData::~WindowData() = default; + } // namespace blink diff --git a/runtime/runtime_controller.h b/runtime/runtime_controller.h index b9b4e7ddb52b9..97941e3a16ac2 100644 --- a/runtime/runtime_controller.h +++ b/runtime/runtime_controller.h @@ -38,7 +38,7 @@ class RuntimeController final : public WindowClient { std::string advisory_script_uri, std::string advisory_script_entrypoint); - ~RuntimeController(); + ~RuntimeController() override; std::unique_ptr Clone() const; @@ -83,11 +83,9 @@ class RuntimeController final : public WindowClient { Locale(std::string language_code_, std::string country_code_, std::string script_code_, - std::string variant_code_) - : language_code(language_code_), - country_code(country_code_), - script_code(script_code_), - variant_code(variant_code_) {} + std::string variant_code_); + + ~Locale(); std::string language_code; std::string country_code; @@ -96,6 +94,12 @@ class RuntimeController final : public WindowClient { }; struct WindowData { + WindowData(); + + WindowData(const WindowData& other); + + ~WindowData(); + ViewportMetrics viewport_metrics; std::string language_code; std::string country_code; diff --git a/runtime/service_protocol.cc b/runtime/service_protocol.cc index 25a52f72f87aa..b25a47f3787b0 100644 --- a/runtime/service_protocol.cc +++ b/runtime/service_protocol.cc @@ -177,7 +177,7 @@ bool ServiceProtocol::HandleMessage(fml::StringView method, // Find the handler by its "viewId" in the params. auto view_id_param_found = params.find(fml::StringView{"viewId"}); if (view_id_param_found != params.end()) { - auto handler = reinterpret_cast(std::stoull( + auto* handler = reinterpret_cast(std::stoull( view_id_param_found->second.data() + kViewIdPrefx.size(), nullptr, 16)); auto handler_found = handlers_.find(handler); if (handler_found != handlers_.end()) { @@ -239,7 +239,7 @@ bool ServiceProtocol::HandleListViewsMethod( // Collect handler descriptions on their respective task runners. std::lock_guard lock(handlers_mutex_); std::vector> descriptions; - for (const auto& handler : handlers_) { + for (auto* const handler : handlers_) { fml::AutoResetWaitableEvent latch; Handler::Description description; diff --git a/shell/common/rasterizer.cc b/shell/common/rasterizer.cc index e2274c9a51280..9f3317912e5fa 100644 --- a/shell/common/rasterizer.cc +++ b/shell/common/rasterizer.cc @@ -164,9 +164,9 @@ bool Rasterizer::DrawToSurface(flow::LayerTree& layer_tree) { // for instrumentation. compositor_context_->engine_time().SetLapTime(layer_tree.construction_time()); - auto canvas = frame->SkiaCanvas(); + auto* canvas = frame->SkiaCanvas(); - auto external_view_embedder = surface_->GetExternalViewEmbedder(); + auto* external_view_embedder = surface_->GetExternalViewEmbedder(); if (external_view_embedder != nullptr) { external_view_embedder->BeginFrame(layer_tree.frame_size()); @@ -253,7 +253,7 @@ static sk_sp ScreenshotLayerTreeAsImage( } // Draw the current layer tree into the snapshot surface. - auto canvas = snapshot_surface->getCanvas(); + auto* canvas = snapshot_surface->getCanvas(); // There is no root surface transformation for the screenshot layer. Reset the // matrix to identity. @@ -299,7 +299,7 @@ static sk_sp ScreenshotLayerTreeAsImage( Rasterizer::Screenshot Rasterizer::ScreenshotLastLayerTree( Rasterizer::ScreenshotType type, bool base64_encode) { - auto layer_tree = GetLastLayerTree(); + auto* layer_tree = GetLastLayerTree(); if (layer_tree == nullptr) { FML_LOG(ERROR) << "Last layer tree was null when screenshotting."; return {}; @@ -352,4 +352,13 @@ void Rasterizer::FireNextFrameCallbackIfPresent() { callback(); } +Rasterizer::Screenshot::Screenshot() {} + +Rasterizer::Screenshot::Screenshot(sk_sp p_data, SkISize p_size) + : data(std::move(p_data)), frame_size(p_size) {} + +Rasterizer::Screenshot::Screenshot(const Screenshot& other) = default; + +Rasterizer::Screenshot::~Screenshot() = default; + } // namespace shell diff --git a/shell/common/rasterizer.h b/shell/common/rasterizer.h index 4a7ca3a5cb847..cf02e795b15eb 100644 --- a/shell/common/rasterizer.h +++ b/shell/common/rasterizer.h @@ -54,10 +54,13 @@ class Rasterizer final : public blink::SnapshotDelegate { sk_sp data; SkISize frame_size = SkISize::MakeEmpty(); - Screenshot() {} + Screenshot(); - Screenshot(sk_sp p_data, SkISize p_size) - : data(std::move(p_data)), frame_size(p_size) {} + Screenshot(sk_sp p_data, SkISize p_size); + + Screenshot(const Screenshot& other); + + ~Screenshot(); }; Screenshot ScreenshotLastLayerTree(ScreenshotType type, bool base64_encode); diff --git a/shell/common/shell.cc b/shell/common/shell.cc index c27525a609f45..bc948f638191a 100644 --- a/shell/common/shell.cc +++ b/shell/common/shell.cc @@ -588,7 +588,7 @@ void Shell::OnPlatformViewRegisterTexture( task_runners_.GetGPUTaskRunner()->PostTask( [rasterizer = rasterizer_->GetWeakPtr(), texture] { if (rasterizer) { - if (auto registry = rasterizer->GetTextureRegistry()) { + if (auto* registry = rasterizer->GetTextureRegistry()) { registry->RegisterTexture(texture); } } @@ -603,7 +603,7 @@ void Shell::OnPlatformViewUnregisterTexture(int64_t texture_id) { task_runners_.GetGPUTaskRunner()->PostTask( [rasterizer = rasterizer_->GetWeakPtr(), texture_id]() { if (rasterizer) { - if (auto registry = rasterizer->GetTextureRegistry()) { + if (auto* registry = rasterizer->GetTextureRegistry()) { registry->UnregisterTexture(texture_id); } } @@ -618,7 +618,7 @@ void Shell::OnPlatformViewMarkTextureFrameAvailable(int64_t texture_id) { // Tell the rasterizer that one of its textures has a new frame available. task_runners_.GetGPUTaskRunner()->PostTask( [rasterizer = rasterizer_->GetWeakPtr(), texture_id]() { - auto registry = rasterizer->GetTextureRegistry(); + auto* registry = rasterizer->GetTextureRegistry(); if (!registry) { return; diff --git a/shell/common/thread_host.cc b/shell/common/thread_host.cc index 1845a3c529afb..d8a2a73006eb4 100644 --- a/shell/common/thread_host.cc +++ b/shell/common/thread_host.cc @@ -8,6 +8,8 @@ namespace shell { ThreadHost::ThreadHost() = default; +ThreadHost::ThreadHost(ThreadHost&&) = default; + ThreadHost::ThreadHost(std::string name_prefix, uint64_t mask) { if (mask & ThreadHost::Type::Platform) { platform_thread = std::make_unique(name_prefix + ".platform"); diff --git a/shell/common/thread_host.h b/shell/common/thread_host.h index a0a6875b39878..9e09603095644 100644 --- a/shell/common/thread_host.h +++ b/shell/common/thread_host.h @@ -27,7 +27,7 @@ struct ThreadHost { ThreadHost(); - ThreadHost(ThreadHost&&) = default; + ThreadHost(ThreadHost&&); ThreadHost& operator=(ThreadHost&&) = default; diff --git a/shell/gpu/gpu_surface_gl.cc b/shell/gpu/gpu_surface_gl.cc index d7c014382f696..d0ff74ffb6e24 100644 --- a/shell/gpu/gpu_surface_gl.cc +++ b/shell/gpu/gpu_surface_gl.cc @@ -368,4 +368,27 @@ bool GPUSurfaceGL::MakeRenderContextCurrent() { return delegate_->GLContextMakeCurrent(); } +bool GPUSurfaceGLDelegate::GLContextFBOResetAfterPresent() const { + return false; +} + +bool GPUSurfaceGLDelegate::UseOffscreenSurface() const { + return false; +} + +SkMatrix GPUSurfaceGLDelegate::GLContextSurfaceTransformation() const { + SkMatrix matrix; + matrix.setIdentity(); + return matrix; +} + +flow::ExternalViewEmbedder* GPUSurfaceGLDelegate::GetExternalViewEmbedder() { + return nullptr; +} + +GPUSurfaceGLDelegate::GLProcResolver GPUSurfaceGLDelegate::GetGLProcResolver() + const { + return nullptr; +} + } // namespace shell diff --git a/shell/gpu/gpu_surface_gl.h b/shell/gpu/gpu_surface_gl.h index 28c22d6a72e8d..a268e6d28020f 100644 --- a/shell/gpu/gpu_surface_gl.h +++ b/shell/gpu/gpu_surface_gl.h @@ -26,23 +26,17 @@ class GPUSurfaceGLDelegate { virtual intptr_t GLContextFBO() const = 0; - virtual bool GLContextFBOResetAfterPresent() const { return false; } + virtual bool GLContextFBOResetAfterPresent() const; - virtual bool UseOffscreenSurface() const { return false; } + virtual bool UseOffscreenSurface() const; - virtual SkMatrix GLContextSurfaceTransformation() const { - SkMatrix matrix; - matrix.setIdentity(); - return matrix; - } + virtual SkMatrix GLContextSurfaceTransformation() const; - virtual flow::ExternalViewEmbedder* GetExternalViewEmbedder() { - return nullptr; - } + virtual flow::ExternalViewEmbedder* GetExternalViewEmbedder(); using GLProcResolver = std::function; - virtual GLProcResolver GetGLProcResolver() const { return nullptr; } + virtual GLProcResolver GetGLProcResolver() const; }; class GPUSurfaceGL : public Surface { diff --git a/shell/platform/android/android_external_texture_gl.h b/shell/platform/android/android_external_texture_gl.h index 7ac9ce82b3516..09a56766e2a8f 100644 --- a/shell/platform/android/android_external_texture_gl.h +++ b/shell/platform/android/android_external_texture_gl.h @@ -19,13 +19,11 @@ class AndroidExternalTextureGL : public flow::Texture { ~AndroidExternalTextureGL() override; - virtual void Paint(SkCanvas& canvas, - const SkRect& bounds, - bool freeze) override; + void Paint(SkCanvas& canvas, const SkRect& bounds, bool freeze) override; - virtual void OnGrContextCreated() override; + void OnGrContextCreated() override; - virtual void OnGrContextDestroyed() override; + void OnGrContextDestroyed() override; void MarkNewFrameAvailable() override; diff --git a/shell/platform/android/apk_asset_provider.h b/shell/platform/android/apk_asset_provider.h index bb8215a191a28..be41a685ebfeb 100644 --- a/shell/platform/android/apk_asset_provider.h +++ b/shell/platform/android/apk_asset_provider.h @@ -19,7 +19,7 @@ class APKAssetProvider final : public AssetResolver { explicit APKAssetProvider(JNIEnv* env, jobject assetManager, std::string directory); - virtual ~APKAssetProvider(); + ~APKAssetProvider() override; private: fml::jni::ScopedJavaGlobalRef java_asset_manager_; diff --git a/shell/platform/android/platform_message_response_android.cc b/shell/platform/android/platform_message_response_android.cc index d87e1a6237d22..eb88a6a5840bb 100644 --- a/shell/platform/android/platform_message_response_android.cc +++ b/shell/platform/android/platform_message_response_android.cc @@ -17,6 +17,8 @@ PlatformMessageResponseAndroid::PlatformMessageResponseAndroid( weak_java_object_(weak_java_object), platform_task_runner_(std::move(platform_task_runner)) {} +PlatformMessageResponseAndroid::~PlatformMessageResponseAndroid() = default; + // |blink::PlatformMessageResponse| void PlatformMessageResponseAndroid::Complete( std::unique_ptr data) { @@ -27,7 +29,7 @@ void PlatformMessageResponseAndroid::Complete( ]() { // We are on the platform thread. Attempt to get the strong reference to // the Java object. - auto env = fml::jni::AttachCurrentThread(); + auto* env = fml::jni::AttachCurrentThread(); auto java_object = weak_java_object.get(env); if (java_object.is_null()) { @@ -57,7 +59,7 @@ void PlatformMessageResponseAndroid::CompleteEmpty() { ]() { // We are on the platform thread. Attempt to get the strong reference to // the Java object. - auto env = fml::jni::AttachCurrentThread(); + auto* env = fml::jni::AttachCurrentThread(); auto java_object = weak_java_object.get(env); if (java_object.is_null()) { diff --git a/shell/platform/android/platform_message_response_android.h b/shell/platform/android/platform_message_response_android.h index 71b080cc3348c..f3d79c1aa4faf 100644 --- a/shell/platform/android/platform_message_response_android.h +++ b/shell/platform/android/platform_message_response_android.h @@ -26,6 +26,8 @@ class PlatformMessageResponseAndroid : public blink::PlatformMessageResponse { fml::jni::JavaObjectWeakGlobalRef weak_java_object, fml::RefPtr platform_task_runner); + ~PlatformMessageResponseAndroid() override; + int response_id_; fml::jni::JavaObjectWeakGlobalRef weak_java_object_; fml::RefPtr platform_task_runner_; diff --git a/shell/platform/android/platform_view_android_jni.cc b/shell/platform/android/platform_view_android_jni.cc index a829e25f16654..be42414b6c9be 100644 --- a/shell/platform/android/platform_view_android_jni.cc +++ b/shell/platform/android/platform_view_android_jni.cc @@ -329,19 +329,18 @@ static void SetViewportMetrics(JNIEnv* env, jint physicalViewInsetRight, jint physicalViewInsetBottom, jint physicalViewInsetLeft) { - const blink::ViewportMetrics metrics = { - .device_pixel_ratio = static_cast(devicePixelRatio), - .physical_width = static_cast(physicalWidth), - .physical_height = static_cast(physicalHeight), - .physical_padding_top = static_cast(physicalPaddingTop), - .physical_padding_right = static_cast(physicalPaddingRight), - .physical_padding_bottom = static_cast(physicalPaddingBottom), - .physical_padding_left = static_cast(physicalPaddingLeft), - .physical_view_inset_top = static_cast(physicalViewInsetTop), - .physical_view_inset_right = static_cast(physicalViewInsetRight), - .physical_view_inset_bottom = - static_cast(physicalViewInsetBottom), - .physical_view_inset_left = static_cast(physicalViewInsetLeft), + const blink::ViewportMetrics metrics{ + static_cast(devicePixelRatio), + static_cast(physicalWidth), + static_cast(physicalHeight), + static_cast(physicalPaddingTop), + static_cast(physicalPaddingRight), + static_cast(physicalPaddingBottom), + static_cast(physicalPaddingLeft), + static_cast(physicalViewInsetTop), + static_cast(physicalViewInsetRight), + static_cast(physicalViewInsetBottom), + static_cast(physicalViewInsetLeft), }; ANDROID_SHELL_HOLDER->SetViewportMetrics(metrics); @@ -366,7 +365,7 @@ static jobject GetBitmap(JNIEnv* env, jobject jcaller, jlong shell_holder) { return nullptr; } - auto pixels_src = static_cast(screenshot.data->data()); + auto* pixels_src = static_cast(screenshot.data->data()); // Our configuration of Skia does not support rendering to the // BitmapConfig.ARGB_8888 format expected by android.graphics.Bitmap. diff --git a/shell/platform/android/vsync_waiter_android.cc b/shell/platform/android/vsync_waiter_android.cc index dc1cb11b3f21e..7d551c71143a8 100644 --- a/shell/platform/android/vsync_waiter_android.cc +++ b/shell/platform/android/vsync_waiter_android.cc @@ -84,7 +84,7 @@ bool VsyncWaiterAndroid::Register(JNIEnv* env) { static void ConsumePendingCallback(jlong java_baton, fml::TimePoint frame_start_time, fml::TimePoint frame_target_time) { - auto weak_this = reinterpret_cast*>(java_baton); + auto* weak_this = reinterpret_cast*>(java_baton); auto shared_this = weak_this->lock(); delete weak_this; diff --git a/shell/platform/darwin/ios/BUILD.gn b/shell/platform/darwin/ios/BUILD.gn index 235dfa054facd..8adbfc627970e 100644 --- a/shell/platform/darwin/ios/BUILD.gn +++ b/shell/platform/darwin/ios/BUILD.gn @@ -62,6 +62,7 @@ shared_library("create_flutter_framework_dylib") { "framework/Source/FlutterPlatformPlugin.h", "framework/Source/FlutterPlatformPlugin.mm", "framework/Source/FlutterPlatformViews_Internal.h", + "framework/Source/FlutterPlatformViews_Internal.mm", "framework/Source/FlutterPlatformViews.mm", "framework/Source/FlutterPluginAppLifeCycleDelegate.mm", "framework/Source/FlutterStandardCodec.mm", diff --git a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h index f6fa9c4a02a97..4173a1ebf6871 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h +++ b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h @@ -32,10 +32,9 @@ class IOSSurface; struct FlutterPlatformViewLayer { FlutterPlatformViewLayer(fml::scoped_nsobject overlay_view, std::unique_ptr ios_surface, - std::unique_ptr surface) - : overlay_view(std::move(overlay_view)), - ios_surface(std::move(ios_surface)), - surface(std::move(surface)){}; + std::unique_ptr surface); + + ~FlutterPlatformViewLayer(); fml::scoped_nsobject overlay_view; std::unique_ptr ios_surface; @@ -44,7 +43,9 @@ struct FlutterPlatformViewLayer { class FlutterPlatformViewsController { public: - FlutterPlatformViewsController() = default; + FlutterPlatformViewsController(); + + ~FlutterPlatformViewsController(); void SetFlutterView(UIView* flutter_view); diff --git a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.mm b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.mm new file mode 100644 index 0000000000000..b6c85c60974fb --- /dev/null +++ b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.mm @@ -0,0 +1,23 @@ +// 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/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h" + +#include "flutter/shell/platform/darwin/ios/ios_surface.h" + +namespace shell { +FlutterPlatformViewLayer::FlutterPlatformViewLayer(fml::scoped_nsobject overlay_view, + std::unique_ptr ios_surface, + std::unique_ptr surface) + : overlay_view(std::move(overlay_view)), + ios_surface(std::move(ios_surface)), + surface(std::move(surface)){}; + +FlutterPlatformViewLayer::~FlutterPlatformViewLayer() = default; + +FlutterPlatformViewsController::FlutterPlatformViewsController() = default; + +FlutterPlatformViewsController::~FlutterPlatformViewsController() = default; + +} // namespace shell diff --git a/shell/platform/darwin/ios/framework/Source/platform_message_response_darwin.h b/shell/platform/darwin/ios/framework/Source/platform_message_response_darwin.h index 48a15dbb36f2a..ee6b929bc9843 100644 --- a/shell/platform/darwin/ios/framework/Source/platform_message_response_darwin.h +++ b/shell/platform/darwin/ios/framework/Source/platform_message_response_darwin.h @@ -20,24 +20,15 @@ namespace shell { class PlatformMessageResponseDarwin : public blink::PlatformMessageResponse { public: - void Complete(std::unique_ptr data) override { - fml::RefPtr self(this); - platform_task_runner_->PostTask(fml::MakeCopyable([self, data = std::move(data)]() mutable { - self->callback_.get()(shell::GetNSDataFromMapping(std::move(data))); - })); - } - - void CompleteEmpty() override { - fml::RefPtr self(this); - platform_task_runner_->PostTask( - fml::MakeCopyable([self]() mutable { self->callback_.get()(nil); })); - } + void Complete(std::unique_ptr data) override; + + void CompleteEmpty() override; private: explicit PlatformMessageResponseDarwin(PlatformMessageResponseCallback callback, - fml::RefPtr platform_task_runner) - : callback_(callback, fml::OwnershipPolicy::Retain), - platform_task_runner_(std::move(platform_task_runner)) {} + fml::RefPtr platform_task_runner); + + ~PlatformMessageResponseDarwin() override; fml::ScopedBlock callback_; fml::RefPtr platform_task_runner_; diff --git a/shell/platform/darwin/ios/framework/Source/platform_message_response_darwin.mm b/shell/platform/darwin/ios/framework/Source/platform_message_response_darwin.mm index 3eb396a8f52df..0d45e4e2ff4e1 100644 --- a/shell/platform/darwin/ios/framework/Source/platform_message_response_darwin.mm +++ b/shell/platform/darwin/ios/framework/Source/platform_message_response_darwin.mm @@ -6,6 +6,25 @@ namespace shell { -// +PlatformMessageResponseDarwin::PlatformMessageResponseDarwin( + PlatformMessageResponseCallback callback, + fml::RefPtr platform_task_runner) + : callback_(callback, fml::OwnershipPolicy::Retain), + platform_task_runner_(std::move(platform_task_runner)) {} + +PlatformMessageResponseDarwin::~PlatformMessageResponseDarwin() = default; + +void PlatformMessageResponseDarwin::Complete(std::unique_ptr data) { + fml::RefPtr self(this); + platform_task_runner_->PostTask(fml::MakeCopyable([self, data = std::move(data)]() mutable { + self->callback_.get()(shell::GetNSDataFromMapping(std::move(data))); + })); +} + +void PlatformMessageResponseDarwin::CompleteEmpty() { + fml::RefPtr self(this); + platform_task_runner_->PostTask( + fml::MakeCopyable([self]() mutable { self->callback_.get()(nil); })); +} } // namespace shell diff --git a/shell/platform/darwin/ios/ios_external_texture_gl.h b/shell/platform/darwin/ios/ios_external_texture_gl.h index 5ff841ba0b1b1..d258234708a0b 100644 --- a/shell/platform/darwin/ios/ios_external_texture_gl.h +++ b/shell/platform/darwin/ios/ios_external_texture_gl.h @@ -18,13 +18,13 @@ class IOSExternalTextureGL : public flow::Texture { ~IOSExternalTextureGL() override; // Called from GPU thread. - virtual void Paint(SkCanvas& canvas, const SkRect& bounds, bool freeze) override; + void Paint(SkCanvas& canvas, const SkRect& bounds, bool freeze) override; - virtual void OnGrContextCreated() override; + void OnGrContextCreated() override; - virtual void OnGrContextDestroyed() override; + void OnGrContextDestroyed() override; - virtual void MarkNewFrameAvailable() override; + void MarkNewFrameAvailable() override; private: NSObject* external_texture_; diff --git a/shell/platform/darwin/ios/ios_surface_gl.h b/shell/platform/darwin/ios/ios_surface_gl.h index 9f7013c29b100..93fcc0f510624 100644 --- a/shell/platform/darwin/ios/ios_surface_gl.h +++ b/shell/platform/darwin/ios/ios_surface_gl.h @@ -63,7 +63,7 @@ class IOSSurfaceGL : public IOSSurface, SkCanvas* CompositeEmbeddedView(int view_id, const flow::EmbeddedViewParams& params) override; // |flow::ExternalViewEmbedder| - virtual bool SubmitFrame(GrContext* context) override; + bool SubmitFrame(GrContext* context) override; private: std::shared_ptr context_; diff --git a/shell/platform/darwin/ios/ios_surface_software.h b/shell/platform/darwin/ios/ios_surface_software.h index 5106bdfb0aa3e..79695b3a2767d 100644 --- a/shell/platform/darwin/ios/ios_surface_software.h +++ b/shell/platform/darwin/ios/ios_surface_software.h @@ -58,7 +58,7 @@ class IOSSurfaceSoftware final : public IOSSurface, SkCanvas* CompositeEmbeddedView(int view_id, const flow::EmbeddedViewParams& params) override; // |flow::ExternalViewEmbedder| - virtual bool SubmitFrame(GrContext* context) override; + bool SubmitFrame(GrContext* context) override; private: fml::scoped_nsobject layer_; diff --git a/shell/platform/darwin/ios/platform_view_ios.h b/shell/platform/darwin/ios/platform_view_ios.h index 6db35651d7f8b..a0d85a7ffd0f9 100644 --- a/shell/platform/darwin/ios/platform_view_ios.h +++ b/shell/platform/darwin/ios/platform_view_ios.h @@ -27,7 +27,7 @@ class PlatformViewIOS final : public PlatformView { public: explicit PlatformViewIOS(PlatformView::Delegate& delegate, blink::TaskRunners task_runners); - ~PlatformViewIOS(); + ~PlatformViewIOS() override; PlatformMessageRouter& GetPlatformMessageRouter(); From 1174193ceb7946d4f6770ac73f6774a995ff58ce Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Tue, 13 Nov 2018 01:22:14 -0500 Subject: [PATCH 0243/1537] Roll src/third_party/skia f04fb3cacbad..1e1ba0e0176f (2 commits) (#6838) https://skia.googlesource.com/skia.git/+log/f04fb3cacbad..1e1ba0e0176f Created with: gclient setdep -r src/third_party/skia@1e1ba0e0176f The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index d3b5ed00ab939..1ae35b20c3227 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'f04fb3cacbad4cfa55519589489bd09b4d960dc5', + 'skia_revision': '1e1ba0e0176f3fe608c28d7d48ad8f8655380c4b', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 7ce410ba8c607..ecdc13e85175b 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 6ef83af8ed9efa6506df1e98866dd46d +Signature: adff62ac063f1ee97f92f3e31ac39767 UNUSED LICENSES: From a68e21430a7bd3fe208f12ef9bb333a1191b4ee1 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Tue, 13 Nov 2018 04:52:15 -0500 Subject: [PATCH 0244/1537] Roll src/third_party/skia 1e1ba0e0176f..9e3109c99ea5 (1 commits) (#6840) https://skia.googlesource.com/skia.git/+log/1e1ba0e0176f..9e3109c99ea5 Created with: gclient setdep -r src/third_party/skia@9e3109c99ea5 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 1ae35b20c3227..a9272c891a565 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '1e1ba0e0176f3fe608c28d7d48ad8f8655380c4b', + 'skia_revision': '9e3109c99ea585cc6f7d2f10ddf33c8211e35d9f', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index ecdc13e85175b..1dd1ea870a19f 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: adff62ac063f1ee97f92f3e31ac39767 +Signature: 6b6b68907ee75a926fd421260301bcc7 UNUSED LICENSES: From 889f41f0db97e6c5d8422f709380ee851370e651 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Tue, 13 Nov 2018 10:02:15 -0500 Subject: [PATCH 0245/1537] Roll src/third_party/skia 9e3109c99ea5..60b6bc3c2950 (1 commits) (#6843) https://skia.googlesource.com/skia.git/+log/9e3109c99ea5..60b6bc3c2950 Created with: gclient setdep -r src/third_party/skia@60b6bc3c2950 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index a9272c891a565..33ab3614244e9 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '9e3109c99ea585cc6f7d2f10ddf33c8211e35d9f', + 'skia_revision': '60b6bc3c295014db4cefbce1898aa64dea756bff', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 1dd1ea870a19f..f04d2f668a74f 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 6b6b68907ee75a926fd421260301bcc7 +Signature: 6b55eb765f0edb85ef21b4864e3aa45c UNUSED LICENSES: From e6d6f18eb6678301e1893f318fa58edb75b105c9 Mon Sep 17 00:00:00 2001 From: Siva Date: Tue, 13 Nov 2018 09:03:58 -0800 Subject: [PATCH 0246/1537] - Roll engine to version f9ebf2129732fd2b606286fdf58e500384b8a0bc (#6839) * - Roll engine to version f9ebf2129732fd2b606286fdf58e500384b8a0bc - Update @pragma directive for some classes in semantics.dart * Update license file. --- DEPS | 2 +- ci/licenses_golden/licenses_third_party | 2 +- lib/ui/semantics.dart | 2 ++ 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 33ab3614244e9..fdd8fd6869e87 100644 --- a/DEPS +++ b/DEPS @@ -31,7 +31,7 @@ vars = { # Dart is: https://github.com/dart-lang/sdk/blob/master/DEPS. # You can use //tools/dart/create_updated_flutter_deps.py to produce # updated revision list of existing dependencies. - 'dart_revision': '9c07fb64c48adb3d6fde50bab6b8b641c5b67683', + 'dart_revision': 'f9ebf2129732fd2b606286fdf58e500384b8a0bc', # WARNING: DO NOT EDIT MANUALLY # The lines between blank lines above and below are generated by a script. See create_updated_flutter_deps.py diff --git a/ci/licenses_golden/licenses_third_party b/ci/licenses_golden/licenses_third_party index 58aef0b77fa54..a06c935614ec2 100644 --- a/ci/licenses_golden/licenses_third_party +++ b/ci/licenses_golden/licenses_third_party @@ -1,4 +1,4 @@ -Signature: fc569d77237ef4247eb7a93bb2c989be +Signature: 688d05f1b8d8726e65b28a27ccc7dfcb UNUSED LICENSES: diff --git a/lib/ui/semantics.dart b/lib/ui/semantics.dart index f7dfffbac5678..9b69b2834f9d4 100644 --- a/lib/ui/semantics.dart +++ b/lib/ui/semantics.dart @@ -550,6 +550,7 @@ class SemanticsFlag { /// /// Once created, the [SemanticsUpdate] objects can be passed to /// [Window.updateSemantics] to update the semantics conveyed to the user. +@pragma('vm:entry-point') class SemanticsUpdateBuilder extends NativeFieldWrapperClass2 { /// Creates an empty [SemanticsUpdateBuilder] object. @pragma('vm:entry-point') @@ -723,6 +724,7 @@ class SemanticsUpdateBuilder extends NativeFieldWrapperClass2 { /// /// Semantics updates can be applied to the system's retained semantics tree /// using the [Window.updateSemantics] method. +@pragma('vm:entry-point') class SemanticsUpdate extends NativeFieldWrapperClass2 { /// This class is created by the engine, and should not be instantiated /// or extended directly. From 6a132f80f44880b4feaadfebe7daf18867bea5fa Mon Sep 17 00:00:00 2001 From: Michael Goderbauer Date: Tue, 13 Nov 2018 09:46:30 -0800 Subject: [PATCH 0247/1537] Fix Windows Engine Bot (#6844) Follow-up to https://github.com/flutter/engine/pull/6833 --- fml/thread_local.cc | 33 +++++++++++++++++++++++++++++++++ fml/thread_local.h | 25 +++++-------------------- 2 files changed, 38 insertions(+), 20 deletions(-) diff --git a/fml/thread_local.cc b/fml/thread_local.cc index 4617f8243c17d..d0afbc00186a0 100644 --- a/fml/thread_local.cc +++ b/fml/thread_local.cc @@ -6,6 +6,8 @@ namespace fml { +#if FML_THREAD_LOCAL_PTHREADS + ThreadLocal::ThreadLocal() : ThreadLocal(nullptr) {} ThreadLocal::ThreadLocal(ThreadLocalDestroyCallback destroy) @@ -33,4 +35,35 @@ ThreadLocal::Box::Box(ThreadLocalDestroyCallback destroy, intptr_t value) ThreadLocal::Box::~Box() = default; +#else // FML_THREAD_LOCAL_PTHREADS + +ThreadLocal::ThreadLocal() : ThreadLocal(nullptr) {} + +ThreadLocal::ThreadLocal(ThreadLocalDestroyCallback destroy) + : destroy_(destroy), value_(0) {} + +void ThreadLocal::Set(intptr_t value) { + if (value_ == value) { + return; + } + + if (value_ != 0 && destroy_) { + destroy_(value_); + } + + value_ = value; +} + +intptr_t ThreadLocal::Get() { + return value_; +} + +ThreadLocal::~ThreadLocal() { + if (value_ != 0 && destroy_) { + destroy_(value_); + } +} + +#endif // FML_THREAD_LOCAL_PTHREADS + } // namespace fml diff --git a/fml/thread_local.h b/fml/thread_local.h index b2d4bdfa774c0..4bf518244a6e9 100644 --- a/fml/thread_local.h +++ b/fml/thread_local.h @@ -101,30 +101,15 @@ class ThreadLocal { class ThreadLocal { public: - ThreadLocal() : ThreadLocal(nullptr) {} - - ThreadLocal(ThreadLocalDestroyCallback destroy) - : destroy_(destroy), value_(0) {} - - void Set(intptr_t value) { - if (value_ == value) { - return; - } + ThreadLocal(); - if (value_ != 0 && destroy_) { - destroy_(value_); - } + ThreadLocal(ThreadLocalDestroyCallback destroy); - value_ = value; - } + void Set(intptr_t value); - intptr_t Get() { return value_; } + intptr_t Get(); - ~ThreadLocal() { - if (value_ != 0 && destroy_) { - destroy_(value_); - } - } + ~ThreadLocal(); private: ThreadLocalDestroyCallback destroy_; From 4e89aa221bd05b9ec35f250d5f7f210cfeb14bb7 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Tue, 13 Nov 2018 13:22:17 -0500 Subject: [PATCH 0248/1537] Roll src/third_party/skia 60b6bc3c2950..abde1adc5f0c (6 commits) (#6845) https://skia.googlesource.com/skia.git/+log/60b6bc3c2950..abde1adc5f0c Created with: gclient setdep -r src/third_party/skia@abde1adc5f0c The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index fdd8fd6869e87..653922b7c87c5 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '60b6bc3c295014db4cefbce1898aa64dea756bff', + 'skia_revision': 'abde1adc5f0cb18bb17b3281108c521325a1116a', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index f04d2f668a74f..54fdd956024b5 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 6b55eb765f0edb85ef21b4864e3aa45c +Signature: c4e7b4f8a81112a90807c1aaaf44d004 UNUSED LICENSES: From 71ade827814887cc4da9bed1e18e7d8f58886a71 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Tue, 13 Nov 2018 16:42:14 -0500 Subject: [PATCH 0249/1537] Roll src/third_party/skia abde1adc5f0c..14b9f537c5ee (9 commits) (#6846) https://skia.googlesource.com/skia.git/+log/abde1adc5f0c..14b9f537c5ee Created with: gclient setdep -r src/third_party/skia@14b9f537c5ee The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 653922b7c87c5..5abf85221e910 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'abde1adc5f0cb18bb17b3281108c521325a1116a', + 'skia_revision': '14b9f537c5ee92044a264a87f93495426b848437', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 54fdd956024b5..b0f4beeb61237 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: c4e7b4f8a81112a90807c1aaaf44d004 +Signature: acce6a16686bcb1848d41bfb833dde5a UNUSED LICENSES: @@ -1313,6 +1313,7 @@ FILE: ../../../third_party/skia/gm/crbug_847759.cpp FILE: ../../../third_party/skia/gm/crbug_884166.cpp FILE: ../../../third_party/skia/gm/crbug_887103.cpp FILE: ../../../third_party/skia/gm/drawimageset.cpp +FILE: ../../../third_party/skia/gm/fwidth_squircle.cpp FILE: ../../../third_party/skia/gm/gradients_degenerate.cpp FILE: ../../../third_party/skia/gm/hugepath.cpp FILE: ../../../third_party/skia/gm/localmatrixshader.cpp From 0d0287780e022e490d8dd19410d5ff4b9df655e1 Mon Sep 17 00:00:00 2001 From: Dan Field Date: Tue, 13 Nov 2018 16:04:09 -0800 Subject: [PATCH 0250/1537] Avoid a never-disappearing splash screen if the engine came from somewhere else on iOS (#6834) * Ignore multiple attemps to set splash screen, print warning --- .../ios/framework/Source/FlutterViewController.mm | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm b/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm index ceda1dd6c94bc..0cb5b57073f76 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm @@ -344,6 +344,19 @@ - (UIView*)splashScreenFromXib:(NSString*)name { } - (void)setSplashScreenView:(UIView*)view { + if (!view) { + // Special case: user wants to remove the splash screen view. + [self removeSplashScreenViewIfPresent]; + } else if (_splashScreenView) { + FML_LOG(ERROR) << "Attempt to set the FlutterViewController's splash screen multiple times was " + "ignored. The FlutterViewController's splash screen can only be set once. " + "This condition can occur if a running FlutterEngine instance has been " + "passed into the FlutterViewController and a consumer later called " + "[FlutterViewController setSplashScreen:]. Setting the splash screen on a " + "FlutterViewController with an already running engine is not supported, as " + "the rasterizer will already be running by the time the view is shown."; + return; + } _splashScreenView.reset([view retain]); _splashScreenView.get().autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; From 97b62938bdec2d98ea4c5c14ed2bd43dc8d2a8fa Mon Sep 17 00:00:00 2001 From: Siva Date: Tue, 13 Nov 2018 16:18:17 -0800 Subject: [PATCH 0251/1537] Add missing pragma directive. (#6847) --- lib/ui/text.dart | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/ui/text.dart b/lib/ui/text.dart index be0465b048bf5..9655585061974 100644 --- a/lib/ui/text.dart +++ b/lib/ui/text.dart @@ -752,6 +752,7 @@ enum TextDirection { /// A rectangle enclosing a run of text. /// /// This is similar to [Rect] but includes an inherent [TextDirection]. +@pragma('vm:entry-point') class TextBox { /// Creates an object that describes a box containing text. const TextBox.fromLTRBD( From 520746ed9c6bc5108ae213073ac0db287b940cd3 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Tue, 13 Nov 2018 20:02:14 -0500 Subject: [PATCH 0252/1537] Roll src/third_party/skia 14b9f537c5ee..1e00aebd9a45 (5 commits) (#6848) https://skia.googlesource.com/skia.git/+log/14b9f537c5ee..1e00aebd9a45 Created with: gclient setdep -r src/third_party/skia@1e00aebd9a45 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 5abf85221e910..f3067b34f85ab 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '14b9f537c5ee92044a264a87f93495426b848437', + 'skia_revision': '1e00aebd9a457c600979595d5c050521770ef03f', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index b0f4beeb61237..fce9996476437 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: acce6a16686bcb1848d41bfb833dde5a +Signature: daf1c9b7d0575576123e91c273e5c085 UNUSED LICENSES: @@ -5235,6 +5235,7 @@ FILE: ../../../third_party/skia/src/gpu/GrRectanizer.h FILE: ../../../third_party/skia/src/gpu/GrRectanizer_pow2.cpp FILE: ../../../third_party/skia/src/gpu/GrRenderTargetOpList.cpp FILE: ../../../third_party/skia/src/gpu/GrRenderTargetOpList.h +FILE: ../../../third_party/skia/src/gpu/GrVertexWriter.h FILE: ../../../third_party/skia/src/gpu/SkGpuDevice.h FILE: ../../../third_party/skia/src/gpu/SkGr.cpp FILE: ../../../third_party/skia/src/ports/SkDebug_win.cpp From b10b8e899029193b75769ebb7fdec63e87ebb255 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Wed, 14 Nov 2018 02:06:15 -0500 Subject: [PATCH 0253/1537] Roll src/third_party/skia 1e00aebd9a45..b45b53f01cf3 (3 commits) (#6852) https://skia.googlesource.com/skia.git/+log/1e00aebd9a45..b45b53f01cf3 Created with: gclient setdep -r src/third_party/skia@b45b53f01cf3 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index f3067b34f85ab..86fd44e2afbbf 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '1e00aebd9a457c600979595d5c050521770ef03f', + 'skia_revision': 'b45b53f01cf3d883eeb0e01205ec078cbe9ace9a', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index fce9996476437..20f638b783ca0 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: daf1c9b7d0575576123e91c273e5c085 +Signature: 405d06f07ceb7f3e88135c89955e72c6 UNUSED LICENSES: From 1e7e676e4dc402e588866f14f1981ad221653482 Mon Sep 17 00:00:00 2001 From: Michael Goderbauer Date: Tue, 13 Nov 2018 23:31:56 -0800 Subject: [PATCH 0254/1537] Remove unused import (#6854) --- .../io/flutter/plugin/platform/VirtualDisplayController.java | 1 - 1 file changed, 1 deletion(-) diff --git a/shell/platform/android/io/flutter/plugin/platform/VirtualDisplayController.java b/shell/platform/android/io/flutter/plugin/platform/VirtualDisplayController.java index 59f49d3b96152..9985361762bcd 100644 --- a/shell/platform/android/io/flutter/plugin/platform/VirtualDisplayController.java +++ b/shell/platform/android/io/flutter/plugin/platform/VirtualDisplayController.java @@ -6,7 +6,6 @@ import android.annotation.TargetApi; import android.content.Context; -import android.graphics.SurfaceTexture; import android.hardware.display.DisplayManager; import android.hardware.display.VirtualDisplay; import android.os.Build; From 396402f5bd8ac1d89b18cd245aaa9e3103be6967 Mon Sep 17 00:00:00 2001 From: Dan Field Date: Tue, 13 Nov 2018 23:41:56 -0800 Subject: [PATCH 0255/1537] Flush UserSettings to window (#6850) --- lib/ui/hooks.dart | 3 +++ runtime/runtime_controller.cc | 3 ++- testing/dart/window_hooks_integration_test.dart | 6 ++++++ 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/lib/ui/hooks.dart b/lib/ui/hooks.dart index 923662dc41cad..54c5033b40c65 100644 --- a/lib/ui/hooks.dart +++ b/lib/ui/hooks.dart @@ -68,6 +68,9 @@ void _updateLocales(List locales) { @pragma('vm:entry-point') void _updateUserSettingsData(String jsonData) { final Map data = json.decode(jsonData); + if (data.isEmpty) { + return; + } _updateTextScaleFactor(data['textScaleFactor'].toDouble()); _updateAlwaysUse24HourFormat(data['alwaysUse24HourFormat']); } diff --git a/runtime/runtime_controller.cc b/runtime/runtime_controller.cc index 0beacff828fcd..e5b765a35f933 100644 --- a/runtime/runtime_controller.cc +++ b/runtime/runtime_controller.cc @@ -128,7 +128,8 @@ bool RuntimeController::FlushRuntimeStateToIsolate() { return SetViewportMetrics(window_data_.viewport_metrics) && SetLocales(window_data_.locale_data) && SetSemanticsEnabled(window_data_.semantics_enabled) && - SetAccessibilityFeatures(window_data_.accessibility_feature_flags_); + SetAccessibilityFeatures(window_data_.accessibility_feature_flags_) && + SetUserSettingsData(window_data_.user_settings_data); } bool RuntimeController::SetViewportMetrics(const ViewportMetrics& metrics) { diff --git a/testing/dart/window_hooks_integration_test.dart b/testing/dart/window_hooks_integration_test.dart index d6df903eb7076..446f5ac8ab6a5 100644 --- a/testing/dart/window_hooks_integration_test.dart +++ b/testing/dart/window_hooks_integration_test.dart @@ -67,6 +67,12 @@ void main() { window.onTextScaleFactorChanged = originalOnTextScaleFactorChanged; }); + test('updateUserSettings can handle an empty object', () { + // this should now throw. + _updateUserSettingsData('{}'); + expect(true, equals(true)); + }); + test('onMetricsChanged preserves callback zone', () { Zone innerZone; Zone runZone; From 114d33d3caa24d260f15529e1f3f50783cbccd9a Mon Sep 17 00:00:00 2001 From: Dan Field Date: Tue, 13 Nov 2018 23:54:45 -0800 Subject: [PATCH 0256/1537] Set and unset accessibility flags even when re-entrant (#6853) * Make sure to not unset a11y flags on reentrant calls to API --- .../platform/android/io/flutter/view/FlutterView.java | 10 ++++++---- .../ios/framework/Source/FlutterViewController.mm | 10 +++++----- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/shell/platform/android/io/flutter/view/FlutterView.java b/shell/platform/android/io/flutter/view/FlutterView.java index 6b01e3c176504..759b2744cdd6a 100644 --- a/shell/platform/android/io/flutter/view/FlutterView.java +++ b/shell/platform/android/io/flutter/view/FlutterView.java @@ -877,7 +877,9 @@ protected void onAttachedToWindow() { ensureAccessibilityEnabled(); } if (mTouchExplorationEnabled) { - mAccessibilityFeatureFlags ^= AccessibilityFeature.ACCESSIBLE_NAVIGATION.value; + mAccessibilityFeatureFlags |= AccessibilityFeature.ACCESSIBLE_NAVIGATION.value; + } else { + mAccessibilityFeatureFlags &= ~AccessibilityFeature.ACCESSIBLE_NAVIGATION.value; } // Apply additional accessibility settings updateAccessibilityFeatures(); @@ -896,7 +898,7 @@ private void updateAccessibilityFeatures() { String transitionAnimationScale = Settings.Global.getString(getContext().getContentResolver(), Settings.Global.TRANSITION_ANIMATION_SCALE); if (transitionAnimationScale != null && transitionAnimationScale.equals("0")) { - mAccessibilityFeatureFlags ^= AccessibilityFeature.DISABLE_ANIMATIONS.value; + mAccessibilityFeatureFlags |= AccessibilityFeature.DISABLE_ANIMATIONS.value; } else { mAccessibilityFeatureFlags &= ~AccessibilityFeature.DISABLE_ANIMATIONS.value; } @@ -966,7 +968,7 @@ public void onChange(boolean selfChange, Uri uri) { String value = Settings.Global.getString(getContext().getContentResolver(), Settings.Global.TRANSITION_ANIMATION_SCALE); if (value != null && value.equals("0")) { - mAccessibilityFeatureFlags ^= AccessibilityFeature.DISABLE_ANIMATIONS.value; + mAccessibilityFeatureFlags |= AccessibilityFeature.DISABLE_ANIMATIONS.value; } else { mAccessibilityFeatureFlags &= ~AccessibilityFeature.DISABLE_ANIMATIONS.value; } @@ -980,7 +982,7 @@ public void onTouchExplorationStateChanged(boolean enabled) { if (enabled) { mTouchExplorationEnabled = true; ensureAccessibilityEnabled(); - mAccessibilityFeatureFlags ^= AccessibilityFeature.ACCESSIBLE_NAVIGATION.value; + mAccessibilityFeatureFlags |= AccessibilityFeature.ACCESSIBLE_NAVIGATION.value; nativeSetAccessibilityFeatures(mNativeView.get(), mAccessibilityFeatureFlags); } else { mTouchExplorationEnabled = false; diff --git a/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm b/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm index 0cb5b57073f76..80e03e28bd8bf 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm @@ -716,11 +716,11 @@ - (void)onAccessibilityStatusChanged:(NSNotification*)notification { auto platformView = [_engine.get() platformView]; int32_t flags = 0; if (UIAccessibilityIsInvertColorsEnabled()) - flags ^= static_cast(blink::AccessibilityFeatureFlag::kInvertColors); + flags |= static_cast(blink::AccessibilityFeatureFlag::kInvertColors); if (UIAccessibilityIsReduceMotionEnabled()) - flags ^= static_cast(blink::AccessibilityFeatureFlag::kReduceMotion); + flags |= static_cast(blink::AccessibilityFeatureFlag::kReduceMotion); if (UIAccessibilityIsBoldTextEnabled()) - flags ^= static_cast(blink::AccessibilityFeatureFlag::kBoldText); + flags |= static_cast(blink::AccessibilityFeatureFlag::kBoldText); #if TARGET_OS_SIMULATOR // There doesn't appear to be any way to determine whether the accessibility // inspector is enabled on the simulator. We conservatively always turn on the @@ -729,8 +729,8 @@ - (void)onAccessibilityStatusChanged:(NSNotification*)notification { platformView->SetAccessibilityFeatures(flags); #else bool enabled = UIAccessibilityIsVoiceOverRunning() || UIAccessibilityIsSwitchControlRunning(); - if (UIAccessibilityIsVoiceOverRunning() || UIAccessibilityIsSwitchControlRunning()) - flags ^= static_cast(blink::AccessibilityFeatureFlag::kAccessibleNavigation); + if (enabled) + flags |= static_cast(blink::AccessibilityFeatureFlag::kAccessibleNavigation); platformView->SetSemanticsEnabled(enabled || UIAccessibilityIsSpeakScreenEnabled()); platformView->SetAccessibilityFeatures(flags); #endif From 99d848a9986cb376b9858e2b7345fcea6637ff51 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Wed, 14 Nov 2018 09:17:06 -0500 Subject: [PATCH 0257/1537] Roll src/third_party/skia b45b53f01cf3..7f2b6fa66575 (1 commits) (#6855) https://skia.googlesource.com/skia.git/+log/b45b53f01cf3..7f2b6fa66575 Created with: gclient setdep -r src/third_party/skia@7f2b6fa66575 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 86fd44e2afbbf..d41cd22f58332 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'b45b53f01cf3d883eeb0e01205ec078cbe9ace9a', + 'skia_revision': '7f2b6fa6657513e470fa73bebdf4f0230ce8b19f', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 20f638b783ca0..8d5521a5151c4 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 405d06f07ceb7f3e88135c89955e72c6 +Signature: cc6e53aef33a933ab9a127a607117e13 UNUSED LICENSES: From 76522eb280f40bb0eaf6479666f41e980988626c Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Wed, 14 Nov 2018 12:36:05 -0500 Subject: [PATCH 0258/1537] Roll src/third_party/skia 7f2b6fa66575..f152130ef910 (5 commits) (#6856) https://skia.googlesource.com/skia.git/+log/7f2b6fa66575..f152130ef910 Created with: gclient setdep -r src/third_party/skia@f152130ef910 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index d41cd22f58332..ddfc92c8cbf7d 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '7f2b6fa6657513e470fa73bebdf4f0230ce8b19f', + 'skia_revision': 'f152130ef91035557ed2a147da81d54bf0646528', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 8d5521a5151c4..87d89c5e039ff 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: cc6e53aef33a933ab9a127a607117e13 +Signature: 67e957e3ceb06f070aef63b99ecb854f UNUSED LICENSES: From 14ee957fb4d3058f6d13c6237dd97830b7c8c9c7 Mon Sep 17 00:00:00 2001 From: Alexander Aprelev Date: Wed, 14 Nov 2018 09:50:42 -0800 Subject: [PATCH 0259/1537] Set up secondary isolates with all kernel buffers rather than just one buffer. (#6832) * Set up secondary isolates with all kernel buffers rather than just one buffer. * Capture copy of the list * Make sure child_isolate_preparer_ is initialized only once --- runtime/dart_isolate.cc | 19 ++++++++++++++++--- runtime/dart_isolate.h | 2 +- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/runtime/dart_isolate.cc b/runtime/dart_isolate.cc index ee480a68ba6b5..094746b26d0ed 100644 --- a/runtime/dart_isolate.cc +++ b/runtime/dart_isolate.cc @@ -348,9 +348,22 @@ bool DartIsolate::PrepareForRunningFromKernel( return false; } - child_isolate_preparer_ = [mapping](DartIsolate* isolate) { - return isolate->PrepareForRunningFromKernel(mapping); - }; + // Child isolate shares root isolate embedder_isolate (lines 691 and 693 + // below). Re-initializing child_isolate_preparer_ lambda while it is being + // executed leads to crashes. + if (child_isolate_preparer_ == nullptr) { + child_isolate_preparer_ = [buffers = + kernel_buffers_](DartIsolate* isolate) { + for (unsigned long i = 0; i < buffers.size(); i++) { + bool last_piece = i + 1 == buffers.size(); + const std::shared_ptr& buffer = buffers.at(i); + if (!isolate->PrepareForRunningFromKernel(buffer, last_piece)) { + return false; + } + } + return true; + }; + } phase_ = Phase::Ready; return true; } diff --git a/runtime/dart_isolate.h b/runtime/dart_isolate.h index 86fce82aaf3b2..d79cc6c6b6803 100644 --- a/runtime/dart_isolate.h +++ b/runtime/dart_isolate.h @@ -114,7 +114,7 @@ class DartIsolate : public UIDartState { const fml::RefPtr shared_snapshot_; std::vector> kernel_buffers_; std::vector> shutdown_callbacks_; - ChildIsolatePreparer child_isolate_preparer_; + ChildIsolatePreparer child_isolate_preparer_ = nullptr; FML_WARN_UNUSED_RESULT bool Initialize(Dart_Isolate isolate, bool is_root_isolate); From 289de46d3e5598a265e2fd83c1d4004ec8a65f9b Mon Sep 17 00:00:00 2001 From: liyuqian Date: Wed, 14 Nov 2018 10:37:17 -0800 Subject: [PATCH 0260/1537] Return EngineLayer for all SceneBuilder pushXXX (#6814) Most changes are trivial except pushTransform. In pushTransform, matrix4 is an Dart object and it has to be released before we can return a new Dart object (EngineLayer). --- lib/ui/compositing.dart | 72 ++++++++++++------------- lib/ui/compositing/scene_builder.cc | 82 +++++++++++++++++------------ lib/ui/compositing/scene_builder.h | 35 ++++++------ 3 files changed, 103 insertions(+), 86 deletions(-) diff --git a/lib/ui/compositing.dart b/lib/ui/compositing.dart index 038e800dd5eac..a23c2bbbb9d6c 100644 --- a/lib/ui/compositing.dart +++ b/lib/ui/compositing.dart @@ -56,14 +56,14 @@ class SceneBuilder extends NativeFieldWrapperClass2 { /// The objects are transformed by the given matrix before rasterization. /// /// See [pop] for details about the operation stack. - void pushTransform(Float64List matrix4) { + EngineLayer pushTransform(Float64List matrix4) { if (matrix4 == null) throw new ArgumentError('"matrix4" argument cannot be null'); if (matrix4.length != 16) throw new ArgumentError('"matrix4" must have 16 entries.'); - _pushTransform(matrix4); + return _pushTransform(matrix4); } - void _pushTransform(Float64List matrix4) native 'SceneBuilder_pushTransform'; + EngineLayer _pushTransform(Float64List matrix4) native 'SceneBuilder_pushTransform'; /// Pushes an offset operation onto the operation stack. /// @@ -78,16 +78,16 @@ class SceneBuilder extends NativeFieldWrapperClass2 { /// /// See [pop] for details about the operation stack, and [Clip] for different clip modes. /// By default, the clip will be anti-aliased (clip = [Clip.antiAlias]). - void pushClipRect(Rect rect, {Clip clipBehavior = Clip.antiAlias}) { + EngineLayer pushClipRect(Rect rect, {Clip clipBehavior = Clip.antiAlias}) { assert(clipBehavior != null); assert(clipBehavior != Clip.none); - _pushClipRect(rect.left, rect.right, rect.top, rect.bottom, clipBehavior.index); + return _pushClipRect(rect.left, rect.right, rect.top, rect.bottom, clipBehavior.index); } - void _pushClipRect(double left, - double right, - double top, - double bottom, - int clipBehavior) native 'SceneBuilder_pushClipRect'; + EngineLayer _pushClipRect(double left, + double right, + double top, + double bottom, + int clipBehavior) native 'SceneBuilder_pushClipRect'; /// Pushes a rounded-rectangular clip operation onto the operation stack. /// @@ -95,12 +95,12 @@ class SceneBuilder extends NativeFieldWrapperClass2 { /// /// See [pop] for details about the operation stack, and [Clip] for different clip modes. /// By default, the clip will be anti-aliased (clip = [Clip.antiAlias]). - void pushClipRRect(RRect rrect, {Clip clipBehavior = Clip.antiAlias}) { + EngineLayer pushClipRRect(RRect rrect, {Clip clipBehavior = Clip.antiAlias}) { assert(clipBehavior != null); assert(clipBehavior != Clip.none); - _pushClipRRect(rrect._value, clipBehavior.index); + return _pushClipRRect(rrect._value, clipBehavior.index); } - void _pushClipRRect(Float32List rrect, int clipBehavior) native 'SceneBuilder_pushClipRRect'; + EngineLayer _pushClipRRect(Float32List rrect, int clipBehavior) native 'SceneBuilder_pushClipRRect'; /// Pushes a path clip operation onto the operation stack. /// @@ -108,12 +108,12 @@ class SceneBuilder extends NativeFieldWrapperClass2 { /// /// See [pop] for details about the operation stack. See [Clip] for different clip modes. /// By default, the clip will be anti-aliased (clip = [Clip.antiAlias]). - void pushClipPath(Path path, {Clip clipBehavior = Clip.antiAlias}) { + EngineLayer pushClipPath(Path path, {Clip clipBehavior = Clip.antiAlias}) { assert(clipBehavior != null); assert(clipBehavior != Clip.none); - _pushClipPath(path, clipBehavior.index); + return _pushClipPath(path, clipBehavior.index); } - void _pushClipPath(Path path, int clipBehavior) native 'SceneBuilder_pushClipPath'; + EngineLayer _pushClipPath(Path path, int clipBehavior) native 'SceneBuilder_pushClipPath'; /// Pushes an opacity operation onto the operation stack. /// @@ -123,10 +123,10 @@ class SceneBuilder extends NativeFieldWrapperClass2 { /// opacity). /// /// See [pop] for details about the operation stack. - void pushOpacity(int alpha, {Offset offset = Offset.zero}) { - _pushOpacity(alpha, offset.dx, offset.dy); + EngineLayer pushOpacity(int alpha, {Offset offset = Offset.zero}) { + return _pushOpacity(alpha, offset.dx, offset.dy); } - void _pushOpacity(int alpha, double dx, double dy) native 'SceneBuilder_pushOpacity'; + EngineLayer _pushOpacity(int alpha, double dx, double dy) native 'SceneBuilder_pushOpacity'; /// Pushes a color filter operation onto the operation stack. /// @@ -134,10 +134,10 @@ class SceneBuilder extends NativeFieldWrapperClass2 { /// blend mode. /// /// See [pop] for details about the operation stack. - void pushColorFilter(Color color, BlendMode blendMode) { - _pushColorFilter(color.value, blendMode.index); + EngineLayer pushColorFilter(Color color, BlendMode blendMode) { + return _pushColorFilter(color.value, blendMode.index); } - void _pushColorFilter(int color, int blendMode) native 'SceneBuilder_pushColorFilter'; + EngineLayer _pushColorFilter(int color, int blendMode) native 'SceneBuilder_pushColorFilter'; /// Pushes a backdrop filter operation onto the operation stack. /// @@ -145,7 +145,7 @@ class SceneBuilder extends NativeFieldWrapperClass2 { /// rasterizing the given objects. /// /// See [pop] for details about the operation stack. - void pushBackdropFilter(ImageFilter filter) native 'SceneBuilder_pushBackdropFilter'; + EngineLayer pushBackdropFilter(ImageFilter filter) native 'SceneBuilder_pushBackdropFilter'; /// Pushes a shader mask operation onto the operation stack. /// @@ -153,20 +153,20 @@ class SceneBuilder extends NativeFieldWrapperClass2 { /// rectangle using the given blend mode. /// /// See [pop] for details about the operation stack. - void pushShaderMask(Shader shader, Rect maskRect, BlendMode blendMode) { - _pushShaderMask(shader, - maskRect.left, - maskRect.right, - maskRect.top, - maskRect.bottom, - blendMode.index); + EngineLayer pushShaderMask(Shader shader, Rect maskRect, BlendMode blendMode) { + return _pushShaderMask(shader, + maskRect.left, + maskRect.right, + maskRect.top, + maskRect.bottom, + blendMode.index); } - void _pushShaderMask(Shader shader, - double maskRectLeft, - double maskRectRight, - double maskRectTop, - double maskRectBottom, - int blendMode) native 'SceneBuilder_pushShaderMask'; + EngineLayer _pushShaderMask(Shader shader, + double maskRectLeft, + double maskRectRight, + double maskRectTop, + double maskRectBottom, + int blendMode) native 'SceneBuilder_pushShaderMask'; /// Pushes a physical layer operation for an arbitrary shape onto the /// operation stack. diff --git a/lib/ui/compositing/scene_builder.cc b/lib/ui/compositing/scene_builder.cc index 556453f097463..39eabaaba8598 100644 --- a/lib/ui/compositing/scene_builder.cc +++ b/lib/ui/compositing/scene_builder.cc @@ -76,11 +76,15 @@ void SceneBuilder::RegisterNatives(tonic::DartLibraryNatives* natives) { SceneBuilder::SceneBuilder() = default; SceneBuilder::~SceneBuilder() = default; -void SceneBuilder::pushTransform(const tonic::Float64List& matrix4) { +fml::RefPtr SceneBuilder::pushTransform( + tonic::Float64List& matrix4) { SkMatrix sk_matrix = ToSkMatrix(matrix4); - auto layer = std::make_unique(); + auto layer = std::make_shared(); layer->set_transform(sk_matrix); - PushLayer(std::move(layer)); + PushLayer(layer); + // matrix4 has to be released before we can return another Dart object + matrix4.Release(); + return EngineLayer::MakeRetained(layer); } fml::RefPtr SceneBuilder::pushOffset(double dx, double dy) { @@ -91,66 +95,78 @@ fml::RefPtr SceneBuilder::pushOffset(double dx, double dy) { return EngineLayer::MakeRetained(layer); } -void SceneBuilder::pushClipRect(double left, - double right, - double top, - double bottom, - int clipBehavior) { +fml::RefPtr SceneBuilder::pushClipRect(double left, + double right, + double top, + double bottom, + int clipBehavior) { SkRect clipRect = SkRect::MakeLTRB(left, top, right, bottom); flow::Clip clip_behavior = static_cast(clipBehavior); - auto layer = std::make_unique(clip_behavior); + auto layer = std::make_shared(clip_behavior); layer->set_clip_rect(clipRect); - PushLayer(std::move(layer)); + PushLayer(layer); + return EngineLayer::MakeRetained(layer); } -void SceneBuilder::pushClipRRect(const RRect& rrect, int clipBehavior) { +fml::RefPtr SceneBuilder::pushClipRRect(const RRect& rrect, + int clipBehavior) { flow::Clip clip_behavior = static_cast(clipBehavior); - auto layer = std::make_unique(clip_behavior); + auto layer = std::make_shared(clip_behavior); layer->set_clip_rrect(rrect.sk_rrect); - PushLayer(std::move(layer)); + PushLayer(layer); + return EngineLayer::MakeRetained(layer); } -void SceneBuilder::pushClipPath(const CanvasPath* path, int clipBehavior) { +fml::RefPtr SceneBuilder::pushClipPath(const CanvasPath* path, + int clipBehavior) { flow::Clip clip_behavior = static_cast(clipBehavior); FML_DCHECK(clip_behavior != flow::Clip::none); - auto layer = std::make_unique(clip_behavior); + auto layer = std::make_shared(clip_behavior); layer->set_clip_path(path->path()); - PushLayer(std::move(layer)); + PushLayer(layer); + return EngineLayer::MakeRetained(layer); } -void SceneBuilder::pushOpacity(int alpha, double dx, double dy) { - auto layer = std::make_unique(); +fml::RefPtr SceneBuilder::pushOpacity(int alpha, + double dx, + double dy) { + auto layer = std::make_shared(); layer->set_alpha(alpha); layer->set_offset(SkPoint::Make(dx, dy)); - PushLayer(std::move(layer)); + PushLayer(layer); + return EngineLayer::MakeRetained(layer); } -void SceneBuilder::pushColorFilter(int color, int blendMode) { - auto layer = std::make_unique(); +fml::RefPtr SceneBuilder::pushColorFilter(int color, + int blendMode) { + auto layer = std::make_shared(); layer->set_color(static_cast(color)); layer->set_blend_mode(static_cast(blendMode)); - PushLayer(std::move(layer)); + PushLayer(layer); + return EngineLayer::MakeRetained(layer); } -void SceneBuilder::pushBackdropFilter(ImageFilter* filter) { - auto layer = std::make_unique(); +fml::RefPtr SceneBuilder::pushBackdropFilter(ImageFilter* filter) { + auto layer = std::make_shared(); layer->set_filter(filter->filter()); - PushLayer(std::move(layer)); + PushLayer(layer); + return EngineLayer::MakeRetained(layer); } -void SceneBuilder::pushShaderMask(Shader* shader, - double maskRectLeft, - double maskRectRight, - double maskRectTop, - double maskRectBottom, - int blendMode) { +fml::RefPtr SceneBuilder::pushShaderMask(Shader* shader, + double maskRectLeft, + double maskRectRight, + double maskRectTop, + double maskRectBottom, + int blendMode) { SkRect rect = SkRect::MakeLTRB(maskRectLeft, maskRectTop, maskRectRight, maskRectBottom); - auto layer = std::make_unique(); + auto layer = std::make_shared(); layer->set_shader(shader->shader()); layer->set_mask_rect(rect); layer->set_blend_mode(static_cast(blendMode)); - PushLayer(std::move(layer)); + PushLayer(layer); + return EngineLayer::MakeRetained(layer); } fml::RefPtr SceneBuilder::pushPhysicalShape(const CanvasPath* path, diff --git a/lib/ui/compositing/scene_builder.h b/lib/ui/compositing/scene_builder.h index 6b3ba5ed5495c..2f59be6510f4f 100644 --- a/lib/ui/compositing/scene_builder.h +++ b/lib/ui/compositing/scene_builder.h @@ -33,24 +33,25 @@ class SceneBuilder : public RefCountedDartWrappable { ~SceneBuilder() override; - void pushTransform(const tonic::Float64List& matrix4); + fml::RefPtr pushTransform(tonic::Float64List& matrix4); fml::RefPtr pushOffset(double dx, double dy); - void pushClipRect(double left, - double right, - double top, - double bottom, - int clipBehavior); - void pushClipRRect(const RRect& rrect, int clipBehavior); - void pushClipPath(const CanvasPath* path, int clipBehavior); - void pushOpacity(int alpha, double dx = 0, double dy = 0); - void pushColorFilter(int color, int blendMode); - void pushBackdropFilter(ImageFilter* filter); - void pushShaderMask(Shader* shader, - double maskRectLeft, - double maskRectRight, - double maskRectTop, - double maskRectBottom, - int blendMode); + fml::RefPtr pushClipRect(double left, + double right, + double top, + double bottom, + int clipBehavior); + fml::RefPtr pushClipRRect(const RRect& rrect, int clipBehavior); + fml::RefPtr pushClipPath(const CanvasPath* path, + int clipBehavior); + fml::RefPtr pushOpacity(int alpha, double dx = 0, double dy = 0); + fml::RefPtr pushColorFilter(int color, int blendMode); + fml::RefPtr pushBackdropFilter(ImageFilter* filter); + fml::RefPtr pushShaderMask(Shader* shader, + double maskRectLeft, + double maskRectRight, + double maskRectTop, + double maskRectBottom, + int blendMode); fml::RefPtr pushPhysicalShape(const CanvasPath* path, double elevation, int color, From 110a5f320c701313940e1044b1c81885c9169bc2 Mon Sep 17 00:00:00 2001 From: Dan Field Date: Wed, 14 Nov 2018 11:13:39 -0800 Subject: [PATCH 0261/1537] Reset a11y bridge state on hot restart (#6857) --- .../android/io/flutter/view/FlutterNativeView.java | 11 ++++++++--- .../ios/framework/Source/accessibility_bridge.h | 3 ++- .../ios/framework/Source/accessibility_bridge.mm | 6 ++++++ shell/platform/darwin/ios/platform_view_ios.mm | 3 +++ 4 files changed, 19 insertions(+), 4 deletions(-) diff --git a/shell/platform/android/io/flutter/view/FlutterNativeView.java b/shell/platform/android/io/flutter/view/FlutterNativeView.java index 00476172b42ae..bb5e132d46ac6 100644 --- a/shell/platform/android/io/flutter/view/FlutterNativeView.java +++ b/shell/platform/android/io/flutter/view/FlutterNativeView.java @@ -205,7 +205,8 @@ private void handlePlatformMessageResponse(int replyId, byte[] reply) { // Called by native to update the semantics/accessibility tree. private void updateSemantics(ByteBuffer buffer, String[] strings) { - if (mFlutterView == null) return; + if (mFlutterView == null) + return; mFlutterView.updateSemantics(buffer, strings); } @@ -218,13 +219,17 @@ private void updateCustomAccessibilityActions(ByteBuffer buffer, String[] string // Called by native to notify first Flutter frame rendered. private void onFirstFrame() { - if (mFlutterView == null) return; + if (mFlutterView == null) + return; mFlutterView.onFirstFrame(); } - // Called by native to notify when the engine is restarted (cold reload). + // Called by native to notify when the engine is restarted (hot restart). @SuppressWarnings("unused") private void onPreEngineRestart() { + if (mFlutterView != null) { + mFlutterView.resetAccessibilityTree(); + } if (mPluginRegistry == null) return; mPluginRegistry.onPreEngineRestart(); diff --git a/shell/platform/darwin/ios/framework/Source/accessibility_bridge.h b/shell/platform/darwin/ios/framework/Source/accessibility_bridge.h index bcfb5b5c6821b..465abc5035191 100644 --- a/shell/platform/darwin/ios/framework/Source/accessibility_bridge.h +++ b/shell/platform/darwin/ios/framework/Source/accessibility_bridge.h @@ -129,11 +129,12 @@ class AccessibilityBridge final { fml::WeakPtr GetWeakPtr(); + void clearState(); + private: SemanticsObject* GetOrCreateObject(int32_t id, blink::SemanticsNodeUpdates& updates); void VisitObjectsRecursivelyAndRemove(SemanticsObject* object, NSMutableArray* doomed_uids); - void ReleaseObjects(std::unordered_map& objects); void HandleEvent(NSDictionary* annotatedEvent); UIView* view_; diff --git a/shell/platform/darwin/ios/framework/Source/accessibility_bridge.mm b/shell/platform/darwin/ios/framework/Source/accessibility_bridge.mm index 029cfcfd77595..d744e5fc06605 100644 --- a/shell/platform/darwin/ios/framework/Source/accessibility_bridge.mm +++ b/shell/platform/darwin/ios/framework/Source/accessibility_bridge.mm @@ -687,4 +687,10 @@ - (BOOL)accessibilityScroll:(UIAccessibilityScrollDirection)direction { return weak_factory_.GetWeakPtr(); } +void AccessibilityBridge::clearState() { + [objects_ removeAllObjects]; + previous_route_id_ = 0; + previous_routes_.clear(); +} + } // namespace shell diff --git a/shell/platform/darwin/ios/platform_view_ios.mm b/shell/platform/darwin/ios/platform_view_ios.mm index 0f3a1b8ca2467..f3371a9834a53 100644 --- a/shell/platform/darwin/ios/platform_view_ios.mm +++ b/shell/platform/darwin/ios/platform_view_ios.mm @@ -120,6 +120,9 @@ } void PlatformViewIOS::OnPreEngineRestart() const { + if (accessibility_bridge_) { + accessibility_bridge_->clearState(); + } if (!owner_controller_) { return; } From f23862b2594ecd25dbefa485052e1a0e1cad2373 Mon Sep 17 00:00:00 2001 From: Ben Konyi Date: Wed, 14 Nov 2018 11:39:47 -0800 Subject: [PATCH 0262/1537] Added delegate forwarding for didReceiveLocalNotification and willPresentNotification (#6858) --- .../ios/framework/Headers/FlutterPlugin.h | 16 ++++++++++ .../FlutterPluginAppLifeCycleDelegate.h | 15 ++++++++++ .../framework/Source/FlutterAppDelegate.mm | 17 +++++++++++ .../FlutterPluginAppLifeCycleDelegate.mm | 30 +++++++++++++++++++ 4 files changed, 78 insertions(+) diff --git a/shell/platform/darwin/ios/framework/Headers/FlutterPlugin.h b/shell/platform/darwin/ios/framework/Headers/FlutterPlugin.h index e76416b9fbcd5..bc6997f48b2be 100644 --- a/shell/platform/darwin/ios/framework/Headers/FlutterPlugin.h +++ b/shell/platform/darwin/ios/framework/Headers/FlutterPlugin.h @@ -6,6 +6,7 @@ #define FLUTTER_FLUTTERPLUGIN_H_ #import +#import #include "FlutterBinaryMessenger.h" #include "FlutterChannels.h" @@ -116,6 +117,21 @@ NS_ASSUME_NONNULL_BEGIN didReceiveRemoteNotification:(NSDictionary*)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))completionHandler; +/** + * Calls all plugins registered for `UIApplicationDelegate` callbacks. + */ +- (void)application:(UIApplication*)application + didReceiveLocalNotification:(UILocalNotification*)notification; + +/** + * Calls all plugins registered for `UNUserNotificationCenterDelegate` callbacks. + */ +- (void)userNotificationCenter:(UNUserNotificationCenter*)center + willPresentNotification:(UNNotification*)notification + withCompletionHandler: + (void (^)(UNNotificationPresentationOptions options))completionHandler + API_AVAILABLE(ios(10)); + /** * Called if this plugin has been registered for `UIApplicationDelegate` callbacks. * diff --git a/shell/platform/darwin/ios/framework/Headers/FlutterPluginAppLifeCycleDelegate.h b/shell/platform/darwin/ios/framework/Headers/FlutterPluginAppLifeCycleDelegate.h index 36ba12ef2f5d8..a8dda282b56fd 100644 --- a/shell/platform/darwin/ios/framework/Headers/FlutterPluginAppLifeCycleDelegate.h +++ b/shell/platform/darwin/ios/framework/Headers/FlutterPluginAppLifeCycleDelegate.h @@ -85,6 +85,21 @@ FLUTTER_EXPORT didReceiveRemoteNotification:(NSDictionary*)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))completionHandler; +/** + * Calls all plugins registered for `UIApplicationDelegate` callbacks. + */ +- (void)application:(UIApplication*)application + didReceiveLocalNotification:(UILocalNotification*)notification; + +/** + * Calls all plugins registered for `UNUserNotificationCenterDelegate` callbacks. + */ +- (void)userNotificationCenter:(UNUserNotificationCenter*)center + willPresentNotification:(UNNotification*)notification + withCompletionHandler: + (void (^)(UNNotificationPresentationOptions options))completionHandler + API_AVAILABLE(ios(10)); + /** * Calls all plugins registered for `UIApplicationDelegate` callbacks in order of registration until * some plugin handles the request. diff --git a/shell/platform/darwin/ios/framework/Source/FlutterAppDelegate.mm b/shell/platform/darwin/ios/framework/Source/FlutterAppDelegate.mm index 37f0c9e006c2d..f3f1786e4555a 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterAppDelegate.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterAppDelegate.mm @@ -94,6 +94,23 @@ - (void)application:(UIApplication*)application fetchCompletionHandler:completionHandler]; } +- (void)application:(UIApplication*)application + didReceiveLocalNotification:(UILocalNotification*)notification { + [_lifeCycleDelegate application:application didReceiveLocalNotification:notification]; +} + +- (void)userNotificationCenter:(UNUserNotificationCenter*)center + willPresentNotification:(UNNotification*)notification + withCompletionHandler: + (void (^)(UNNotificationPresentationOptions options))completionHandler + API_AVAILABLE(ios(10)) { + if (@available(iOS 10.0, *)) { + [_lifeCycleDelegate userNotificationCenter:center + willPresentNotification:notification + withCompletionHandler:completionHandler]; + } +} + - (BOOL)application:(UIApplication*)application openURL:(NSURL*)url options:(NSDictionary*)options { diff --git a/shell/platform/darwin/ios/framework/Source/FlutterPluginAppLifeCycleDelegate.mm b/shell/platform/darwin/ios/framework/Source/FlutterPluginAppLifeCycleDelegate.mm index f262d300f4332..70b54b0f29231 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterPluginAppLifeCycleDelegate.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterPluginAppLifeCycleDelegate.mm @@ -202,6 +202,36 @@ - (void)application:(UIApplication*)application } } +- (void)application:(UIApplication*)application + didReceiveLocalNotification:(UILocalNotification*)notification { + for (id plugin in _pluginDelegates) { + if (!plugin) { + continue; + } + if ([plugin respondsToSelector:_cmd]) { + [plugin application:application didReceiveLocalNotification:notification]; + } + } +} + +- (void)userNotificationCenter:(UNUserNotificationCenter*)center + willPresentNotification:(UNNotification*)notification + withCompletionHandler: + (void (^)(UNNotificationPresentationOptions options))completionHandler { + if (@available(iOS 10.0, *)) { + for (id plugin in _pluginDelegates) { + if (!plugin) { + continue; + } + if ([plugin respondsToSelector:_cmd]) { + [plugin userNotificationCenter:center + willPresentNotification:notification + withCompletionHandler:completionHandler]; + } + } + } +} + - (BOOL)application:(UIApplication*)application openURL:(NSURL*)url options:(NSDictionary*)options { From 498bbd5ef9c1fbd8f6c323f27ab3700a0e7fe596 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Wed, 14 Nov 2018 16:01:05 -0500 Subject: [PATCH 0263/1537] Roll src/third_party/skia f152130ef910..44764000b49c (8 commits) (#6860) https://skia.googlesource.com/skia.git/+log/f152130ef910..44764000b49c Created with: gclient setdep -r src/third_party/skia@44764000b49c The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index ddfc92c8cbf7d..ae317feb94b7f 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'f152130ef91035557ed2a147da81d54bf0646528', + 'skia_revision': '44764000b49cddcec8b6733375078404f97a00fc', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 87d89c5e039ff..4f6c4af441eca 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 67e957e3ceb06f070aef63b99ecb854f +Signature: c16f41d86dd45fcc66366d27402e6fef UNUSED LICENSES: From 2c6be93fa98aeb0dd3c1efa2db201232eb8eefba Mon Sep 17 00:00:00 2001 From: Jason Simmons Date: Wed, 14 Nov 2018 14:21:17 -0800 Subject: [PATCH 0264/1537] Clean up stale cache entries in Skia's GrContext (#6859) Fixes https://github.com/flutter/flutter/issues/24160 --- shell/common/rasterizer.cc | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/shell/common/rasterizer.cc b/shell/common/rasterizer.cc index 9f3317912e5fa..67aa016c89747 100644 --- a/shell/common/rasterizer.cc +++ b/shell/common/rasterizer.cc @@ -16,6 +16,10 @@ namespace shell { +// The rasterizer will tell Skia to purge cached resources that have not been +// used within this interval. +static constexpr std::chrono::milliseconds kSkiaCleanupExpiration(15000); + Rasterizer::Rasterizer(blink::TaskRunners task_runners) : Rasterizer(std::move(task_runners), std::make_unique()) {} @@ -186,6 +190,9 @@ bool Rasterizer::DrawToSurface(flow::LayerTree& layer_tree) { external_view_embedder->SubmitFrame(surface_->GetContext()); } FireNextFrameCallbackIfPresent(); + + surface_->GetContext()->performDeferredCleanup(kSkiaCleanupExpiration); + return true; } From 00e4abff84a65d3451f9d182523e5df2a07d5808 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Wed, 14 Nov 2018 19:22:04 -0500 Subject: [PATCH 0265/1537] Roll src/third_party/skia 44764000b49c..7d2aae3165a2 (1 commits) (#6861) https://skia.googlesource.com/skia.git/+log/44764000b49c..7d2aae3165a2 Created with: gclient setdep -r src/third_party/skia@7d2aae3165a2 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index ae317feb94b7f..a12fa197b93ef 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '44764000b49cddcec8b6733375078404f97a00fc', + 'skia_revision': '7d2aae3165a2f2503d91f257ad9cd95a11f0ef63', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 4f6c4af441eca..e6bf80b005684 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: c16f41d86dd45fcc66366d27402e6fef +Signature: 6312e96e78a6ff1c1aa510c9e02d9b1f UNUSED LICENSES: From db59088159a5651cd96d6bea24ecd5cf86e51d78 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Wed, 14 Nov 2018 22:42:05 -0500 Subject: [PATCH 0266/1537] Roll src/third_party/skia 7d2aae3165a2..2eccd58916ee (3 commits) (#6862) https://skia.googlesource.com/skia.git/+log/7d2aae3165a2..2eccd58916ee Created with: gclient setdep -r src/third_party/skia@2eccd58916ee The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index a12fa197b93ef..c3d4c5a9dc84a 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '7d2aae3165a2f2503d91f257ad9cd95a11f0ef63', + 'skia_revision': '2eccd58916eee3bd46103e1775832b5a1b0bfa1e', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index e6bf80b005684..e34cbf7d1ae7e 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 6312e96e78a6ff1c1aa510c9e02d9b1f +Signature: c8789ee0dda9529e000ce7d630fd2c19 UNUSED LICENSES: From b20ec532be265d6e63f6769a0fc75e259fabff15 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Thu, 15 Nov 2018 10:58:17 -0500 Subject: [PATCH 0267/1537] Roll src/third_party/skia 2eccd58916ee..c3064e7c5139 (6 commits) (#6863) https://skia.googlesource.com/skia.git/+log/2eccd58916ee..c3064e7c5139 Created with: gclient setdep -r src/third_party/skia@c3064e7c5139 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index c3d4c5a9dc84a..2619e3ef702b2 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '2eccd58916eee3bd46103e1775832b5a1b0bfa1e', + 'skia_revision': 'c3064e7c5139341f07c3e5a25098ba7c92fb6985', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index e34cbf7d1ae7e..906a24ac9e6cd 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: c8789ee0dda9529e000ce7d630fd2c19 +Signature: 89d71fc8f879e5bf2f68d60aeb80f3a6 UNUSED LICENSES: From 093b2fea8ac09fb1e9e0d712dbdecc0a09f2c1ad Mon Sep 17 00:00:00 2001 From: Michael Klimushyn Date: Thu, 15 Nov 2018 09:26:08 -0800 Subject: [PATCH 0268/1537] Disable the persistent cache (#6835) Fixes flutter/flutter#24058 Reopens flutter/flutter#14028 --- shell/common/persistent_cache.cc | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/shell/common/persistent_cache.cc b/shell/common/persistent_cache.cc index 3d6737afb49a2..d6d027ffab25e 100644 --- a/shell/common/persistent_cache.cc +++ b/shell/common/persistent_cache.cc @@ -40,16 +40,8 @@ PersistentCache* PersistentCache::GetCacheForProcess() { return gPersistentCache.get(); } -PersistentCache::PersistentCache() - : cache_directory_(std::make_shared( - CreateDirectory(fml::paths::GetCachesDirectory(), - { - "flutter_engine", // - GetFlutterEngineVersion(), // - "skia", // - GetSkiaVersion() // - }, - fml::FilePermission::kReadWrite))) { +PersistentCache::PersistentCache() { + // TODO(chinmaygarde): Reenable caching, avoiding the windows crasher. if (!IsValid()) { FML_LOG(WARNING) << "Could not acquire the persistent cache directory. " "Caching of GPU resources on disk is disabled."; From 6461f4650eb65a72580b31275c7bc5c0f73baa94 Mon Sep 17 00:00:00 2001 From: Ben Konyi Date: Thu, 15 Nov 2018 10:00:51 -0800 Subject: [PATCH 0269/1537] Don't allow for creation of CallbackHandle objects for anonymous closures (#6864) * Don't allow for creation of CallbackHandle objects for anonymous closures. Fixes issue #22310 --- lib/ui/dart_runtime_hooks.cc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/ui/dart_runtime_hooks.cc b/lib/ui/dart_runtime_hooks.cc index b9bed135e1332..be7a88ddaf892 100644 --- a/lib/ui/dart_runtime_hooks.cc +++ b/lib/ui/dart_runtime_hooks.cc @@ -318,12 +318,14 @@ static std::string GetFunctionName(Dart_Handle func) { } void GetCallbackHandle(Dart_NativeArguments args) { + const char* kAnonymousClosureName = ""; Dart_Handle func = Dart_GetNativeArgument(args, 0); std::string name = GetFunctionName(func); std::string class_name = GetFunctionClassName(func); std::string library_path = GetFunctionLibraryUrl(func); - if (name.empty()) { + // TODO(24394): check !Dart_IsTearOff(func) instead of string comparison. + if (name.empty() || (name == kAnonymousClosureName)) { Dart_SetReturnValue(args, Dart_Null()); return; } From c0aa62f6f34164f0ba22d79c87ced44bfd2fd8ee Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Thu, 15 Nov 2018 14:17:34 -0500 Subject: [PATCH 0270/1537] Roll src/third_party/skia c3064e7c5139..5fb83f94c1f2 (7 commits) (#6865) https://skia.googlesource.com/skia.git/+log/c3064e7c5139..5fb83f94c1f2 Created with: gclient setdep -r src/third_party/skia@5fb83f94c1f2 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 2619e3ef702b2..a143864a68ffc 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'c3064e7c5139341f07c3e5a25098ba7c92fb6985', + 'skia_revision': '5fb83f94c1f2ad8acd2b6646ad4958a152771f01', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 906a24ac9e6cd..5e105995df82c 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 89d71fc8f879e5bf2f68d60aeb80f3a6 +Signature: a30315b80bd15bf7c3180e2491775441 UNUSED LICENSES: From 699f328df5787f4960808cd3bd729dcb741e6132 Mon Sep 17 00:00:00 2001 From: Dan Field Date: Thu, 15 Nov 2018 11:41:53 -0800 Subject: [PATCH 0271/1537] Revert "Clean up stale cache entries in Skia's GrContext (#6859)" (#6866) This reverts commit 2c6be93fa98aeb0dd3c1efa2db201232eb8eefba. --- shell/common/rasterizer.cc | 7 ------- 1 file changed, 7 deletions(-) diff --git a/shell/common/rasterizer.cc b/shell/common/rasterizer.cc index 67aa016c89747..9f3317912e5fa 100644 --- a/shell/common/rasterizer.cc +++ b/shell/common/rasterizer.cc @@ -16,10 +16,6 @@ namespace shell { -// The rasterizer will tell Skia to purge cached resources that have not been -// used within this interval. -static constexpr std::chrono::milliseconds kSkiaCleanupExpiration(15000); - Rasterizer::Rasterizer(blink::TaskRunners task_runners) : Rasterizer(std::move(task_runners), std::make_unique()) {} @@ -190,9 +186,6 @@ bool Rasterizer::DrawToSurface(flow::LayerTree& layer_tree) { external_view_embedder->SubmitFrame(surface_->GetContext()); } FireNextFrameCallbackIfPresent(); - - surface_->GetContext()->performDeferredCleanup(kSkiaCleanupExpiration); - return true; } From 6de0be2dbc4f1eede8c589f6773d0318eacf8981 Mon Sep 17 00:00:00 2001 From: Michael Goderbauer Date: Thu, 15 Nov 2018 12:40:27 -0800 Subject: [PATCH 0272/1537] Add presubmit check for license count (#6759) --- ci/licenses.sh | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/ci/licenses.sh b/ci/licenses.sh index 472285b5b88c3..fe9341cdb5ef4 100755 --- a/ci/licenses.sh +++ b/ci/licenses.sh @@ -8,6 +8,7 @@ echo "Verifying license script is still happy..." for f in out/license_script_output/licenses_*; do if ! cmp -s flutter/ci/licenses_golden/$(basename $f) $f then + echo "============================= ERROR =============================" echo "License script got different results than expected for $f." echo "Please rerun the licenses script locally to verify that it is" echo "correctly catching any new licenses for anything you may have" @@ -21,5 +22,24 @@ for f in out/license_script_output/licenses_*; do fi done +echo "Checking license count in licenses_flutter..." +actualLicenseCount=`tail -n 1 flutter/ci/licenses_golden/licenses_flutter | tr -dc '0-9'` +expectedLicenseCount=2 # When changing this number: Update the error message below as well describing all expected license types. + +if [ "$actualLicenseCount" -ne "$expectedLicenseCount" ] +then + echo "=============================== ERROR ===============================" + echo "The total license count in flutter/ci/licenses_golden/licenses_flutter" + echo "changed from $expectedLicenseCount to $actualLicenseCount." + echo "It's very likely that this is an unintentional change. Please" + echo "double-check that all newly added files have a BSD-style license" + echo "header with the following copyright:" + echo " Copyright 2013 The Flutter Authors. All rights reserved." + echo "Files in 'third_party/txt' may have an Apache license header instead." + echo "If you're absolutely sure that the change in license count is" + echo "intentional, update 'flutter/ci/licenses.sh' with the new count." + exit 1 +fi + echo "Licenses are as expected." exit 0 From e6f22b74e6567a5f3b5744a5617c58abb21556b9 Mon Sep 17 00:00:00 2001 From: Michael Goderbauer Date: Thu, 15 Nov 2018 14:12:57 -0800 Subject: [PATCH 0273/1537] Fix license headers (#6868) These sneaked in between https://github.com/flutter/engine/pull/6757 and https://github.com/flutter/engine/pull/6759. --- ci/licenses_golden/licenses_flutter | 40 +----------- .../darwin/ios/ios_gl_render_target.h | 2 +- .../darwin/ios/ios_gl_render_target.mm | 2 +- sky/packages/sky_engine/LICENSE | 61 +++++++++---------- 4 files changed, 35 insertions(+), 70 deletions(-) diff --git a/ci/licenses_golden/licenses_flutter b/ci/licenses_golden/licenses_flutter index 79f415685ceff..2fc0c7a9f63e5 100644 --- a/ci/licenses_golden/licenses_flutter +++ b/ci/licenses_golden/licenses_flutter @@ -528,6 +528,8 @@ FILE: ../../../flutter/shell/platform/darwin/ios/ios_external_texture_gl.h FILE: ../../../flutter/shell/platform/darwin/ios/ios_external_texture_gl.mm FILE: ../../../flutter/shell/platform/darwin/ios/ios_gl_context.h FILE: ../../../flutter/shell/platform/darwin/ios/ios_gl_context.mm +FILE: ../../../flutter/shell/platform/darwin/ios/ios_gl_render_target.h +FILE: ../../../flutter/shell/platform/darwin/ios/ios_gl_render_target.mm FILE: ../../../flutter/shell/platform/darwin/ios/ios_surface.h FILE: ../../../flutter/shell/platform/darwin/ios/ios_surface.mm FILE: ../../../flutter/shell/platform/darwin/ios/ios_surface_gl.h @@ -630,42 +632,6 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ==================================================================================================== -==================================================================================================== -LIBRARY: engine -ORIGIN: ../../../flutter/shell/platform/darwin/ios/ios_gl_render_target.h + ../../../LICENSE -TYPE: LicenseType.bsd -FILE: ../../../flutter/shell/platform/darwin/ios/ios_gl_render_target.h -FILE: ../../../flutter/shell/platform/darwin/ios/ios_gl_render_target.mm ----------------------------------------------------------------------------------------------------- -Copyright 2018 The Chromium Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -==================================================================================================== - ==================================================================================================== LIBRARY: txt ORIGIN: ../../../flutter/third_party/txt/LICENSE @@ -952,4 +918,4 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. ==================================================================================================== -Total license count: 3 +Total license count: 2 diff --git a/shell/platform/darwin/ios/ios_gl_render_target.h b/shell/platform/darwin/ios/ios_gl_render_target.h index 9b9639f7f997b..ce2a128bd3c48 100644 --- a/shell/platform/darwin/ios/ios_gl_render_target.h +++ b/shell/platform/darwin/ios/ios_gl_render_target.h @@ -1,4 +1,4 @@ -// Copyright 2018 The Chromium Authors. All rights reserved. +// 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. diff --git a/shell/platform/darwin/ios/ios_gl_render_target.mm b/shell/platform/darwin/ios/ios_gl_render_target.mm index ffeee8f30bb79..308c7a5a95866 100644 --- a/shell/platform/darwin/ios/ios_gl_render_target.mm +++ b/shell/platform/darwin/ios/ios_gl_render_target.mm @@ -1,4 +1,4 @@ -// Copyright 2018 The Chromium Authors. All rights reserved. +// 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. diff --git a/sky/packages/sky_engine/LICENSE b/sky/packages/sky_engine/LICENSE index 6468e59fd70b2..7334fbc6b9b0e 100644 --- a/sky/packages/sky_engine/LICENSE +++ b/sky/packages/sky_engine/LICENSE @@ -3440,37 +3440,6 @@ met: contributors may be used to endorse or promote products derived from this software without specific prior written permission. -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -engine -skia - -Copyright 2018 The Chromium Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR @@ -10768,6 +10737,36 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- skia +Copyright 2018 The Chromium Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +skia + NEON optimized code (C) COPYRIGHT 2009 Motorola Redistribution and use in source and binary forms, with or without From d8b52ef89676ce8389c08ca4b1a6a4ccc89e93dd Mon Sep 17 00:00:00 2001 From: Jason Simmons Date: Thu, 15 Nov 2018 14:24:36 -0800 Subject: [PATCH 0274/1537] Reland "Clean up stale cache entries in Skia's GrContext" (#6867) Check for software rendering modes that do not have a GrContext --- shell/common/rasterizer.cc | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/shell/common/rasterizer.cc b/shell/common/rasterizer.cc index 9f3317912e5fa..e4d81df17ae8d 100644 --- a/shell/common/rasterizer.cc +++ b/shell/common/rasterizer.cc @@ -16,6 +16,10 @@ namespace shell { +// The rasterizer will tell Skia to purge cached resources that have not been +// used within this interval. +static constexpr std::chrono::milliseconds kSkiaCleanupExpiration(15000); + Rasterizer::Rasterizer(blink::TaskRunners task_runners) : Rasterizer(std::move(task_runners), std::make_unique()) {} @@ -186,6 +190,10 @@ bool Rasterizer::DrawToSurface(flow::LayerTree& layer_tree) { external_view_embedder->SubmitFrame(surface_->GetContext()); } FireNextFrameCallbackIfPresent(); + + if (surface_->GetContext()) + surface_->GetContext()->performDeferredCleanup(kSkiaCleanupExpiration); + return true; } From 921eca92e151b324d4976364e6deb6ef0f53a241 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Thu, 15 Nov 2018 17:37:38 -0500 Subject: [PATCH 0275/1537] Roll src/third_party/skia 5fb83f94c1f2..2791be403817 (5 commits) (#6869) https://skia.googlesource.com/skia.git/+log/5fb83f94c1f2..2791be403817 Created with: gclient setdep -r src/third_party/skia@2791be403817 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index a143864a68ffc..420da7cb1c24d 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '5fb83f94c1f2ad8acd2b6646ad4958a152771f01', + 'skia_revision': '2791be403817894bd0d67354fc8af1bc19b89437', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 5e105995df82c..58fa40e4fcd59 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: a30315b80bd15bf7c3180e2491775441 +Signature: 8fd52f2d0f938b0a8ae2ab6815640e54 UNUSED LICENSES: @@ -5141,6 +5141,8 @@ TYPE: LicenseType.bsd FILE: ../../../third_party/skia/include/docs/SkPDFDocument.h FILE: ../../../third_party/skia/src/gpu/GrPathRendering_none.cpp FILE: ../../../third_party/skia/src/pdf/SkPDFGlyphUse.h +FILE: ../../../third_party/skia/src/pdf/SkPDFSubsetFont.cpp +FILE: ../../../third_party/skia/src/pdf/SkPDFSubsetFont.h FILE: ../../../third_party/skia/src/utils/SkUTF.cpp FILE: ../../../third_party/skia/src/utils/SkUTF.h ---------------------------------------------------------------------------------------------------- From d1ea3fe02f629ef85f60189c525b9dde3f094f84 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Thu, 15 Nov 2018 20:56:34 -0500 Subject: [PATCH 0276/1537] Roll src/third_party/skia 2791be403817..e5bb81f640a1 (2 commits) (#6870) https://skia.googlesource.com/skia.git/+log/2791be403817..e5bb81f640a1 Created with: gclient setdep -r src/third_party/skia@e5bb81f640a1 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 420da7cb1c24d..c1a7c83f8b19e 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '2791be403817894bd0d67354fc8af1bc19b89437', + 'skia_revision': 'e5bb81f640a16aa5e1958f45453ba83ba64a9680', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 58fa40e4fcd59..843bd0ce69511 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 8fd52f2d0f938b0a8ae2ab6815640e54 +Signature: db90db5b7f5e46bc360d144ea90ee00a UNUSED LICENSES: From 333c2c1ac41fd3d7b7da40a33473e015267c7f3c Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Fri, 16 Nov 2018 00:16:33 -0500 Subject: [PATCH 0277/1537] Roll src/third_party/skia e5bb81f640a1..dcdb6042002f (2 commits) (#6871) https://skia.googlesource.com/skia.git/+log/e5bb81f640a1..dcdb6042002f Created with: gclient setdep -r src/third_party/skia@dcdb6042002f The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index c1a7c83f8b19e..19a360b36ea01 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'e5bb81f640a16aa5e1958f45453ba83ba64a9680', + 'skia_revision': 'dcdb6042002f2c69e0adc47619adc20064b08c5d', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 843bd0ce69511..7eb89189812d0 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: db90db5b7f5e46bc360d144ea90ee00a +Signature: 0aae6a65b0d16c1119baab8afe47b071 UNUSED LICENSES: From 04e716ff2cf381dbc93d23231ed9c2bba701d6bc Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Fri, 16 Nov 2018 03:37:26 -0500 Subject: [PATCH 0278/1537] Roll src/third_party/skia dcdb6042002f..c735b4f9dc50 (1 commits) (#6874) https://skia.googlesource.com/skia.git/+log/dcdb6042002f..c735b4f9dc50 Created with: gclient setdep -r src/third_party/skia@c735b4f9dc50 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 19a360b36ea01..0ac0b504783f6 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'dcdb6042002f2c69e0adc47619adc20064b08c5d', + 'skia_revision': 'c735b4f9dc50c70a180750e15a89bae25f382384', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 7eb89189812d0..57c7c4fa6f92b 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 0aae6a65b0d16c1119baab8afe47b071 +Signature: b9b56792d77dd9a690e50b9ac6d7976f UNUSED LICENSES: From 61725486b97a4ce804cbca3144f0ca1756853a43 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Fri, 16 Nov 2018 06:55:17 -0500 Subject: [PATCH 0279/1537] Roll src/third_party/skia c735b4f9dc50..6e486cec6a10 (1 commits) (#6875) https://skia.googlesource.com/skia.git/+log/c735b4f9dc50..6e486cec6a10 Created with: gclient setdep -r src/third_party/skia@6e486cec6a10 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 0ac0b504783f6..117c65cfe0c62 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'c735b4f9dc50c70a180750e15a89bae25f382384', + 'skia_revision': '6e486cec6a10d8ad447adcca07dab8f1d2d88b79', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 57c7c4fa6f92b..c91c8f97a4c79 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: b9b56792d77dd9a690e50b9ac6d7976f +Signature: 31bd3c5c8a6710950fdc4db290ee4efa UNUSED LICENSES: From c622e563e76485d20739de172aaecce465ddb149 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Fri, 16 Nov 2018 10:57:36 -0500 Subject: [PATCH 0280/1537] Roll src/third_party/skia 6e486cec6a10..c5df7cb3d9f7 (4 commits) (#6877) https://skia.googlesource.com/skia.git/+log/6e486cec6a10..c5df7cb3d9f7 Created with: gclient setdep -r src/third_party/skia@c5df7cb3d9f7 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 117c65cfe0c62..87c4e9c401590 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '6e486cec6a10d8ad447adcca07dab8f1d2d88b79', + 'skia_revision': 'c5df7cb3d9f7e60689d8b77b6505454131e26f55', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index c91c8f97a4c79..a3daac1f3a062 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 31bd3c5c8a6710950fdc4db290ee4efa +Signature: c3aaf2b9bf49a7fa056758ab0099ce85 UNUSED LICENSES: From 5c327e1962b248c9e8fb54347b4c6f3bae3e5ee3 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Fri, 16 Nov 2018 12:03:42 -0500 Subject: [PATCH 0281/1537] Roll src/third_party/skia c5df7cb3d9f7..a89316d8227b (10 commits) (#6878) https://skia.googlesource.com/skia.git/+log/c5df7cb3d9f7..a89316d8227b Created with: gclient setdep -r src/third_party/skia@a89316d8227b The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 87c4e9c401590..ab7739888d422 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'c5df7cb3d9f7e60689d8b77b6505454131e26f55', + 'skia_revision': 'a89316d8227b5eff8196ef0d01ab1b045826f00e', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index a3daac1f3a062..4f8e3a812f3a5 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: c3aaf2b9bf49a7fa056758ab0099ce85 +Signature: 1d30bc576384d7635b9b3e67a61dbe94 UNUSED LICENSES: From 5ded3679ebe2bf244bc559c095e7807e1821beb8 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Fri, 16 Nov 2018 13:30:30 -0500 Subject: [PATCH 0282/1537] Roll src/third_party/skia a89316d8227b..c00e47054744 (4 commits) (#6880) https://skia.googlesource.com/skia.git/+log/a89316d8227b..c00e47054744 Created with: gclient setdep -r src/third_party/skia@c00e47054744 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index ab7739888d422..27f443cbc0029 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'a89316d8227b5eff8196ef0d01ab1b045826f00e', + 'skia_revision': 'c00e47054744c4b6733a129b9cfc372d2085899e', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 4f8e3a812f3a5..971e1f85ec587 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 1d30bc576384d7635b9b3e67a61dbe94 +Signature: f3d50dc43b2a205c0c6cf4137022baf9 UNUSED LICENSES: From 5a694c47738d752d5ccd725fda2d3ef068209392 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Fri, 16 Nov 2018 14:15:28 -0500 Subject: [PATCH 0283/1537] Roll src/third_party/skia c00e47054744..3b155a77c370 (2 commits) (#6881) https://skia.googlesource.com/skia.git/+log/c00e47054744..3b155a77c370 Created with: gclient setdep -r src/third_party/skia@3b155a77c370 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 27f443cbc0029..46fa52723b2ee 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'c00e47054744c4b6733a129b9cfc372d2085899e', + 'skia_revision': '3b155a77c3704c3f3c5b741d60990e5ee959b261', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 971e1f85ec587..9fca03e098cb4 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: f3d50dc43b2a205c0c6cf4137022baf9 +Signature: 54d705b960946cbc1179ab2b41eadbed UNUSED LICENSES: From 8a42213d03a03ad1358e0bb5802e9d71771d2f74 Mon Sep 17 00:00:00 2001 From: Chinmay Garde Date: Fri, 16 Nov 2018 12:31:25 -0800 Subject: [PATCH 0284/1537] Remove unused examples targets. (#6882) These target are no longer built or referenced in either the Flutter or Fuchsia buildroots. Similar examples are present in the examples/ directory in the framework. --- examples/BUILD.gn | 11 ----- examples/hello_flutter/lib/main.dart | 50 --------------------- examples/hello_flutter/pubspec.yaml | 3 -- examples/spinning_square/lib/main.dart | 60 -------------------------- examples/spinning_square/pubspec.yaml | 3 -- 5 files changed, 127 deletions(-) delete mode 100644 examples/BUILD.gn delete mode 100644 examples/hello_flutter/lib/main.dart delete mode 100644 examples/hello_flutter/pubspec.yaml delete mode 100644 examples/spinning_square/lib/main.dart delete mode 100644 examples/spinning_square/pubspec.yaml diff --git a/examples/BUILD.gn b/examples/BUILD.gn deleted file mode 100644 index cf56dd887a170..0000000000000 --- a/examples/BUILD.gn +++ /dev/null @@ -1,11 +0,0 @@ -# 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. - -group("examples") { - deps = [ - "hello_flutter", - "hello_flutter:hello_flutter_aot", - "spinning_square", - ] -} diff --git a/examples/hello_flutter/lib/main.dart b/examples/hello_flutter/lib/main.dart deleted file mode 100644 index 7a0fd060b8e9f..0000000000000 --- a/examples/hello_flutter/lib/main.dart +++ /dev/null @@ -1,50 +0,0 @@ -// 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. - -// This example shows how to show the text 'Hello, world.' using the raw -// interface to the engine. - -import 'dart:ui' as ui; - -void beginFrame(Duration timeStamp) { - final double devicePixelRatio = ui.window.devicePixelRatio; - final ui.Size physicalSize = ui.window.physicalSize; - final ui.Size logicalSize = physicalSize / devicePixelRatio; - - final ui.ParagraphBuilder paragraphBuilder = new ui.ParagraphBuilder(new ui.ParagraphStyle()) - ..addText('Hello, world.'); - final ui.Paragraph paragraph = paragraphBuilder.build() - ..layout(new ui.ParagraphConstraints(width: logicalSize.width)); - - final ui.Rect physicalBounds = ui.Offset.zero & physicalSize; - final ui.PictureRecorder recorder = new ui.PictureRecorder(); - final ui.Canvas canvas = new ui.Canvas(recorder, physicalBounds); - canvas.scale(devicePixelRatio, devicePixelRatio); - canvas.drawRect(ui.Offset.zero & logicalSize, new ui.Paint()..color = const ui.Color(0xFF0000FF)); - canvas.drawParagraph(paragraph, new ui.Offset( - (logicalSize.width - paragraph.maxIntrinsicWidth) / 2.0, - (logicalSize.height - paragraph.height) / 2.0 - )); - final ui.Picture picture = recorder.endRecording(); - - final ui.SceneBuilder sceneBuilder = new ui.SceneBuilder() - // TODO(abarth): We should be able to add a picture without pushing a - // container layer first. - ..pushClipRect(physicalBounds) - ..addPicture(ui.Offset.zero, picture) - ..pop(); - - ui.window.render(sceneBuilder.build()); -} - -// This function is the primary entry point to your application. The engine -// calls main() as soon as it has loaded your code. -void main() { - // The engine calls onBeginFrame whenever it wants us to produce a frame. - ui.window.onBeginFrame = beginFrame; - // Here we kick off the whole process by asking the engine to schedule a new - // frame. The engine will eventually call onBeginFrame when it is time for us - // to actually produce the frame. - ui.window.scheduleFrame(); -} diff --git a/examples/hello_flutter/pubspec.yaml b/examples/hello_flutter/pubspec.yaml deleted file mode 100644 index 5e8ae01a4e1f8..0000000000000 --- a/examples/hello_flutter/pubspec.yaml +++ /dev/null @@ -1,3 +0,0 @@ -# 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. diff --git a/examples/spinning_square/lib/main.dart b/examples/spinning_square/lib/main.dart deleted file mode 100644 index c2d3a298b1ea4..0000000000000 --- a/examples/spinning_square/lib/main.dart +++ /dev/null @@ -1,60 +0,0 @@ -// 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. - -// This example shows how to perform a simple animation using the raw interface -// to the engine. - -import 'dart:math' as math; -import 'dart:typed_data'; -import 'dart:ui' as ui; - -void beginFrame(Duration timeStamp) { - // The timeStamp argument to beginFrame indicates the timing information we - // should use to clock our animations. It's important to use timeStamp rather - // than reading the system time because we want all the parts of the system to - // coordinate the timings of their animations. If each component read the - // system clock independently, the animations that we processed later would be - // slightly ahead of the animations we processed earlier. - - final double devicePixelRatio = ui.window.devicePixelRatio; - - // PAINT - final ui.Size logicalSize = ui.window.physicalSize / devicePixelRatio; - final ui.Rect paintBounds = ui.Offset.zero & logicalSize; - final ui.PictureRecorder recorder = new ui.PictureRecorder(); - final ui.Canvas canvas = new ui.Canvas(recorder, paintBounds); - canvas.translate(paintBounds.width / 2.0, paintBounds.height / 2.0); - - // Here we determine the rotation according to the timeStamp given to us by - // the engine. - final double t = timeStamp.inMicroseconds / Duration.MICROSECONDS_PER_MILLISECOND / 1800.0; - canvas.rotate(math.PI * (t % 1.0)); - - canvas.drawRect(new ui.Rect.fromLTRB(-100.0, -100.0, 100.0, 100.0), - new ui.Paint()..color = const ui.Color.fromARGB(255, 0, 255, 0)); - final ui.Picture picture = recorder.endRecording(); - - // COMPOSITE - - final Float64List deviceTransform = new Float64List(16) - ..[0] = devicePixelRatio - ..[5] = devicePixelRatio - ..[10] = 1.0 - ..[15] = 1.0; - final ui.SceneBuilder sceneBuilder = new ui.SceneBuilder() - ..pushTransform(deviceTransform) - ..addPicture(ui.Offset.zero, picture) - ..pop(); - ui.window.render(sceneBuilder.build()); - - // After rendering the current frame of the animation, we ask the engine to - // schedule another frame. The engine will call beginFrame again when its time - // to produce the next frame. - ui.window.scheduleFrame(); -} - -void main() { - ui.window.onBeginFrame = beginFrame; - ui.window.scheduleFrame(); -} diff --git a/examples/spinning_square/pubspec.yaml b/examples/spinning_square/pubspec.yaml deleted file mode 100644 index 5e8ae01a4e1f8..0000000000000 --- a/examples/spinning_square/pubspec.yaml +++ /dev/null @@ -1,3 +0,0 @@ -# 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. From c02dd8f935a410cee6282b9e316a65e85c24d6ea Mon Sep 17 00:00:00 2001 From: Dan Field Date: Fri, 16 Nov 2018 12:43:18 -0800 Subject: [PATCH 0285/1537] Don't load a splash screen by default (#6883) --- .../framework/Headers/FlutterViewController.h | 18 ++++---- .../framework/Source/FlutterViewController.mm | 42 ++++++++++--------- 2 files changed, 33 insertions(+), 27 deletions(-) diff --git a/shell/platform/darwin/ios/framework/Headers/FlutterViewController.h b/shell/platform/darwin/ios/framework/Headers/FlutterViewController.h index 49879149129c3..53f3adc855d5d 100644 --- a/shell/platform/darwin/ios/framework/Headers/FlutterViewController.h +++ b/shell/platform/darwin/ios/framework/Headers/FlutterViewController.h @@ -88,7 +88,7 @@ FLUTTER_EXPORT * * @param asset The name of the asset. The name can be hierarchical. * @param package The name of the package from which the asset originates. - * @returns: The file name to be used for lookup in the main bundle. + * @return The file name to be used for lookup in the main bundle. */ - (NSString*)lookupKeyForAsset:(NSString*)asset fromPackage:(NSString*)package; @@ -129,15 +129,19 @@ FLUTTER_EXPORT * a replacement until the first frame is rendered. * * The view used should be appropriate for multiple sizes; an autoresizing mask to - * have a flexible - * width and height will be applied automatically. - * - * If not specified, uses a view generated from `UILaunchStoryboardName` from the - * main bundle's - * `Info.plist` file. + * have a flexible width and height will be applied automatically. */ @property(strong, nonatomic) UIView* splashScreenView; +/** + * Attempts to set the `splashScreenView` property from the `UILaunchStoryboardName` from the + * main bundle's `Info.plist` file. This method will not change the value of `splashScreenView` + * if it cannot find a default one from a storyboard or nib. + * + * @return `YES` if successful, `NO` otherwise. + */ +- (BOOL)loadDefaultSplashScreenView; + /** * Controls whether the created view will be opaque or not. * diff --git a/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm b/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm index 80e03e28bd8bf..3fb58d709f270 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm @@ -239,7 +239,7 @@ - (void)loadView { - (void)installSplashScreenViewIfNecessary { // Show the launch screen view again on top of the FlutterView if available. // This launch screen view will be removed once the first Flutter frame is rendered. - if (self.isBeingPresented || self.isMovingToParentViewController) { + if (_splashScreenView && (self.isBeingPresented || self.isMovingToParentViewController)) { [_splashScreenView.get() removeFromSuperview]; _splashScreenView.reset(); return; @@ -305,21 +305,29 @@ - (FlutterView*)flutterView { } - (UIView*)splashScreenView { - if (_splashScreenView == nullptr) { - NSString* launchscreenName = - [[[NSBundle mainBundle] infoDictionary] objectForKey:@"UILaunchStoryboardName"]; - if (launchscreenName == nil) { - return nil; - } - UIView* splashView = [self splashScreenFromStoryboard:launchscreenName]; - if (!splashView) { - splashView = [self splashScreenFromXib:launchscreenName]; - } - self.splashScreenView = splashView; + if (!_splashScreenView) { + return nil; } return _splashScreenView.get(); } +- (BOOL)loadDefaultSplashScreenView { + NSString* launchscreenName = + [[[NSBundle mainBundle] infoDictionary] objectForKey:@"UILaunchStoryboardName"]; + if (launchscreenName == nil) { + return NO; + } + UIView* splashView = [self splashScreenFromStoryboard:launchscreenName]; + if (!splashView) { + splashView = [self splashScreenFromXib:launchscreenName]; + } + if (!splashView) { + return NO; + } + self.splashScreenView = splashView; + return YES; +} + - (UIView*)splashScreenFromStoryboard:(NSString*)name { UIStoryboard* storyboard = nil; @try { @@ -347,16 +355,10 @@ - (void)setSplashScreenView:(UIView*)view { if (!view) { // Special case: user wants to remove the splash screen view. [self removeSplashScreenViewIfPresent]; - } else if (_splashScreenView) { - FML_LOG(ERROR) << "Attempt to set the FlutterViewController's splash screen multiple times was " - "ignored. The FlutterViewController's splash screen can only be set once. " - "This condition can occur if a running FlutterEngine instance has been " - "passed into the FlutterViewController and a consumer later called " - "[FlutterViewController setSplashScreen:]. Setting the splash screen on a " - "FlutterViewController with an already running engine is not supported, as " - "the rasterizer will already be running by the time the view is shown."; + _splashScreenView.reset(); return; } + _splashScreenView.reset([view retain]); _splashScreenView.get().autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; From 0870e378254b520218c66f9f255ab92e4d0728d3 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Fri, 16 Nov 2018 16:10:13 -0500 Subject: [PATCH 0286/1537] Roll src/third_party/skia 3b155a77c370..a2187bf7629a (11 commits) (#6884) https://skia.googlesource.com/skia.git/+log/3b155a77c370..a2187bf7629a Created with: gclient setdep -r src/third_party/skia@a2187bf7629a The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 9 +++------ 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/DEPS b/DEPS index 46fa52723b2ee..08552281fdc00 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '3b155a77c3704c3f3c5b741d60990e5ee959b261', + 'skia_revision': 'a2187bf7629af9eff9b37d99f3899e7f69d61a0d', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 9fca03e098cb4..d992868cc203a 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 54d705b960946cbc1179ab2b41eadbed +Signature: 7dde42ec112a3ff03045b09e57e4ba89 UNUSED LICENSES: @@ -1312,6 +1312,7 @@ FILE: ../../../third_party/skia/gm/clockwise.cpp FILE: ../../../third_party/skia/gm/crbug_847759.cpp FILE: ../../../third_party/skia/gm/crbug_884166.cpp FILE: ../../../third_party/skia/gm/crbug_887103.cpp +FILE: ../../../third_party/skia/gm/crbug_892988.cpp FILE: ../../../third_party/skia/gm/drawimageset.cpp FILE: ../../../third_party/skia/gm/fwidth_squircle.cpp FILE: ../../../third_party/skia/gm/gradients_degenerate.cpp @@ -1613,6 +1614,7 @@ FILE: ../../../third_party/skia/src/image/SkImage_GpuBase.h FILE: ../../../third_party/skia/src/image/SkImage_GpuYUVA.cpp FILE: ../../../third_party/skia/src/image/SkImage_GpuYUVA.h FILE: ../../../third_party/skia/src/image/SkImage_Lazy.h +FILE: ../../../third_party/skia/src/opts/SkBitmapProcState_opts.h FILE: ../../../third_party/skia/src/opts/SkOpts_hsw.cpp FILE: ../../../third_party/skia/src/opts/SkRasterPipeline_opts.h FILE: ../../../third_party/skia/src/pathops/SkPathOpsAsWinding.cpp @@ -3360,7 +3362,6 @@ FILE: ../../../third_party/skia/src/image/SkSurface.cpp FILE: ../../../third_party/skia/src/image/SkSurface_Base.h FILE: ../../../third_party/skia/src/image/SkSurface_Gpu.cpp FILE: ../../../third_party/skia/src/image/SkSurface_Raster.cpp -FILE: ../../../third_party/skia/src/opts/SkBitmapProcState_arm_neon.cpp FILE: ../../../third_party/skia/src/pathops/SkAddIntersections.cpp FILE: ../../../third_party/skia/src/pathops/SkAddIntersections.h FILE: ../../../third_party/skia/src/pathops/SkDCubicLineIntersection.cpp @@ -4580,9 +4581,6 @@ FILE: ../../../third_party/skia/src/effects/imagefilters/SkMergeImageFilter.cpp FILE: ../../../third_party/skia/src/effects/imagefilters/SkMorphologyImageFilter.cpp FILE: ../../../third_party/skia/src/effects/imagefilters/SkOffsetImageFilter.cpp FILE: ../../../third_party/skia/src/images/SkImageEncoderFns.h -FILE: ../../../third_party/skia/src/opts/SkBitmapProcState_filter_neon.h -FILE: ../../../third_party/skia/src/opts/SkBitmapProcState_opts_SSSE3.cpp -FILE: ../../../third_party/skia/src/opts/SkBitmapProcState_opts_SSSE3.h ---------------------------------------------------------------------------------------------------- Copyright 2012 The Android Open Source Project @@ -5423,7 +5421,6 @@ LIBRARY: skia ORIGIN: ../../../third_party/skia/src/codec/SkColorTable.cpp + ../../../third_party/skia/LICENSE TYPE: LicenseType.bsd FILE: ../../../third_party/skia/src/codec/SkColorTable.cpp -FILE: ../../../third_party/skia/src/core/SkBitmapProcState_filter.h FILE: ../../../third_party/skia/src/core/SkCubicClipper.cpp FILE: ../../../third_party/skia/src/core/SkCubicClipper.h FILE: ../../../third_party/skia/src/core/SkEdgeClipper.cpp From 3978f07530410b45e1aa972eb2bf758d032af71a Mon Sep 17 00:00:00 2001 From: Jason Simmons Date: Fri, 16 Nov 2018 14:47:40 -0800 Subject: [PATCH 0287/1537] Keep a copy of each engine's description that can be accessed outside the engine's UI thread (#6885) The service protocol's ListViews method needs to return description data for each engine in the process. Previously ListViews would queue a task to each UI thread to gather this data. However, the UI thread might be blocked from executing tasks (e.g. if the Dart isolate is paused), resulting in a deadlock. This change provides a copy of the engine's description data to the ServiceProtocol's global list of engines, allowing ListViews to run without accessing any UI threads. Fixes https://github.com/flutter/flutter/issues/24400 --- lib/ui/ui_dart_state.cc | 10 +++++++++- lib/ui/ui_dart_state.h | 2 +- lib/ui/window/window.cc | 2 +- lib/ui/window/window.h | 3 ++- runtime/runtime_controller.cc | 13 +++++-------- runtime/runtime_controller.h | 5 +++-- runtime/runtime_delegate.h | 3 +++ runtime/service_protocol.cc | 36 ++++++++++++++++------------------- runtime/service_protocol.h | 7 +++++-- shell/common/engine.cc | 5 +++++ shell/common/engine.h | 7 +++++++ shell/common/shell.cc | 11 ++++++++++- shell/common/shell.h | 4 ++++ 13 files changed, 71 insertions(+), 37 deletions(-) diff --git a/lib/ui/ui_dart_state.cc b/lib/ui/ui_dart_state.cc index cc46903be77eb..5d0f0d73c72ec 100644 --- a/lib/ui/ui_dart_state.cc +++ b/lib/ui/ui_dart_state.cc @@ -54,7 +54,13 @@ void UIDartState::DidSetIsolate() { // main.dart$main-1234 debug_name << advisory_script_uri_ << "$" << advisory_script_entrypoint_ << "-" << main_port_; - debug_name_ = debug_name.str(); + SetDebugName(debug_name.str()); +} + +void UIDartState::SetDebugName(const std::string debug_name) { + debug_name_ = debug_name; + if (window_) + window_->client()->UpdateIsolateDescription(debug_name_, main_port_); } UIDartState* UIDartState::Current() { @@ -63,6 +69,8 @@ UIDartState* UIDartState::Current() { void UIDartState::SetWindow(std::unique_ptr window) { window_ = std::move(window); + if (window_) + window_->client()->UpdateIsolateDescription(debug_name_, main_port_); } const TaskRunners& UIDartState::GetTaskRunners() const { diff --git a/lib/ui/ui_dart_state.h b/lib/ui/ui_dart_state.h index 9d45cf479dc5b..ce81804937f63 100644 --- a/lib/ui/ui_dart_state.h +++ b/lib/ui/ui_dart_state.h @@ -32,7 +32,7 @@ class UIDartState : public tonic::DartState { Dart_Port main_port() const { return main_port_; } - void set_debug_name(const std::string name) { debug_name_ = name; } + void SetDebugName(const std::string name); const std::string& debug_name() const { return debug_name_; } diff --git a/lib/ui/window/window.cc b/lib/ui/window/window.cc index a71fa674a726f..528e2c084eb34 100644 --- a/lib/ui/window/window.cc +++ b/lib/ui/window/window.cc @@ -62,7 +62,7 @@ void SetIsolateDebugName(Dart_NativeArguments args) { Dart_ThrowException(exception); return; } - UIDartState::Current()->window()->client()->SetIsolateDebugName(name); + UIDartState::Current()->SetDebugName(name); } Dart_Handle SendPlatformMessage(Dart_Handle window, diff --git a/lib/ui/window/window.h b/lib/ui/window/window.h index 2128c83284095..94a506fb5fa4d 100644 --- a/lib/ui/window/window.h +++ b/lib/ui/window/window.h @@ -43,8 +43,9 @@ class WindowClient { virtual void Render(Scene* scene) = 0; virtual void UpdateSemantics(SemanticsUpdate* update) = 0; virtual void HandlePlatformMessage(fml::RefPtr message) = 0; - virtual void SetIsolateDebugName(const std::string isolateName) = 0; virtual FontCollection& GetFontCollection() = 0; + virtual void UpdateIsolateDescription(const std::string isolate_name, + int64_t isolate_port) = 0; protected: virtual ~WindowClient(); diff --git a/runtime/runtime_controller.cc b/runtime/runtime_controller.cc index e5b765a35f933..ac99aa5f99ac5 100644 --- a/runtime/runtime_controller.cc +++ b/runtime/runtime_controller.cc @@ -267,18 +267,15 @@ void RuntimeController::HandlePlatformMessage( client_.HandlePlatformMessage(std::move(message)); } -void RuntimeController::SetIsolateDebugName(const std::string name) { - std::shared_ptr root_isolate = root_isolate_.lock(); - if (!root_isolate) { - return; - } - root_isolate->set_debug_name(name); -} - FontCollection& RuntimeController::GetFontCollection() { return client_.GetFontCollection(); } +void RuntimeController::UpdateIsolateDescription(const std::string isolate_name, + int64_t isolate_port) { + client_.UpdateIsolateDescription(isolate_name, isolate_port); +} + Dart_Port RuntimeController::GetMainPort() { std::shared_ptr root_isolate = root_isolate_.lock(); return root_isolate ? root_isolate->main_port() : ILLEGAL_PORT; diff --git a/runtime/runtime_controller.h b/runtime/runtime_controller.h index 97941e3a16ac2..34f3236c3c778 100644 --- a/runtime/runtime_controller.h +++ b/runtime/runtime_controller.h @@ -158,10 +158,11 @@ class RuntimeController final : public WindowClient { void HandlePlatformMessage(fml::RefPtr message) override; // |blink::WindowClient| - void SetIsolateDebugName(const std::string name) override; + FontCollection& GetFontCollection() override; // |blink::WindowClient| - FontCollection& GetFontCollection() override; + void UpdateIsolateDescription(const std::string isolate_name, + int64_t isolate_port) override; FML_DISALLOW_COPY_AND_ASSIGN(RuntimeController); }; diff --git a/runtime/runtime_delegate.h b/runtime/runtime_delegate.h index 98b3684ac55d2..7d79dac199838 100644 --- a/runtime/runtime_delegate.h +++ b/runtime/runtime_delegate.h @@ -33,6 +33,9 @@ class RuntimeDelegate { virtual FontCollection& GetFontCollection() = 0; + virtual void UpdateIsolateDescription(const std::string isolate_name, + int64_t isolate_port) = 0; + protected: virtual ~RuntimeDelegate(); }; diff --git a/runtime/service_protocol.cc b/runtime/service_protocol.cc index b25a47f3787b0..602ebccf645f2 100644 --- a/runtime/service_protocol.cc +++ b/runtime/service_protocol.cc @@ -51,9 +51,10 @@ ServiceProtocol::~ServiceProtocol() { ToggleHooks(false); } -void ServiceProtocol::AddHandler(Handler* handler) { +void ServiceProtocol::AddHandler(Handler* handler, + Handler::Description description) { std::lock_guard lock(handlers_mutex_); - handlers_.emplace(handler); + handlers_.emplace(handler, description); } void ServiceProtocol::RemoveHandler(Handler* handler) { @@ -61,6 +62,14 @@ void ServiceProtocol::RemoveHandler(Handler* handler) { handlers_.erase(handler); } +void ServiceProtocol::SetHandlerDescription(Handler* handler, + Handler::Description description) { + std::lock_guard lock(handlers_mutex_); + auto it = handlers_.find(handler); + if (it != handlers_.end()) + it->second = description; +} + void ServiceProtocol::ToggleHooks(bool set) { for (const auto& endpoint : endpoints_) { Dart_RegisterIsolateServiceRequestCallback( @@ -191,7 +200,8 @@ bool ServiceProtocol::HandleMessage(fml::StringView method, if (method == kScreenshotExtensionName || method == kScreenshotSkpExtensionName || method == kFlushUIThreadTasksExtensionName) { - return HandleMessageOnHandler(*handlers_.begin(), method, params, response); + return HandleMessageOnHandler(handlers_.begin()->first, method, params, + response); } WriteServerErrorResponse( @@ -239,23 +249,9 @@ bool ServiceProtocol::HandleListViewsMethod( // Collect handler descriptions on their respective task runners. std::lock_guard lock(handlers_mutex_); std::vector> descriptions; - for (auto* const handler : handlers_) { - fml::AutoResetWaitableEvent latch; - Handler::Description description; - - fml::TaskRunner::RunNowOrPostTask( - handler->GetServiceProtocolHandlerTaskRunner( - kListViewsExtensionName), // task runner - [&latch, // - &description, // - &handler // - ]() { - description = handler->GetServiceProtocolDescription(); - latch.Signal(); - }); - latch.Wait(); - descriptions.emplace_back(std::make_pair( - reinterpret_cast(handler), std::move(description))); + for (const auto& handler : handlers_) { + descriptions.emplace_back(reinterpret_cast(handler.first), + handler.second); } auto& allocator = response.GetAllocator(); diff --git a/runtime/service_protocol.h b/runtime/service_protocol.h index 5567b5e96366b..401702e5d5be3 100644 --- a/runtime/service_protocol.h +++ b/runtime/service_protocol.h @@ -63,14 +63,17 @@ class ServiceProtocol { void ToggleHooks(bool set); - void AddHandler(Handler* handler); + void AddHandler(Handler* handler, Handler::Description description); void RemoveHandler(Handler* handler); + void SetHandlerDescription(Handler* handler, + Handler::Description description); + private: const std::set endpoints_; mutable std::mutex handlers_mutex_; - std::set handlers_; + std::map handlers_; FML_WARN_UNUSED_RESULT static bool HandleMessage(const char* method, diff --git a/shell/common/engine.cc b/shell/common/engine.cc index 139c97cf99172..dbc794dc0a443 100644 --- a/shell/common/engine.cc +++ b/shell/common/engine.cc @@ -416,6 +416,11 @@ void Engine::HandlePlatformMessage( } } +void Engine::UpdateIsolateDescription(const std::string isolate_name, + int64_t isolate_port) { + delegate_.UpdateIsolateDescription(isolate_name, isolate_port); +} + blink::FontCollection& Engine::GetFontCollection() { return font_collection_; } diff --git a/shell/common/engine.h b/shell/common/engine.h index eb3a9f6d46612..fd5671bc36648 100644 --- a/shell/common/engine.h +++ b/shell/common/engine.h @@ -48,6 +48,9 @@ class Engine final : public blink::RuntimeDelegate { fml::RefPtr message) = 0; virtual void OnPreEngineRestart() = 0; + + virtual void UpdateIsolateDescription(const std::string isolate_name, + int64_t isolate_port) = 0; }; Engine(Delegate& delegate, @@ -142,6 +145,10 @@ class Engine final : public blink::RuntimeDelegate { void HandlePlatformMessage( fml::RefPtr message) override; + // |blink::RuntimeDelegate| + void UpdateIsolateDescription(const std::string isolate_name, + int64_t isolate_port) override; + void StopAnimator(); void StartAnimatorIfPossible(); diff --git a/shell/common/shell.cc b/shell/common/shell.cc index bc948f638191a..4adf55a3f6c74 100644 --- a/shell/common/shell.cc +++ b/shell/common/shell.cc @@ -373,7 +373,7 @@ bool Shell::Setup(std::unique_ptr platform_view, is_setup_ = true; if (auto vm = blink::DartVM::ForProcessIfInitialized()) { - vm->GetServiceProtocol().AddHandler(this); + vm->GetServiceProtocol().AddHandler(this, GetServiceProtocolDescription()); } PersistentCache::GetCacheForProcess()->AddWorkerTaskRunner( @@ -749,6 +749,15 @@ void Shell::OnPreEngineRestart() { latch.Wait(); } +// |shell::Engine::Delegate| +void Shell::UpdateIsolateDescription(const std::string isolate_name, + int64_t isolate_port) { + if (auto vm = blink::DartVM::ForProcessIfInitialized()) { + Handler::Description description(isolate_port, isolate_name); + vm->GetServiceProtocol().SetHandlerDescription(this, description); + } +} + // |blink::ServiceProtocol::Handler| fml::RefPtr Shell::GetServiceProtocolHandlerTaskRunner( fml::StringView method) const { diff --git a/shell/common/shell.h b/shell/common/shell.h index 75404860f0f63..241823038c6a5 100644 --- a/shell/common/shell.h +++ b/shell/common/shell.h @@ -182,6 +182,10 @@ class Shell final : public PlatformView::Delegate, // |shell::Engine::Delegate| void OnPreEngineRestart() override; + // |shell::Engine::Delegate| + void UpdateIsolateDescription(const std::string isolate_name, + int64_t isolate_port) override; + // |blink::ServiceProtocol::Handler| fml::RefPtr GetServiceProtocolHandlerTaskRunner( fml::StringView method) const override; From aa9793f737abce15b6263f916d2e62a30bb4e4f9 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Fri, 16 Nov 2018 19:29:09 -0500 Subject: [PATCH 0288/1537] Roll src/third_party/skia a2187bf7629a..281224020a57 (5 commits) (#6887) https://skia.googlesource.com/skia.git/+log/a2187bf7629a..281224020a57 Created with: gclient setdep -r src/third_party/skia@281224020a57 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 08552281fdc00..3b26d725e1fad 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'a2187bf7629af9eff9b37d99f3899e7f69d61a0d', + 'skia_revision': '281224020a57181e11da0f9ee3765d376aa8b98d', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index d992868cc203a..beaa2c74bd623 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 7dde42ec112a3ff03045b09e57e4ba89 +Signature: b5c2c6ae7c4db25739b8cfb5897ade1a UNUSED LICENSES: From 93cbf60b6c01d05aa2d3a20370b0098d3d9b4b7d Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Fri, 16 Nov 2018 22:51:13 -0500 Subject: [PATCH 0289/1537] Roll src/third_party/skia 281224020a57..7fb30f11a055 (1 commits) (#6889) https://skia.googlesource.com/skia.git/+log/281224020a57..7fb30f11a055 Created with: gclient setdep -r src/third_party/skia@7fb30f11a055 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 3b26d725e1fad..61c622244a608 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '281224020a57181e11da0f9ee3765d376aa8b98d', + 'skia_revision': '7fb30f11a05583f75337f10ebfbe1f07307bfddf', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index beaa2c74bd623..7179217a2f9b7 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: b5c2c6ae7c4db25739b8cfb5897ade1a +Signature: 9ba8ebfac83a63489285bd813b6479db UNUSED LICENSES: From 9296d80c8d380cc323596f4e430041e47a491355 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Sat, 17 Nov 2018 02:09:13 -0500 Subject: [PATCH 0290/1537] Roll src/third_party/skia 7fb30f11a055..73b4a1f57254 (3 commits) (#6891) https://skia.googlesource.com/skia.git/+log/7fb30f11a055..73b4a1f57254 Created with: gclient setdep -r src/third_party/skia@73b4a1f57254 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 61c622244a608..f12c78de2d10e 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '7fb30f11a05583f75337f10ebfbe1f07307bfddf', + 'skia_revision': '73b4a1f572546d46213c07eb65073940a0983221', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 7179217a2f9b7..9c8ac39037377 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 9ba8ebfac83a63489285bd813b6479db +Signature: 6778c2251338d49cfa71512469913f67 UNUSED LICENSES: From 9352360c8bdc14bc746f8db1142925f960cf2c38 Mon Sep 17 00:00:00 2001 From: Jason Simmons Date: Sat, 17 Nov 2018 10:53:26 -0800 Subject: [PATCH 0291/1537] Guard the service protocol's global handlers list with a reader/writer lock (#6888) The service protocol holds the lock while waiting for completion of service RPC tasks. These tasks (specifically hot restart/RunInView) may need to modify a handler's description data. Task execution and ServiceProtocol::SetHandlerDescription will obtain a shared lock to make this possible. AddHandler and RemoveHandler will obtain an exclusive lock in order to guard against a handler being deleted while a service task is running. --- ci/licenses_golden/licenses_flutter | 1 + fml/BUILD.gn | 1 + fml/synchronization/atomic_object.h | 30 +++++++++++++++++++++++++++++ runtime/service_protocol.cc | 15 +++++++-------- runtime/service_protocol.h | 7 ++++--- 5 files changed, 43 insertions(+), 11 deletions(-) create mode 100644 fml/synchronization/atomic_object.h diff --git a/ci/licenses_golden/licenses_flutter b/ci/licenses_golden/licenses_flutter index 2fc0c7a9f63e5..3fb752a6257fa 100644 --- a/ci/licenses_golden/licenses_flutter +++ b/ci/licenses_golden/licenses_flutter @@ -176,6 +176,7 @@ FILE: ../../../flutter/fml/platform/win/wstring_conversion.h FILE: ../../../flutter/fml/string_view.cc FILE: ../../../flutter/fml/string_view.h FILE: ../../../flutter/fml/string_view_unittest.cc +FILE: ../../../flutter/fml/synchronization/atomic_object.h FILE: ../../../flutter/fml/synchronization/count_down_latch.cc FILE: ../../../flutter/fml/synchronization/count_down_latch.h FILE: ../../../flutter/fml/synchronization/count_down_latch_unittests.cc diff --git a/fml/BUILD.gn b/fml/BUILD.gn index f73f7f40714c4..10d8e01c7c397 100644 --- a/fml/BUILD.gn +++ b/fml/BUILD.gn @@ -46,6 +46,7 @@ source_set("fml") { "paths.h", "string_view.cc", "string_view.h", + "synchronization/atomic_object.h", "synchronization/count_down_latch.cc", "synchronization/count_down_latch.h", "synchronization/thread_annotations.h", diff --git a/fml/synchronization/atomic_object.h b/fml/synchronization/atomic_object.h new file mode 100644 index 0000000000000..c14af79acfb10 --- /dev/null +++ b/fml/synchronization/atomic_object.h @@ -0,0 +1,30 @@ +// 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 + +namespace fml { + +template +class AtomicObject { + public: + AtomicObject() = default; + AtomicObject(T object) : object_(object) {} + + T Load() const { + std::lock_guard lock(mutex_); + return object_; + } + + void Store(const T& object) { + std::lock_guard lock(mutex_); + object_ = object; + } + + private: + mutable std::mutex mutex_; + T object_; +}; + +} // namespace fml diff --git a/runtime/service_protocol.cc b/runtime/service_protocol.cc index 602ebccf645f2..449f1b2cd11e8 100644 --- a/runtime/service_protocol.cc +++ b/runtime/service_protocol.cc @@ -53,21 +53,21 @@ ServiceProtocol::~ServiceProtocol() { void ServiceProtocol::AddHandler(Handler* handler, Handler::Description description) { - std::lock_guard lock(handlers_mutex_); + std::unique_lock lock(handlers_mutex_); handlers_.emplace(handler, description); } void ServiceProtocol::RemoveHandler(Handler* handler) { - std::lock_guard lock(handlers_mutex_); + std::unique_lock lock(handlers_mutex_); handlers_.erase(handler); } void ServiceProtocol::SetHandlerDescription(Handler* handler, Handler::Description description) { - std::lock_guard lock(handlers_mutex_); + std::shared_lock lock(handlers_mutex_); auto it = handlers_.find(handler); if (it != handlers_.end()) - it->second = description; + it->second.Store(description); } void ServiceProtocol::ToggleHooks(bool set) { @@ -175,7 +175,7 @@ bool ServiceProtocol::HandleMessage(fml::StringView method, return HandleListViewsMethod(response); } - std::lock_guard lock(handlers_mutex_); + std::shared_lock lock(handlers_mutex_); if (handlers_.size() == 0) { WriteServerErrorResponse(response, @@ -246,12 +246,11 @@ void ServiceProtocol::Handler::Description::Write( bool ServiceProtocol::HandleListViewsMethod( rapidjson::Document& response) const { - // Collect handler descriptions on their respective task runners. - std::lock_guard lock(handlers_mutex_); + std::shared_lock lock(handlers_mutex_); std::vector> descriptions; for (const auto& handler : handlers_) { descriptions.emplace_back(reinterpret_cast(handler.first), - handler.second); + handler.second.Load()); } auto& allocator = response.GetAllocator(); diff --git a/runtime/service_protocol.h b/runtime/service_protocol.h index 401702e5d5be3..5392cae337818 100644 --- a/runtime/service_protocol.h +++ b/runtime/service_protocol.h @@ -6,13 +6,14 @@ #define FLUTTER_RUNTIME_SERVICE_PROTOCOL_H_ #include -#include #include +#include #include #include "flutter/fml/compiler_specific.h" #include "flutter/fml/macros.h" #include "flutter/fml/string_view.h" +#include "flutter/fml/synchronization/atomic_object.h" #include "flutter/fml/synchronization/thread_annotations.h" #include "flutter/fml/task_runner.h" #include "rapidjson/document.h" @@ -72,8 +73,8 @@ class ServiceProtocol { private: const std::set endpoints_; - mutable std::mutex handlers_mutex_; - std::map handlers_; + mutable std::shared_timed_mutex handlers_mutex_; + std::map> handlers_; FML_WARN_UNUSED_RESULT static bool HandleMessage(const char* method, From 517e5254885ee6e2fffe0c3178385f6e3c9a24a2 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Sat, 17 Nov 2018 13:54:59 -0500 Subject: [PATCH 0292/1537] Roll src/third_party/skia 73b4a1f57254..7e9ea391cfce (1 commits) (#6892) https://skia.googlesource.com/skia.git/+log/73b4a1f57254..7e9ea391cfce Created with: gclient setdep -r src/third_party/skia@7e9ea391cfce The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index f12c78de2d10e..1e815d3ce56ea 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '73b4a1f572546d46213c07eb65073940a0983221', + 'skia_revision': '7e9ea391cfcebd6fd9aa56a6431410046320e19f', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 9c8ac39037377..e3b33a8d605ce 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 6778c2251338d49cfa71512469913f67 +Signature: 8c2481dc9521e973a416705e93d7eacb UNUSED LICENSES: From 9ba5561566dedfa5dace0609532959d3d3919606 Mon Sep 17 00:00:00 2001 From: Jason Simmons Date: Sat, 17 Nov 2018 12:27:06 -0800 Subject: [PATCH 0293/1537] Revert "Guard the service protocol's global handlers list with a reader/writer lock (#6888)" (#6893) This reverts commit 9352360c8bdc14bc746f8db1142925f960cf2c38. (shared_timed_mutex is unavailable in the iOS build) --- ci/licenses_golden/licenses_flutter | 1 - fml/BUILD.gn | 1 - fml/synchronization/atomic_object.h | 30 ----------------------------- runtime/service_protocol.cc | 15 ++++++++------- runtime/service_protocol.h | 7 +++---- 5 files changed, 11 insertions(+), 43 deletions(-) delete mode 100644 fml/synchronization/atomic_object.h diff --git a/ci/licenses_golden/licenses_flutter b/ci/licenses_golden/licenses_flutter index 3fb752a6257fa..2fc0c7a9f63e5 100644 --- a/ci/licenses_golden/licenses_flutter +++ b/ci/licenses_golden/licenses_flutter @@ -176,7 +176,6 @@ FILE: ../../../flutter/fml/platform/win/wstring_conversion.h FILE: ../../../flutter/fml/string_view.cc FILE: ../../../flutter/fml/string_view.h FILE: ../../../flutter/fml/string_view_unittest.cc -FILE: ../../../flutter/fml/synchronization/atomic_object.h FILE: ../../../flutter/fml/synchronization/count_down_latch.cc FILE: ../../../flutter/fml/synchronization/count_down_latch.h FILE: ../../../flutter/fml/synchronization/count_down_latch_unittests.cc diff --git a/fml/BUILD.gn b/fml/BUILD.gn index 10d8e01c7c397..f73f7f40714c4 100644 --- a/fml/BUILD.gn +++ b/fml/BUILD.gn @@ -46,7 +46,6 @@ source_set("fml") { "paths.h", "string_view.cc", "string_view.h", - "synchronization/atomic_object.h", "synchronization/count_down_latch.cc", "synchronization/count_down_latch.h", "synchronization/thread_annotations.h", diff --git a/fml/synchronization/atomic_object.h b/fml/synchronization/atomic_object.h deleted file mode 100644 index c14af79acfb10..0000000000000 --- a/fml/synchronization/atomic_object.h +++ /dev/null @@ -1,30 +0,0 @@ -// 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 - -namespace fml { - -template -class AtomicObject { - public: - AtomicObject() = default; - AtomicObject(T object) : object_(object) {} - - T Load() const { - std::lock_guard lock(mutex_); - return object_; - } - - void Store(const T& object) { - std::lock_guard lock(mutex_); - object_ = object; - } - - private: - mutable std::mutex mutex_; - T object_; -}; - -} // namespace fml diff --git a/runtime/service_protocol.cc b/runtime/service_protocol.cc index 449f1b2cd11e8..602ebccf645f2 100644 --- a/runtime/service_protocol.cc +++ b/runtime/service_protocol.cc @@ -53,21 +53,21 @@ ServiceProtocol::~ServiceProtocol() { void ServiceProtocol::AddHandler(Handler* handler, Handler::Description description) { - std::unique_lock lock(handlers_mutex_); + std::lock_guard lock(handlers_mutex_); handlers_.emplace(handler, description); } void ServiceProtocol::RemoveHandler(Handler* handler) { - std::unique_lock lock(handlers_mutex_); + std::lock_guard lock(handlers_mutex_); handlers_.erase(handler); } void ServiceProtocol::SetHandlerDescription(Handler* handler, Handler::Description description) { - std::shared_lock lock(handlers_mutex_); + std::lock_guard lock(handlers_mutex_); auto it = handlers_.find(handler); if (it != handlers_.end()) - it->second.Store(description); + it->second = description; } void ServiceProtocol::ToggleHooks(bool set) { @@ -175,7 +175,7 @@ bool ServiceProtocol::HandleMessage(fml::StringView method, return HandleListViewsMethod(response); } - std::shared_lock lock(handlers_mutex_); + std::lock_guard lock(handlers_mutex_); if (handlers_.size() == 0) { WriteServerErrorResponse(response, @@ -246,11 +246,12 @@ void ServiceProtocol::Handler::Description::Write( bool ServiceProtocol::HandleListViewsMethod( rapidjson::Document& response) const { - std::shared_lock lock(handlers_mutex_); + // Collect handler descriptions on their respective task runners. + std::lock_guard lock(handlers_mutex_); std::vector> descriptions; for (const auto& handler : handlers_) { descriptions.emplace_back(reinterpret_cast(handler.first), - handler.second.Load()); + handler.second); } auto& allocator = response.GetAllocator(); diff --git a/runtime/service_protocol.h b/runtime/service_protocol.h index 5392cae337818..401702e5d5be3 100644 --- a/runtime/service_protocol.h +++ b/runtime/service_protocol.h @@ -6,14 +6,13 @@ #define FLUTTER_RUNTIME_SERVICE_PROTOCOL_H_ #include +#include #include -#include #include #include "flutter/fml/compiler_specific.h" #include "flutter/fml/macros.h" #include "flutter/fml/string_view.h" -#include "flutter/fml/synchronization/atomic_object.h" #include "flutter/fml/synchronization/thread_annotations.h" #include "flutter/fml/task_runner.h" #include "rapidjson/document.h" @@ -73,8 +72,8 @@ class ServiceProtocol { private: const std::set endpoints_; - mutable std::shared_timed_mutex handlers_mutex_; - std::map> handlers_; + mutable std::mutex handlers_mutex_; + std::map handlers_; FML_WARN_UNUSED_RESULT static bool HandleMessage(const char* method, From a01c82e9d7e2965cc46c582d58331a18aaface91 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Sat, 17 Nov 2018 17:14:28 -0500 Subject: [PATCH 0294/1537] Roll src/third_party/skia 7e9ea391cfce..1bfdd1adfa22 (1 commits) (#6894) https://skia.googlesource.com/skia.git/+log/7e9ea391cfce..1bfdd1adfa22 Created with: gclient setdep -r src/third_party/skia@1bfdd1adfa22 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 1e815d3ce56ea..1531310e0707f 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '7e9ea391cfcebd6fd9aa56a6431410046320e19f', + 'skia_revision': '1bfdd1adfa22f608e99f78bbad0e34f8829f9a08', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index e3b33a8d605ce..330b92496db62 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 8c2481dc9521e973a416705e93d7eacb +Signature: 1a7e38a59de016180e82397d8fa5d684 UNUSED LICENSES: From fffcce47fd923858d97b722a3771577b85043b47 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Sat, 17 Nov 2018 20:25:58 -0500 Subject: [PATCH 0295/1537] Roll src/third_party/skia 1bfdd1adfa22..d017e5138c57 (1 commits) (#6896) https://skia.googlesource.com/skia.git/+log/1bfdd1adfa22..d017e5138c57 Created with: gclient setdep -r src/third_party/skia@d017e5138c57 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index 1531310e0707f..b712f4687898b 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '1bfdd1adfa22f608e99f78bbad0e34f8829f9a08', + 'skia_revision': 'd017e5138c57165a17347c61d1ba9cf35f433620', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the From fd0911cc0fb66a17a1486a27af175109879a8042 Mon Sep 17 00:00:00 2001 From: Jason Simmons Date: Sat, 17 Nov 2018 22:04:37 -0800 Subject: [PATCH 0296/1537] Guard the service protocol's global handlers list with a reader/writer lock (#6888) (#6895) The service protocol holds the lock while waiting for completion of service RPC tasks. These tasks (specifically hot restart/RunInView) may need to modify a handler's description data. Task execution and ServiceProtocol::SetHandlerDescription will obtain a shared lock to make this possible. AddHandler and RemoveHandler will obtain an exclusive lock in order to guard against a handler being deleted while a service task is running. --- ci/licenses_golden/licenses_flutter | 6 +++ fml/BUILD.gn | 8 ++++ fml/platform/posix/shared_mutex_posix.cc | 30 +++++++++++++++ fml/platform/posix/shared_mutex_posix.h | 28 ++++++++++++++ fml/synchronization/atomic_object.h | 36 +++++++++++++++++ fml/synchronization/shared_mutex.h | 49 ++++++++++++++++++++++++ fml/synchronization/shared_mutex_std.cc | 25 ++++++++++++ fml/synchronization/shared_mutex_std.h | 28 ++++++++++++++ runtime/service_protocol.cc | 18 ++++----- runtime/service_protocol.h | 7 ++-- 10 files changed, 223 insertions(+), 12 deletions(-) create mode 100644 fml/platform/posix/shared_mutex_posix.cc create mode 100644 fml/platform/posix/shared_mutex_posix.h create mode 100644 fml/synchronization/atomic_object.h create mode 100644 fml/synchronization/shared_mutex.h create mode 100644 fml/synchronization/shared_mutex_std.cc create mode 100644 fml/synchronization/shared_mutex_std.h diff --git a/ci/licenses_golden/licenses_flutter b/ci/licenses_golden/licenses_flutter index 2fc0c7a9f63e5..63b2ac899e260 100644 --- a/ci/licenses_golden/licenses_flutter +++ b/ci/licenses_golden/licenses_flutter @@ -164,6 +164,8 @@ FILE: ../../../flutter/fml/platform/posix/file_posix.cc FILE: ../../../flutter/fml/platform/posix/mapping_posix.cc FILE: ../../../flutter/fml/platform/posix/native_library_posix.cc FILE: ../../../flutter/fml/platform/posix/paths_posix.cc +FILE: ../../../flutter/fml/platform/posix/shared_mutex_posix.cc +FILE: ../../../flutter/fml/platform/posix/shared_mutex_posix.h FILE: ../../../flutter/fml/platform/win/errors_win.cc FILE: ../../../flutter/fml/platform/win/errors_win.h FILE: ../../../flutter/fml/platform/win/file_win.cc @@ -176,9 +178,13 @@ FILE: ../../../flutter/fml/platform/win/wstring_conversion.h FILE: ../../../flutter/fml/string_view.cc FILE: ../../../flutter/fml/string_view.h FILE: ../../../flutter/fml/string_view_unittest.cc +FILE: ../../../flutter/fml/synchronization/atomic_object.h FILE: ../../../flutter/fml/synchronization/count_down_latch.cc FILE: ../../../flutter/fml/synchronization/count_down_latch.h FILE: ../../../flutter/fml/synchronization/count_down_latch_unittests.cc +FILE: ../../../flutter/fml/synchronization/shared_mutex.h +FILE: ../../../flutter/fml/synchronization/shared_mutex_std.cc +FILE: ../../../flutter/fml/synchronization/shared_mutex_std.h FILE: ../../../flutter/fml/synchronization/thread_annotations.h FILE: ../../../flutter/fml/synchronization/thread_annotations_unittest.cc FILE: ../../../flutter/fml/synchronization/thread_checker.h diff --git a/fml/BUILD.gn b/fml/BUILD.gn index f73f7f40714c4..0f1a34dec369d 100644 --- a/fml/BUILD.gn +++ b/fml/BUILD.gn @@ -46,8 +46,10 @@ source_set("fml") { "paths.h", "string_view.cc", "string_view.h", + "synchronization/atomic_object.h", "synchronization/count_down_latch.cc", "synchronization/count_down_latch.h", + "synchronization/shared_mutex.h", "synchronization/thread_annotations.h", "synchronization/thread_checker.h", "synchronization/waitable_event.cc", @@ -83,6 +85,12 @@ source_set("fml") { libs = [] + if (is_ios || is_mac) { + sources += [ "platform/posix/shared_mutex_posix.cc" ] + } else { + sources += [ "synchronization/shared_mutex_std.cc" ] + } + if (is_ios || is_mac) { sources += [ "platform/darwin/cf_utils.cc", diff --git a/fml/platform/posix/shared_mutex_posix.cc b/fml/platform/posix/shared_mutex_posix.cc new file mode 100644 index 0000000000000..dcbb2938308c5 --- /dev/null +++ b/fml/platform/posix/shared_mutex_posix.cc @@ -0,0 +1,30 @@ +// 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/fml/platform/posix/shared_mutex_posix.h" +#include "flutter/fml/logging.h" + +namespace fml { + +SharedMutex* SharedMutex::Create() { + return new SharedMutexPosix(); +} + +SharedMutexPosix::SharedMutexPosix() { + FML_CHECK(pthread_rwlock_init(&rwlock_, nullptr) == 0); +} + +void SharedMutexPosix::Lock() { + pthread_rwlock_wrlock(&rwlock_); +} + +void SharedMutexPosix::LockShared() { + pthread_rwlock_rdlock(&rwlock_); +} + +void SharedMutexPosix::Unlock() { + pthread_rwlock_unlock(&rwlock_); +} + +} // namespace fml diff --git a/fml/platform/posix/shared_mutex_posix.h b/fml/platform/posix/shared_mutex_posix.h new file mode 100644 index 0000000000000..9364400015410 --- /dev/null +++ b/fml/platform/posix/shared_mutex_posix.h @@ -0,0 +1,28 @@ +// 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. + +#ifndef FLUTTER_FML_SYNCHRONIZATION_SHARED_MUTEX_POSIX_H_ +#define FLUTTER_FML_SYNCHRONIZATION_SHARED_MUTEX_POSIX_H_ + +#include +#include "flutter/fml/synchronization/shared_mutex.h" + +namespace fml { + +class SharedMutexPosix : public SharedMutex { + public: + virtual void Lock(); + virtual void LockShared(); + virtual void Unlock(); + + private: + friend SharedMutex* SharedMutex::Create(); + SharedMutexPosix(); + + pthread_rwlock_t rwlock_; +}; + +} // namespace fml + +#endif // FLUTTER_FML_SYNCHRONIZATION_SHARED_MUTEX_POSIX_H_ diff --git a/fml/synchronization/atomic_object.h b/fml/synchronization/atomic_object.h new file mode 100644 index 0000000000000..2a06792ff4a24 --- /dev/null +++ b/fml/synchronization/atomic_object.h @@ -0,0 +1,36 @@ +// 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. + +#ifndef FLUTTER_FML_SYNCHRONIZATION_ATOMIC_OBJECT_H_ +#define FLUTTER_FML_SYNCHRONIZATION_ATOMIC_OBJECT_H_ + +#include + +namespace fml { + +// A wrapper for an object instance that can be read or written atomically. +template +class AtomicObject { + public: + AtomicObject() = default; + AtomicObject(T object) : object_(object) {} + + T Load() const { + std::lock_guard lock(mutex_); + return object_; + } + + void Store(const T& object) { + std::lock_guard lock(mutex_); + object_ = object; + } + + private: + mutable std::mutex mutex_; + T object_; +}; + +} // namespace fml + +#endif // FLUTTER_FML_SYNCHRONIZATION_ATOMIC_OBJECT_H_ diff --git a/fml/synchronization/shared_mutex.h b/fml/synchronization/shared_mutex.h new file mode 100644 index 0000000000000..07acb43461bee --- /dev/null +++ b/fml/synchronization/shared_mutex.h @@ -0,0 +1,49 @@ +// 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. + +#ifndef FLUTTER_FML_SYNCHRONIZATION_SHARED_MUTEX_H_ +#define FLUTTER_FML_SYNCHRONIZATION_SHARED_MUTEX_H_ + +namespace fml { + +// Interface for a reader/writer lock. +class SharedMutex { + public: + static SharedMutex* Create(); + virtual ~SharedMutex() = default; + + virtual void Lock() = 0; + virtual void LockShared() = 0; + virtual void Unlock() = 0; +}; + +// RAII wrapper that does a shared acquire of a SharedMutex. +class SharedLock { + public: + explicit SharedLock(SharedMutex& shared_mutex) : shared_mutex_(shared_mutex) { + shared_mutex_.LockShared(); + } + + ~SharedLock() { shared_mutex_.Unlock(); } + + private: + SharedMutex& shared_mutex_; +}; + +// RAII wrapper that does an exclusive acquire of a SharedMutex. +class UniqueLock { + public: + explicit UniqueLock(SharedMutex& shared_mutex) : shared_mutex_(shared_mutex) { + shared_mutex_.Lock(); + } + + ~UniqueLock() { shared_mutex_.Unlock(); } + + private: + SharedMutex& shared_mutex_; +}; + +} // namespace fml + +#endif // FLUTTER_FML_SYNCHRONIZATION_SHARED_MUTEX_H_ diff --git a/fml/synchronization/shared_mutex_std.cc b/fml/synchronization/shared_mutex_std.cc new file mode 100644 index 0000000000000..12509d6893bf1 --- /dev/null +++ b/fml/synchronization/shared_mutex_std.cc @@ -0,0 +1,25 @@ +// 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/fml/synchronization/shared_mutex_std.h" + +namespace fml { + +SharedMutex* SharedMutex::Create() { + return new SharedMutexStd(); +} + +void SharedMutexStd::Lock() { + mutex_.lock(); +} + +void SharedMutexStd::LockShared() { + mutex_.lock_shared(); +} + +void SharedMutexStd::Unlock() { + mutex_.unlock(); +} + +} // namespace fml diff --git a/fml/synchronization/shared_mutex_std.h b/fml/synchronization/shared_mutex_std.h new file mode 100644 index 0000000000000..84ab270bd89ed --- /dev/null +++ b/fml/synchronization/shared_mutex_std.h @@ -0,0 +1,28 @@ +// 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. + +#ifndef FLUTTER_FML_SYNCHRONIZATION_SHARED_MUTEX_STD_H_ +#define FLUTTER_FML_SYNCHRONIZATION_SHARED_MUTEX_STD_H_ + +#include +#include "flutter/fml/synchronization/shared_mutex.h" + +namespace fml { + +class SharedMutexStd : public SharedMutex { + public: + virtual void Lock(); + virtual void LockShared(); + virtual void Unlock(); + + private: + friend SharedMutex* SharedMutex::Create(); + SharedMutexStd() = default; + + std::shared_timed_mutex mutex_; +}; + +} // namespace fml + +#endif // FLUTTER_FML_SYNCHRONIZATION_SHARED_MUTEX_STD_H_ diff --git a/runtime/service_protocol.cc b/runtime/service_protocol.cc index 602ebccf645f2..ea93a120facc7 100644 --- a/runtime/service_protocol.cc +++ b/runtime/service_protocol.cc @@ -45,7 +45,8 @@ ServiceProtocol::ServiceProtocol() kRunInViewExtensionName, kFlushUIThreadTasksExtensionName, kSetAssetBundlePathExtensionName, - }) {} + }), + handlers_mutex_(fml::SharedMutex::Create()) {} ServiceProtocol::~ServiceProtocol() { ToggleHooks(false); @@ -53,21 +54,21 @@ ServiceProtocol::~ServiceProtocol() { void ServiceProtocol::AddHandler(Handler* handler, Handler::Description description) { - std::lock_guard lock(handlers_mutex_); + fml::UniqueLock lock(*handlers_mutex_); handlers_.emplace(handler, description); } void ServiceProtocol::RemoveHandler(Handler* handler) { - std::lock_guard lock(handlers_mutex_); + fml::UniqueLock lock(*handlers_mutex_); handlers_.erase(handler); } void ServiceProtocol::SetHandlerDescription(Handler* handler, Handler::Description description) { - std::lock_guard lock(handlers_mutex_); + fml::SharedLock lock(*handlers_mutex_); auto it = handlers_.find(handler); if (it != handlers_.end()) - it->second = description; + it->second.Store(description); } void ServiceProtocol::ToggleHooks(bool set) { @@ -175,7 +176,7 @@ bool ServiceProtocol::HandleMessage(fml::StringView method, return HandleListViewsMethod(response); } - std::lock_guard lock(handlers_mutex_); + fml::SharedLock lock(*handlers_mutex_); if (handlers_.size() == 0) { WriteServerErrorResponse(response, @@ -246,12 +247,11 @@ void ServiceProtocol::Handler::Description::Write( bool ServiceProtocol::HandleListViewsMethod( rapidjson::Document& response) const { - // Collect handler descriptions on their respective task runners. - std::lock_guard lock(handlers_mutex_); + fml::SharedLock lock(*handlers_mutex_); std::vector> descriptions; for (const auto& handler : handlers_) { descriptions.emplace_back(reinterpret_cast(handler.first), - handler.second); + handler.second.Load()); } auto& allocator = response.GetAllocator(); diff --git a/runtime/service_protocol.h b/runtime/service_protocol.h index 401702e5d5be3..1ab1f9183d208 100644 --- a/runtime/service_protocol.h +++ b/runtime/service_protocol.h @@ -6,13 +6,14 @@ #define FLUTTER_RUNTIME_SERVICE_PROTOCOL_H_ #include -#include #include #include #include "flutter/fml/compiler_specific.h" #include "flutter/fml/macros.h" #include "flutter/fml/string_view.h" +#include "flutter/fml/synchronization/atomic_object.h" +#include "flutter/fml/synchronization/shared_mutex.h" #include "flutter/fml/synchronization/thread_annotations.h" #include "flutter/fml/task_runner.h" #include "rapidjson/document.h" @@ -72,8 +73,8 @@ class ServiceProtocol { private: const std::set endpoints_; - mutable std::mutex handlers_mutex_; - std::map handlers_; + std::unique_ptr handlers_mutex_; + std::map> handlers_; FML_WARN_UNUSED_RESULT static bool HandleMessage(const char* method, From 25db6e08236fa940b12fc30a72b33a30adb593b4 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Sun, 18 Nov 2018 01:17:58 -0500 Subject: [PATCH 0297/1537] Roll src/third_party/skia d017e5138c57..66b91e4afb88 (1 commits) (#6897) https://skia.googlesource.com/skia.git/+log/d017e5138c57..66b91e4afb88 Created with: gclient setdep -r src/third_party/skia@66b91e4afb88 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index b712f4687898b..012e78ea3f306 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'd017e5138c57165a17347c61d1ba9cf35f433620', + 'skia_revision': '66b91e4afb88b337f428e170a90d8d04a339c921', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 330b92496db62..a32473e6aa72e 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 1a7e38a59de016180e82397d8fa5d684 +Signature: ce6e5b05a6dc16cdbe0b54e9015d8ade UNUSED LICENSES: From b44b94eeab948a58006ac9cb4ac3b9761cab40d7 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Sun, 18 Nov 2018 04:36:58 -0500 Subject: [PATCH 0298/1537] Roll src/third_party/skia 66b91e4afb88..def9bcecd994 (1 commits) (#6898) https://skia.googlesource.com/skia.git/+log/66b91e4afb88..def9bcecd994 Created with: gclient setdep -r src/third_party/skia@def9bcecd994 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 012e78ea3f306..c0695dc4a1728 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '66b91e4afb88b337f428e170a90d8d04a339c921', + 'skia_revision': 'def9bcecd994df906227609e885576f7b7c5cddc', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index a32473e6aa72e..2e04b7e65024c 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: ce6e5b05a6dc16cdbe0b54e9015d8ade +Signature: e9f0c13baf47e6e9c327f39821d98b18 UNUSED LICENSES: From b6e93759faa92a96650e326b0e82578a6803c46d Mon Sep 17 00:00:00 2001 From: Todd Volkert Date: Sun, 18 Nov 2018 09:28:26 -0800 Subject: [PATCH 0299/1537] Revert "Guard the service protocol's global handlers list with a reader/writer lock (#6888) #6895" (#6899) --- ci/licenses_golden/licenses_flutter | 6 --- fml/BUILD.gn | 8 ---- fml/platform/posix/shared_mutex_posix.cc | 30 --------------- fml/platform/posix/shared_mutex_posix.h | 28 -------------- fml/synchronization/atomic_object.h | 36 ----------------- fml/synchronization/shared_mutex.h | 49 ------------------------ fml/synchronization/shared_mutex_std.cc | 25 ------------ fml/synchronization/shared_mutex_std.h | 28 -------------- runtime/service_protocol.cc | 18 ++++----- runtime/service_protocol.h | 7 ++-- 10 files changed, 12 insertions(+), 223 deletions(-) delete mode 100644 fml/platform/posix/shared_mutex_posix.cc delete mode 100644 fml/platform/posix/shared_mutex_posix.h delete mode 100644 fml/synchronization/atomic_object.h delete mode 100644 fml/synchronization/shared_mutex.h delete mode 100644 fml/synchronization/shared_mutex_std.cc delete mode 100644 fml/synchronization/shared_mutex_std.h diff --git a/ci/licenses_golden/licenses_flutter b/ci/licenses_golden/licenses_flutter index 63b2ac899e260..2fc0c7a9f63e5 100644 --- a/ci/licenses_golden/licenses_flutter +++ b/ci/licenses_golden/licenses_flutter @@ -164,8 +164,6 @@ FILE: ../../../flutter/fml/platform/posix/file_posix.cc FILE: ../../../flutter/fml/platform/posix/mapping_posix.cc FILE: ../../../flutter/fml/platform/posix/native_library_posix.cc FILE: ../../../flutter/fml/platform/posix/paths_posix.cc -FILE: ../../../flutter/fml/platform/posix/shared_mutex_posix.cc -FILE: ../../../flutter/fml/platform/posix/shared_mutex_posix.h FILE: ../../../flutter/fml/platform/win/errors_win.cc FILE: ../../../flutter/fml/platform/win/errors_win.h FILE: ../../../flutter/fml/platform/win/file_win.cc @@ -178,13 +176,9 @@ FILE: ../../../flutter/fml/platform/win/wstring_conversion.h FILE: ../../../flutter/fml/string_view.cc FILE: ../../../flutter/fml/string_view.h FILE: ../../../flutter/fml/string_view_unittest.cc -FILE: ../../../flutter/fml/synchronization/atomic_object.h FILE: ../../../flutter/fml/synchronization/count_down_latch.cc FILE: ../../../flutter/fml/synchronization/count_down_latch.h FILE: ../../../flutter/fml/synchronization/count_down_latch_unittests.cc -FILE: ../../../flutter/fml/synchronization/shared_mutex.h -FILE: ../../../flutter/fml/synchronization/shared_mutex_std.cc -FILE: ../../../flutter/fml/synchronization/shared_mutex_std.h FILE: ../../../flutter/fml/synchronization/thread_annotations.h FILE: ../../../flutter/fml/synchronization/thread_annotations_unittest.cc FILE: ../../../flutter/fml/synchronization/thread_checker.h diff --git a/fml/BUILD.gn b/fml/BUILD.gn index 0f1a34dec369d..f73f7f40714c4 100644 --- a/fml/BUILD.gn +++ b/fml/BUILD.gn @@ -46,10 +46,8 @@ source_set("fml") { "paths.h", "string_view.cc", "string_view.h", - "synchronization/atomic_object.h", "synchronization/count_down_latch.cc", "synchronization/count_down_latch.h", - "synchronization/shared_mutex.h", "synchronization/thread_annotations.h", "synchronization/thread_checker.h", "synchronization/waitable_event.cc", @@ -85,12 +83,6 @@ source_set("fml") { libs = [] - if (is_ios || is_mac) { - sources += [ "platform/posix/shared_mutex_posix.cc" ] - } else { - sources += [ "synchronization/shared_mutex_std.cc" ] - } - if (is_ios || is_mac) { sources += [ "platform/darwin/cf_utils.cc", diff --git a/fml/platform/posix/shared_mutex_posix.cc b/fml/platform/posix/shared_mutex_posix.cc deleted file mode 100644 index dcbb2938308c5..0000000000000 --- a/fml/platform/posix/shared_mutex_posix.cc +++ /dev/null @@ -1,30 +0,0 @@ -// 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/fml/platform/posix/shared_mutex_posix.h" -#include "flutter/fml/logging.h" - -namespace fml { - -SharedMutex* SharedMutex::Create() { - return new SharedMutexPosix(); -} - -SharedMutexPosix::SharedMutexPosix() { - FML_CHECK(pthread_rwlock_init(&rwlock_, nullptr) == 0); -} - -void SharedMutexPosix::Lock() { - pthread_rwlock_wrlock(&rwlock_); -} - -void SharedMutexPosix::LockShared() { - pthread_rwlock_rdlock(&rwlock_); -} - -void SharedMutexPosix::Unlock() { - pthread_rwlock_unlock(&rwlock_); -} - -} // namespace fml diff --git a/fml/platform/posix/shared_mutex_posix.h b/fml/platform/posix/shared_mutex_posix.h deleted file mode 100644 index 9364400015410..0000000000000 --- a/fml/platform/posix/shared_mutex_posix.h +++ /dev/null @@ -1,28 +0,0 @@ -// 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. - -#ifndef FLUTTER_FML_SYNCHRONIZATION_SHARED_MUTEX_POSIX_H_ -#define FLUTTER_FML_SYNCHRONIZATION_SHARED_MUTEX_POSIX_H_ - -#include -#include "flutter/fml/synchronization/shared_mutex.h" - -namespace fml { - -class SharedMutexPosix : public SharedMutex { - public: - virtual void Lock(); - virtual void LockShared(); - virtual void Unlock(); - - private: - friend SharedMutex* SharedMutex::Create(); - SharedMutexPosix(); - - pthread_rwlock_t rwlock_; -}; - -} // namespace fml - -#endif // FLUTTER_FML_SYNCHRONIZATION_SHARED_MUTEX_POSIX_H_ diff --git a/fml/synchronization/atomic_object.h b/fml/synchronization/atomic_object.h deleted file mode 100644 index 2a06792ff4a24..0000000000000 --- a/fml/synchronization/atomic_object.h +++ /dev/null @@ -1,36 +0,0 @@ -// 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. - -#ifndef FLUTTER_FML_SYNCHRONIZATION_ATOMIC_OBJECT_H_ -#define FLUTTER_FML_SYNCHRONIZATION_ATOMIC_OBJECT_H_ - -#include - -namespace fml { - -// A wrapper for an object instance that can be read or written atomically. -template -class AtomicObject { - public: - AtomicObject() = default; - AtomicObject(T object) : object_(object) {} - - T Load() const { - std::lock_guard lock(mutex_); - return object_; - } - - void Store(const T& object) { - std::lock_guard lock(mutex_); - object_ = object; - } - - private: - mutable std::mutex mutex_; - T object_; -}; - -} // namespace fml - -#endif // FLUTTER_FML_SYNCHRONIZATION_ATOMIC_OBJECT_H_ diff --git a/fml/synchronization/shared_mutex.h b/fml/synchronization/shared_mutex.h deleted file mode 100644 index 07acb43461bee..0000000000000 --- a/fml/synchronization/shared_mutex.h +++ /dev/null @@ -1,49 +0,0 @@ -// 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. - -#ifndef FLUTTER_FML_SYNCHRONIZATION_SHARED_MUTEX_H_ -#define FLUTTER_FML_SYNCHRONIZATION_SHARED_MUTEX_H_ - -namespace fml { - -// Interface for a reader/writer lock. -class SharedMutex { - public: - static SharedMutex* Create(); - virtual ~SharedMutex() = default; - - virtual void Lock() = 0; - virtual void LockShared() = 0; - virtual void Unlock() = 0; -}; - -// RAII wrapper that does a shared acquire of a SharedMutex. -class SharedLock { - public: - explicit SharedLock(SharedMutex& shared_mutex) : shared_mutex_(shared_mutex) { - shared_mutex_.LockShared(); - } - - ~SharedLock() { shared_mutex_.Unlock(); } - - private: - SharedMutex& shared_mutex_; -}; - -// RAII wrapper that does an exclusive acquire of a SharedMutex. -class UniqueLock { - public: - explicit UniqueLock(SharedMutex& shared_mutex) : shared_mutex_(shared_mutex) { - shared_mutex_.Lock(); - } - - ~UniqueLock() { shared_mutex_.Unlock(); } - - private: - SharedMutex& shared_mutex_; -}; - -} // namespace fml - -#endif // FLUTTER_FML_SYNCHRONIZATION_SHARED_MUTEX_H_ diff --git a/fml/synchronization/shared_mutex_std.cc b/fml/synchronization/shared_mutex_std.cc deleted file mode 100644 index 12509d6893bf1..0000000000000 --- a/fml/synchronization/shared_mutex_std.cc +++ /dev/null @@ -1,25 +0,0 @@ -// 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/fml/synchronization/shared_mutex_std.h" - -namespace fml { - -SharedMutex* SharedMutex::Create() { - return new SharedMutexStd(); -} - -void SharedMutexStd::Lock() { - mutex_.lock(); -} - -void SharedMutexStd::LockShared() { - mutex_.lock_shared(); -} - -void SharedMutexStd::Unlock() { - mutex_.unlock(); -} - -} // namespace fml diff --git a/fml/synchronization/shared_mutex_std.h b/fml/synchronization/shared_mutex_std.h deleted file mode 100644 index 84ab270bd89ed..0000000000000 --- a/fml/synchronization/shared_mutex_std.h +++ /dev/null @@ -1,28 +0,0 @@ -// 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. - -#ifndef FLUTTER_FML_SYNCHRONIZATION_SHARED_MUTEX_STD_H_ -#define FLUTTER_FML_SYNCHRONIZATION_SHARED_MUTEX_STD_H_ - -#include -#include "flutter/fml/synchronization/shared_mutex.h" - -namespace fml { - -class SharedMutexStd : public SharedMutex { - public: - virtual void Lock(); - virtual void LockShared(); - virtual void Unlock(); - - private: - friend SharedMutex* SharedMutex::Create(); - SharedMutexStd() = default; - - std::shared_timed_mutex mutex_; -}; - -} // namespace fml - -#endif // FLUTTER_FML_SYNCHRONIZATION_SHARED_MUTEX_STD_H_ diff --git a/runtime/service_protocol.cc b/runtime/service_protocol.cc index ea93a120facc7..602ebccf645f2 100644 --- a/runtime/service_protocol.cc +++ b/runtime/service_protocol.cc @@ -45,8 +45,7 @@ ServiceProtocol::ServiceProtocol() kRunInViewExtensionName, kFlushUIThreadTasksExtensionName, kSetAssetBundlePathExtensionName, - }), - handlers_mutex_(fml::SharedMutex::Create()) {} + }) {} ServiceProtocol::~ServiceProtocol() { ToggleHooks(false); @@ -54,21 +53,21 @@ ServiceProtocol::~ServiceProtocol() { void ServiceProtocol::AddHandler(Handler* handler, Handler::Description description) { - fml::UniqueLock lock(*handlers_mutex_); + std::lock_guard lock(handlers_mutex_); handlers_.emplace(handler, description); } void ServiceProtocol::RemoveHandler(Handler* handler) { - fml::UniqueLock lock(*handlers_mutex_); + std::lock_guard lock(handlers_mutex_); handlers_.erase(handler); } void ServiceProtocol::SetHandlerDescription(Handler* handler, Handler::Description description) { - fml::SharedLock lock(*handlers_mutex_); + std::lock_guard lock(handlers_mutex_); auto it = handlers_.find(handler); if (it != handlers_.end()) - it->second.Store(description); + it->second = description; } void ServiceProtocol::ToggleHooks(bool set) { @@ -176,7 +175,7 @@ bool ServiceProtocol::HandleMessage(fml::StringView method, return HandleListViewsMethod(response); } - fml::SharedLock lock(*handlers_mutex_); + std::lock_guard lock(handlers_mutex_); if (handlers_.size() == 0) { WriteServerErrorResponse(response, @@ -247,11 +246,12 @@ void ServiceProtocol::Handler::Description::Write( bool ServiceProtocol::HandleListViewsMethod( rapidjson::Document& response) const { - fml::SharedLock lock(*handlers_mutex_); + // Collect handler descriptions on their respective task runners. + std::lock_guard lock(handlers_mutex_); std::vector> descriptions; for (const auto& handler : handlers_) { descriptions.emplace_back(reinterpret_cast(handler.first), - handler.second.Load()); + handler.second); } auto& allocator = response.GetAllocator(); diff --git a/runtime/service_protocol.h b/runtime/service_protocol.h index 1ab1f9183d208..401702e5d5be3 100644 --- a/runtime/service_protocol.h +++ b/runtime/service_protocol.h @@ -6,14 +6,13 @@ #define FLUTTER_RUNTIME_SERVICE_PROTOCOL_H_ #include +#include #include #include #include "flutter/fml/compiler_specific.h" #include "flutter/fml/macros.h" #include "flutter/fml/string_view.h" -#include "flutter/fml/synchronization/atomic_object.h" -#include "flutter/fml/synchronization/shared_mutex.h" #include "flutter/fml/synchronization/thread_annotations.h" #include "flutter/fml/task_runner.h" #include "rapidjson/document.h" @@ -73,8 +72,8 @@ class ServiceProtocol { private: const std::set endpoints_; - std::unique_ptr handlers_mutex_; - std::map> handlers_; + mutable std::mutex handlers_mutex_; + std::map handlers_; FML_WARN_UNUSED_RESULT static bool HandleMessage(const char* method, From cebde437a1b1abb0fb1f560375748c5d749d9143 Mon Sep 17 00:00:00 2001 From: Alexander Aprelev Date: Sun, 18 Nov 2018 14:36:15 -0800 Subject: [PATCH 0300/1537] Guard the service protocol's global handlers list with a reader/writer lock. (#6900) * Revert "Revert "Guard the service protocol's global handlers list with a reader/writer lock (#6888) #6895" (#6899)" This reverts commit b6e93759faa92a96650e326b0e82578a6803c46d and applies fix for tests on Windows. * Reland guard the service protocol's global handlers list with a reader/writer lock. * Remove blank line --- ci/licenses_golden/licenses_flutter | 6 +++ fml/BUILD.gn | 8 ++++ fml/platform/posix/shared_mutex_posix.cc | 34 ++++++++++++++++ fml/platform/posix/shared_mutex_posix.h | 29 ++++++++++++++ fml/synchronization/atomic_object.h | 36 +++++++++++++++++ fml/synchronization/shared_mutex.h | 50 ++++++++++++++++++++++++ fml/synchronization/shared_mutex_std.cc | 29 ++++++++++++++ fml/synchronization/shared_mutex_std.h | 29 ++++++++++++++ runtime/service_protocol.cc | 18 ++++----- runtime/service_protocol.h | 7 ++-- 10 files changed, 234 insertions(+), 12 deletions(-) create mode 100644 fml/platform/posix/shared_mutex_posix.cc create mode 100644 fml/platform/posix/shared_mutex_posix.h create mode 100644 fml/synchronization/atomic_object.h create mode 100644 fml/synchronization/shared_mutex.h create mode 100644 fml/synchronization/shared_mutex_std.cc create mode 100644 fml/synchronization/shared_mutex_std.h diff --git a/ci/licenses_golden/licenses_flutter b/ci/licenses_golden/licenses_flutter index 2fc0c7a9f63e5..63b2ac899e260 100644 --- a/ci/licenses_golden/licenses_flutter +++ b/ci/licenses_golden/licenses_flutter @@ -164,6 +164,8 @@ FILE: ../../../flutter/fml/platform/posix/file_posix.cc FILE: ../../../flutter/fml/platform/posix/mapping_posix.cc FILE: ../../../flutter/fml/platform/posix/native_library_posix.cc FILE: ../../../flutter/fml/platform/posix/paths_posix.cc +FILE: ../../../flutter/fml/platform/posix/shared_mutex_posix.cc +FILE: ../../../flutter/fml/platform/posix/shared_mutex_posix.h FILE: ../../../flutter/fml/platform/win/errors_win.cc FILE: ../../../flutter/fml/platform/win/errors_win.h FILE: ../../../flutter/fml/platform/win/file_win.cc @@ -176,9 +178,13 @@ FILE: ../../../flutter/fml/platform/win/wstring_conversion.h FILE: ../../../flutter/fml/string_view.cc FILE: ../../../flutter/fml/string_view.h FILE: ../../../flutter/fml/string_view_unittest.cc +FILE: ../../../flutter/fml/synchronization/atomic_object.h FILE: ../../../flutter/fml/synchronization/count_down_latch.cc FILE: ../../../flutter/fml/synchronization/count_down_latch.h FILE: ../../../flutter/fml/synchronization/count_down_latch_unittests.cc +FILE: ../../../flutter/fml/synchronization/shared_mutex.h +FILE: ../../../flutter/fml/synchronization/shared_mutex_std.cc +FILE: ../../../flutter/fml/synchronization/shared_mutex_std.h FILE: ../../../flutter/fml/synchronization/thread_annotations.h FILE: ../../../flutter/fml/synchronization/thread_annotations_unittest.cc FILE: ../../../flutter/fml/synchronization/thread_checker.h diff --git a/fml/BUILD.gn b/fml/BUILD.gn index f73f7f40714c4..0f1a34dec369d 100644 --- a/fml/BUILD.gn +++ b/fml/BUILD.gn @@ -46,8 +46,10 @@ source_set("fml") { "paths.h", "string_view.cc", "string_view.h", + "synchronization/atomic_object.h", "synchronization/count_down_latch.cc", "synchronization/count_down_latch.h", + "synchronization/shared_mutex.h", "synchronization/thread_annotations.h", "synchronization/thread_checker.h", "synchronization/waitable_event.cc", @@ -83,6 +85,12 @@ source_set("fml") { libs = [] + if (is_ios || is_mac) { + sources += [ "platform/posix/shared_mutex_posix.cc" ] + } else { + sources += [ "synchronization/shared_mutex_std.cc" ] + } + if (is_ios || is_mac) { sources += [ "platform/darwin/cf_utils.cc", diff --git a/fml/platform/posix/shared_mutex_posix.cc b/fml/platform/posix/shared_mutex_posix.cc new file mode 100644 index 0000000000000..1435088f09f52 --- /dev/null +++ b/fml/platform/posix/shared_mutex_posix.cc @@ -0,0 +1,34 @@ +// 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/fml/platform/posix/shared_mutex_posix.h" +#include "flutter/fml/logging.h" + +namespace fml { + +SharedMutex* SharedMutex::Create() { + return new SharedMutexPosix(); +} + +SharedMutexPosix::SharedMutexPosix() { + FML_CHECK(pthread_rwlock_init(&rwlock_, nullptr) == 0); +} + +void SharedMutexPosix::Lock() { + pthread_rwlock_wrlock(&rwlock_); +} + +void SharedMutexPosix::LockShared() { + pthread_rwlock_rdlock(&rwlock_); +} + +void SharedMutexPosix::Unlock() { + pthread_rwlock_unlock(&rwlock_); +} + +void SharedMutexPosix::UnlockShared() { + pthread_rwlock_unlock(&rwlock_); +} + +} // namespace fml diff --git a/fml/platform/posix/shared_mutex_posix.h b/fml/platform/posix/shared_mutex_posix.h new file mode 100644 index 0000000000000..a0ab683b47eba --- /dev/null +++ b/fml/platform/posix/shared_mutex_posix.h @@ -0,0 +1,29 @@ +// 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. + +#ifndef FLUTTER_FML_SYNCHRONIZATION_SHARED_MUTEX_POSIX_H_ +#define FLUTTER_FML_SYNCHRONIZATION_SHARED_MUTEX_POSIX_H_ + +#include +#include "flutter/fml/synchronization/shared_mutex.h" + +namespace fml { + +class SharedMutexPosix : public SharedMutex { + public: + virtual void Lock(); + virtual void LockShared(); + virtual void Unlock(); + virtual void UnlockShared(); + + private: + friend SharedMutex* SharedMutex::Create(); + SharedMutexPosix(); + + pthread_rwlock_t rwlock_; +}; + +} // namespace fml + +#endif // FLUTTER_FML_SYNCHRONIZATION_SHARED_MUTEX_POSIX_H_ diff --git a/fml/synchronization/atomic_object.h b/fml/synchronization/atomic_object.h new file mode 100644 index 0000000000000..2a06792ff4a24 --- /dev/null +++ b/fml/synchronization/atomic_object.h @@ -0,0 +1,36 @@ +// 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. + +#ifndef FLUTTER_FML_SYNCHRONIZATION_ATOMIC_OBJECT_H_ +#define FLUTTER_FML_SYNCHRONIZATION_ATOMIC_OBJECT_H_ + +#include + +namespace fml { + +// A wrapper for an object instance that can be read or written atomically. +template +class AtomicObject { + public: + AtomicObject() = default; + AtomicObject(T object) : object_(object) {} + + T Load() const { + std::lock_guard lock(mutex_); + return object_; + } + + void Store(const T& object) { + std::lock_guard lock(mutex_); + object_ = object; + } + + private: + mutable std::mutex mutex_; + T object_; +}; + +} // namespace fml + +#endif // FLUTTER_FML_SYNCHRONIZATION_ATOMIC_OBJECT_H_ diff --git a/fml/synchronization/shared_mutex.h b/fml/synchronization/shared_mutex.h new file mode 100644 index 0000000000000..a5f343d2d5e49 --- /dev/null +++ b/fml/synchronization/shared_mutex.h @@ -0,0 +1,50 @@ +// 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. + +#ifndef FLUTTER_FML_SYNCHRONIZATION_SHARED_MUTEX_H_ +#define FLUTTER_FML_SYNCHRONIZATION_SHARED_MUTEX_H_ + +namespace fml { + +// Interface for a reader/writer lock. +class SharedMutex { + public: + static SharedMutex* Create(); + virtual ~SharedMutex() = default; + + virtual void Lock() = 0; + virtual void LockShared() = 0; + virtual void Unlock() = 0; + virtual void UnlockShared() = 0; +}; + +// RAII wrapper that does a shared acquire of a SharedMutex. +class SharedLock { + public: + explicit SharedLock(SharedMutex& shared_mutex) : shared_mutex_(shared_mutex) { + shared_mutex_.LockShared(); + } + + ~SharedLock() { shared_mutex_.UnlockShared(); } + + private: + SharedMutex& shared_mutex_; +}; + +// RAII wrapper that does an exclusive acquire of a SharedMutex. +class UniqueLock { + public: + explicit UniqueLock(SharedMutex& shared_mutex) : shared_mutex_(shared_mutex) { + shared_mutex_.Lock(); + } + + ~UniqueLock() { shared_mutex_.Unlock(); } + + private: + SharedMutex& shared_mutex_; +}; + +} // namespace fml + +#endif // FLUTTER_FML_SYNCHRONIZATION_SHARED_MUTEX_H_ diff --git a/fml/synchronization/shared_mutex_std.cc b/fml/synchronization/shared_mutex_std.cc new file mode 100644 index 0000000000000..41754446abd1f --- /dev/null +++ b/fml/synchronization/shared_mutex_std.cc @@ -0,0 +1,29 @@ +// 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/fml/synchronization/shared_mutex_std.h" + +namespace fml { + +SharedMutex* SharedMutex::Create() { + return new SharedMutexStd(); +} + +void SharedMutexStd::Lock() { + mutex_.lock(); +} + +void SharedMutexStd::LockShared() { + mutex_.lock_shared(); +} + +void SharedMutexStd::Unlock() { + mutex_.unlock(); +} + +void SharedMutexStd::UnlockShared() { + mutex_.unlock_shared(); +} + +} // namespace fml diff --git a/fml/synchronization/shared_mutex_std.h b/fml/synchronization/shared_mutex_std.h new file mode 100644 index 0000000000000..a9b1b9338a598 --- /dev/null +++ b/fml/synchronization/shared_mutex_std.h @@ -0,0 +1,29 @@ +// 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. + +#ifndef FLUTTER_FML_SYNCHRONIZATION_SHARED_MUTEX_STD_H_ +#define FLUTTER_FML_SYNCHRONIZATION_SHARED_MUTEX_STD_H_ + +#include +#include "flutter/fml/synchronization/shared_mutex.h" + +namespace fml { + +class SharedMutexStd : public SharedMutex { + public: + virtual void Lock(); + virtual void LockShared(); + virtual void Unlock(); + virtual void UnlockShared(); + + private: + friend SharedMutex* SharedMutex::Create(); + SharedMutexStd() = default; + + std::shared_timed_mutex mutex_; +}; + +} // namespace fml + +#endif // FLUTTER_FML_SYNCHRONIZATION_SHARED_MUTEX_STD_H_ diff --git a/runtime/service_protocol.cc b/runtime/service_protocol.cc index 602ebccf645f2..ea93a120facc7 100644 --- a/runtime/service_protocol.cc +++ b/runtime/service_protocol.cc @@ -45,7 +45,8 @@ ServiceProtocol::ServiceProtocol() kRunInViewExtensionName, kFlushUIThreadTasksExtensionName, kSetAssetBundlePathExtensionName, - }) {} + }), + handlers_mutex_(fml::SharedMutex::Create()) {} ServiceProtocol::~ServiceProtocol() { ToggleHooks(false); @@ -53,21 +54,21 @@ ServiceProtocol::~ServiceProtocol() { void ServiceProtocol::AddHandler(Handler* handler, Handler::Description description) { - std::lock_guard lock(handlers_mutex_); + fml::UniqueLock lock(*handlers_mutex_); handlers_.emplace(handler, description); } void ServiceProtocol::RemoveHandler(Handler* handler) { - std::lock_guard lock(handlers_mutex_); + fml::UniqueLock lock(*handlers_mutex_); handlers_.erase(handler); } void ServiceProtocol::SetHandlerDescription(Handler* handler, Handler::Description description) { - std::lock_guard lock(handlers_mutex_); + fml::SharedLock lock(*handlers_mutex_); auto it = handlers_.find(handler); if (it != handlers_.end()) - it->second = description; + it->second.Store(description); } void ServiceProtocol::ToggleHooks(bool set) { @@ -175,7 +176,7 @@ bool ServiceProtocol::HandleMessage(fml::StringView method, return HandleListViewsMethod(response); } - std::lock_guard lock(handlers_mutex_); + fml::SharedLock lock(*handlers_mutex_); if (handlers_.size() == 0) { WriteServerErrorResponse(response, @@ -246,12 +247,11 @@ void ServiceProtocol::Handler::Description::Write( bool ServiceProtocol::HandleListViewsMethod( rapidjson::Document& response) const { - // Collect handler descriptions on their respective task runners. - std::lock_guard lock(handlers_mutex_); + fml::SharedLock lock(*handlers_mutex_); std::vector> descriptions; for (const auto& handler : handlers_) { descriptions.emplace_back(reinterpret_cast(handler.first), - handler.second); + handler.second.Load()); } auto& allocator = response.GetAllocator(); diff --git a/runtime/service_protocol.h b/runtime/service_protocol.h index 401702e5d5be3..1ab1f9183d208 100644 --- a/runtime/service_protocol.h +++ b/runtime/service_protocol.h @@ -6,13 +6,14 @@ #define FLUTTER_RUNTIME_SERVICE_PROTOCOL_H_ #include -#include #include #include #include "flutter/fml/compiler_specific.h" #include "flutter/fml/macros.h" #include "flutter/fml/string_view.h" +#include "flutter/fml/synchronization/atomic_object.h" +#include "flutter/fml/synchronization/shared_mutex.h" #include "flutter/fml/synchronization/thread_annotations.h" #include "flutter/fml/task_runner.h" #include "rapidjson/document.h" @@ -72,8 +73,8 @@ class ServiceProtocol { private: const std::set endpoints_; - mutable std::mutex handlers_mutex_; - std::map handlers_; + std::unique_ptr handlers_mutex_; + std::map> handlers_; FML_WARN_UNUSED_RESULT static bool HandleMessage(const char* method, From 3114206a6462da1fbaab9c8e49995bc20feddf35 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Sun, 18 Nov 2018 19:42:32 -0500 Subject: [PATCH 0301/1537] Roll src/third_party/skia def9bcecd994..e22505b4f07f (1 commits) (#6901) https://skia.googlesource.com/skia.git/+log/def9bcecd994..e22505b4f07f Created with: gclient setdep -r src/third_party/skia@e22505b4f07f The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index c0695dc4a1728..4d46f7b0a1da2 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'def9bcecd994df906227609e885576f7b7c5cddc', + 'skia_revision': 'e22505b4f07f36e17a71ee78f098e40ab7a6abfa', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 2e04b7e65024c..9142b04657cdd 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: e9f0c13baf47e6e9c327f39821d98b18 +Signature: fb8e20a138ed278fe86e2f9793f5500f UNUSED LICENSES: From dccbf9f414024a24e4bc356886639073ca5237a2 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Mon, 19 Nov 2018 00:59:00 -0500 Subject: [PATCH 0302/1537] Roll src/third_party/skia e22505b4f07f..01979132133e (1 commits) (#6902) https://skia.googlesource.com/skia.git/+log/e22505b4f07f..01979132133e Created with: gclient setdep -r src/third_party/skia@01979132133e The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 4d46f7b0a1da2..710e814383f11 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'e22505b4f07f36e17a71ee78f098e40ab7a6abfa', + 'skia_revision': '01979132133e474427a5e615cb05d9e203ae676e', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 9142b04657cdd..d55f8280e5164 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: fb8e20a138ed278fe86e2f9793f5500f +Signature: 1634d43149f153e2b6e2133f798fa4a0 UNUSED LICENSES: From 46b2e1eed7608d24784c827b5c5e5e9d5217772d Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Mon, 19 Nov 2018 04:47:00 -0500 Subject: [PATCH 0303/1537] Roll src/third_party/skia 01979132133e..e7b1a13a1e2a (1 commits) (#6904) https://skia.googlesource.com/skia.git/+log/01979132133e..e7b1a13a1e2a Created with: gclient setdep -r src/third_party/skia@e7b1a13a1e2a The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 710e814383f11..c19c157e31a65 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '01979132133e474427a5e615cb05d9e203ae676e', + 'skia_revision': 'e7b1a13a1e2ae07cd53144bc979184118f1a852e', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index d55f8280e5164..849688c9509ef 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 1634d43149f153e2b6e2133f798fa4a0 +Signature: f3b1dc53b7103b7af2079df1d716aa81 UNUSED LICENSES: From 2e06da3df9cb370795f49747fdfd295b8168c133 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Mon, 19 Nov 2018 09:00:25 -0500 Subject: [PATCH 0304/1537] Roll src/third_party/skia e7b1a13a1e2a..f7376330d11e (1 commits) (#6905) https://skia.googlesource.com/skia.git/+log/e7b1a13a1e2a..f7376330d11e Created with: gclient setdep -r src/third_party/skia@f7376330d11e The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index c19c157e31a65..afde43029edbe 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'e7b1a13a1e2ae07cd53144bc979184118f1a852e', + 'skia_revision': 'f7376330d11e49da84269b581dbdb586e347b6af', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 849688c9509ef..64ae7769cdade 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: f3b1dc53b7103b7af2079df1d716aa81 +Signature: 53187ede3cb68929e620d188862f5253 UNUSED LICENSES: From 2f1b388f5ab5d921877e644a1c30f4d143670ca0 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Mon, 19 Nov 2018 11:26:42 -0500 Subject: [PATCH 0305/1537] Roll src/third_party/skia f7376330d11e..f2a7a20b32ad (7 commits) (#6906) https://skia.googlesource.com/skia.git/+log/f7376330d11e..f2a7a20b32ad Created with: gclient setdep -r src/third_party/skia@f2a7a20b32ad The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 6 ++---- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/DEPS b/DEPS index afde43029edbe..d21a55a320b87 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'f7376330d11e49da84269b581dbdb586e347b6af', + 'skia_revision': 'f2a7a20b32ad5df6a14407e89216fc04d43af5dc', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 64ae7769cdade..2c53031c92a51 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 53187ede3cb68929e620d188862f5253 +Signature: eb8485a5ac957ff52e9b6d426c643673 UNUSED LICENSES: @@ -1313,6 +1313,7 @@ FILE: ../../../third_party/skia/gm/crbug_847759.cpp FILE: ../../../third_party/skia/gm/crbug_884166.cpp FILE: ../../../third_party/skia/gm/crbug_887103.cpp FILE: ../../../third_party/skia/gm/crbug_892988.cpp +FILE: ../../../third_party/skia/gm/crbug_899512.cpp FILE: ../../../third_party/skia/gm/drawimageset.cpp FILE: ../../../third_party/skia/gm/fwidth_squircle.cpp FILE: ../../../third_party/skia/gm/gradients_degenerate.cpp @@ -2847,9 +2848,6 @@ FILE: ../../../third_party/skia/src/core/SkAAClip.h FILE: ../../../third_party/skia/src/core/SkAdvancedTypefaceMetrics.h FILE: ../../../third_party/skia/src/core/SkBitmapProcState.cpp FILE: ../../../third_party/skia/src/core/SkBitmapProcState_matrix.h -FILE: ../../../third_party/skia/src/core/SkBitmapProcState_procs.h -FILE: ../../../third_party/skia/src/core/SkBitmapProcState_sample.h -FILE: ../../../third_party/skia/src/core/SkBitmapProcState_shaderproc.h FILE: ../../../third_party/skia/src/core/SkBlitRow.h FILE: ../../../third_party/skia/src/core/SkBlitRow_D32.cpp FILE: ../../../third_party/skia/src/core/SkClipStack.cpp From e5b9f3508c22a7075f280a4a444c47a90172a3dd Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Mon, 19 Nov 2018 14:47:41 -0500 Subject: [PATCH 0306/1537] Roll src/third_party/skia f2a7a20b32ad..133944a14f4f (12 commits) (#6907) https://skia.googlesource.com/skia.git/+log/f2a7a20b32ad..133944a14f4f Created with: gclient setdep -r src/third_party/skia@133944a14f4f The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index d21a55a320b87..33ad79cdcf524 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'f2a7a20b32ad5df6a14407e89216fc04d43af5dc', + 'skia_revision': '133944a14f4f0aa68d4a1f3c2e78f5f187efb1ee', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 2c53031c92a51..86bd9b0c2a0c8 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: eb8485a5ac957ff52e9b6d426c643673 +Signature: cf7ea7a884cca9ed70bb0057bc5b4d36 UNUSED LICENSES: @@ -1594,6 +1594,8 @@ FILE: ../../../third_party/skia/src/gpu/mtl/GrMtlUniformHandler.h FILE: ../../../third_party/skia/src/gpu/mtl/GrMtlUniformHandler.mm FILE: ../../../third_party/skia/src/gpu/mtl/GrMtlVaryingHandler.h FILE: ../../../third_party/skia/src/gpu/mtl/GrMtlVaryingHandler.mm +FILE: ../../../third_party/skia/src/gpu/ops/GrAAFillRRectOp.cpp +FILE: ../../../third_party/skia/src/gpu/ops/GrAAFillRRectOp.h FILE: ../../../third_party/skia/src/gpu/ops/GrClearStencilClipOp.cpp FILE: ../../../third_party/skia/src/gpu/ops/GrDebugMarkerOp.cpp FILE: ../../../third_party/skia/src/gpu/ops/GrDrawableOp.cpp From a4afd19a97e2add241dc2fbc4a1208bb30552720 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Mon, 19 Nov 2018 18:10:41 -0500 Subject: [PATCH 0307/1537] Roll src/third_party/skia 133944a14f4f..a63cf8e80aa5 (3 commits) (#6909) https://skia.googlesource.com/skia.git/+log/133944a14f4f..a63cf8e80aa5 Created with: gclient setdep -r src/third_party/skia@a63cf8e80aa5 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 33ad79cdcf524..7466d0899bf9e 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '133944a14f4f0aa68d4a1f3c2e78f5f187efb1ee', + 'skia_revision': 'a63cf8e80aa5eaade9bfb4c30662cec9157a4372', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 86bd9b0c2a0c8..62fb66b6c8ac2 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: cf7ea7a884cca9ed70bb0057bc5b4d36 +Signature: 54df619f47d4e66e28f4d4ee1780ee49 UNUSED LICENSES: From 1baf081343530dbaa8bec378fe1ce26b4897c23f Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Mon, 19 Nov 2018 22:41:41 -0500 Subject: [PATCH 0308/1537] Roll src/third_party/skia a63cf8e80aa5..6bdfb6fba352 (1 commits) (#6911) https://skia.googlesource.com/skia.git/+log/a63cf8e80aa5..6bdfb6fba352 Created with: gclient setdep -r src/third_party/skia@6bdfb6fba352 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 7466d0899bf9e..f2031d946486f 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'a63cf8e80aa5eaade9bfb4c30662cec9157a4372', + 'skia_revision': '6bdfb6fba35273f9c2e0765868bc3421eb5c26b5', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 62fb66b6c8ac2..bbf27a5f4ed34 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 54df619f47d4e66e28f4d4ee1780ee49 +Signature: f4f22bd51d62c5d5455499d472069612 UNUSED LICENSES: From 9ccd1e86df956761a244bd3e6df2c1106514e10b Mon Sep 17 00:00:00 2001 From: Michael Goderbauer Date: Mon, 19 Nov 2018 20:29:31 -0800 Subject: [PATCH 0309/1537] Compile libcxx and libcxxabi for Android (#6886) --- DEPS | 8 +- ci/licenses_golden/licenses_third_party | 545 +++++++++++++++++++++++- sky/packages/sky_engine/LICENSE | 111 +++++ tools/licenses/lib/main.dart | 96 +++-- 4 files changed, 724 insertions(+), 36 deletions(-) diff --git a/DEPS b/DEPS index f2031d946486f..5b8c2b0d947e3 100644 --- a/DEPS +++ b/DEPS @@ -117,7 +117,7 @@ allowed_hosts = [ ] deps = { - 'src': 'https://github.com/flutter/buildroot.git' + '@' + '2b7fe9635c00c932f86627988e797a097574929e', + 'src': 'https://github.com/flutter/buildroot.git' + '@' + '98cd6828f68ee4ee592db50891f46f92072c08e1', # Fuchsia compatibility # @@ -140,6 +140,12 @@ deps = { 'src/third_party/harfbuzz': Var('fuchsia_git') + '/third_party/harfbuzz' + '@' + '02caec6c1c6ad996666788b8e920ccaec8b385e5', + 'src/third_party/libcxx': + Var('fuchsia_git') + '/third_party/libcxx' + '@' + 'c5a5fa59789213c7dae68d2e51cb28ef681d8257', + + 'src/third_party/libcxxabi': + Var('fuchsia_git') + '/third_party/libcxxabi' + '@' + '1a9753522f1ae8d72848d365902f39e0d3d59a39', + # Chromium-style # # As part of integrating with Fuchsia, we should eventually remove all these diff --git a/ci/licenses_golden/licenses_third_party b/ci/licenses_golden/licenses_third_party index a06c935614ec2..81459beeffa9e 100644 --- a/ci/licenses_golden/licenses_third_party +++ b/ci/licenses_golden/licenses_third_party @@ -1,4 +1,4 @@ -Signature: 688d05f1b8d8726e65b28a27ccc7dfcb +Signature: d7c30cf5ac4c421cc15ff2731ade24c4 UNUSED LICENSES: @@ -13123,6 +13123,547 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ==================================================================================================== +==================================================================================================== +LIBRARY: libcxx +LIBRARY: libcxxabi +ORIGIN: null +TYPE: LicenseType.mit +FILE: ../../../third_party/libcxx/.arcconfig +FILE: ../../../third_party/libcxx/appveyor-reqs-install.cmd +FILE: ../../../third_party/libcxx/appveyor.yml +FILE: ../../../third_party/libcxx/benchmarks/ContainerBenchmarks.hpp +FILE: ../../../third_party/libcxx/benchmarks/GenerateInput.hpp +FILE: ../../../third_party/libcxx/benchmarks/algorithms.bench.cpp +FILE: ../../../third_party/libcxx/benchmarks/filesystem.bench.cpp +FILE: ../../../third_party/libcxx/benchmarks/lit.site.cfg.py.in +FILE: ../../../third_party/libcxx/benchmarks/string.bench.cpp +FILE: ../../../third_party/libcxx/benchmarks/stringstream.bench.cpp +FILE: ../../../third_party/libcxx/benchmarks/unordered_set_operations.bench.cpp +FILE: ../../../third_party/libcxx/benchmarks/vector_operations.bench.cpp +FILE: ../../../third_party/libcxx/docs/BuildingLibcxx.rst +FILE: ../../../third_party/libcxx/docs/DesignDocs/ABIVersioning.rst +FILE: ../../../third_party/libcxx/docs/DesignDocs/AvailabilityMarkup.rst +FILE: ../../../third_party/libcxx/docs/DesignDocs/DebugMode.rst +FILE: ../../../third_party/libcxx/docs/DesignDocs/FileTimeType.rst +FILE: ../../../third_party/libcxx/docs/DesignDocs/ThreadingSupportAPI.rst +FILE: ../../../third_party/libcxx/docs/DesignDocs/VisibilityMacros.rst +FILE: ../../../third_party/libcxx/docs/Makefile.sphinx +FILE: ../../../third_party/libcxx/docs/ReleaseNotes.rst +FILE: ../../../third_party/libcxx/docs/TestingLibcxx.rst +FILE: ../../../third_party/libcxx/docs/UsingLibcxx.rst +FILE: ../../../third_party/libcxx/docs/index.rst +FILE: ../../../third_party/libcxx/include/__libcpp_version +FILE: ../../../third_party/libcxx/include/__split_buffer +FILE: ../../../third_party/libcxx/include/__string +FILE: ../../../third_party/libcxx/include/__undef_macros +FILE: ../../../third_party/libcxx/include/any +FILE: ../../../third_party/libcxx/include/atomic +FILE: ../../../third_party/libcxx/include/cinttypes +FILE: ../../../third_party/libcxx/include/cstring +FILE: ../../../third_party/libcxx/include/experimental/any +FILE: ../../../third_party/libcxx/include/experimental/chrono +FILE: ../../../third_party/libcxx/include/experimental/coroutine +FILE: ../../../third_party/libcxx/include/experimental/iterator +FILE: ../../../third_party/libcxx/include/experimental/memory_resource +FILE: ../../../third_party/libcxx/include/experimental/ratio +FILE: ../../../third_party/libcxx/include/experimental/string_view +FILE: ../../../third_party/libcxx/include/inttypes.h +FILE: ../../../third_party/libcxx/include/module.modulemap +FILE: ../../../third_party/libcxx/include/stdint.h +FILE: ../../../third_party/libcxx/include/string +FILE: ../../../third_party/libcxx/include/string.h +FILE: ../../../third_party/libcxx/include/string_view +FILE: ../../../third_party/libcxx/include/tuple +FILE: ../../../third_party/libcxx/lib/abi/3.9/x86_64-apple-darwin16.abilist +FILE: ../../../third_party/libcxx/lib/abi/3.9/x86_64-linux-gnu.abilist +FILE: ../../../third_party/libcxx/lib/abi/4.0/x86_64-apple-darwin16.abilist +FILE: ../../../third_party/libcxx/lib/abi/4.0/x86_64-unknown-linux-gnu.abilist +FILE: ../../../third_party/libcxx/lib/abi/5.0/x86_64-apple-darwin16.abilist +FILE: ../../../third_party/libcxx/lib/abi/5.0/x86_64-unknown-linux-gnu.abilist +FILE: ../../../third_party/libcxx/lib/abi/6.0/x86_64-apple-darwin16.abilist +FILE: ../../../third_party/libcxx/lib/abi/6.0/x86_64-unknown-linux-gnu.abilist +FILE: ../../../third_party/libcxx/lib/abi/x86_64-apple-darwin.v1.abilist +FILE: ../../../third_party/libcxx/lib/abi/x86_64-apple-darwin.v2.abilist +FILE: ../../../third_party/libcxx/lib/abi/x86_64-unknown-linux-gnu.v1.abilist +FILE: ../../../third_party/libcxx/lib/libc++abi-new-delete.exp +FILE: ../../../third_party/libcxx/lib/libc++abi.exp +FILE: ../../../third_party/libcxx/lib/libc++abi2.exp +FILE: ../../../third_party/libcxx/lib/libc++sjlj-abi.exp +FILE: ../../../third_party/libcxx/lib/libc++unexp.exp +FILE: ../../../third_party/libcxx/lib/notweak.exp +FILE: ../../../third_party/libcxx/lib/weak.exp +FILE: ../../../third_party/libcxx/src/filesystem/int128_builtins.cpp +FILE: ../../../third_party/libcxx/www/TS_deprecation.html +FILE: ../../../third_party/libcxx/www/atomic_design.html +FILE: ../../../third_party/libcxx/www/atomic_design_a.html +FILE: ../../../third_party/libcxx/www/atomic_design_b.html +FILE: ../../../third_party/libcxx/www/atomic_design_c.html +FILE: ../../../third_party/libcxx/www/cxx1y_status.html +FILE: ../../../third_party/libcxx/www/cxx1z_status.html +FILE: ../../../third_party/libcxx/www/cxx2a_status.html +FILE: ../../../third_party/libcxx/www/index.html +FILE: ../../../third_party/libcxx/www/ts1z_status.html +FILE: ../../../third_party/libcxx/www/type_traits_design.html +FILE: ../../../third_party/libcxx/www/upcoming_meeting.html +FILE: ../../../third_party/libcxxabi/.arcconfig +FILE: ../../../third_party/libcxxabi/fuzz/cxa_demangle_fuzzer.cpp +FILE: ../../../third_party/libcxxabi/include/__cxxabi_config.h +FILE: ../../../third_party/libcxxabi/include/cxxabi.h +FILE: ../../../third_party/libcxxabi/src/abort_message.cpp +FILE: ../../../third_party/libcxxabi/src/abort_message.h +FILE: ../../../third_party/libcxxabi/src/cxa_aux_runtime.cpp +FILE: ../../../third_party/libcxxabi/src/cxa_default_handlers.cpp +FILE: ../../../third_party/libcxxabi/src/cxa_demangle.cpp +FILE: ../../../third_party/libcxxabi/src/cxa_exception.cpp +FILE: ../../../third_party/libcxxabi/src/cxa_exception.hpp +FILE: ../../../third_party/libcxxabi/src/cxa_exception_storage.cpp +FILE: ../../../third_party/libcxxabi/src/cxa_guard.cpp +FILE: ../../../third_party/libcxxabi/src/cxa_handlers.cpp +FILE: ../../../third_party/libcxxabi/src/cxa_handlers.hpp +FILE: ../../../third_party/libcxxabi/src/cxa_noexception.cpp +FILE: ../../../third_party/libcxxabi/src/cxa_personality.cpp +FILE: ../../../third_party/libcxxabi/src/cxa_thread_atexit.cpp +FILE: ../../../third_party/libcxxabi/src/cxa_unexpected.cpp +FILE: ../../../third_party/libcxxabi/src/cxa_vector.cpp +FILE: ../../../third_party/libcxxabi/src/cxa_virtual.cpp +FILE: ../../../third_party/libcxxabi/src/demangle/Compiler.h +FILE: ../../../third_party/libcxxabi/src/demangle/ItaniumDemangle.h +FILE: ../../../third_party/libcxxabi/src/demangle/StringView.h +FILE: ../../../third_party/libcxxabi/src/demangle/Utility.h +FILE: ../../../third_party/libcxxabi/src/fallback_malloc.cpp +FILE: ../../../third_party/libcxxabi/src/fallback_malloc.h +FILE: ../../../third_party/libcxxabi/src/include/atomic_support.h +FILE: ../../../third_party/libcxxabi/src/include/refstring.h +FILE: ../../../third_party/libcxxabi/src/private_typeinfo.cpp +FILE: ../../../third_party/libcxxabi/src/private_typeinfo.h +FILE: ../../../third_party/libcxxabi/src/stdlib_exception.cpp +FILE: ../../../third_party/libcxxabi/src/stdlib_new_delete.cpp +FILE: ../../../third_party/libcxxabi/src/stdlib_stdexcept.cpp +FILE: ../../../third_party/libcxxabi/src/stdlib_typeinfo.cpp +FILE: ../../../third_party/libcxxabi/www/index.html +FILE: ../../../third_party/libcxxabi/www/spec.html +---------------------------------------------------------------------------------------------------- +Copyright (c) 2009-2014 by the contributors listed in CREDITS.TXT + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +==================================================================================================== + +==================================================================================================== +LIBRARY: libcxx +ORIGIN: null +TYPE: LicenseType.bsd +FILE: ../../../third_party/libcxx/.arcconfig +FILE: ../../../third_party/libcxx/appveyor-reqs-install.cmd +FILE: ../../../third_party/libcxx/appveyor.yml +FILE: ../../../third_party/libcxx/benchmarks/CartesianBenchmarks.hpp +FILE: ../../../third_party/libcxx/benchmarks/ContainerBenchmarks.hpp +FILE: ../../../third_party/libcxx/benchmarks/GenerateInput.hpp +FILE: ../../../third_party/libcxx/benchmarks/algorithms.bench.cpp +FILE: ../../../third_party/libcxx/benchmarks/filesystem.bench.cpp +FILE: ../../../third_party/libcxx/benchmarks/function.bench.cpp +FILE: ../../../third_party/libcxx/benchmarks/lit.site.cfg.py.in +FILE: ../../../third_party/libcxx/benchmarks/ordered_set.bench.cpp +FILE: ../../../third_party/libcxx/benchmarks/string.bench.cpp +FILE: ../../../third_party/libcxx/benchmarks/stringstream.bench.cpp +FILE: ../../../third_party/libcxx/benchmarks/unordered_set_operations.bench.cpp +FILE: ../../../third_party/libcxx/benchmarks/util_smartptr.bench.cpp +FILE: ../../../third_party/libcxx/benchmarks/vector_operations.bench.cpp +FILE: ../../../third_party/libcxx/docs/BuildingLibcxx.rst +FILE: ../../../third_party/libcxx/docs/DesignDocs/ABIVersioning.rst +FILE: ../../../third_party/libcxx/docs/DesignDocs/AvailabilityMarkup.rst +FILE: ../../../third_party/libcxx/docs/DesignDocs/CapturingConfigInfo.rst +FILE: ../../../third_party/libcxx/docs/DesignDocs/CapturingConfigInfo.rst +FILE: ../../../third_party/libcxx/docs/DesignDocs/DebugMode.rst +FILE: ../../../third_party/libcxx/docs/DesignDocs/FileTimeType.rst +FILE: ../../../third_party/libcxx/docs/DesignDocs/ThreadingSupportAPI.rst +FILE: ../../../third_party/libcxx/docs/DesignDocs/VisibilityMacros.rst +FILE: ../../../third_party/libcxx/docs/Makefile.sphinx +FILE: ../../../third_party/libcxx/docs/ReleaseNotes.rst +FILE: ../../../third_party/libcxx/docs/TestingLibcxx.rst +FILE: ../../../third_party/libcxx/docs/UsingLibcxx.rst +FILE: ../../../third_party/libcxx/docs/index.rst +FILE: ../../../third_party/libcxx/fuzzing/fuzz_test.cpp +FILE: ../../../third_party/libcxx/fuzzing/fuzzing.cpp +FILE: ../../../third_party/libcxx/fuzzing/fuzzing.h +FILE: ../../../third_party/libcxx/include/__bit_reference +FILE: ../../../third_party/libcxx/include/__bsd_locale_defaults.h +FILE: ../../../third_party/libcxx/include/__bsd_locale_fallbacks.h +FILE: ../../../third_party/libcxx/include/__config +FILE: ../../../third_party/libcxx/include/__config_site.in +FILE: ../../../third_party/libcxx/include/__debug +FILE: ../../../third_party/libcxx/include/__errc +FILE: ../../../third_party/libcxx/include/__functional_03 +FILE: ../../../third_party/libcxx/include/__functional_base +FILE: ../../../third_party/libcxx/include/__functional_base_03 +FILE: ../../../third_party/libcxx/include/__hash_table +FILE: ../../../third_party/libcxx/include/__libcpp_version +FILE: ../../../third_party/libcxx/include/__locale +FILE: ../../../third_party/libcxx/include/__mutex_base +FILE: ../../../third_party/libcxx/include/__node_handle +FILE: ../../../third_party/libcxx/include/__nullptr +FILE: ../../../third_party/libcxx/include/__split_buffer +FILE: ../../../third_party/libcxx/include/__sso_allocator +FILE: ../../../third_party/libcxx/include/__std_stream +FILE: ../../../third_party/libcxx/include/__string +FILE: ../../../third_party/libcxx/include/__threading_support +FILE: ../../../third_party/libcxx/include/__tree +FILE: ../../../third_party/libcxx/include/__tuple +FILE: ../../../third_party/libcxx/include/__undef_macros +FILE: ../../../third_party/libcxx/include/algorithm +FILE: ../../../third_party/libcxx/include/any +FILE: ../../../third_party/libcxx/include/array +FILE: ../../../third_party/libcxx/include/atomic +FILE: ../../../third_party/libcxx/include/bit +FILE: ../../../third_party/libcxx/include/bitset +FILE: ../../../third_party/libcxx/include/cassert +FILE: ../../../third_party/libcxx/include/ccomplex +FILE: ../../../third_party/libcxx/include/cctype +FILE: ../../../third_party/libcxx/include/cerrno +FILE: ../../../third_party/libcxx/include/cfenv +FILE: ../../../third_party/libcxx/include/cfloat +FILE: ../../../third_party/libcxx/include/charconv +FILE: ../../../third_party/libcxx/include/chrono +FILE: ../../../third_party/libcxx/include/cinttypes +FILE: ../../../third_party/libcxx/include/ciso646 +FILE: ../../../third_party/libcxx/include/climits +FILE: ../../../third_party/libcxx/include/clocale +FILE: ../../../third_party/libcxx/include/cmath +FILE: ../../../third_party/libcxx/include/codecvt +FILE: ../../../third_party/libcxx/include/compare +FILE: ../../../third_party/libcxx/include/complex +FILE: ../../../third_party/libcxx/include/complex.h +FILE: ../../../third_party/libcxx/include/condition_variable +FILE: ../../../third_party/libcxx/include/csetjmp +FILE: ../../../third_party/libcxx/include/csignal +FILE: ../../../third_party/libcxx/include/cstdarg +FILE: ../../../third_party/libcxx/include/cstdbool +FILE: ../../../third_party/libcxx/include/cstddef +FILE: ../../../third_party/libcxx/include/cstdint +FILE: ../../../third_party/libcxx/include/cstdio +FILE: ../../../third_party/libcxx/include/cstdlib +FILE: ../../../third_party/libcxx/include/cstring +FILE: ../../../third_party/libcxx/include/ctgmath +FILE: ../../../third_party/libcxx/include/ctime +FILE: ../../../third_party/libcxx/include/ctype.h +FILE: ../../../third_party/libcxx/include/cwchar +FILE: ../../../third_party/libcxx/include/cwctype +FILE: ../../../third_party/libcxx/include/deque +FILE: ../../../third_party/libcxx/include/errno.h +FILE: ../../../third_party/libcxx/include/exception +FILE: ../../../third_party/libcxx/include/experimental/__config +FILE: ../../../third_party/libcxx/include/experimental/__memory +FILE: ../../../third_party/libcxx/include/experimental/algorithm +FILE: ../../../third_party/libcxx/include/experimental/any +FILE: ../../../third_party/libcxx/include/experimental/chrono +FILE: ../../../third_party/libcxx/include/experimental/coroutine +FILE: ../../../third_party/libcxx/include/experimental/deque +FILE: ../../../third_party/libcxx/include/experimental/dynarray +FILE: ../../../third_party/libcxx/include/experimental/filesystem +FILE: ../../../third_party/libcxx/include/experimental/forward_list +FILE: ../../../third_party/libcxx/include/experimental/functional +FILE: ../../../third_party/libcxx/include/experimental/iterator +FILE: ../../../third_party/libcxx/include/experimental/list +FILE: ../../../third_party/libcxx/include/experimental/map +FILE: ../../../third_party/libcxx/include/experimental/memory_resource +FILE: ../../../third_party/libcxx/include/experimental/numeric +FILE: ../../../third_party/libcxx/include/experimental/optional +FILE: ../../../third_party/libcxx/include/experimental/propagate_const +FILE: ../../../third_party/libcxx/include/experimental/ratio +FILE: ../../../third_party/libcxx/include/experimental/regex +FILE: ../../../third_party/libcxx/include/experimental/set +FILE: ../../../third_party/libcxx/include/experimental/simd +FILE: ../../../third_party/libcxx/include/experimental/string +FILE: ../../../third_party/libcxx/include/experimental/string_view +FILE: ../../../third_party/libcxx/include/experimental/system_error +FILE: ../../../third_party/libcxx/include/experimental/tuple +FILE: ../../../third_party/libcxx/include/experimental/type_traits +FILE: ../../../third_party/libcxx/include/experimental/unordered_map +FILE: ../../../third_party/libcxx/include/experimental/unordered_set +FILE: ../../../third_party/libcxx/include/experimental/utility +FILE: ../../../third_party/libcxx/include/experimental/vector +FILE: ../../../third_party/libcxx/include/ext/__hash +FILE: ../../../third_party/libcxx/include/ext/hash_map +FILE: ../../../third_party/libcxx/include/ext/hash_set +FILE: ../../../third_party/libcxx/include/filesystem +FILE: ../../../third_party/libcxx/include/float.h +FILE: ../../../third_party/libcxx/include/forward_list +FILE: ../../../third_party/libcxx/include/fstream +FILE: ../../../third_party/libcxx/include/functional +FILE: ../../../third_party/libcxx/include/future +FILE: ../../../third_party/libcxx/include/initializer_list +FILE: ../../../third_party/libcxx/include/inttypes.h +FILE: ../../../third_party/libcxx/include/iomanip +FILE: ../../../third_party/libcxx/include/ios +FILE: ../../../third_party/libcxx/include/iosfwd +FILE: ../../../third_party/libcxx/include/iostream +FILE: ../../../third_party/libcxx/include/istream +FILE: ../../../third_party/libcxx/include/iterator +FILE: ../../../third_party/libcxx/include/limits +FILE: ../../../third_party/libcxx/include/limits.h +FILE: ../../../third_party/libcxx/include/list +FILE: ../../../third_party/libcxx/include/locale +FILE: ../../../third_party/libcxx/include/locale.h +FILE: ../../../third_party/libcxx/include/map +FILE: ../../../third_party/libcxx/include/math.h +FILE: ../../../third_party/libcxx/include/memory +FILE: ../../../third_party/libcxx/include/module.modulemap +FILE: ../../../third_party/libcxx/include/mutex +FILE: ../../../third_party/libcxx/include/new +FILE: ../../../third_party/libcxx/include/numeric +FILE: ../../../third_party/libcxx/include/optional +FILE: ../../../third_party/libcxx/include/ostream +FILE: ../../../third_party/libcxx/include/queue +FILE: ../../../third_party/libcxx/include/random +FILE: ../../../third_party/libcxx/include/ratio +FILE: ../../../third_party/libcxx/include/regex +FILE: ../../../third_party/libcxx/include/scoped_allocator +FILE: ../../../third_party/libcxx/include/set +FILE: ../../../third_party/libcxx/include/setjmp.h +FILE: ../../../third_party/libcxx/include/shared_mutex +FILE: ../../../third_party/libcxx/include/span +FILE: ../../../third_party/libcxx/include/sstream +FILE: ../../../third_party/libcxx/include/stack +FILE: ../../../third_party/libcxx/include/stdbool.h +FILE: ../../../third_party/libcxx/include/stddef.h +FILE: ../../../third_party/libcxx/include/stdexcept +FILE: ../../../third_party/libcxx/include/stdint.h +FILE: ../../../third_party/libcxx/include/stdio.h +FILE: ../../../third_party/libcxx/include/stdlib.h +FILE: ../../../third_party/libcxx/include/streambuf +FILE: ../../../third_party/libcxx/include/string +FILE: ../../../third_party/libcxx/include/string.h +FILE: ../../../third_party/libcxx/include/string_view +FILE: ../../../third_party/libcxx/include/strstream +FILE: ../../../third_party/libcxx/include/support/android/locale_bionic.h +FILE: ../../../third_party/libcxx/include/support/fuchsia/xlocale.h +FILE: ../../../third_party/libcxx/include/support/ibm/limits.h +FILE: ../../../third_party/libcxx/include/support/ibm/locale_mgmt_aix.h +FILE: ../../../third_party/libcxx/include/support/ibm/support.h +FILE: ../../../third_party/libcxx/include/support/ibm/xlocale.h +FILE: ../../../third_party/libcxx/include/support/musl/xlocale.h +FILE: ../../../third_party/libcxx/include/support/newlib/xlocale.h +FILE: ../../../third_party/libcxx/include/support/solaris/floatingpoint.h +FILE: ../../../third_party/libcxx/include/support/solaris/wchar.h +FILE: ../../../third_party/libcxx/include/support/solaris/xlocale.h +FILE: ../../../third_party/libcxx/include/support/win32/limits_msvc_win32.h +FILE: ../../../third_party/libcxx/include/support/win32/locale_win32.h +FILE: ../../../third_party/libcxx/include/support/xlocale/__nop_locale_mgmt.h +FILE: ../../../third_party/libcxx/include/support/xlocale/__posix_l_fallback.h +FILE: ../../../third_party/libcxx/include/support/xlocale/__strtonum_fallback.h +FILE: ../../../third_party/libcxx/include/system_error +FILE: ../../../third_party/libcxx/include/tgmath.h +FILE: ../../../third_party/libcxx/include/thread +FILE: ../../../third_party/libcxx/include/tuple +FILE: ../../../third_party/libcxx/include/type_traits +FILE: ../../../third_party/libcxx/include/typeindex +FILE: ../../../third_party/libcxx/include/typeinfo +FILE: ../../../third_party/libcxx/include/unordered_map +FILE: ../../../third_party/libcxx/include/unordered_set +FILE: ../../../third_party/libcxx/include/utility +FILE: ../../../third_party/libcxx/include/valarray +FILE: ../../../third_party/libcxx/include/variant +FILE: ../../../third_party/libcxx/include/vector +FILE: ../../../third_party/libcxx/include/version +FILE: ../../../third_party/libcxx/include/wchar.h +FILE: ../../../third_party/libcxx/include/wctype.h +FILE: ../../../third_party/libcxx/lib/abi/3.9/x86_64-apple-darwin16.abilist +FILE: ../../../third_party/libcxx/lib/abi/3.9/x86_64-linux-gnu.abilist +FILE: ../../../third_party/libcxx/lib/abi/4.0/x86_64-apple-darwin16.abilist +FILE: ../../../third_party/libcxx/lib/abi/4.0/x86_64-unknown-linux-gnu.abilist +FILE: ../../../third_party/libcxx/lib/abi/5.0/x86_64-apple-darwin16.abilist +FILE: ../../../third_party/libcxx/lib/abi/5.0/x86_64-unknown-linux-gnu.abilist +FILE: ../../../third_party/libcxx/lib/abi/6.0/x86_64-apple-darwin16.abilist +FILE: ../../../third_party/libcxx/lib/abi/6.0/x86_64-unknown-linux-gnu.abilist +FILE: ../../../third_party/libcxx/lib/abi/x86_64-apple-darwin.v1.abilist +FILE: ../../../third_party/libcxx/lib/abi/x86_64-apple-darwin.v2.abilist +FILE: ../../../third_party/libcxx/lib/abi/x86_64-unknown-linux-gnu.v1.abilist +FILE: ../../../third_party/libcxx/lib/libc++abi-new-delete.exp +FILE: ../../../third_party/libcxx/lib/libc++abi.exp +FILE: ../../../third_party/libcxx/lib/libc++abi2.exp +FILE: ../../../third_party/libcxx/lib/libc++sjlj-abi.exp +FILE: ../../../third_party/libcxx/lib/libc++unexp.exp +FILE: ../../../third_party/libcxx/lib/notweak.exp +FILE: ../../../third_party/libcxx/lib/weak.exp +FILE: ../../../third_party/libcxx/src/algorithm.cpp +FILE: ../../../third_party/libcxx/src/any.cpp +FILE: ../../../third_party/libcxx/src/bind.cpp +FILE: ../../../third_party/libcxx/src/charconv.cpp +FILE: ../../../third_party/libcxx/src/chrono.cpp +FILE: ../../../third_party/libcxx/src/condition_variable.cpp +FILE: ../../../third_party/libcxx/src/debug.cpp +FILE: ../../../third_party/libcxx/src/exception.cpp +FILE: ../../../third_party/libcxx/src/experimental/memory_resource.cpp +FILE: ../../../third_party/libcxx/src/filesystem/directory_iterator.cpp +FILE: ../../../third_party/libcxx/src/filesystem/filesystem_common.h +FILE: ../../../third_party/libcxx/src/filesystem/int128_builtins.cpp +FILE: ../../../third_party/libcxx/src/filesystem/operations.cpp +FILE: ../../../third_party/libcxx/src/functional.cpp +FILE: ../../../third_party/libcxx/src/future.cpp +FILE: ../../../third_party/libcxx/src/hash.cpp +FILE: ../../../third_party/libcxx/src/include/apple_availability.h +FILE: ../../../third_party/libcxx/src/include/atomic_support.h +FILE: ../../../third_party/libcxx/src/include/config_elast.h +FILE: ../../../third_party/libcxx/src/include/refstring.h +FILE: ../../../third_party/libcxx/src/ios.cpp +FILE: ../../../third_party/libcxx/src/iostream.cpp +FILE: ../../../third_party/libcxx/src/locale.cpp +FILE: ../../../third_party/libcxx/src/memory.cpp +FILE: ../../../third_party/libcxx/src/mutex.cpp +FILE: ../../../third_party/libcxx/src/new.cpp +FILE: ../../../third_party/libcxx/src/optional.cpp +FILE: ../../../third_party/libcxx/src/random.cpp +FILE: ../../../third_party/libcxx/src/regex.cpp +FILE: ../../../third_party/libcxx/src/shared_mutex.cpp +FILE: ../../../third_party/libcxx/src/stdexcept.cpp +FILE: ../../../third_party/libcxx/src/string.cpp +FILE: ../../../third_party/libcxx/src/strstream.cpp +FILE: ../../../third_party/libcxx/src/support/runtime/exception_fallback.ipp +FILE: ../../../third_party/libcxx/src/support/runtime/exception_glibcxx.ipp +FILE: ../../../third_party/libcxx/src/support/runtime/exception_libcxxabi.ipp +FILE: ../../../third_party/libcxx/src/support/runtime/exception_libcxxrt.ipp +FILE: ../../../third_party/libcxx/src/support/runtime/exception_msvc.ipp +FILE: ../../../third_party/libcxx/src/support/runtime/exception_pointer_cxxabi.ipp +FILE: ../../../third_party/libcxx/src/support/runtime/exception_pointer_glibcxx.ipp +FILE: ../../../third_party/libcxx/src/support/runtime/exception_pointer_msvc.ipp +FILE: ../../../third_party/libcxx/src/support/runtime/exception_pointer_unimplemented.ipp +FILE: ../../../third_party/libcxx/src/support/runtime/new_handler_fallback.ipp +FILE: ../../../third_party/libcxx/src/support/win32/locale_win32.cpp +FILE: ../../../third_party/libcxx/src/support/win32/support.cpp +FILE: ../../../third_party/libcxx/src/support/win32/thread_win32.cpp +FILE: ../../../third_party/libcxx/src/system_error.cpp +FILE: ../../../third_party/libcxx/src/thread.cpp +FILE: ../../../third_party/libcxx/src/typeinfo.cpp +FILE: ../../../third_party/libcxx/src/utility.cpp +FILE: ../../../third_party/libcxx/src/valarray.cpp +FILE: ../../../third_party/libcxx/src/variant.cpp +FILE: ../../../third_party/libcxx/src/vector.cpp +FILE: ../../../third_party/libcxx/www/TS_deprecation.html +FILE: ../../../third_party/libcxx/www/atomic_design.html +FILE: ../../../third_party/libcxx/www/atomic_design_a.html +FILE: ../../../third_party/libcxx/www/atomic_design_b.html +FILE: ../../../third_party/libcxx/www/atomic_design_c.html +FILE: ../../../third_party/libcxx/www/cxx1y_status.html +FILE: ../../../third_party/libcxx/www/cxx1z_status.html +FILE: ../../../third_party/libcxx/www/cxx2a_status.html +FILE: ../../../third_party/libcxx/www/index.html +FILE: ../../../third_party/libcxx/www/ts1z_status.html +FILE: ../../../third_party/libcxx/www/type_traits_design.html +FILE: ../../../third_party/libcxx/www/upcoming_meeting.html +---------------------------------------------------------------------------------------------------- +University of Illinois/NCSA +Open Source License + +Copyright (c) 2009-2017 by the contributors listed in CREDITS.TXT + +All rights reserved. + +Developed by: + + LLVM Team + + University of Illinois at Urbana-Champaign + + http://llvm.org + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal with +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimers. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimers in the + documentation and/or other materials provided with the distribution. + + * Neither the names of the LLVM Team, University of Illinois at + Urbana-Champaign, nor the names of its contributors may be used to + endorse or promote products derived from this Software without specific + prior written permission. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE +SOFTWARE. +==================================================================================================== + +==================================================================================================== +LIBRARY: libcxxabi +ORIGIN: null +TYPE: LicenseType.bsd +FILE: ../../../third_party/libcxxabi/.arcconfig +FILE: ../../../third_party/libcxxabi/fuzz/cxa_demangle_fuzzer.cpp +FILE: ../../../third_party/libcxxabi/src/demangle/Compiler.h +FILE: ../../../third_party/libcxxabi/src/demangle/StringView.h +FILE: ../../../third_party/libcxxabi/src/demangle/Utility.h +FILE: ../../../third_party/libcxxabi/www/index.html +FILE: ../../../third_party/libcxxabi/www/spec.html +---------------------------------------------------------------------------------------------------- +University of Illinois/NCSA +Open Source License + +Copyright (c) 2009-2018 by the contributors listed in CREDITS.TXT + +All rights reserved. + +Developed by: + + LLVM Team + + University of Illinois at Urbana-Champaign + + http://llvm.org + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal with +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimers. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimers in the + documentation and/or other materials provided with the distribution. + + * Neither the names of the LLVM Team, University of Illinois at + Urbana-Champaign, nor the names of its contributors may be used to + endorse or promote products derived from this Software without specific + prior written permission. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE +SOFTWARE. +==================================================================================================== + ==================================================================================================== LIBRARY: libjpeg-turbo ORIGIN: ../../../third_party/libjpeg-turbo/README.ijg @@ -17844,4 +18385,4 @@ freely, subject to the following restrictions: misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. ==================================================================================================== -Total license count: 304 +Total license count: 307 diff --git a/sky/packages/sky_engine/LICENSE b/sky/packages/sky_engine/LICENSE index 7334fbc6b9b0e..38fca4e7cc13f 100644 --- a/sky/packages/sky_engine/LICENSE +++ b/sky/packages/sky_engine/LICENSE @@ -7116,6 +7116,117 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- +libcxx + +University of Illinois/NCSA +Open Source License + +Copyright (c) 2009-2017 by the contributors listed in CREDITS.TXT + +All rights reserved. + +Developed by: + + LLVM Team + + University of Illinois at Urbana-Champaign + + http://llvm.org + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal with +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimers. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimers in the + documentation and/or other materials provided with the distribution. + + * Neither the names of the LLVM Team, University of Illinois at + Urbana-Champaign, nor the names of its contributors may be used to + endorse or promote products derived from this Software without specific + prior written permission. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE +SOFTWARE. +-------------------------------------------------------------------------------- +libcxx +libcxxabi + +Copyright (c) 2009-2014 by the contributors listed in CREDITS.TXT + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +-------------------------------------------------------------------------------- +libcxxabi + +University of Illinois/NCSA +Open Source License + +Copyright (c) 2009-2018 by the contributors listed in CREDITS.TXT + +All rights reserved. + +Developed by: + + LLVM Team + + University of Illinois at Urbana-Champaign + + http://llvm.org + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal with +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimers. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimers in the + documentation and/or other materials provided with the distribution. + + * Neither the names of the LLVM Team, University of Illinois at + Urbana-Champaign, nor the names of its contributors may be used to + endorse or promote products derived from this Software without specific + prior written permission. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE +SOFTWARE. +-------------------------------------------------------------------------------- libjpeg-turbo Copyright (C) 1999-2006, MIYASAKA Masaru. diff --git a/tools/licenses/lib/main.dart b/tools/licenses/lib/main.dart index 9ea879f73fb98..a0670b45cd997 100644 --- a/tools/licenses/lib/main.dart +++ b/tools/licenses/lib/main.dart @@ -1442,30 +1442,6 @@ class RepositoryAndroidNdkSourcesAndroidDirectory extends RepositoryDirectory { } } -class RepositoryAndroidNdkSourcesCxxStlSubsubdirectory extends RepositoryDirectory { - RepositoryAndroidNdkSourcesCxxStlSubsubdirectory(RepositoryDirectory parent, fs.Directory io) : super(parent, io); - - @override - RepositoryFile createFile(fs.IoNode entry) { - if (entry.name == 'LICENSE.TXT') - return new RepositoryCxxStlDualLicenseFile(this, entry); - return super.createFile(entry); - } -} - -class RepositoryAndroidNdkSourcesCxxStlSubdirectory extends RepositoryDirectory { - RepositoryAndroidNdkSourcesCxxStlSubdirectory(RepositoryDirectory parent, fs.Directory io, this.subdirectoryName) : super(parent, io); - - final String subdirectoryName; - - @override - RepositoryDirectory createSubdirectory(fs.Directory entry) { - if (entry.name == subdirectoryName) - return new RepositoryAndroidNdkSourcesCxxStlSubsubdirectory(this, entry); - return super.createSubdirectory(entry); - } -} - class RepositoryAndroidNdkSourcesCxxStlDirectory extends RepositoryDirectory { RepositoryAndroidNdkSourcesCxxStlDirectory(RepositoryDirectory parent, fs.Directory io) : super(parent, io); @@ -1476,17 +1452,11 @@ class RepositoryAndroidNdkSourcesCxxStlDirectory extends RepositoryDirectory { bool shouldRecurse(fs.IoNode entry) { return entry.name != 'gabi++' // abarth says jamesr says we don't use these two && entry.name != 'stlport' + && entry.name != 'llvm-libc++' // we ship our own custom-compiled libcxx/libcxxabi + && entry.name != 'llvm-libc++abi' + && entry.name != 'gnu-libstdc++' && super.shouldRecurse(entry); } - - @override - RepositoryDirectory createSubdirectory(fs.Directory entry) { - if (entry.name == 'llvm-libc++abi') - return new RepositoryAndroidNdkSourcesCxxStlSubdirectory(this, entry, 'libcxxabi'); - if (entry.name == 'llvm-libc++') - return new RepositoryAndroidNdkSourcesCxxStlSubdirectory(this, entry, 'libcxx'); - return super.createSubdirectory(entry); - } } class RepositoryAndroidNdkSourcesThirdPartyDirectory extends RepositoryGenericThirdPartyDirectory { @@ -1755,6 +1725,62 @@ class RepositoryJSR305SrcDirectory extends RepositoryDirectory { } } +class RepositoryLibcxxDirectory extends RepositoryDirectory { + RepositoryLibcxxDirectory(RepositoryDirectory parent, fs.Directory io) : super(parent, io); + + @override + bool shouldRecurse(fs.IoNode entry) { + return entry.name != 'utils' + && super.shouldRecurse(entry); + } + + @override + RepositoryDirectory createSubdirectory(fs.Directory entry) { + if (entry.name == 'src') + return new RepositoryLibcxxSrcDirectory(this, entry); + return super.createSubdirectory(entry); + } + + @override + RepositoryFile createFile(fs.IoNode entry) { + if (entry.name == 'LICENSE.TXT') + return new RepositoryCxxStlDualLicenseFile(this, entry); + return super.createFile(entry); + } +} + +class RepositoryLibcxxSrcDirectory extends RepositoryDirectory { + RepositoryLibcxxSrcDirectory(RepositoryDirectory parent, fs.Directory io) : super(parent, io); + + @override + RepositoryDirectory createSubdirectory(fs.Directory entry) { + if (entry.name == 'support') + return new RepositoryLibcxxSrcSupportDirectory(this, entry); + return super.createSubdirectory(entry); + } +} + +class RepositoryLibcxxSrcSupportDirectory extends RepositoryDirectory { + RepositoryLibcxxSrcSupportDirectory(RepositoryDirectory parent, fs.Directory io) : super(parent, io); + + @override + bool shouldRecurse(fs.IoNode entry) { + return entry.name != 'solaris' + && super.shouldRecurse(entry); + } +} + +class RepositoryLibcxxabiDirectory extends RepositoryDirectory { + RepositoryLibcxxabiDirectory(RepositoryDirectory parent, fs.Directory io) : super(parent, io); + + @override + RepositoryFile createFile(fs.IoNode entry) { + if (entry.name == 'LICENSE.TXT') + return new RepositoryCxxStlDualLicenseFile(this, entry); + return super.createFile(entry); + } +} + class RepositoryLibJpegDirectory extends RepositoryDirectory { RepositoryLibJpegDirectory(RepositoryDirectory parent, fs.Directory io) : super(parent, io); @@ -1966,6 +1992,10 @@ class RepositoryRootThirdPartyDirectory extends RepositoryGenericThirdPartyDirec return new RepositoryIcuDirectory(this, entry); if (entry.name == 'jsr-305') return new RepositoryJSR305Directory(this, entry); + if (entry.name == 'libcxx') + return new RepositoryLibcxxDirectory(this, entry); + if (entry.name == 'libcxxabi') + return new RepositoryLibcxxabiDirectory(this, entry); if (entry.name == 'libjpeg') return new RepositoryLibJpegDirectory(this, entry); if (entry.name == 'libjpeg_turbo' || entry.name == 'libjpeg-turbo') From 983d70eb3efc6c4c616f6d7b166451267f581d7c Mon Sep 17 00:00:00 2001 From: Michael Goderbauer Date: Mon, 19 Nov 2018 22:19:51 -0800 Subject: [PATCH 0310/1537] Revert "Compile libcxx and libcxxabi for Android (#6886)" (#6912) This reverts commit 9ccd1e86df956761a244bd3e6df2c1106514e10b. --- DEPS | 8 +- ci/licenses_golden/licenses_third_party | 545 +----------------------- sky/packages/sky_engine/LICENSE | 111 ----- tools/licenses/lib/main.dart | 96 ++--- 4 files changed, 36 insertions(+), 724 deletions(-) diff --git a/DEPS b/DEPS index 5b8c2b0d947e3..f2031d946486f 100644 --- a/DEPS +++ b/DEPS @@ -117,7 +117,7 @@ allowed_hosts = [ ] deps = { - 'src': 'https://github.com/flutter/buildroot.git' + '@' + '98cd6828f68ee4ee592db50891f46f92072c08e1', + 'src': 'https://github.com/flutter/buildroot.git' + '@' + '2b7fe9635c00c932f86627988e797a097574929e', # Fuchsia compatibility # @@ -140,12 +140,6 @@ deps = { 'src/third_party/harfbuzz': Var('fuchsia_git') + '/third_party/harfbuzz' + '@' + '02caec6c1c6ad996666788b8e920ccaec8b385e5', - 'src/third_party/libcxx': - Var('fuchsia_git') + '/third_party/libcxx' + '@' + 'c5a5fa59789213c7dae68d2e51cb28ef681d8257', - - 'src/third_party/libcxxabi': - Var('fuchsia_git') + '/third_party/libcxxabi' + '@' + '1a9753522f1ae8d72848d365902f39e0d3d59a39', - # Chromium-style # # As part of integrating with Fuchsia, we should eventually remove all these diff --git a/ci/licenses_golden/licenses_third_party b/ci/licenses_golden/licenses_third_party index 81459beeffa9e..a06c935614ec2 100644 --- a/ci/licenses_golden/licenses_third_party +++ b/ci/licenses_golden/licenses_third_party @@ -1,4 +1,4 @@ -Signature: d7c30cf5ac4c421cc15ff2731ade24c4 +Signature: 688d05f1b8d8726e65b28a27ccc7dfcb UNUSED LICENSES: @@ -13123,547 +13123,6 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ==================================================================================================== -==================================================================================================== -LIBRARY: libcxx -LIBRARY: libcxxabi -ORIGIN: null -TYPE: LicenseType.mit -FILE: ../../../third_party/libcxx/.arcconfig -FILE: ../../../third_party/libcxx/appveyor-reqs-install.cmd -FILE: ../../../third_party/libcxx/appveyor.yml -FILE: ../../../third_party/libcxx/benchmarks/ContainerBenchmarks.hpp -FILE: ../../../third_party/libcxx/benchmarks/GenerateInput.hpp -FILE: ../../../third_party/libcxx/benchmarks/algorithms.bench.cpp -FILE: ../../../third_party/libcxx/benchmarks/filesystem.bench.cpp -FILE: ../../../third_party/libcxx/benchmarks/lit.site.cfg.py.in -FILE: ../../../third_party/libcxx/benchmarks/string.bench.cpp -FILE: ../../../third_party/libcxx/benchmarks/stringstream.bench.cpp -FILE: ../../../third_party/libcxx/benchmarks/unordered_set_operations.bench.cpp -FILE: ../../../third_party/libcxx/benchmarks/vector_operations.bench.cpp -FILE: ../../../third_party/libcxx/docs/BuildingLibcxx.rst -FILE: ../../../third_party/libcxx/docs/DesignDocs/ABIVersioning.rst -FILE: ../../../third_party/libcxx/docs/DesignDocs/AvailabilityMarkup.rst -FILE: ../../../third_party/libcxx/docs/DesignDocs/DebugMode.rst -FILE: ../../../third_party/libcxx/docs/DesignDocs/FileTimeType.rst -FILE: ../../../third_party/libcxx/docs/DesignDocs/ThreadingSupportAPI.rst -FILE: ../../../third_party/libcxx/docs/DesignDocs/VisibilityMacros.rst -FILE: ../../../third_party/libcxx/docs/Makefile.sphinx -FILE: ../../../third_party/libcxx/docs/ReleaseNotes.rst -FILE: ../../../third_party/libcxx/docs/TestingLibcxx.rst -FILE: ../../../third_party/libcxx/docs/UsingLibcxx.rst -FILE: ../../../third_party/libcxx/docs/index.rst -FILE: ../../../third_party/libcxx/include/__libcpp_version -FILE: ../../../third_party/libcxx/include/__split_buffer -FILE: ../../../third_party/libcxx/include/__string -FILE: ../../../third_party/libcxx/include/__undef_macros -FILE: ../../../third_party/libcxx/include/any -FILE: ../../../third_party/libcxx/include/atomic -FILE: ../../../third_party/libcxx/include/cinttypes -FILE: ../../../third_party/libcxx/include/cstring -FILE: ../../../third_party/libcxx/include/experimental/any -FILE: ../../../third_party/libcxx/include/experimental/chrono -FILE: ../../../third_party/libcxx/include/experimental/coroutine -FILE: ../../../third_party/libcxx/include/experimental/iterator -FILE: ../../../third_party/libcxx/include/experimental/memory_resource -FILE: ../../../third_party/libcxx/include/experimental/ratio -FILE: ../../../third_party/libcxx/include/experimental/string_view -FILE: ../../../third_party/libcxx/include/inttypes.h -FILE: ../../../third_party/libcxx/include/module.modulemap -FILE: ../../../third_party/libcxx/include/stdint.h -FILE: ../../../third_party/libcxx/include/string -FILE: ../../../third_party/libcxx/include/string.h -FILE: ../../../third_party/libcxx/include/string_view -FILE: ../../../third_party/libcxx/include/tuple -FILE: ../../../third_party/libcxx/lib/abi/3.9/x86_64-apple-darwin16.abilist -FILE: ../../../third_party/libcxx/lib/abi/3.9/x86_64-linux-gnu.abilist -FILE: ../../../third_party/libcxx/lib/abi/4.0/x86_64-apple-darwin16.abilist -FILE: ../../../third_party/libcxx/lib/abi/4.0/x86_64-unknown-linux-gnu.abilist -FILE: ../../../third_party/libcxx/lib/abi/5.0/x86_64-apple-darwin16.abilist -FILE: ../../../third_party/libcxx/lib/abi/5.0/x86_64-unknown-linux-gnu.abilist -FILE: ../../../third_party/libcxx/lib/abi/6.0/x86_64-apple-darwin16.abilist -FILE: ../../../third_party/libcxx/lib/abi/6.0/x86_64-unknown-linux-gnu.abilist -FILE: ../../../third_party/libcxx/lib/abi/x86_64-apple-darwin.v1.abilist -FILE: ../../../third_party/libcxx/lib/abi/x86_64-apple-darwin.v2.abilist -FILE: ../../../third_party/libcxx/lib/abi/x86_64-unknown-linux-gnu.v1.abilist -FILE: ../../../third_party/libcxx/lib/libc++abi-new-delete.exp -FILE: ../../../third_party/libcxx/lib/libc++abi.exp -FILE: ../../../third_party/libcxx/lib/libc++abi2.exp -FILE: ../../../third_party/libcxx/lib/libc++sjlj-abi.exp -FILE: ../../../third_party/libcxx/lib/libc++unexp.exp -FILE: ../../../third_party/libcxx/lib/notweak.exp -FILE: ../../../third_party/libcxx/lib/weak.exp -FILE: ../../../third_party/libcxx/src/filesystem/int128_builtins.cpp -FILE: ../../../third_party/libcxx/www/TS_deprecation.html -FILE: ../../../third_party/libcxx/www/atomic_design.html -FILE: ../../../third_party/libcxx/www/atomic_design_a.html -FILE: ../../../third_party/libcxx/www/atomic_design_b.html -FILE: ../../../third_party/libcxx/www/atomic_design_c.html -FILE: ../../../third_party/libcxx/www/cxx1y_status.html -FILE: ../../../third_party/libcxx/www/cxx1z_status.html -FILE: ../../../third_party/libcxx/www/cxx2a_status.html -FILE: ../../../third_party/libcxx/www/index.html -FILE: ../../../third_party/libcxx/www/ts1z_status.html -FILE: ../../../third_party/libcxx/www/type_traits_design.html -FILE: ../../../third_party/libcxx/www/upcoming_meeting.html -FILE: ../../../third_party/libcxxabi/.arcconfig -FILE: ../../../third_party/libcxxabi/fuzz/cxa_demangle_fuzzer.cpp -FILE: ../../../third_party/libcxxabi/include/__cxxabi_config.h -FILE: ../../../third_party/libcxxabi/include/cxxabi.h -FILE: ../../../third_party/libcxxabi/src/abort_message.cpp -FILE: ../../../third_party/libcxxabi/src/abort_message.h -FILE: ../../../third_party/libcxxabi/src/cxa_aux_runtime.cpp -FILE: ../../../third_party/libcxxabi/src/cxa_default_handlers.cpp -FILE: ../../../third_party/libcxxabi/src/cxa_demangle.cpp -FILE: ../../../third_party/libcxxabi/src/cxa_exception.cpp -FILE: ../../../third_party/libcxxabi/src/cxa_exception.hpp -FILE: ../../../third_party/libcxxabi/src/cxa_exception_storage.cpp -FILE: ../../../third_party/libcxxabi/src/cxa_guard.cpp -FILE: ../../../third_party/libcxxabi/src/cxa_handlers.cpp -FILE: ../../../third_party/libcxxabi/src/cxa_handlers.hpp -FILE: ../../../third_party/libcxxabi/src/cxa_noexception.cpp -FILE: ../../../third_party/libcxxabi/src/cxa_personality.cpp -FILE: ../../../third_party/libcxxabi/src/cxa_thread_atexit.cpp -FILE: ../../../third_party/libcxxabi/src/cxa_unexpected.cpp -FILE: ../../../third_party/libcxxabi/src/cxa_vector.cpp -FILE: ../../../third_party/libcxxabi/src/cxa_virtual.cpp -FILE: ../../../third_party/libcxxabi/src/demangle/Compiler.h -FILE: ../../../third_party/libcxxabi/src/demangle/ItaniumDemangle.h -FILE: ../../../third_party/libcxxabi/src/demangle/StringView.h -FILE: ../../../third_party/libcxxabi/src/demangle/Utility.h -FILE: ../../../third_party/libcxxabi/src/fallback_malloc.cpp -FILE: ../../../third_party/libcxxabi/src/fallback_malloc.h -FILE: ../../../third_party/libcxxabi/src/include/atomic_support.h -FILE: ../../../third_party/libcxxabi/src/include/refstring.h -FILE: ../../../third_party/libcxxabi/src/private_typeinfo.cpp -FILE: ../../../third_party/libcxxabi/src/private_typeinfo.h -FILE: ../../../third_party/libcxxabi/src/stdlib_exception.cpp -FILE: ../../../third_party/libcxxabi/src/stdlib_new_delete.cpp -FILE: ../../../third_party/libcxxabi/src/stdlib_stdexcept.cpp -FILE: ../../../third_party/libcxxabi/src/stdlib_typeinfo.cpp -FILE: ../../../third_party/libcxxabi/www/index.html -FILE: ../../../third_party/libcxxabi/www/spec.html ----------------------------------------------------------------------------------------------------- -Copyright (c) 2009-2014 by the contributors listed in CREDITS.TXT - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. -==================================================================================================== - -==================================================================================================== -LIBRARY: libcxx -ORIGIN: null -TYPE: LicenseType.bsd -FILE: ../../../third_party/libcxx/.arcconfig -FILE: ../../../third_party/libcxx/appveyor-reqs-install.cmd -FILE: ../../../third_party/libcxx/appveyor.yml -FILE: ../../../third_party/libcxx/benchmarks/CartesianBenchmarks.hpp -FILE: ../../../third_party/libcxx/benchmarks/ContainerBenchmarks.hpp -FILE: ../../../third_party/libcxx/benchmarks/GenerateInput.hpp -FILE: ../../../third_party/libcxx/benchmarks/algorithms.bench.cpp -FILE: ../../../third_party/libcxx/benchmarks/filesystem.bench.cpp -FILE: ../../../third_party/libcxx/benchmarks/function.bench.cpp -FILE: ../../../third_party/libcxx/benchmarks/lit.site.cfg.py.in -FILE: ../../../third_party/libcxx/benchmarks/ordered_set.bench.cpp -FILE: ../../../third_party/libcxx/benchmarks/string.bench.cpp -FILE: ../../../third_party/libcxx/benchmarks/stringstream.bench.cpp -FILE: ../../../third_party/libcxx/benchmarks/unordered_set_operations.bench.cpp -FILE: ../../../third_party/libcxx/benchmarks/util_smartptr.bench.cpp -FILE: ../../../third_party/libcxx/benchmarks/vector_operations.bench.cpp -FILE: ../../../third_party/libcxx/docs/BuildingLibcxx.rst -FILE: ../../../third_party/libcxx/docs/DesignDocs/ABIVersioning.rst -FILE: ../../../third_party/libcxx/docs/DesignDocs/AvailabilityMarkup.rst -FILE: ../../../third_party/libcxx/docs/DesignDocs/CapturingConfigInfo.rst -FILE: ../../../third_party/libcxx/docs/DesignDocs/CapturingConfigInfo.rst -FILE: ../../../third_party/libcxx/docs/DesignDocs/DebugMode.rst -FILE: ../../../third_party/libcxx/docs/DesignDocs/FileTimeType.rst -FILE: ../../../third_party/libcxx/docs/DesignDocs/ThreadingSupportAPI.rst -FILE: ../../../third_party/libcxx/docs/DesignDocs/VisibilityMacros.rst -FILE: ../../../third_party/libcxx/docs/Makefile.sphinx -FILE: ../../../third_party/libcxx/docs/ReleaseNotes.rst -FILE: ../../../third_party/libcxx/docs/TestingLibcxx.rst -FILE: ../../../third_party/libcxx/docs/UsingLibcxx.rst -FILE: ../../../third_party/libcxx/docs/index.rst -FILE: ../../../third_party/libcxx/fuzzing/fuzz_test.cpp -FILE: ../../../third_party/libcxx/fuzzing/fuzzing.cpp -FILE: ../../../third_party/libcxx/fuzzing/fuzzing.h -FILE: ../../../third_party/libcxx/include/__bit_reference -FILE: ../../../third_party/libcxx/include/__bsd_locale_defaults.h -FILE: ../../../third_party/libcxx/include/__bsd_locale_fallbacks.h -FILE: ../../../third_party/libcxx/include/__config -FILE: ../../../third_party/libcxx/include/__config_site.in -FILE: ../../../third_party/libcxx/include/__debug -FILE: ../../../third_party/libcxx/include/__errc -FILE: ../../../third_party/libcxx/include/__functional_03 -FILE: ../../../third_party/libcxx/include/__functional_base -FILE: ../../../third_party/libcxx/include/__functional_base_03 -FILE: ../../../third_party/libcxx/include/__hash_table -FILE: ../../../third_party/libcxx/include/__libcpp_version -FILE: ../../../third_party/libcxx/include/__locale -FILE: ../../../third_party/libcxx/include/__mutex_base -FILE: ../../../third_party/libcxx/include/__node_handle -FILE: ../../../third_party/libcxx/include/__nullptr -FILE: ../../../third_party/libcxx/include/__split_buffer -FILE: ../../../third_party/libcxx/include/__sso_allocator -FILE: ../../../third_party/libcxx/include/__std_stream -FILE: ../../../third_party/libcxx/include/__string -FILE: ../../../third_party/libcxx/include/__threading_support -FILE: ../../../third_party/libcxx/include/__tree -FILE: ../../../third_party/libcxx/include/__tuple -FILE: ../../../third_party/libcxx/include/__undef_macros -FILE: ../../../third_party/libcxx/include/algorithm -FILE: ../../../third_party/libcxx/include/any -FILE: ../../../third_party/libcxx/include/array -FILE: ../../../third_party/libcxx/include/atomic -FILE: ../../../third_party/libcxx/include/bit -FILE: ../../../third_party/libcxx/include/bitset -FILE: ../../../third_party/libcxx/include/cassert -FILE: ../../../third_party/libcxx/include/ccomplex -FILE: ../../../third_party/libcxx/include/cctype -FILE: ../../../third_party/libcxx/include/cerrno -FILE: ../../../third_party/libcxx/include/cfenv -FILE: ../../../third_party/libcxx/include/cfloat -FILE: ../../../third_party/libcxx/include/charconv -FILE: ../../../third_party/libcxx/include/chrono -FILE: ../../../third_party/libcxx/include/cinttypes -FILE: ../../../third_party/libcxx/include/ciso646 -FILE: ../../../third_party/libcxx/include/climits -FILE: ../../../third_party/libcxx/include/clocale -FILE: ../../../third_party/libcxx/include/cmath -FILE: ../../../third_party/libcxx/include/codecvt -FILE: ../../../third_party/libcxx/include/compare -FILE: ../../../third_party/libcxx/include/complex -FILE: ../../../third_party/libcxx/include/complex.h -FILE: ../../../third_party/libcxx/include/condition_variable -FILE: ../../../third_party/libcxx/include/csetjmp -FILE: ../../../third_party/libcxx/include/csignal -FILE: ../../../third_party/libcxx/include/cstdarg -FILE: ../../../third_party/libcxx/include/cstdbool -FILE: ../../../third_party/libcxx/include/cstddef -FILE: ../../../third_party/libcxx/include/cstdint -FILE: ../../../third_party/libcxx/include/cstdio -FILE: ../../../third_party/libcxx/include/cstdlib -FILE: ../../../third_party/libcxx/include/cstring -FILE: ../../../third_party/libcxx/include/ctgmath -FILE: ../../../third_party/libcxx/include/ctime -FILE: ../../../third_party/libcxx/include/ctype.h -FILE: ../../../third_party/libcxx/include/cwchar -FILE: ../../../third_party/libcxx/include/cwctype -FILE: ../../../third_party/libcxx/include/deque -FILE: ../../../third_party/libcxx/include/errno.h -FILE: ../../../third_party/libcxx/include/exception -FILE: ../../../third_party/libcxx/include/experimental/__config -FILE: ../../../third_party/libcxx/include/experimental/__memory -FILE: ../../../third_party/libcxx/include/experimental/algorithm -FILE: ../../../third_party/libcxx/include/experimental/any -FILE: ../../../third_party/libcxx/include/experimental/chrono -FILE: ../../../third_party/libcxx/include/experimental/coroutine -FILE: ../../../third_party/libcxx/include/experimental/deque -FILE: ../../../third_party/libcxx/include/experimental/dynarray -FILE: ../../../third_party/libcxx/include/experimental/filesystem -FILE: ../../../third_party/libcxx/include/experimental/forward_list -FILE: ../../../third_party/libcxx/include/experimental/functional -FILE: ../../../third_party/libcxx/include/experimental/iterator -FILE: ../../../third_party/libcxx/include/experimental/list -FILE: ../../../third_party/libcxx/include/experimental/map -FILE: ../../../third_party/libcxx/include/experimental/memory_resource -FILE: ../../../third_party/libcxx/include/experimental/numeric -FILE: ../../../third_party/libcxx/include/experimental/optional -FILE: ../../../third_party/libcxx/include/experimental/propagate_const -FILE: ../../../third_party/libcxx/include/experimental/ratio -FILE: ../../../third_party/libcxx/include/experimental/regex -FILE: ../../../third_party/libcxx/include/experimental/set -FILE: ../../../third_party/libcxx/include/experimental/simd -FILE: ../../../third_party/libcxx/include/experimental/string -FILE: ../../../third_party/libcxx/include/experimental/string_view -FILE: ../../../third_party/libcxx/include/experimental/system_error -FILE: ../../../third_party/libcxx/include/experimental/tuple -FILE: ../../../third_party/libcxx/include/experimental/type_traits -FILE: ../../../third_party/libcxx/include/experimental/unordered_map -FILE: ../../../third_party/libcxx/include/experimental/unordered_set -FILE: ../../../third_party/libcxx/include/experimental/utility -FILE: ../../../third_party/libcxx/include/experimental/vector -FILE: ../../../third_party/libcxx/include/ext/__hash -FILE: ../../../third_party/libcxx/include/ext/hash_map -FILE: ../../../third_party/libcxx/include/ext/hash_set -FILE: ../../../third_party/libcxx/include/filesystem -FILE: ../../../third_party/libcxx/include/float.h -FILE: ../../../third_party/libcxx/include/forward_list -FILE: ../../../third_party/libcxx/include/fstream -FILE: ../../../third_party/libcxx/include/functional -FILE: ../../../third_party/libcxx/include/future -FILE: ../../../third_party/libcxx/include/initializer_list -FILE: ../../../third_party/libcxx/include/inttypes.h -FILE: ../../../third_party/libcxx/include/iomanip -FILE: ../../../third_party/libcxx/include/ios -FILE: ../../../third_party/libcxx/include/iosfwd -FILE: ../../../third_party/libcxx/include/iostream -FILE: ../../../third_party/libcxx/include/istream -FILE: ../../../third_party/libcxx/include/iterator -FILE: ../../../third_party/libcxx/include/limits -FILE: ../../../third_party/libcxx/include/limits.h -FILE: ../../../third_party/libcxx/include/list -FILE: ../../../third_party/libcxx/include/locale -FILE: ../../../third_party/libcxx/include/locale.h -FILE: ../../../third_party/libcxx/include/map -FILE: ../../../third_party/libcxx/include/math.h -FILE: ../../../third_party/libcxx/include/memory -FILE: ../../../third_party/libcxx/include/module.modulemap -FILE: ../../../third_party/libcxx/include/mutex -FILE: ../../../third_party/libcxx/include/new -FILE: ../../../third_party/libcxx/include/numeric -FILE: ../../../third_party/libcxx/include/optional -FILE: ../../../third_party/libcxx/include/ostream -FILE: ../../../third_party/libcxx/include/queue -FILE: ../../../third_party/libcxx/include/random -FILE: ../../../third_party/libcxx/include/ratio -FILE: ../../../third_party/libcxx/include/regex -FILE: ../../../third_party/libcxx/include/scoped_allocator -FILE: ../../../third_party/libcxx/include/set -FILE: ../../../third_party/libcxx/include/setjmp.h -FILE: ../../../third_party/libcxx/include/shared_mutex -FILE: ../../../third_party/libcxx/include/span -FILE: ../../../third_party/libcxx/include/sstream -FILE: ../../../third_party/libcxx/include/stack -FILE: ../../../third_party/libcxx/include/stdbool.h -FILE: ../../../third_party/libcxx/include/stddef.h -FILE: ../../../third_party/libcxx/include/stdexcept -FILE: ../../../third_party/libcxx/include/stdint.h -FILE: ../../../third_party/libcxx/include/stdio.h -FILE: ../../../third_party/libcxx/include/stdlib.h -FILE: ../../../third_party/libcxx/include/streambuf -FILE: ../../../third_party/libcxx/include/string -FILE: ../../../third_party/libcxx/include/string.h -FILE: ../../../third_party/libcxx/include/string_view -FILE: ../../../third_party/libcxx/include/strstream -FILE: ../../../third_party/libcxx/include/support/android/locale_bionic.h -FILE: ../../../third_party/libcxx/include/support/fuchsia/xlocale.h -FILE: ../../../third_party/libcxx/include/support/ibm/limits.h -FILE: ../../../third_party/libcxx/include/support/ibm/locale_mgmt_aix.h -FILE: ../../../third_party/libcxx/include/support/ibm/support.h -FILE: ../../../third_party/libcxx/include/support/ibm/xlocale.h -FILE: ../../../third_party/libcxx/include/support/musl/xlocale.h -FILE: ../../../third_party/libcxx/include/support/newlib/xlocale.h -FILE: ../../../third_party/libcxx/include/support/solaris/floatingpoint.h -FILE: ../../../third_party/libcxx/include/support/solaris/wchar.h -FILE: ../../../third_party/libcxx/include/support/solaris/xlocale.h -FILE: ../../../third_party/libcxx/include/support/win32/limits_msvc_win32.h -FILE: ../../../third_party/libcxx/include/support/win32/locale_win32.h -FILE: ../../../third_party/libcxx/include/support/xlocale/__nop_locale_mgmt.h -FILE: ../../../third_party/libcxx/include/support/xlocale/__posix_l_fallback.h -FILE: ../../../third_party/libcxx/include/support/xlocale/__strtonum_fallback.h -FILE: ../../../third_party/libcxx/include/system_error -FILE: ../../../third_party/libcxx/include/tgmath.h -FILE: ../../../third_party/libcxx/include/thread -FILE: ../../../third_party/libcxx/include/tuple -FILE: ../../../third_party/libcxx/include/type_traits -FILE: ../../../third_party/libcxx/include/typeindex -FILE: ../../../third_party/libcxx/include/typeinfo -FILE: ../../../third_party/libcxx/include/unordered_map -FILE: ../../../third_party/libcxx/include/unordered_set -FILE: ../../../third_party/libcxx/include/utility -FILE: ../../../third_party/libcxx/include/valarray -FILE: ../../../third_party/libcxx/include/variant -FILE: ../../../third_party/libcxx/include/vector -FILE: ../../../third_party/libcxx/include/version -FILE: ../../../third_party/libcxx/include/wchar.h -FILE: ../../../third_party/libcxx/include/wctype.h -FILE: ../../../third_party/libcxx/lib/abi/3.9/x86_64-apple-darwin16.abilist -FILE: ../../../third_party/libcxx/lib/abi/3.9/x86_64-linux-gnu.abilist -FILE: ../../../third_party/libcxx/lib/abi/4.0/x86_64-apple-darwin16.abilist -FILE: ../../../third_party/libcxx/lib/abi/4.0/x86_64-unknown-linux-gnu.abilist -FILE: ../../../third_party/libcxx/lib/abi/5.0/x86_64-apple-darwin16.abilist -FILE: ../../../third_party/libcxx/lib/abi/5.0/x86_64-unknown-linux-gnu.abilist -FILE: ../../../third_party/libcxx/lib/abi/6.0/x86_64-apple-darwin16.abilist -FILE: ../../../third_party/libcxx/lib/abi/6.0/x86_64-unknown-linux-gnu.abilist -FILE: ../../../third_party/libcxx/lib/abi/x86_64-apple-darwin.v1.abilist -FILE: ../../../third_party/libcxx/lib/abi/x86_64-apple-darwin.v2.abilist -FILE: ../../../third_party/libcxx/lib/abi/x86_64-unknown-linux-gnu.v1.abilist -FILE: ../../../third_party/libcxx/lib/libc++abi-new-delete.exp -FILE: ../../../third_party/libcxx/lib/libc++abi.exp -FILE: ../../../third_party/libcxx/lib/libc++abi2.exp -FILE: ../../../third_party/libcxx/lib/libc++sjlj-abi.exp -FILE: ../../../third_party/libcxx/lib/libc++unexp.exp -FILE: ../../../third_party/libcxx/lib/notweak.exp -FILE: ../../../third_party/libcxx/lib/weak.exp -FILE: ../../../third_party/libcxx/src/algorithm.cpp -FILE: ../../../third_party/libcxx/src/any.cpp -FILE: ../../../third_party/libcxx/src/bind.cpp -FILE: ../../../third_party/libcxx/src/charconv.cpp -FILE: ../../../third_party/libcxx/src/chrono.cpp -FILE: ../../../third_party/libcxx/src/condition_variable.cpp -FILE: ../../../third_party/libcxx/src/debug.cpp -FILE: ../../../third_party/libcxx/src/exception.cpp -FILE: ../../../third_party/libcxx/src/experimental/memory_resource.cpp -FILE: ../../../third_party/libcxx/src/filesystem/directory_iterator.cpp -FILE: ../../../third_party/libcxx/src/filesystem/filesystem_common.h -FILE: ../../../third_party/libcxx/src/filesystem/int128_builtins.cpp -FILE: ../../../third_party/libcxx/src/filesystem/operations.cpp -FILE: ../../../third_party/libcxx/src/functional.cpp -FILE: ../../../third_party/libcxx/src/future.cpp -FILE: ../../../third_party/libcxx/src/hash.cpp -FILE: ../../../third_party/libcxx/src/include/apple_availability.h -FILE: ../../../third_party/libcxx/src/include/atomic_support.h -FILE: ../../../third_party/libcxx/src/include/config_elast.h -FILE: ../../../third_party/libcxx/src/include/refstring.h -FILE: ../../../third_party/libcxx/src/ios.cpp -FILE: ../../../third_party/libcxx/src/iostream.cpp -FILE: ../../../third_party/libcxx/src/locale.cpp -FILE: ../../../third_party/libcxx/src/memory.cpp -FILE: ../../../third_party/libcxx/src/mutex.cpp -FILE: ../../../third_party/libcxx/src/new.cpp -FILE: ../../../third_party/libcxx/src/optional.cpp -FILE: ../../../third_party/libcxx/src/random.cpp -FILE: ../../../third_party/libcxx/src/regex.cpp -FILE: ../../../third_party/libcxx/src/shared_mutex.cpp -FILE: ../../../third_party/libcxx/src/stdexcept.cpp -FILE: ../../../third_party/libcxx/src/string.cpp -FILE: ../../../third_party/libcxx/src/strstream.cpp -FILE: ../../../third_party/libcxx/src/support/runtime/exception_fallback.ipp -FILE: ../../../third_party/libcxx/src/support/runtime/exception_glibcxx.ipp -FILE: ../../../third_party/libcxx/src/support/runtime/exception_libcxxabi.ipp -FILE: ../../../third_party/libcxx/src/support/runtime/exception_libcxxrt.ipp -FILE: ../../../third_party/libcxx/src/support/runtime/exception_msvc.ipp -FILE: ../../../third_party/libcxx/src/support/runtime/exception_pointer_cxxabi.ipp -FILE: ../../../third_party/libcxx/src/support/runtime/exception_pointer_glibcxx.ipp -FILE: ../../../third_party/libcxx/src/support/runtime/exception_pointer_msvc.ipp -FILE: ../../../third_party/libcxx/src/support/runtime/exception_pointer_unimplemented.ipp -FILE: ../../../third_party/libcxx/src/support/runtime/new_handler_fallback.ipp -FILE: ../../../third_party/libcxx/src/support/win32/locale_win32.cpp -FILE: ../../../third_party/libcxx/src/support/win32/support.cpp -FILE: ../../../third_party/libcxx/src/support/win32/thread_win32.cpp -FILE: ../../../third_party/libcxx/src/system_error.cpp -FILE: ../../../third_party/libcxx/src/thread.cpp -FILE: ../../../third_party/libcxx/src/typeinfo.cpp -FILE: ../../../third_party/libcxx/src/utility.cpp -FILE: ../../../third_party/libcxx/src/valarray.cpp -FILE: ../../../third_party/libcxx/src/variant.cpp -FILE: ../../../third_party/libcxx/src/vector.cpp -FILE: ../../../third_party/libcxx/www/TS_deprecation.html -FILE: ../../../third_party/libcxx/www/atomic_design.html -FILE: ../../../third_party/libcxx/www/atomic_design_a.html -FILE: ../../../third_party/libcxx/www/atomic_design_b.html -FILE: ../../../third_party/libcxx/www/atomic_design_c.html -FILE: ../../../third_party/libcxx/www/cxx1y_status.html -FILE: ../../../third_party/libcxx/www/cxx1z_status.html -FILE: ../../../third_party/libcxx/www/cxx2a_status.html -FILE: ../../../third_party/libcxx/www/index.html -FILE: ../../../third_party/libcxx/www/ts1z_status.html -FILE: ../../../third_party/libcxx/www/type_traits_design.html -FILE: ../../../third_party/libcxx/www/upcoming_meeting.html ----------------------------------------------------------------------------------------------------- -University of Illinois/NCSA -Open Source License - -Copyright (c) 2009-2017 by the contributors listed in CREDITS.TXT - -All rights reserved. - -Developed by: - - LLVM Team - - University of Illinois at Urbana-Champaign - - http://llvm.org - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal with -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies -of the Software, and to permit persons to whom the Software is furnished to do -so, subject to the following conditions: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimers. - - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimers in the - documentation and/or other materials provided with the distribution. - - * Neither the names of the LLVM Team, University of Illinois at - Urbana-Champaign, nor the names of its contributors may be used to - endorse or promote products derived from this Software without specific - prior written permission. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE -SOFTWARE. -==================================================================================================== - -==================================================================================================== -LIBRARY: libcxxabi -ORIGIN: null -TYPE: LicenseType.bsd -FILE: ../../../third_party/libcxxabi/.arcconfig -FILE: ../../../third_party/libcxxabi/fuzz/cxa_demangle_fuzzer.cpp -FILE: ../../../third_party/libcxxabi/src/demangle/Compiler.h -FILE: ../../../third_party/libcxxabi/src/demangle/StringView.h -FILE: ../../../third_party/libcxxabi/src/demangle/Utility.h -FILE: ../../../third_party/libcxxabi/www/index.html -FILE: ../../../third_party/libcxxabi/www/spec.html ----------------------------------------------------------------------------------------------------- -University of Illinois/NCSA -Open Source License - -Copyright (c) 2009-2018 by the contributors listed in CREDITS.TXT - -All rights reserved. - -Developed by: - - LLVM Team - - University of Illinois at Urbana-Champaign - - http://llvm.org - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal with -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies -of the Software, and to permit persons to whom the Software is furnished to do -so, subject to the following conditions: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimers. - - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimers in the - documentation and/or other materials provided with the distribution. - - * Neither the names of the LLVM Team, University of Illinois at - Urbana-Champaign, nor the names of its contributors may be used to - endorse or promote products derived from this Software without specific - prior written permission. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE -SOFTWARE. -==================================================================================================== - ==================================================================================================== LIBRARY: libjpeg-turbo ORIGIN: ../../../third_party/libjpeg-turbo/README.ijg @@ -18385,4 +17844,4 @@ freely, subject to the following restrictions: misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. ==================================================================================================== -Total license count: 307 +Total license count: 304 diff --git a/sky/packages/sky_engine/LICENSE b/sky/packages/sky_engine/LICENSE index 38fca4e7cc13f..7334fbc6b9b0e 100644 --- a/sky/packages/sky_engine/LICENSE +++ b/sky/packages/sky_engine/LICENSE @@ -7116,117 +7116,6 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- -libcxx - -University of Illinois/NCSA -Open Source License - -Copyright (c) 2009-2017 by the contributors listed in CREDITS.TXT - -All rights reserved. - -Developed by: - - LLVM Team - - University of Illinois at Urbana-Champaign - - http://llvm.org - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal with -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies -of the Software, and to permit persons to whom the Software is furnished to do -so, subject to the following conditions: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimers. - - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimers in the - documentation and/or other materials provided with the distribution. - - * Neither the names of the LLVM Team, University of Illinois at - Urbana-Champaign, nor the names of its contributors may be used to - endorse or promote products derived from this Software without specific - prior written permission. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE -SOFTWARE. --------------------------------------------------------------------------------- -libcxx -libcxxabi - -Copyright (c) 2009-2014 by the contributors listed in CREDITS.TXT - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. --------------------------------------------------------------------------------- -libcxxabi - -University of Illinois/NCSA -Open Source License - -Copyright (c) 2009-2018 by the contributors listed in CREDITS.TXT - -All rights reserved. - -Developed by: - - LLVM Team - - University of Illinois at Urbana-Champaign - - http://llvm.org - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal with -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies -of the Software, and to permit persons to whom the Software is furnished to do -so, subject to the following conditions: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimers. - - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimers in the - documentation and/or other materials provided with the distribution. - - * Neither the names of the LLVM Team, University of Illinois at - Urbana-Champaign, nor the names of its contributors may be used to - endorse or promote products derived from this Software without specific - prior written permission. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE -SOFTWARE. --------------------------------------------------------------------------------- libjpeg-turbo Copyright (C) 1999-2006, MIYASAKA Masaru. diff --git a/tools/licenses/lib/main.dart b/tools/licenses/lib/main.dart index a0670b45cd997..9ea879f73fb98 100644 --- a/tools/licenses/lib/main.dart +++ b/tools/licenses/lib/main.dart @@ -1442,6 +1442,30 @@ class RepositoryAndroidNdkSourcesAndroidDirectory extends RepositoryDirectory { } } +class RepositoryAndroidNdkSourcesCxxStlSubsubdirectory extends RepositoryDirectory { + RepositoryAndroidNdkSourcesCxxStlSubsubdirectory(RepositoryDirectory parent, fs.Directory io) : super(parent, io); + + @override + RepositoryFile createFile(fs.IoNode entry) { + if (entry.name == 'LICENSE.TXT') + return new RepositoryCxxStlDualLicenseFile(this, entry); + return super.createFile(entry); + } +} + +class RepositoryAndroidNdkSourcesCxxStlSubdirectory extends RepositoryDirectory { + RepositoryAndroidNdkSourcesCxxStlSubdirectory(RepositoryDirectory parent, fs.Directory io, this.subdirectoryName) : super(parent, io); + + final String subdirectoryName; + + @override + RepositoryDirectory createSubdirectory(fs.Directory entry) { + if (entry.name == subdirectoryName) + return new RepositoryAndroidNdkSourcesCxxStlSubsubdirectory(this, entry); + return super.createSubdirectory(entry); + } +} + class RepositoryAndroidNdkSourcesCxxStlDirectory extends RepositoryDirectory { RepositoryAndroidNdkSourcesCxxStlDirectory(RepositoryDirectory parent, fs.Directory io) : super(parent, io); @@ -1452,11 +1476,17 @@ class RepositoryAndroidNdkSourcesCxxStlDirectory extends RepositoryDirectory { bool shouldRecurse(fs.IoNode entry) { return entry.name != 'gabi++' // abarth says jamesr says we don't use these two && entry.name != 'stlport' - && entry.name != 'llvm-libc++' // we ship our own custom-compiled libcxx/libcxxabi - && entry.name != 'llvm-libc++abi' - && entry.name != 'gnu-libstdc++' && super.shouldRecurse(entry); } + + @override + RepositoryDirectory createSubdirectory(fs.Directory entry) { + if (entry.name == 'llvm-libc++abi') + return new RepositoryAndroidNdkSourcesCxxStlSubdirectory(this, entry, 'libcxxabi'); + if (entry.name == 'llvm-libc++') + return new RepositoryAndroidNdkSourcesCxxStlSubdirectory(this, entry, 'libcxx'); + return super.createSubdirectory(entry); + } } class RepositoryAndroidNdkSourcesThirdPartyDirectory extends RepositoryGenericThirdPartyDirectory { @@ -1725,62 +1755,6 @@ class RepositoryJSR305SrcDirectory extends RepositoryDirectory { } } -class RepositoryLibcxxDirectory extends RepositoryDirectory { - RepositoryLibcxxDirectory(RepositoryDirectory parent, fs.Directory io) : super(parent, io); - - @override - bool shouldRecurse(fs.IoNode entry) { - return entry.name != 'utils' - && super.shouldRecurse(entry); - } - - @override - RepositoryDirectory createSubdirectory(fs.Directory entry) { - if (entry.name == 'src') - return new RepositoryLibcxxSrcDirectory(this, entry); - return super.createSubdirectory(entry); - } - - @override - RepositoryFile createFile(fs.IoNode entry) { - if (entry.name == 'LICENSE.TXT') - return new RepositoryCxxStlDualLicenseFile(this, entry); - return super.createFile(entry); - } -} - -class RepositoryLibcxxSrcDirectory extends RepositoryDirectory { - RepositoryLibcxxSrcDirectory(RepositoryDirectory parent, fs.Directory io) : super(parent, io); - - @override - RepositoryDirectory createSubdirectory(fs.Directory entry) { - if (entry.name == 'support') - return new RepositoryLibcxxSrcSupportDirectory(this, entry); - return super.createSubdirectory(entry); - } -} - -class RepositoryLibcxxSrcSupportDirectory extends RepositoryDirectory { - RepositoryLibcxxSrcSupportDirectory(RepositoryDirectory parent, fs.Directory io) : super(parent, io); - - @override - bool shouldRecurse(fs.IoNode entry) { - return entry.name != 'solaris' - && super.shouldRecurse(entry); - } -} - -class RepositoryLibcxxabiDirectory extends RepositoryDirectory { - RepositoryLibcxxabiDirectory(RepositoryDirectory parent, fs.Directory io) : super(parent, io); - - @override - RepositoryFile createFile(fs.IoNode entry) { - if (entry.name == 'LICENSE.TXT') - return new RepositoryCxxStlDualLicenseFile(this, entry); - return super.createFile(entry); - } -} - class RepositoryLibJpegDirectory extends RepositoryDirectory { RepositoryLibJpegDirectory(RepositoryDirectory parent, fs.Directory io) : super(parent, io); @@ -1992,10 +1966,6 @@ class RepositoryRootThirdPartyDirectory extends RepositoryGenericThirdPartyDirec return new RepositoryIcuDirectory(this, entry); if (entry.name == 'jsr-305') return new RepositoryJSR305Directory(this, entry); - if (entry.name == 'libcxx') - return new RepositoryLibcxxDirectory(this, entry); - if (entry.name == 'libcxxabi') - return new RepositoryLibcxxabiDirectory(this, entry); if (entry.name == 'libjpeg') return new RepositoryLibJpegDirectory(this, entry); if (entry.name == 'libjpeg_turbo' || entry.name == 'libjpeg-turbo') From 3822765918ecac73c49cd176975f973b73412ddf Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Tue, 20 Nov 2018 13:43:50 -0500 Subject: [PATCH 0311/1537] Roll src/third_party/skia 6bdfb6fba352..eb35650f9177 (15 commits) (#6914) https://skia.googlesource.com/skia.git/+log/6bdfb6fba352..eb35650f9177 Created with: gclient setdep -r src/third_party/skia@eb35650f9177 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/DEPS b/DEPS index f2031d946486f..47cb579031072 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '6bdfb6fba35273f9c2e0765868bc3421eb5c26b5', + 'skia_revision': 'eb35650f9177d30e59cf6289a834ce1bb86cdfb7', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index bbf27a5f4ed34..469e5f07d952d 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: f4f22bd51d62c5d5455499d472069612 +Signature: d743c750c31db65e8ba714b02e51934b UNUSED LICENSES: @@ -4021,7 +4021,6 @@ FILE: ../../../third_party/skia/samplecode/SampleStringArt.cpp FILE: ../../../third_party/skia/samplecode/SampleUnpremul.cpp FILE: ../../../third_party/skia/src/core/SkBitmapDevice.cpp FILE: ../../../third_party/skia/src/core/SkBitmapDevice.h -FILE: ../../../third_party/skia/src/core/SkBitmapProcState_matrix_template.h FILE: ../../../third_party/skia/src/core/SkDataTable.cpp FILE: ../../../third_party/skia/src/core/SkDiscardableMemory.h FILE: ../../../third_party/skia/src/core/SkDocument.cpp @@ -4572,7 +4571,6 @@ FILE: ../../../third_party/skia/include/effects/SkMorphologyImageFilter.h FILE: ../../../third_party/skia/include/effects/SkOffsetImageFilter.h FILE: ../../../third_party/skia/src/core/SkImageFilter.cpp FILE: ../../../third_party/skia/src/core/SkUtilsArm.cpp -FILE: ../../../third_party/skia/src/core/SkUtilsArm.h FILE: ../../../third_party/skia/src/effects/imagefilters/SkColorFilterImageFilter.cpp FILE: ../../../third_party/skia/src/effects/imagefilters/SkLightingImageFilter.cpp FILE: ../../../third_party/skia/src/effects/imagefilters/SkMagnifierImageFilter.cpp From dda9f69a7fd6142ef0cf5a4f4676e09f87815c15 Mon Sep 17 00:00:00 2001 From: Michael Goderbauer Date: Tue, 20 Nov 2018 12:34:16 -0800 Subject: [PATCH 0312/1537] Remove unused code from licenses script (#6910) Code became obsolete with https://github.com/flutter/engine/pull/3627. Also fixes mix-in syntax and marks class as private. With the latter the anaylser tells us in the future if there are unused classes in the file. --- tools/licenses/analysis_options.yaml | 2 - tools/licenses/lib/filesystem.dart | 18 +- tools/licenses/lib/main.dart | 851 +++++++++------------------ 3 files changed, 298 insertions(+), 573 deletions(-) diff --git a/tools/licenses/analysis_options.yaml b/tools/licenses/analysis_options.yaml index 44a679430a9a3..ffb8ee486a8db 100644 --- a/tools/licenses/analysis_options.yaml +++ b/tools/licenses/analysis_options.yaml @@ -1,8 +1,6 @@ # Specify analysis options. analyzer: - language: - enableSuperMixins: true strong-mode: implicit-dynamic: false errors: diff --git a/tools/licenses/lib/filesystem.dart b/tools/licenses/lib/filesystem.dart index 5d066af5bb748..49d4978e88b3b 100644 --- a/tools/licenses/lib/filesystem.dart +++ b/tools/licenses/lib/filesystem.dart @@ -308,8 +308,7 @@ abstract class TextFile extends File { String readString(); } -// mixin -abstract class UTF8TextFile extends TextFile { +mixin UTF8TextFile implements TextFile { @override String readString() { try { @@ -321,8 +320,7 @@ abstract class UTF8TextFile extends TextFile { } } -// mixin -abstract class Latin1TextFile extends TextFile { +mixin Latin1TextFile implements TextFile { @override String readString() { return cache(new Latin1Of(this), () { @@ -350,8 +348,7 @@ abstract class Directory extends IoNode { // interface abstract class Link extends IoNode { } -// mixin -abstract class ZipFile extends File implements Directory { +mixin ZipFile on File implements Directory { ArchiveDirectory _root; @override @@ -366,8 +363,7 @@ abstract class ZipFile extends File implements Directory { } } -// mixin -abstract class TarFile extends File implements Directory { +mixin TarFile on File implements Directory { ArchiveDirectory _root; @override @@ -382,8 +378,7 @@ abstract class TarFile extends File implements Directory { } } -// mixin -abstract class GZipFile extends File implements Directory { +mixin GZipFile on File implements Directory { InMemoryFile _data; @override @@ -400,8 +395,7 @@ abstract class GZipFile extends File implements Directory { } } -// mixin -abstract class BZip2File extends File implements Directory { +mixin BZip2File on File implements Directory { InMemoryFile _data; @override diff --git a/tools/licenses/lib/main.dart b/tools/licenses/lib/main.dart index 9ea879f73fb98..39aff8a821c0e 100644 --- a/tools/licenses/lib/main.dart +++ b/tools/licenses/lib/main.dart @@ -21,22 +21,22 @@ import 'licenses.dart'; // REPOSITORY OBJECTS -abstract class RepositoryEntry implements Comparable { - RepositoryEntry(this.parent, this.io); - final RepositoryDirectory parent; +abstract class _RepositoryEntry implements Comparable<_RepositoryEntry> { + _RepositoryEntry(this.parent, this.io); + final _RepositoryDirectory parent; final fs.IoNode io; String get name => io.name; String get libraryName; @override - int compareTo(RepositoryEntry other) => toString().compareTo(other.toString()); + int compareTo(_RepositoryEntry other) => toString().compareTo(other.toString()); @override String toString() => io.fullName; } -abstract class RepositoryFile extends RepositoryEntry { - RepositoryFile(RepositoryDirectory parent, fs.File io) : super(parent, io); +abstract class _RepositoryFile extends _RepositoryEntry { + _RepositoryFile(_RepositoryDirectory parent, fs.File io) : super(parent, io); Iterable get licenses; @@ -47,8 +47,8 @@ abstract class RepositoryFile extends RepositoryEntry { fs.File get io => super.io; } -abstract class RepositoryLicensedFile extends RepositoryFile { - RepositoryLicensedFile(RepositoryDirectory parent, fs.File io) : super(parent, io); +abstract class _RepositoryLicensedFile extends _RepositoryFile { + _RepositoryLicensedFile(_RepositoryDirectory parent, fs.File io) : super(parent, io); // file names that we are confident won't be included in the final build product static final RegExp _readmeNamePattern = new RegExp(r'\b_*(?:readme|contributing|patents)_*\b', caseSensitive: false); @@ -69,8 +69,8 @@ abstract class RepositoryLicensedFile extends RepositoryFile { bool get isShellScript => false; } -class RepositorySourceFile extends RepositoryLicensedFile { - RepositorySourceFile(RepositoryDirectory parent, fs.TextFile io) : super(parent, io); +class _RepositorySourceFile extends _RepositoryLicensedFile { + _RepositorySourceFile(_RepositoryDirectory parent, fs.TextFile io) : super(parent, io); @override fs.TextFile get io => super.io; @@ -108,8 +108,8 @@ class RepositorySourceFile extends RepositoryLicensedFile { } } -class RepositoryBinaryFile extends RepositoryLicensedFile { - RepositoryBinaryFile(RepositoryDirectory parent, fs.File io) : super(parent, io); +class _RepositoryBinaryFile extends _RepositoryLicensedFile { + _RepositoryBinaryFile(_RepositoryDirectory parent, fs.File io) : super(parent, io); @override fs.File get io => super.io; @@ -131,8 +131,8 @@ class RepositoryBinaryFile extends RepositoryLicensedFile { // LICENSES -abstract class RepositoryLicenseFile extends RepositoryFile { - RepositoryLicenseFile(RepositoryDirectory parent, fs.File io) : super(parent, io); +abstract class _RepositoryLicenseFile extends _RepositoryFile { + _RepositoryLicenseFile(_RepositoryDirectory parent, fs.File io) : super(parent, io); List licensesFor(String name); License licenseOfType(LicenseType type); @@ -141,8 +141,8 @@ abstract class RepositoryLicenseFile extends RepositoryFile { License get defaultLicense; } -abstract class RepositorySingleLicenseFile extends RepositoryLicenseFile { - RepositorySingleLicenseFile(RepositoryDirectory parent, fs.TextFile io, this.license) +abstract class _RepositorySingleLicenseFile extends _RepositoryLicenseFile { + _RepositorySingleLicenseFile(_RepositoryDirectory parent, fs.TextFile io, this.license) : super(parent, io); final License license; @@ -168,11 +168,11 @@ abstract class RepositorySingleLicenseFile extends RepositoryLicenseFile { Iterable get licenses sync* { yield license; } } -class RepositoryGeneralSingleLicenseFile extends RepositorySingleLicenseFile { - RepositoryGeneralSingleLicenseFile(RepositoryDirectory parent, fs.TextFile io) +class _RepositoryGeneralSingleLicenseFile extends _RepositorySingleLicenseFile { + _RepositoryGeneralSingleLicenseFile(_RepositoryDirectory parent, fs.TextFile io) : super(parent, io, new License.fromBodyAndName(io.readString(), io.name, origin: io.fullName)); - RepositoryGeneralSingleLicenseFile.fromLicense(RepositoryDirectory parent, fs.TextFile io, License license) + _RepositoryGeneralSingleLicenseFile.fromLicense(_RepositoryDirectory parent, fs.TextFile io, License license) : super(parent, io, license); @override @@ -183,8 +183,8 @@ class RepositoryGeneralSingleLicenseFile extends RepositorySingleLicenseFile { } } -class RepositoryApache4DNoticeFile extends RepositorySingleLicenseFile { - RepositoryApache4DNoticeFile(RepositoryDirectory parent, fs.TextFile io) +class _RepositoryApache4DNoticeFile extends _RepositorySingleLicenseFile { + _RepositoryApache4DNoticeFile(_RepositoryDirectory parent, fs.TextFile io) : super(parent, io, _parseLicense(io)); @override @@ -211,8 +211,8 @@ class RepositoryApache4DNoticeFile extends RepositorySingleLicenseFile { } } -class RepositoryLicenseRedirectFile extends RepositorySingleLicenseFile { - RepositoryLicenseRedirectFile(RepositoryDirectory parent, fs.TextFile io, License license) +class _RepositoryLicenseRedirectFile extends _RepositorySingleLicenseFile { + _RepositoryLicenseRedirectFile(_RepositoryDirectory parent, fs.TextFile io, License license) : super(parent, io, license); @override @@ -222,17 +222,17 @@ class RepositoryLicenseRedirectFile extends RepositorySingleLicenseFile { return null; } - static RepositoryLicenseRedirectFile maybeCreateFrom(RepositoryDirectory parent, fs.TextFile io) { + static _RepositoryLicenseRedirectFile maybeCreateFrom(_RepositoryDirectory parent, fs.TextFile io) { String contents = io.readString(); License license = interpretAsRedirectLicense(contents, parent, origin: io.fullName); if (license != null) - return new RepositoryLicenseRedirectFile(parent, io, license); + return new _RepositoryLicenseRedirectFile(parent, io, license); return null; } } -class RepositoryLicenseFileWithLeader extends RepositorySingleLicenseFile { - RepositoryLicenseFileWithLeader(RepositoryDirectory parent, fs.TextFile io, RegExp leader) +class _RepositoryLicenseFileWithLeader extends _RepositorySingleLicenseFile { + _RepositoryLicenseFileWithLeader(_RepositoryDirectory parent, fs.TextFile io, RegExp leader) : super(parent, io, _parseLicense(io, leader)); @override @@ -247,8 +247,8 @@ class RepositoryLicenseFileWithLeader extends RepositorySingleLicenseFile { } } -class RepositoryReadmeIjgFile extends RepositorySingleLicenseFile { - RepositoryReadmeIjgFile(RepositoryDirectory parent, fs.TextFile io) +class _RepositoryReadmeIjgFile extends _RepositorySingleLicenseFile { + _RepositoryReadmeIjgFile(_RepositoryDirectory parent, fs.TextFile io) : super(parent, io, _parseLicense(io)); static final RegExp _pattern = new RegExp( @@ -288,8 +288,8 @@ class RepositoryReadmeIjgFile extends RepositorySingleLicenseFile { } } -class RepositoryDartLicenseFile extends RepositorySingleLicenseFile { - RepositoryDartLicenseFile(RepositoryDirectory parent, fs.TextFile io) +class _RepositoryDartLicenseFile extends _RepositorySingleLicenseFile { + _RepositoryDartLicenseFile(_RepositoryDirectory parent, fs.TextFile io) : super(parent, io, _parseLicense(io)); static final RegExp _pattern = new RegExp( @@ -319,8 +319,8 @@ class RepositoryDartLicenseFile extends RepositorySingleLicenseFile { } } -class RepositoryLibPngLicenseFile extends RepositorySingleLicenseFile { - RepositoryLibPngLicenseFile(RepositoryDirectory parent, fs.TextFile io) +class _RepositoryLibPngLicenseFile extends _RepositorySingleLicenseFile { + _RepositoryLibPngLicenseFile(_RepositoryDirectory parent, fs.TextFile io) : super(parent, io, new License.blank(io.readString(), LicenseType.libpng, origin: io.fullName)) { _verifyLicense(io); } @@ -341,8 +341,8 @@ class RepositoryLibPngLicenseFile extends RepositorySingleLicenseFile { } } -class RepositoryBlankLicenseFile extends RepositorySingleLicenseFile { - RepositoryBlankLicenseFile(RepositoryDirectory parent, fs.TextFile io, String sanityCheck) +class _RepositoryBlankLicenseFile extends _RepositorySingleLicenseFile { + _RepositoryBlankLicenseFile(_RepositoryDirectory parent, fs.TextFile io, String sanityCheck) : super(parent, io, new License.blank(io.readString(), LicenseType.unknown)) { _verifyLicense(io, sanityCheck); } @@ -357,8 +357,8 @@ class RepositoryBlankLicenseFile extends RepositorySingleLicenseFile { License licenseOfType(LicenseType type) => null; } -class RepositoryCatapultApiClientLicenseFile extends RepositorySingleLicenseFile { - RepositoryCatapultApiClientLicenseFile(RepositoryDirectory parent, fs.TextFile io) +class _RepositoryCatapultApiClientLicenseFile extends _RepositorySingleLicenseFile { + _RepositoryCatapultApiClientLicenseFile(_RepositoryDirectory parent, fs.TextFile io) : super(parent, io, _parseLicense(io)); static final RegExp _pattern = new RegExp( @@ -390,8 +390,8 @@ class RepositoryCatapultApiClientLicenseFile extends RepositorySingleLicenseFile } } -class RepositoryCatapultCoverageLicenseFile extends RepositorySingleLicenseFile { - RepositoryCatapultCoverageLicenseFile(RepositoryDirectory parent, fs.TextFile io) +class _RepositoryCatapultCoverageLicenseFile extends _RepositorySingleLicenseFile { + _RepositoryCatapultCoverageLicenseFile(_RepositoryDirectory parent, fs.TextFile io) : super(parent, io, _parseLicense(io)); static final RegExp _pattern = new RegExp( @@ -423,8 +423,8 @@ class RepositoryCatapultCoverageLicenseFile extends RepositorySingleLicenseFile } } -class RepositoryLibJpegTurboLicense extends RepositoryLicenseFile { - RepositoryLibJpegTurboLicense(RepositoryDirectory parent, fs.TextFile io) +class _RepositoryLibJpegTurboLicense extends _RepositoryLicenseFile { + _RepositoryLibJpegTurboLicense(_RepositoryDirectory parent, fs.TextFile io) : super(parent, io) { _parseLicense(io); } @@ -460,10 +460,10 @@ class RepositoryLibJpegTurboLicense extends RepositoryLicenseFile { @override List get licenses { if (_licenses == null) { - final RepositoryReadmeIjgFile readme = parent.getChildByName('README.ijg'); - final RepositorySourceFile main = parent.getChildByName('turbojpeg.c'); - final RepositoryDirectory simd = parent.getChildByName('simd'); - final RepositorySourceFile zlib = simd.getChildByName('jsimdext.inc'); + final _RepositoryReadmeIjgFile readme = parent.getChildByName('README.ijg'); + final _RepositorySourceFile main = parent.getChildByName('turbojpeg.c'); + final _RepositoryDirectory simd = parent.getChildByName('simd'); + final _RepositorySourceFile zlib = simd.getChildByName('jsimdext.inc'); _licenses = []; _licenses.add(readme.license); _licenses.add(main.licenses.single); @@ -491,8 +491,8 @@ class RepositoryLibJpegTurboLicense extends RepositoryLicenseFile { License get defaultLicense => null; } -class RepositoryFreetypeLicenseFile extends RepositoryLicenseFile { - RepositoryFreetypeLicenseFile(RepositoryDirectory parent, fs.TextFile io) +class _RepositoryFreetypeLicenseFile extends _RepositoryLicenseFile { + _RepositoryFreetypeLicenseFile(_RepositoryDirectory parent, fs.TextFile io) : _target = _parseLicense(io), super(parent, io); static final RegExp _pattern = new RegExp( @@ -571,8 +571,8 @@ class RepositoryFreetypeLicenseFile extends RepositoryLicenseFile { Iterable get licenses sync* { } } -class RepositoryIcuLicenseFile extends RepositoryLicenseFile { - RepositoryIcuLicenseFile(RepositoryDirectory parent, fs.TextFile io) +class _RepositoryIcuLicenseFile extends _RepositoryLicenseFile { + _RepositoryIcuLicenseFile(_RepositoryDirectory parent, fs.TextFile io) : _licenses = _parseLicense(io), super(parent, io); @@ -727,8 +727,8 @@ Iterable> splitIntList(List data, int boundary) sync* { yield getOne(); } -class RepositoryMultiLicenseNoticesForFilesFile extends RepositoryLicenseFile { - RepositoryMultiLicenseNoticesForFilesFile(RepositoryDirectory parent, fs.File io) +class _RepositoryMultiLicenseNoticesForFilesFile extends _RepositoryLicenseFile { + _RepositoryMultiLicenseNoticesForFilesFile(_RepositoryDirectory parent, fs.File io) : _licenses = _parseLicense(io), super(parent, io); @@ -809,8 +809,9 @@ class RepositoryMultiLicenseNoticesForFilesFile extends RepositoryLicenseFile { Iterable get licenses => _licenses.values; } -class RepositoryCxxStlDualLicenseFile extends RepositoryLicenseFile { - RepositoryCxxStlDualLicenseFile(RepositoryDirectory parent, fs.TextFile io) +// TODO(goderbauer): use this in https://github.com/flutter/engine/pull/6886. +class _RepositoryCxxStlDualLicenseFile extends _RepositoryLicenseFile { // ignore: unused_element + _RepositoryCxxStlDualLicenseFile(_RepositoryDirectory parent, fs.TextFile io) : _licenses = _parseLicenses(io), super(parent, io); static final RegExp _pattern = new RegExp( @@ -870,21 +871,21 @@ class RepositoryCxxStlDualLicenseFile extends RepositoryLicenseFile { // DIRECTORIES -class RepositoryDirectory extends RepositoryEntry implements LicenseSource { - RepositoryDirectory(RepositoryDirectory parent, fs.Directory io) : super(parent, io) { +class _RepositoryDirectory extends _RepositoryEntry implements LicenseSource { + _RepositoryDirectory(_RepositoryDirectory parent, fs.Directory io) : super(parent, io) { crawl(); } @override fs.Directory get io => super.io; - final List _subdirectories = []; - final List _files = []; - final List _licenses = []; + final List<_RepositoryDirectory> _subdirectories = <_RepositoryDirectory>[]; + final List<_RepositoryLicensedFile> _files = <_RepositoryLicensedFile>[]; + final List<_RepositoryLicenseFile> _licenses = <_RepositoryLicenseFile>[]; - List get subdirectories => _subdirectories; + List<_RepositoryDirectory> get subdirectories => _subdirectories; - final Map _childrenByName = {}; + final Map _childrenByName = {}; // the bit at the beginning excludes files like "license.py". static final RegExp _licenseNamePattern = new RegExp(r'^(?!.*\.py$)(?!.*(?:no|update)-copyright)(?!.*mh-bsd-gcc).*\b_*(?:license(?!\.html)|copying|copyright|notice|l?gpl|bsd|mpl?|ftl\.txt)_*\b', caseSensitive: false); @@ -894,17 +895,17 @@ class RepositoryDirectory extends RepositoryEntry implements LicenseSource { if (shouldRecurse(entry)) { assert(!_childrenByName.containsKey(entry.name)); if (entry is fs.Directory) { - RepositoryDirectory child = createSubdirectory(entry); + _RepositoryDirectory child = createSubdirectory(entry); _subdirectories.add(child); _childrenByName[child.name] = child; } else if (entry is fs.File) { try { - RepositoryFile child = createFile(entry); + _RepositoryFile child = createFile(entry); assert(child != null); - if (child is RepositoryLicensedFile) { + if (child is _RepositoryLicensedFile) { _files.add(child); } else { - assert(child is RepositoryLicenseFile); + assert(child is _RepositoryLicenseFile); _licenses.add(child); } _childrenByName[child.name] = child; @@ -918,7 +919,7 @@ class RepositoryDirectory extends RepositoryEntry implements LicenseSource { } } - for (RepositoryDirectory child in virtualSubdirectories) { + for (_RepositoryDirectory child in virtualSubdirectories) { _subdirectories.add(child); _childrenByName[child.name] = child; } @@ -926,7 +927,7 @@ class RepositoryDirectory extends RepositoryEntry implements LicenseSource { // Override this to add additional child directories that do not represent a // direct child of this directory's filesystem node. - List get virtualSubdirectories => []; + List<_RepositoryDirectory> get virtualSubdirectories => <_RepositoryDirectory>[]; bool shouldRecurse(fs.IoNode entry) { return entry.name != '.cipd' && @@ -941,38 +942,38 @@ class RepositoryDirectory extends RepositoryEntry implements LicenseSource { entry.name != 'testing'; } - RepositoryDirectory createSubdirectory(fs.Directory entry) { + _RepositoryDirectory createSubdirectory(fs.Directory entry) { if (entry.name == 'third_party') - return new RepositoryGenericThirdPartyDirectory(this, entry); - return new RepositoryDirectory(this, entry); + return new _RepositoryGenericThirdPartyDirectory(this, entry); + return new _RepositoryDirectory(this, entry); } - RepositoryFile createFile(fs.IoNode entry) { + _RepositoryFile createFile(fs.IoNode entry) { if (entry is fs.TextFile) { - if (RepositoryApache4DNoticeFile.consider(entry)) { - return new RepositoryApache4DNoticeFile(this, entry); + if (_RepositoryApache4DNoticeFile.consider(entry)) { + return new _RepositoryApache4DNoticeFile(this, entry); } else { - RepositoryFile result; + _RepositoryFile result; if (entry.name == 'NOTICE') - result = RepositoryLicenseRedirectFile.maybeCreateFrom(this, entry); + result = _RepositoryLicenseRedirectFile.maybeCreateFrom(this, entry); if (result != null) { return result; } else if (entry.name.contains(_licenseNamePattern)) { - return new RepositoryGeneralSingleLicenseFile(this, entry); + return new _RepositoryGeneralSingleLicenseFile(this, entry); } else if (entry.name == 'README.ijg') { - return new RepositoryReadmeIjgFile(this, entry); + return new _RepositoryReadmeIjgFile(this, entry); } else { - return new RepositorySourceFile(this, entry); + return new _RepositorySourceFile(this, entry); } } } else if (entry.name == 'NOTICE.txt') { - return new RepositoryMultiLicenseNoticesForFilesFile(this, entry); + return new _RepositoryMultiLicenseNoticesForFilesFile(this, entry); } else { - return new RepositoryBinaryFile(this, entry); + return new _RepositoryBinaryFile(this, entry); } } - int get count => _files.length + _subdirectories.fold(0, (int count, RepositoryDirectory child) => count + child.count); + int get count => _files.length + _subdirectories.fold(0, (int count, _RepositoryDirectory child) => count + child.count); @override List nearestLicensesFor(String name) { @@ -983,7 +984,7 @@ class RepositoryDirectory extends RepositoryEntry implements LicenseSource { } if (_licenses.length == 1) return _licenses.single.licensesFor(name); - List licenses = _licenses.expand/*License*/((RepositoryLicenseFile license) sync* { + List licenses = _licenses.expand/*License*/((_RepositoryLicenseFile license) sync* { List licenses = license.licensesFor(name); if (licenses != null) yield* licenses; @@ -1001,7 +1002,7 @@ class RepositoryDirectory extends RepositoryEntry implements LicenseSource { License nearestLicenseOfType(LicenseType type) { License result = _nearestAncestorLicenseWithType(type); if (result == null) { - for (RepositoryDirectory directory in _subdirectories) { + for (_RepositoryDirectory directory in _subdirectories) { result = directory._localLicenseWithType(type); if (result != null) break; @@ -1035,7 +1036,7 @@ class RepositoryDirectory extends RepositoryEntry implements LicenseSource { License _fullWalkDownForLicenseWithType(LicenseType type) { License result = _localLicenseWithType(type); if (result == null) { - for (RepositoryDirectory directory in _subdirectories) { + for (_RepositoryDirectory directory in _subdirectories) { result = directory._fullWalkDownForLicenseWithType(type); if (result != null) break; @@ -1046,7 +1047,7 @@ class RepositoryDirectory extends RepositoryEntry implements LicenseSource { /// Searches the current directory for licenses of the specified type. License _localLicenseWithType(LicenseType type) { - List licenses = _licenses.expand/*License*/((RepositoryLicenseFile license) sync* { + List licenses = _licenses.expand/*License*/((_RepositoryLicenseFile license) sync* { License result = license.licenseOfType(type); if (result != null) yield result; @@ -1064,7 +1065,7 @@ class RepositoryDirectory extends RepositoryEntry implements LicenseSource { License nearestLicenseWithName(String name, { String authors }) { License result = _nearestAncestorLicenseWithName(name, authors: authors); if (result == null) { - for (RepositoryDirectory directory in _subdirectories) { + for (_RepositoryDirectory directory in _subdirectories) { result = directory._localLicenseWithName(name, authors: authors); if (result != null) break; @@ -1106,7 +1107,7 @@ class RepositoryDirectory extends RepositoryEntry implements LicenseSource { License _fullWalkDownForLicenseWithName(String name, { String authors, bool ignoreCase: false }) { License result = _localLicenseWithName(name, authors: authors, ignoreCase: ignoreCase); if (result == null) { - for (RepositoryDirectory directory in _subdirectories) { + for (_RepositoryDirectory directory in _subdirectories) { result = directory._fullWalkDownForLicenseWithName(name, authors: authors, ignoreCase: ignoreCase); if (result != null) break; @@ -1141,11 +1142,11 @@ class RepositoryDirectory extends RepositoryEntry implements LicenseSource { bool get isLicenseRootException => false; License _localLicenseWithName(String name, { String authors, bool ignoreCase: false }) { - Map map; + Map map; if (ignoreCase) { // we get here if we're trying a last-ditch effort at finding a file. // so this should happen only rarely. - map = new HashMap( + map = new HashMap( equals: (String n1, String n2) => n1.toLowerCase() == n2.toLowerCase(), hashCode: (String n) => n.toLowerCase().hashCode ) @@ -1153,11 +1154,11 @@ class RepositoryDirectory extends RepositoryEntry implements LicenseSource { } else { map = _childrenByName; } - final RepositoryEntry entry = map[name]; + final _RepositoryEntry entry = map[name]; License license; - if (entry is RepositoryLicensedFile) { + if (entry is _RepositoryLicensedFile) { license = entry.licenses.single; - } else if (entry is RepositoryLicenseFile) { + } else if (entry is _RepositoryLicenseFile) { license = entry.defaultLicense; } else if (entry != null) { if (authors == null) @@ -1170,15 +1171,15 @@ class RepositoryDirectory extends RepositoryEntry implements LicenseSource { return license; } - RepositoryEntry getChildByName(String name) { + _RepositoryEntry getChildByName(String name) { return _childrenByName[name]; } - Set getLicenses(Progress progress) { + Set getLicenses(_Progress progress) { Set result = new Set(); - for (RepositoryDirectory directory in _subdirectories) + for (_RepositoryDirectory directory in _subdirectories) result.addAll(directory.getLicenses(progress)); - for (RepositoryLicensedFile file in _files) { + for (_RepositoryLicensedFile file in _files) { if (file.isIncludedInBuildProducts) { try { progress.label = '$file'; @@ -1195,35 +1196,35 @@ class RepositoryDirectory extends RepositoryEntry implements LicenseSource { } } } - for (RepositoryLicenseFile file in _licenses) + for (_RepositoryLicenseFile file in _licenses) result.addAll(file.licenses); return result; } int get fileCount { int result = 0; - for (RepositoryLicensedFile file in _files) { + for (_RepositoryLicensedFile file in _files) { if (file.isIncludedInBuildProducts) result += 1; } - for (RepositoryDirectory directory in _subdirectories) + for (_RepositoryDirectory directory in _subdirectories) result += directory.fileCount; return result; } - Iterable get _signatureFiles sync* { - for (RepositoryLicensedFile file in _files) { + Iterable<_RepositoryLicensedFile> get _signatureFiles sync* { + for (_RepositoryLicensedFile file in _files) { if (file.isIncludedInBuildProducts) yield file; } - for (RepositoryDirectory directory in _subdirectories) { + for (_RepositoryDirectory directory in _subdirectories) { if (directory.includeInSignature) yield* directory._signatureFiles; } } - Stream> _signatureStream(List files) async* { - for (RepositoryLicensedFile file in files) { + Stream> _signatureStream(List<_RepositoryLicensedFile> files) async* { + for (_RepositoryLicensedFile file in files) { yield file.io.fullName.codeUnits; yield file.io.readBytes(); } @@ -1232,8 +1233,8 @@ class RepositoryDirectory extends RepositoryEntry implements LicenseSource { /// Compute a signature representing a hash of all the licensed files within /// this directory tree. Future get signature async { - List allFiles = _signatureFiles.toList(); - allFiles.sort((RepositoryLicensedFile a, RepositoryLicensedFile b) => + List<_RepositoryLicensedFile> allFiles = _signatureFiles.toList(); + allFiles.sort((_RepositoryLicensedFile a, _RepositoryLicensedFile b) => a.io.fullName.compareTo(b.io.fullName)); crypto.Digest digest = await crypto.md5.bind(_signatureStream(allFiles)).single; return digest.bytes.map((int e) => e.toRadixString(16).padLeft(2, '0')).join(); @@ -1243,15 +1244,15 @@ class RepositoryDirectory extends RepositoryEntry implements LicenseSource { bool get includeInSignature => true; } -class RepositoryGenericThirdPartyDirectory extends RepositoryDirectory { - RepositoryGenericThirdPartyDirectory(RepositoryDirectory parent, fs.Directory io) : super(parent, io); +class _RepositoryGenericThirdPartyDirectory extends _RepositoryDirectory { + _RepositoryGenericThirdPartyDirectory(_RepositoryDirectory parent, fs.Directory io) : super(parent, io); @override bool get subdirectoriesAreLicenseRoots => true; } -class RepositoryReachOutFile extends RepositoryLicensedFile { - RepositoryReachOutFile(RepositoryDirectory parent, fs.File io, this.offset) : super(parent, io); +class _RepositoryReachOutFile extends _RepositoryLicensedFile { + _RepositoryReachOutFile(_RepositoryDirectory parent, fs.File io, this.offset) : super(parent, io); @override fs.File get io => super.io; @@ -1260,7 +1261,7 @@ class RepositoryReachOutFile extends RepositoryLicensedFile { @override List get licenses { - RepositoryDirectory directory = parent; + _RepositoryDirectory directory = parent; int index = offset; while (index > 1) { if (directory == null) @@ -1272,22 +1273,22 @@ class RepositoryReachOutFile extends RepositoryLicensedFile { } } -class RepositoryReachOutDirectory extends RepositoryDirectory { - RepositoryReachOutDirectory(RepositoryDirectory parent, fs.Directory io, this.reachOutFilenames, this.offset) : super(parent, io); +class _RepositoryReachOutDirectory extends _RepositoryDirectory { + _RepositoryReachOutDirectory(_RepositoryDirectory parent, fs.Directory io, this.reachOutFilenames, this.offset) : super(parent, io); final Set reachOutFilenames; final int offset; @override - RepositoryFile createFile(fs.IoNode entry) { + _RepositoryFile createFile(fs.IoNode entry) { if (reachOutFilenames.contains(entry.name)) - return new RepositoryReachOutFile(this, entry, offset); + return new _RepositoryReachOutFile(this, entry, offset); return super.createFile(entry); } } -class RepositoryExcludeSubpathDirectory extends RepositoryDirectory { - RepositoryExcludeSubpathDirectory(RepositoryDirectory parent, fs.Directory io, this.paths, [ this.index = 0 ]) : super(parent, io); +class _RepositoryExcludeSubpathDirectory extends _RepositoryDirectory { + _RepositoryExcludeSubpathDirectory(_RepositoryDirectory parent, fs.Directory io, this.paths, [ this.index = 0 ]) : super(parent, io); final List paths; final int index; @@ -1300,9 +1301,9 @@ class RepositoryExcludeSubpathDirectory extends RepositoryDirectory { } @override - RepositoryDirectory createSubdirectory(fs.Directory entry) { + _RepositoryDirectory createSubdirectory(fs.Directory entry) { if (entry.name == paths[index] && (index < paths.length - 1)) - return new RepositoryExcludeSubpathDirectory(this, entry, paths, index + 1); + return new _RepositoryExcludeSubpathDirectory(this, entry, paths, index + 1); return super.createSubdirectory(entry); } } @@ -1310,276 +1311,8 @@ class RepositoryExcludeSubpathDirectory extends RepositoryDirectory { // WHAT TO CRAWL AND WHAT NOT TO CRAWL -class RepositoryAndroidSdkPlatformsWithJarDirectory extends RepositoryDirectory { - RepositoryAndroidSdkPlatformsWithJarDirectory(RepositoryDirectory parent, fs.Directory io) - : _jarLicense = [new License.fromUrl('http://www.apache.org/licenses/LICENSE-2.0', origin: 'implicit android.jar license')], - super(parent, io); - - final List _jarLicense; - - @override - List nearestLicensesFor(String name) => _jarLicense; - - @override - License nearestLicenseOfType(LicenseType type) { - if (_jarLicense.single.type == type) - return _jarLicense.single; - return null; - } - - @override - License nearestLicenseWithName(String name, { String authors }) { - return null; - } - - @override - bool shouldRecurse(fs.IoNode entry) { - // we only use android.jar from the SDK, everything else we ignore - return entry.name == 'android.jar'; - } -} - -class RepositoryAndroidSdkPlatformsDirectory extends RepositoryDirectory { - RepositoryAndroidSdkPlatformsDirectory(RepositoryDirectory parent, fs.Directory io) : super(parent, io); - - @override - RepositoryDirectory createSubdirectory(fs.Directory entry) { - if (entry.name == 'android-22') // chinmay says we only use 22 for the SDK - return new RepositoryAndroidSdkPlatformsWithJarDirectory(this, entry); - throw 'unknown Android SDK version: ${entry.name}'; - } -} - -class RepositoryAndroidSdkDirectory extends RepositoryDirectory { - RepositoryAndroidSdkDirectory(RepositoryDirectory parent, fs.Directory io) : super(parent, io); - - @override - bool shouldRecurse(fs.IoNode entry) { - // We don't link with any of the Android SDK tools, Google-specific - // packages, system images, samples, etc, when building the engine. We do - // use some (especially those in build-tools/), but it is our understanding - // that nothing from those files actually ends up in our final build output, - // and therefore we don't worry about their licenses. - return entry.name != 'add-ons' - && entry.name != 'build-tools' - && entry.name != 'extras' - && entry.name != 'platform-tools' - && entry.name != 'samples' - && entry.name != 'system-images' - && entry.name != 'tools' - && super.shouldRecurse(entry); - } - - @override - RepositoryDirectory createSubdirectory(fs.Directory entry) { - if (entry.name == 'platforms') - return new RepositoryAndroidSdkPlatformsDirectory(this, entry); - return super.createSubdirectory(entry); - } -} - -class RepositoryAndroidNdkPlatformsDirectory extends RepositoryDirectory { - RepositoryAndroidNdkPlatformsDirectory(RepositoryDirectory parent, fs.Directory io) : super(parent, io); - - @override - bool shouldRecurse(fs.IoNode entry) { - if (entry.name == 'android-9' || - entry.name == 'android-12' || - entry.name == 'android-13' || - entry.name == 'android-14' || - entry.name == 'android-15' || - entry.name == 'android-17' || - entry.name == 'android-18' || - entry.name == 'android-19' || - entry.name == 'android-21' || - entry.name == 'android-23' || - entry.name == 'android-24') - return false; - if (entry.name == 'android-16' || // chinmay says we use this for armv7 - entry.name == 'android-22') // chinmay says we use this for everything else - return true; - throw 'unknown Android NDK version: ${entry.name}'; - } -} - -class RepositoryAndroidNdkSourcesAndroidSupportDirectory extends RepositoryDirectory { - RepositoryAndroidNdkSourcesAndroidSupportDirectory(RepositoryDirectory parent, fs.Directory io) : super(parent, io); - - @override - RepositoryFile createFile(fs.IoNode entry) { - if (entry.name == 'NOTICE' && entry is fs.TextFile) { - return new RepositoryGeneralSingleLicenseFile.fromLicense( - this, - entry, - new License.unique( - entry.readString(), - LicenseType.unknown, - origin: entry.fullName, - yesWeKnowWhatItLooksLikeButItIsNot: true, // lawyer said to include this file verbatim - ) - ); - } - return super.createFile(entry); - } - -} - -class RepositoryAndroidNdkSourcesAndroidDirectory extends RepositoryDirectory { - RepositoryAndroidNdkSourcesAndroidDirectory(RepositoryDirectory parent, fs.Directory io) : super(parent, io); - - @override - bool shouldRecurse(fs.IoNode entry) { - return entry.name != 'libthread_db' // README in that directory says we aren't using this - && entry.name != 'crazy_linker' // build-time only (not that we use it anyway) - && super.shouldRecurse(entry); - } - - @override - RepositoryDirectory createSubdirectory(fs.Directory entry) { - if (entry.name == 'support') - return new RepositoryAndroidNdkSourcesAndroidSupportDirectory(this, entry); - return super.createSubdirectory(entry); - } -} - -class RepositoryAndroidNdkSourcesCxxStlSubsubdirectory extends RepositoryDirectory { - RepositoryAndroidNdkSourcesCxxStlSubsubdirectory(RepositoryDirectory parent, fs.Directory io) : super(parent, io); - - @override - RepositoryFile createFile(fs.IoNode entry) { - if (entry.name == 'LICENSE.TXT') - return new RepositoryCxxStlDualLicenseFile(this, entry); - return super.createFile(entry); - } -} - -class RepositoryAndroidNdkSourcesCxxStlSubdirectory extends RepositoryDirectory { - RepositoryAndroidNdkSourcesCxxStlSubdirectory(RepositoryDirectory parent, fs.Directory io, this.subdirectoryName) : super(parent, io); - - final String subdirectoryName; - - @override - RepositoryDirectory createSubdirectory(fs.Directory entry) { - if (entry.name == subdirectoryName) - return new RepositoryAndroidNdkSourcesCxxStlSubsubdirectory(this, entry); - return super.createSubdirectory(entry); - } -} - -class RepositoryAndroidNdkSourcesCxxStlDirectory extends RepositoryDirectory { - RepositoryAndroidNdkSourcesCxxStlDirectory(RepositoryDirectory parent, fs.Directory io) : super(parent, io); - - @override - bool get subdirectoriesAreLicenseRoots => true; - - @override - bool shouldRecurse(fs.IoNode entry) { - return entry.name != 'gabi++' // abarth says jamesr says we don't use these two - && entry.name != 'stlport' - && super.shouldRecurse(entry); - } - - @override - RepositoryDirectory createSubdirectory(fs.Directory entry) { - if (entry.name == 'llvm-libc++abi') - return new RepositoryAndroidNdkSourcesCxxStlSubdirectory(this, entry, 'libcxxabi'); - if (entry.name == 'llvm-libc++') - return new RepositoryAndroidNdkSourcesCxxStlSubdirectory(this, entry, 'libcxx'); - return super.createSubdirectory(entry); - } -} - -class RepositoryAndroidNdkSourcesThirdPartyDirectory extends RepositoryGenericThirdPartyDirectory { - RepositoryAndroidNdkSourcesThirdPartyDirectory(RepositoryDirectory parent, fs.Directory io) : super(parent, io); - - @override - bool shouldRecurse(fs.IoNode entry) { - if (entry.name == 'googletest') - return false; // testing infrastructure, not shipped with flutter engine - if (entry.name == 'shaderc') - return false; // abarth says we don't use any shader stuff - if (entry.name == 'vulkan') - return false; // abath says we do use vulkan so might use this - throw 'unexpected Android NDK third-party package: ${entry.name}'; - } -} - -class RepositoryAndroidNdkSourcesDirectory extends RepositoryDirectory { - RepositoryAndroidNdkSourcesDirectory(RepositoryDirectory parent, fs.Directory io) : super(parent, io); - - @override - RepositoryDirectory createSubdirectory(fs.Directory entry) { - if (entry.name == 'android') - return new RepositoryAndroidNdkSourcesAndroidDirectory(this, entry); - if (entry.name == 'cxx-stl') - return new RepositoryAndroidNdkSourcesCxxStlDirectory(this, entry); - if (entry.name == 'third_party') - return new RepositoryAndroidNdkSourcesThirdPartyDirectory(this, entry); - return super.createSubdirectory(entry); - } -} - - -class RepositoryAndroidNdkDirectory extends RepositoryDirectory { - RepositoryAndroidNdkDirectory(RepositoryDirectory parent, fs.Directory io) : super(parent, io); - - @override - bool shouldRecurse(fs.IoNode entry) { - // we don't link with or use any of the Android NDK samples - return entry.name != 'build' - && entry.name != 'docs' - && entry.name != 'prebuilt' // only used by engine debug builds, which we don't ship - && entry.name != 'samples' - && entry.name != 'tests' - && entry.name != 'toolchains' // only used at build time, doesn't seem to contain anything that gets shipped with the build output - && super.shouldRecurse(entry); - } - - @override - RepositoryDirectory createSubdirectory(fs.Directory entry) { - if (entry.name == 'platforms') - return new RepositoryAndroidNdkPlatformsDirectory(this, entry); - if (entry.name == 'sources') - return new RepositoryAndroidNdkSourcesDirectory(this, entry); - return super.createSubdirectory(entry); - } -} - -class RepositoryAndroidToolsDirectory extends RepositoryDirectory { - RepositoryAndroidToolsDirectory(RepositoryDirectory parent, fs.Directory io) : super(parent, io); - - @override - bool get subdirectoriesAreLicenseRoots => true; - - @override - bool shouldRecurse(fs.IoNode entry) { - return entry.name != 'VERSION_LINUX_SDK' - && entry.name != 'VERSION_LINUX_NDK' - && entry.name != 'VERSION_MACOSX_SDK' - && entry.name != 'VERSION_MACOSX_NDK' - && super.shouldRecurse(entry); - } - - @override - RepositoryDirectory createSubdirectory(fs.Directory entry) { - if (entry.name == 'sdk') - return new RepositoryAndroidSdkDirectory(this, entry); - if (entry.name == 'ndk') - return new RepositoryAndroidNdkDirectory(this, entry); - return super.createSubdirectory(entry); - } - - // This directory's contents are different on each host platform. We assume - // that the components of the Android SDK that are linked into our releases - // are consistent among all host platforms. Given that the host SDK will not - // affect the signature, be sure to force a regeneration of the third_party - // golden licenses if the SDK is ever updated. - @override - bool get includeInSignature => false; -} - -class RepositoryAndroidPlatformDirectory extends RepositoryDirectory { - RepositoryAndroidPlatformDirectory(RepositoryDirectory parent, fs.Directory io) : super(parent, io); +class _RepositoryAndroidPlatformDirectory extends _RepositoryDirectory { + _RepositoryAndroidPlatformDirectory(_RepositoryDirectory parent, fs.Directory io) : super(parent, io); @override bool shouldRecurse(fs.IoNode entry) { @@ -1590,8 +1323,8 @@ class RepositoryAndroidPlatformDirectory extends RepositoryDirectory { } } -class RepositoryExpatDirectory extends RepositoryDirectory { - RepositoryExpatDirectory(RepositoryDirectory parent, fs.Directory io) : super(parent, io); +class _RepositoryExpatDirectory extends _RepositoryDirectory { + _RepositoryExpatDirectory(_RepositoryDirectory parent, fs.Directory io) : super(parent, io); @override bool get isLicenseRootException => true; @@ -1600,13 +1333,13 @@ class RepositoryExpatDirectory extends RepositoryDirectory { bool get subdirectoriesAreLicenseRoots => true; } -class RepositoryFreetypeDocsDirectory extends RepositoryDirectory { - RepositoryFreetypeDocsDirectory(RepositoryDirectory parent, fs.Directory io) : super(parent, io); +class _RepositoryFreetypeDocsDirectory extends _RepositoryDirectory { + _RepositoryFreetypeDocsDirectory(_RepositoryDirectory parent, fs.Directory io) : super(parent, io); @override - RepositoryFile createFile(fs.IoNode entry) { + _RepositoryFile createFile(fs.IoNode entry) { if (entry.name == 'LICENSE.TXT') - return new RepositoryFreetypeLicenseFile(this, entry); + return new _RepositoryFreetypeLicenseFile(this, entry); return super.createFile(entry); } @@ -1614,7 +1347,7 @@ class RepositoryFreetypeDocsDirectory extends RepositoryDirectory { int get fileCount => 0; @override - Set getLicenses(Progress progress) { + Set getLicenses(_Progress progress) { // We don't ship anything in this directory so don't bother looking for licenses there. // However, there are licenses in this directory referenced from elsewhere, so we do // want to crawl it and expose them. @@ -1622,8 +1355,8 @@ class RepositoryFreetypeDocsDirectory extends RepositoryDirectory { } } -class RepositoryFreetypeSrcGZipDirectory extends RepositoryDirectory { - RepositoryFreetypeSrcGZipDirectory(RepositoryDirectory parent, fs.Directory io) : super(parent, io); +class _RepositoryFreetypeSrcGZipDirectory extends _RepositoryDirectory { + _RepositoryFreetypeSrcGZipDirectory(_RepositoryDirectory parent, fs.Directory io) : super(parent, io); // advice was to make this directory's inffixed.h file (which has no license) // use the license in zlib.h. @@ -1648,13 +1381,13 @@ class RepositoryFreetypeSrcGZipDirectory extends RepositoryDirectory { } } -class RepositoryFreetypeSrcDirectory extends RepositoryDirectory { - RepositoryFreetypeSrcDirectory(RepositoryDirectory parent, fs.Directory io) : super(parent, io); +class _RepositoryFreetypeSrcDirectory extends _RepositoryDirectory { + _RepositoryFreetypeSrcDirectory(_RepositoryDirectory parent, fs.Directory io) : super(parent, io); @override - RepositoryDirectory createSubdirectory(fs.Directory entry) { + _RepositoryDirectory createSubdirectory(fs.Directory entry) { if (entry.name == 'gzip') - return new RepositoryFreetypeSrcGZipDirectory(this, entry); + return new _RepositoryFreetypeSrcGZipDirectory(this, entry); return super.createSubdirectory(entry); } @@ -1665,8 +1398,8 @@ class RepositoryFreetypeSrcDirectory extends RepositoryDirectory { } } -class RepositoryFreetypeDirectory extends RepositoryDirectory { - RepositoryFreetypeDirectory(RepositoryDirectory parent, fs.Directory io) : super(parent, io); +class _RepositoryFreetypeDirectory extends _RepositoryDirectory { + _RepositoryFreetypeDirectory(_RepositoryDirectory parent, fs.Directory io) : super(parent, io); @override List nearestLicensesFor(String name) { @@ -1697,17 +1430,17 @@ class RepositoryFreetypeDirectory extends RepositoryDirectory { } @override - RepositoryDirectory createSubdirectory(fs.Directory entry) { + _RepositoryDirectory createSubdirectory(fs.Directory entry) { if (entry.name == 'src') - return new RepositoryFreetypeSrcDirectory(this, entry); + return new _RepositoryFreetypeSrcDirectory(this, entry); if (entry.name == 'docs') - return new RepositoryFreetypeDocsDirectory(this, entry); + return new _RepositoryFreetypeDocsDirectory(this, entry); return super.createSubdirectory(entry); } } -class RepositoryIcuDirectory extends RepositoryDirectory { - RepositoryIcuDirectory(RepositoryDirectory parent, fs.Directory io) : super(parent, io); +class _RepositoryIcuDirectory extends _RepositoryDirectory { + _RepositoryIcuDirectory(_RepositoryDirectory parent, fs.Directory io) : super(parent, io); @override bool shouldRecurse(fs.IoNode entry) { @@ -1716,15 +1449,15 @@ class RepositoryIcuDirectory extends RepositoryDirectory { } @override - RepositoryFile createFile(fs.IoNode entry) { + _RepositoryFile createFile(fs.IoNode entry) { if (entry.name == 'LICENSE') - return new RepositoryIcuLicenseFile(this, entry); + return new _RepositoryIcuLicenseFile(this, entry); return super.createFile(entry); } } -class RepositoryHarfbuzzDirectory extends RepositoryDirectory { - RepositoryHarfbuzzDirectory(RepositoryDirectory parent, fs.Directory io) : super(parent, io); +class _RepositoryHarfbuzzDirectory extends _RepositoryDirectory { + _RepositoryHarfbuzzDirectory(_RepositoryDirectory parent, fs.Directory io) : super(parent, io); @override bool shouldRecurse(fs.IoNode entry) { @@ -1733,19 +1466,19 @@ class RepositoryHarfbuzzDirectory extends RepositoryDirectory { } } -class RepositoryJSR305Directory extends RepositoryDirectory { - RepositoryJSR305Directory(RepositoryDirectory parent, fs.Directory io) : super(parent, io); +class _RepositoryJSR305Directory extends _RepositoryDirectory { + _RepositoryJSR305Directory(_RepositoryDirectory parent, fs.Directory io) : super(parent, io); @override - RepositoryDirectory createSubdirectory(fs.Directory entry) { + _RepositoryDirectory createSubdirectory(fs.Directory entry) { if (entry.name == 'src') - return new RepositoryJSR305SrcDirectory(this, entry); + return new _RepositoryJSR305SrcDirectory(this, entry); return super.createSubdirectory(entry); } } -class RepositoryJSR305SrcDirectory extends RepositoryDirectory { - RepositoryJSR305SrcDirectory(RepositoryDirectory parent, fs.Directory io) : super(parent, io); +class _RepositoryJSR305SrcDirectory extends _RepositoryDirectory { + _RepositoryJSR305SrcDirectory(_RepositoryDirectory parent, fs.Directory io) : super(parent, io); @override bool shouldRecurse(fs.IoNode entry) { @@ -1755,26 +1488,26 @@ class RepositoryJSR305SrcDirectory extends RepositoryDirectory { } } -class RepositoryLibJpegDirectory extends RepositoryDirectory { - RepositoryLibJpegDirectory(RepositoryDirectory parent, fs.Directory io) : super(parent, io); +class _RepositoryLibJpegDirectory extends _RepositoryDirectory { + _RepositoryLibJpegDirectory(_RepositoryDirectory parent, fs.Directory io) : super(parent, io); @override - RepositoryFile createFile(fs.IoNode entry) { + _RepositoryFile createFile(fs.IoNode entry) { if (entry.name == 'README') - return new RepositoryReadmeIjgFile(this, entry); + return new _RepositoryReadmeIjgFile(this, entry); if (entry.name == 'LICENSE') - return new RepositoryLicenseFileWithLeader(this, entry, new RegExp(r'^\(Copied from the README\.\)\n+-+\n+')); + return new _RepositoryLicenseFileWithLeader(this, entry, new RegExp(r'^\(Copied from the README\.\)\n+-+\n+')); return super.createFile(entry); } } -class RepositoryLibJpegTurboDirectory extends RepositoryDirectory { - RepositoryLibJpegTurboDirectory(RepositoryDirectory parent, fs.Directory io) : super(parent, io); +class _RepositoryLibJpegTurboDirectory extends _RepositoryDirectory { + _RepositoryLibJpegTurboDirectory(_RepositoryDirectory parent, fs.Directory io) : super(parent, io); @override - RepositoryFile createFile(fs.IoNode entry) { + _RepositoryFile createFile(fs.IoNode entry) { if (entry.name == 'LICENSE.md') - return new RepositoryLibJpegTurboLicense(this, entry); + return new _RepositoryLibJpegTurboLicense(this, entry); return super.createFile(entry); } @@ -1787,19 +1520,19 @@ class RepositoryLibJpegTurboDirectory extends RepositoryDirectory { } } -class RepositoryLibPngDirectory extends RepositoryDirectory { - RepositoryLibPngDirectory(RepositoryDirectory parent, fs.Directory io) : super(parent, io); +class _RepositoryLibPngDirectory extends _RepositoryDirectory { + _RepositoryLibPngDirectory(_RepositoryDirectory parent, fs.Directory io) : super(parent, io); @override - RepositoryFile createFile(fs.IoNode entry) { + _RepositoryFile createFile(fs.IoNode entry) { if (entry.name == 'LICENSE' || entry.name == 'png.h') - return new RepositoryLibPngLicenseFile(this, entry); + return new _RepositoryLibPngLicenseFile(this, entry); return super.createFile(entry); } } -class RepositoryLibWebpDirectory extends RepositoryDirectory { - RepositoryLibWebpDirectory(RepositoryDirectory parent, fs.Directory io) : super(parent, io); +class _RepositoryLibWebpDirectory extends _RepositoryDirectory { + _RepositoryLibWebpDirectory(_RepositoryDirectory parent, fs.Directory io) : super(parent, io); @override bool shouldRecurse(fs.IoNode entry) { @@ -1810,19 +1543,19 @@ class RepositoryLibWebpDirectory extends RepositoryDirectory { } } -class RepositoryPkgDirectory extends RepositoryDirectory { - RepositoryPkgDirectory(RepositoryDirectory parent, fs.Directory io) : super(parent, io); +class _RepositoryPkgDirectory extends _RepositoryDirectory { + _RepositoryPkgDirectory(_RepositoryDirectory parent, fs.Directory io) : super(parent, io); @override - RepositoryDirectory createSubdirectory(fs.Directory entry) { + _RepositoryDirectory createSubdirectory(fs.Directory entry) { if (entry.name == 'when') - return new RepositoryPkgWhenDirectory(this, entry); + return new _RepositoryPkgWhenDirectory(this, entry); return super.createSubdirectory(entry); } } -class RepositoryPkgWhenDirectory extends RepositoryDirectory { - RepositoryPkgWhenDirectory(RepositoryDirectory parent, fs.Directory io) : super(parent, io); +class _RepositoryPkgWhenDirectory extends _RepositoryDirectory { + _RepositoryPkgWhenDirectory(_RepositoryDirectory parent, fs.Directory io) : super(parent, io); @override bool shouldRecurse(fs.IoNode entry) { @@ -1831,26 +1564,26 @@ class RepositoryPkgWhenDirectory extends RepositoryDirectory { } } -class RepositorySkiaLibWebPDirectory extends RepositoryDirectory { - RepositorySkiaLibWebPDirectory(RepositoryDirectory parent, fs.Directory io) : super(parent, io); +class _RepositorySkiaLibWebPDirectory extends _RepositoryDirectory { + _RepositorySkiaLibWebPDirectory(_RepositoryDirectory parent, fs.Directory io) : super(parent, io); @override - RepositoryDirectory createSubdirectory(fs.Directory entry) { + _RepositoryDirectory createSubdirectory(fs.Directory entry) { if (entry.name == 'webp') - return new RepositoryReachOutDirectory(this, entry, new Set.from(const ['config.h']), 3); + return new _RepositoryReachOutDirectory(this, entry, new Set.from(const ['config.h']), 3); return super.createSubdirectory(entry); } } -class RepositorySkiaLibSdlDirectory extends RepositoryDirectory { - RepositorySkiaLibSdlDirectory(RepositoryDirectory parent, fs.Directory io) : super(parent, io); +class _RepositorySkiaLibSdlDirectory extends _RepositoryDirectory { + _RepositorySkiaLibSdlDirectory(_RepositoryDirectory parent, fs.Directory io) : super(parent, io); @override bool get isLicenseRootException => true; } -class RepositorySkiaThirdPartyDirectory extends RepositoryGenericThirdPartyDirectory { - RepositorySkiaThirdPartyDirectory(RepositoryDirectory parent, fs.Directory io) : super(parent, io); +class _RepositorySkiaThirdPartyDirectory extends _RepositoryGenericThirdPartyDirectory { + _RepositorySkiaThirdPartyDirectory(_RepositoryDirectory parent, fs.Directory io) : super(parent, io); @override bool shouldRecurse(fs.IoNode entry) { @@ -1866,21 +1599,21 @@ class RepositorySkiaThirdPartyDirectory extends RepositoryGenericThirdPartyDirec } @override - RepositoryDirectory createSubdirectory(fs.Directory entry) { + _RepositoryDirectory createSubdirectory(fs.Directory entry) { if (entry.name == 'ktx') - return new RepositoryReachOutDirectory(this, entry, new Set.from(const ['ktx.h', 'ktx.cpp']), 2); + return new _RepositoryReachOutDirectory(this, entry, new Set.from(const ['ktx.h', 'ktx.cpp']), 2); if (entry.name == 'libmicrohttpd') - return new RepositoryReachOutDirectory(this, entry, new Set.from(const ['MHD_config.h']), 2); + return new _RepositoryReachOutDirectory(this, entry, new Set.from(const ['MHD_config.h']), 2); if (entry.name == 'libwebp') - return new RepositorySkiaLibWebPDirectory(this, entry); + return new _RepositorySkiaLibWebPDirectory(this, entry); if (entry.name == 'libsdl') - return new RepositorySkiaLibSdlDirectory(this, entry); + return new _RepositorySkiaLibSdlDirectory(this, entry); return super.createSubdirectory(entry); } } -class RepositorySkiaDirectory extends RepositoryDirectory { - RepositorySkiaDirectory(RepositoryDirectory parent, fs.Directory io) : super(parent, io); +class _RepositorySkiaDirectory extends _RepositoryDirectory { + _RepositorySkiaDirectory(_RepositoryDirectory parent, fs.Directory io) : super(parent, io); @override bool shouldRecurse(fs.IoNode entry) { @@ -1891,15 +1624,15 @@ class RepositorySkiaDirectory extends RepositoryDirectory { } @override - RepositoryDirectory createSubdirectory(fs.Directory entry) { + _RepositoryDirectory createSubdirectory(fs.Directory entry) { if (entry.name == 'third_party') - return new RepositorySkiaThirdPartyDirectory(this, entry); + return new _RepositorySkiaThirdPartyDirectory(this, entry); return super.createSubdirectory(entry); } } -class RepositoryVulkanDirectory extends RepositoryDirectory { - RepositoryVulkanDirectory(RepositoryDirectory parent, fs.Directory io) : super(parent, io); +class _RepositoryVulkanDirectory extends _RepositoryDirectory { + _RepositoryVulkanDirectory(_RepositoryDirectory parent, fs.Directory io) : super(parent, io); @override bool shouldRecurse(fs.IoNode entry) { @@ -1909,15 +1642,15 @@ class RepositoryVulkanDirectory extends RepositoryDirectory { } @override - RepositoryDirectory createSubdirectory(fs.Directory entry) { + _RepositoryDirectory createSubdirectory(fs.Directory entry) { if (entry.name == 'src') - return new RepositoryExcludeSubpathDirectory(this, entry, const ['spec']); + return new _RepositoryExcludeSubpathDirectory(this, entry, const ['spec']); return super.createSubdirectory(entry); } } -class RepositoryRootThirdPartyDirectory extends RepositoryGenericThirdPartyDirectory { - RepositoryRootThirdPartyDirectory(RepositoryDirectory parent, fs.Directory io) : super(parent, io); +class _RepositoryRootThirdPartyDirectory extends _RepositoryGenericThirdPartyDirectory { + _RepositoryRootThirdPartyDirectory(_RepositoryDirectory parent, fs.Directory io) : super(parent, io); @override bool shouldRecurse(fs.IoNode entry) { @@ -1945,45 +1678,45 @@ class RepositoryRootThirdPartyDirectory extends RepositoryGenericThirdPartyDirec } @override - RepositoryDirectory createSubdirectory(fs.Directory entry) { + _RepositoryDirectory createSubdirectory(fs.Directory entry) { if (entry.name == 'android_platform') - return new RepositoryAndroidPlatformDirectory(this, entry); + return new _RepositoryAndroidPlatformDirectory(this, entry); if (entry.name == 'boringssl') - return new RepositoryBoringSSLDirectory(this, entry); + return new _RepositoryBoringSSLDirectory(this, entry); if (entry.name == 'catapult') - return new RepositoryCatapultDirectory(this, entry); + return new _RepositoryCatapultDirectory(this, entry); if (entry.name == 'dart') - return new RepositoryDartDirectory(this, entry); + return new _RepositoryDartDirectory(this, entry); if (entry.name == 'expat') - return new RepositoryExpatDirectory(this, entry); + return new _RepositoryExpatDirectory(this, entry); if (entry.name == 'freetype-android') throw '//third_party/freetype-android is no longer part of this client: remove it'; if (entry.name == 'freetype2') - return new RepositoryFreetypeDirectory(this, entry); + return new _RepositoryFreetypeDirectory(this, entry); if (entry.name == 'harfbuzz') - return new RepositoryHarfbuzzDirectory(this, entry); + return new _RepositoryHarfbuzzDirectory(this, entry); if (entry.name == 'icu') - return new RepositoryIcuDirectory(this, entry); + return new _RepositoryIcuDirectory(this, entry); if (entry.name == 'jsr-305') - return new RepositoryJSR305Directory(this, entry); + return new _RepositoryJSR305Directory(this, entry); if (entry.name == 'libjpeg') - return new RepositoryLibJpegDirectory(this, entry); + return new _RepositoryLibJpegDirectory(this, entry); if (entry.name == 'libjpeg_turbo' || entry.name == 'libjpeg-turbo') - return new RepositoryLibJpegTurboDirectory(this, entry); + return new _RepositoryLibJpegTurboDirectory(this, entry); if (entry.name == 'libpng') - return new RepositoryLibPngDirectory(this, entry); + return new _RepositoryLibPngDirectory(this, entry); if (entry.name == 'libwebp') - return new RepositoryLibWebpDirectory(this, entry); + return new _RepositoryLibWebpDirectory(this, entry); if (entry.name == 'pkg') - return new RepositoryPkgDirectory(this, entry); + return new _RepositoryPkgDirectory(this, entry); if (entry.name == 'vulkan') - return new RepositoryVulkanDirectory(this, entry); + return new _RepositoryVulkanDirectory(this, entry); return super.createSubdirectory(entry); } } -class RepositoryBoringSSLThirdPartyDirectory extends RepositoryDirectory { - RepositoryBoringSSLThirdPartyDirectory(RepositoryDirectory parent, fs.Directory io) : super(parent, io); +class _RepositoryBoringSSLThirdPartyDirectory extends _RepositoryDirectory { + _RepositoryBoringSSLThirdPartyDirectory(_RepositoryDirectory parent, fs.Directory io) : super(parent, io); @override bool shouldRecurse(fs.IoNode entry) { @@ -1992,8 +1725,8 @@ class RepositoryBoringSSLThirdPartyDirectory extends RepositoryDirectory { } } -class RepositoryBoringSSLSourceDirectory extends RepositoryDirectory { - RepositoryBoringSSLSourceDirectory(RepositoryDirectory parent, fs.Directory io) : super(parent, io); +class _RepositoryBoringSSLSourceDirectory extends _RepositoryDirectory { + _RepositoryBoringSSLSourceDirectory(_RepositoryDirectory parent, fs.Directory io) : super(parent, io); @override String get libraryName => 'boringssl'; @@ -2008,16 +1741,16 @@ class RepositoryBoringSSLSourceDirectory extends RepositoryDirectory { } @override - RepositoryFile createFile(fs.IoNode entry) { + _RepositoryFile createFile(fs.IoNode entry) { if (entry.name == 'LICENSE') - return new RepositoryOpenSSLLicenseFile(this, entry); + return new _RepositoryOpenSSLLicenseFile(this, entry); return super.createFile(entry); } @override - RepositoryDirectory createSubdirectory(fs.Directory entry) { + _RepositoryDirectory createSubdirectory(fs.Directory entry) { if (entry.name == 'third_party') - return new RepositoryBoringSSLThirdPartyDirectory(this, entry); + return new _RepositoryBoringSSLThirdPartyDirectory(this, entry); return super.createSubdirectory(entry); } } @@ -2029,8 +1762,8 @@ class RepositoryBoringSSLSourceDirectory extends RepositoryDirectory { /// It also has a trailer that mentions licenses that are used during build /// time of BoringSSL - those can be ignored as well since they don't apply /// to code that is distributed. -class RepositoryOpenSSLLicenseFile extends RepositorySingleLicenseFile { - RepositoryOpenSSLLicenseFile(RepositoryDirectory parent, fs.TextFile io) +class _RepositoryOpenSSLLicenseFile extends _RepositorySingleLicenseFile { + _RepositoryOpenSSLLicenseFile(_RepositoryDirectory parent, fs.TextFile io) : super(parent, io, new License.fromBodyAndType( LineSplitter.split(io.readString()) @@ -2056,72 +1789,72 @@ class RepositoryOpenSSLLicenseFile extends RepositorySingleLicenseFile { } } -class RepositoryBoringSSLDirectory extends RepositoryDirectory { - RepositoryBoringSSLDirectory(RepositoryDirectory parent, fs.Directory io) : super(parent, io); +class _RepositoryBoringSSLDirectory extends _RepositoryDirectory { + _RepositoryBoringSSLDirectory(_RepositoryDirectory parent, fs.Directory io) : super(parent, io); @override - RepositoryFile createFile(fs.IoNode entry) { + _RepositoryFile createFile(fs.IoNode entry) { if (entry.name == 'README') - return new RepositoryBlankLicenseFile(this, entry, 'This repository contains the files generated by boringssl for its build.'); + return new _RepositoryBlankLicenseFile(this, entry, 'This repository contains the files generated by boringssl for its build.'); return super.createFile(entry); } @override - RepositoryDirectory createSubdirectory(fs.Directory entry) { + _RepositoryDirectory createSubdirectory(fs.Directory entry) { if (entry.name == 'src') - return new RepositoryBoringSSLSourceDirectory(this, entry); + return new _RepositoryBoringSSLSourceDirectory(this, entry); return super.createSubdirectory(entry); } } -class RepositoryCatapultThirdPartyApiClientDirectory extends RepositoryDirectory { - RepositoryCatapultThirdPartyApiClientDirectory(RepositoryDirectory parent, fs.Directory io) : super(parent, io); +class _RepositoryCatapultThirdPartyApiClientDirectory extends _RepositoryDirectory { + _RepositoryCatapultThirdPartyApiClientDirectory(_RepositoryDirectory parent, fs.Directory io) : super(parent, io); @override - RepositoryFile createFile(fs.IoNode entry) { + _RepositoryFile createFile(fs.IoNode entry) { if (entry.name == 'LICENSE') - return new RepositoryCatapultApiClientLicenseFile(this, entry); + return new _RepositoryCatapultApiClientLicenseFile(this, entry); return super.createFile(entry); } } -class RepositoryCatapultThirdPartyCoverageDirectory extends RepositoryDirectory { - RepositoryCatapultThirdPartyCoverageDirectory(RepositoryDirectory parent, fs.Directory io) : super(parent, io); +class _RepositoryCatapultThirdPartyCoverageDirectory extends _RepositoryDirectory { + _RepositoryCatapultThirdPartyCoverageDirectory(_RepositoryDirectory parent, fs.Directory io) : super(parent, io); @override - RepositoryFile createFile(fs.IoNode entry) { + _RepositoryFile createFile(fs.IoNode entry) { if (entry.name == 'NOTICE.txt') - return new RepositoryCatapultCoverageLicenseFile(this, entry); + return new _RepositoryCatapultCoverageLicenseFile(this, entry); return super.createFile(entry); } } -class RepositoryCatapultThirdPartyDirectory extends RepositoryDirectory { - RepositoryCatapultThirdPartyDirectory(RepositoryDirectory parent, fs.Directory io) : super(parent, io); +class _RepositoryCatapultThirdPartyDirectory extends _RepositoryDirectory { + _RepositoryCatapultThirdPartyDirectory(_RepositoryDirectory parent, fs.Directory io) : super(parent, io); @override - RepositoryDirectory createSubdirectory(fs.Directory entry) { + _RepositoryDirectory createSubdirectory(fs.Directory entry) { if (entry.name == 'apiclient') - return new RepositoryCatapultThirdPartyApiClientDirectory(this, entry); + return new _RepositoryCatapultThirdPartyApiClientDirectory(this, entry); if (entry.name == 'coverage') - return new RepositoryCatapultThirdPartyCoverageDirectory(this, entry); + return new _RepositoryCatapultThirdPartyCoverageDirectory(this, entry); return super.createSubdirectory(entry); } } -class RepositoryCatapultDirectory extends RepositoryDirectory { - RepositoryCatapultDirectory(RepositoryDirectory parent, fs.Directory io) : super(parent, io); +class _RepositoryCatapultDirectory extends _RepositoryDirectory { + _RepositoryCatapultDirectory(_RepositoryDirectory parent, fs.Directory io) : super(parent, io); @override - RepositoryDirectory createSubdirectory(fs.Directory entry) { + _RepositoryDirectory createSubdirectory(fs.Directory entry) { if (entry.name == 'third_party') - return new RepositoryCatapultThirdPartyDirectory(this, entry); + return new _RepositoryCatapultThirdPartyDirectory(this, entry); return super.createSubdirectory(entry); } } -class RepositoryDartRuntimeThirdPartyDirectory extends RepositoryGenericThirdPartyDirectory { - RepositoryDartRuntimeThirdPartyDirectory(RepositoryDirectory parent, fs.Directory io) : super(parent, io); +class _RepositoryDartRuntimeThirdPartyDirectory extends _RepositoryGenericThirdPartyDirectory { + _RepositoryDartRuntimeThirdPartyDirectory(_RepositoryDirectory parent, fs.Directory io) : super(parent, io); @override bool shouldRecurse(fs.IoNode entry) { @@ -2131,8 +1864,8 @@ class RepositoryDartRuntimeThirdPartyDirectory extends RepositoryGenericThirdPar } } -class RepositoryDartThirdPartyDirectory extends RepositoryGenericThirdPartyDirectory { - RepositoryDartThirdPartyDirectory(RepositoryDirectory parent, fs.Directory io) : super(parent, io); +class _RepositoryDartThirdPartyDirectory extends _RepositoryGenericThirdPartyDirectory { + _RepositoryDartThirdPartyDirectory(_RepositoryDirectory parent, fs.Directory io) : super(parent, io); @override bool shouldRecurse(fs.IoNode entry) { @@ -2146,34 +1879,34 @@ class RepositoryDartThirdPartyDirectory extends RepositoryGenericThirdPartyDirec } @override - RepositoryDirectory createSubdirectory(fs.Directory entry) { + _RepositoryDirectory createSubdirectory(fs.Directory entry) { if (entry.name == 'boringssl') - return new RepositoryBoringSSLDirectory(this, entry); + return new _RepositoryBoringSSLDirectory(this, entry); return super.createSubdirectory(entry); } } -class RepositoryDartRuntimeDirectory extends RepositoryDirectory { - RepositoryDartRuntimeDirectory(RepositoryDirectory parent, fs.Directory io) : super(parent, io); +class _RepositoryDartRuntimeDirectory extends _RepositoryDirectory { + _RepositoryDartRuntimeDirectory(_RepositoryDirectory parent, fs.Directory io) : super(parent, io); @override - RepositoryDirectory createSubdirectory(fs.Directory entry) { + _RepositoryDirectory createSubdirectory(fs.Directory entry) { if (entry.name == 'third_party') - return new RepositoryDartRuntimeThirdPartyDirectory(this, entry); + return new _RepositoryDartRuntimeThirdPartyDirectory(this, entry); return super.createSubdirectory(entry); } } -class RepositoryDartDirectory extends RepositoryDirectory { - RepositoryDartDirectory(RepositoryDirectory parent, fs.Directory io) : super(parent, io); +class _RepositoryDartDirectory extends _RepositoryDirectory { + _RepositoryDartDirectory(_RepositoryDirectory parent, fs.Directory io) : super(parent, io); @override bool get isLicenseRoot => true; @override - RepositoryFile createFile(fs.IoNode entry) { + _RepositoryFile createFile(fs.IoNode entry) { if (entry.name == 'LICENSE') - return new RepositoryDartLicenseFile(this, entry); + return new _RepositoryDartLicenseFile(this, entry); return super.createFile(entry); } @@ -2189,17 +1922,17 @@ class RepositoryDartDirectory extends RepositoryDirectory { } @override - RepositoryDirectory createSubdirectory(fs.Directory entry) { + _RepositoryDirectory createSubdirectory(fs.Directory entry) { if (entry.name == 'third_party') - return new RepositoryDartThirdPartyDirectory(this, entry); + return new _RepositoryDartThirdPartyDirectory(this, entry); if (entry.name == 'runtime') - return new RepositoryDartRuntimeDirectory(this, entry); + return new _RepositoryDartRuntimeDirectory(this, entry); return super.createSubdirectory(entry); } } -class RepositoryFlutterDirectory extends RepositoryDirectory { - RepositoryFlutterDirectory(RepositoryDirectory parent, fs.Directory io) : super(parent, io); +class _RepositoryFlutterDirectory extends _RepositoryDirectory { + _RepositoryFlutterDirectory(_RepositoryDirectory parent, fs.Directory io) : super(parent, io); @override String get libraryName => 'engine'; @@ -2220,42 +1953,42 @@ class RepositoryFlutterDirectory extends RepositoryDirectory { } @override - RepositoryDirectory createSubdirectory(fs.Directory entry) { + _RepositoryDirectory createSubdirectory(fs.Directory entry) { if (entry.name == 'sky') - return new RepositoryExcludeSubpathDirectory(this, entry, const ['packages', 'sky_engine', 'LICENSE']); // that's the output of this script! + return new _RepositoryExcludeSubpathDirectory(this, entry, const ['packages', 'sky_engine', 'LICENSE']); // that's the output of this script! if (entry.name == 'third_party') - return new RepositoryFlutterThirdPartyDirectory(this, entry); + return new _RepositoryFlutterThirdPartyDirectory(this, entry); return super.createSubdirectory(entry); } } -class RepositoryFlutterThirdPartyDirectory extends RepositoryDirectory { - RepositoryFlutterThirdPartyDirectory(RepositoryDirectory parent, fs.Directory io) : super(parent, io); +class _RepositoryFlutterThirdPartyDirectory extends _RepositoryDirectory { + _RepositoryFlutterThirdPartyDirectory(_RepositoryDirectory parent, fs.Directory io) : super(parent, io); @override bool get subdirectoriesAreLicenseRoots => true; @override - RepositoryDirectory createSubdirectory(fs.Directory entry) { + _RepositoryDirectory createSubdirectory(fs.Directory entry) { if (entry.name == 'txt') - return new RepositoryFlutterTxtDirectory(this, entry); + return new _RepositoryFlutterTxtDirectory(this, entry); return super.createSubdirectory(entry); } } -class RepositoryFlutterTxtDirectory extends RepositoryDirectory { - RepositoryFlutterTxtDirectory(RepositoryDirectory parent, fs.Directory io) : super(parent, io); +class _RepositoryFlutterTxtDirectory extends _RepositoryDirectory { + _RepositoryFlutterTxtDirectory(_RepositoryDirectory parent, fs.Directory io) : super(parent, io); @override - RepositoryDirectory createSubdirectory(fs.Directory entry) { + _RepositoryDirectory createSubdirectory(fs.Directory entry) { if (entry.name == 'third_party') - return new RepositoryFlutterTxtThirdPartyDirectory(this, entry); + return new _RepositoryFlutterTxtThirdPartyDirectory(this, entry); return super.createSubdirectory(entry); } } -class RepositoryFlutterTxtThirdPartyDirectory extends RepositoryDirectory { - RepositoryFlutterTxtThirdPartyDirectory(RepositoryDirectory parent, fs.Directory io) : super(parent, io); +class _RepositoryFlutterTxtThirdPartyDirectory extends _RepositoryDirectory { + _RepositoryFlutterTxtThirdPartyDirectory(_RepositoryDirectory parent, fs.Directory io) : super(parent, io); @override bool shouldRecurse(fs.IoNode entry) { @@ -2263,8 +1996,8 @@ class RepositoryFlutterTxtThirdPartyDirectory extends RepositoryDirectory { } } -class RepositoryRoot extends RepositoryDirectory { - RepositoryRoot(fs.Directory io) : super(null, io); +class _RepositoryRoot extends _RepositoryDirectory { + _RepositoryRoot(fs.Directory io) : super(null, io); @override String get libraryName { @@ -2290,29 +2023,29 @@ class RepositoryRoot extends RepositoryDirectory { } @override - RepositoryDirectory createSubdirectory(fs.Directory entry) { + _RepositoryDirectory createSubdirectory(fs.Directory entry) { if (entry.name == 'base') throw '//base is no longer part of this client: remove it'; if (entry.name == 'third_party') - return new RepositoryRootThirdPartyDirectory(this, entry); + return new _RepositoryRootThirdPartyDirectory(this, entry); if (entry.name == 'flutter') - return new RepositoryFlutterDirectory(this, entry); + return new _RepositoryFlutterDirectory(this, entry); return super.createSubdirectory(entry); } @override - List get virtualSubdirectories { + List<_RepositoryDirectory> get virtualSubdirectories { // Skia is updated more frequently than other third party libraries and // is therefore represented as a separate top-level component. fs.Directory thirdPartyNode = io.walk.firstWhere((fs.IoNode node) => node.name == 'third_party'); fs.IoNode skiaNode = thirdPartyNode.walk.firstWhere((fs.IoNode node) => node.name == 'skia'); - return [new RepositorySkiaDirectory(this, skiaNode)]; + return <_RepositoryDirectory>[new _RepositorySkiaDirectory(this, skiaNode)]; } } -class Progress { - Progress(this.max) { +class _Progress { + _Progress(this.max) { // This may happen when a git client contains left-over empty component // directories after DEPS file changes. if (max <= 0) @@ -2400,11 +2133,11 @@ Future main(List arguments) async { try { system.stderr.writeln('Finding files...'); fs.FileSystemDirectory rootDirectory = new fs.FileSystemDirectory.fromPath(argResults['src']); - final RepositoryDirectory root = new RepositoryRoot(rootDirectory); + final _RepositoryDirectory root = new _RepositoryRoot(rootDirectory); if (releaseMode) { system.stderr.writeln('Collecting licenses...'); - Progress progress = new Progress(root.fileCount); + _Progress progress = new _Progress(root.fileCount); List licenses = new Set.from(root.getLicenses(progress).toList()).toList(); if (progress.hadErrors) throw 'Had failures while collecting licenses.'; @@ -2425,7 +2158,7 @@ Future main(List arguments) async { final List usedGoldens = []; bool isFirstComponent = true; - for (RepositoryDirectory component in root.subdirectories) { + for (_RepositoryDirectory component in root.subdirectories) { system.stderr.writeln('Collecting licenses for ${component.io.name}'); String signature; @@ -2456,7 +2189,7 @@ Future main(List arguments) async { system.stderr.writeln(' Failed to read signature file, scanning directory.'); } - Progress progress = new Progress(component.fileCount); + _Progress progress = new _Progress(component.fileCount); system.File outFile = new system.File( path.join(argResults['out'], 'licenses_${component.name}')); @@ -2464,7 +2197,7 @@ Future main(List arguments) async { if (signature != null) sink.writeln('Signature: $signature\n'); - RepositoryDirectory componentRoot; + _RepositoryDirectory componentRoot; if (isFirstComponent) { // For the first component, we can use the results of the initial // repository crawl. @@ -2474,8 +2207,8 @@ Future main(List arguments) async { // For other components, we need a clean repository that does not // contain any state left over from previous components. clearLicenseRegistry(); - componentRoot = new RepositoryRoot(rootDirectory).subdirectories.firstWhere( - (RepositoryDirectory dir) => dir.name == component.name + componentRoot = new _RepositoryRoot(rootDirectory).subdirectories.firstWhere( + (_RepositoryDirectory dir) => dir.name == component.name ); } List licenses = new Set.from( From 8d38417050306a19304889deb9a28e5276049cab Mon Sep 17 00:00:00 2001 From: Michael Goderbauer Date: Tue, 20 Nov 2018 15:38:09 -0800 Subject: [PATCH 0313/1537] Roll buildroot to 7e555aec776cfda9ab2e898f83dccef3005795c2 (#6916) --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index 47cb579031072..bb8bca813440d 100644 --- a/DEPS +++ b/DEPS @@ -117,7 +117,7 @@ allowed_hosts = [ ] deps = { - 'src': 'https://github.com/flutter/buildroot.git' + '@' + '2b7fe9635c00c932f86627988e797a097574929e', + 'src': 'https://github.com/flutter/buildroot.git' + '@' + '7e555aec776cfda9ab2e898f83dccef3005795c2', # Fuchsia compatibility # From 5c8147450db52b81232c138b9f9a65a8f9c61862 Mon Sep 17 00:00:00 2001 From: liyuqian Date: Tue, 20 Nov 2018 16:48:13 -0800 Subject: [PATCH 0314/1537] Clear layer cache in RasterCache::Clear (#6915) This fixes https://github.com/flutter/flutter/issues/24216 --- flow/raster_cache.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/flow/raster_cache.cc b/flow/raster_cache.cc index ccb88ab48c7c7..cfd587f144a48 100644 --- a/flow/raster_cache.cc +++ b/flow/raster_cache.cc @@ -246,6 +246,7 @@ void RasterCache::SweepAfterFrame() { void RasterCache::Clear() { picture_cache_.clear(); + layer_cache_.clear(); } void RasterCache::SetCheckboardCacheImages(bool checkerboard) { From 1e37b99ac07d6f78124347d4fb972d550eaac6d9 Mon Sep 17 00:00:00 2001 From: Chris Bracken Date: Wed, 21 Nov 2018 10:31:32 -0800 Subject: [PATCH 0315/1537] Add basic validation on loading from kernel list (#6921) Adds a check/error message for the case where running from kernel list, but application_kernel_list_asset is left unset (or empty). Adds a check/error message for the case where we fail to load the application_kernel_list_asset specified in the settings. --- shell/common/isolate_configuration.cc | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/shell/common/isolate_configuration.cc b/shell/common/isolate_configuration.cc index 439eb940af548..59cc56682be9f 100644 --- a/shell/common/isolate_configuration.cc +++ b/shell/common/isolate_configuration.cc @@ -164,14 +164,20 @@ std::unique_ptr IsolateConfiguration::InferFromSettings( // Running from kernel divided into several pieces (for sharing). { + if (settings.application_kernel_list_asset.empty()) { + FML_LOG(ERROR) << "Application kernel list asset not set"; + return nullptr; + } std::unique_ptr kernel_list = asset_manager->GetAsMapping(settings.application_kernel_list_asset); - if (kernel_list) { - auto kernel_pieces_paths = ParseKernelListPaths(std::move(kernel_list)); - auto kernel_mappings = PrepareKernelMappings( - std::move(kernel_pieces_paths), asset_manager, io_worker); - return CreateForKernelList(std::move(kernel_mappings)); + if (!kernel_list) { + FML_LOG(ERROR) << "Failed to load: " << settings.application_kernel_asset; + return nullptr; } + auto kernel_pieces_paths = ParseKernelListPaths(std::move(kernel_list)); + auto kernel_mappings = PrepareKernelMappings(std::move(kernel_pieces_paths), + asset_manager, io_worker); + return CreateForKernelList(std::move(kernel_mappings)); } return nullptr; From df2e9393a247a8bbe658293dd7ea8da5cdbb8a04 Mon Sep 17 00:00:00 2001 From: Dan Field Date: Wed, 21 Nov 2018 15:06:08 -0800 Subject: [PATCH 0316/1537] load default splash screen when not init with engine (#6925) --- .../darwin/ios/framework/Source/FlutterViewController.mm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm b/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm index 3fb58d709f270..544bad0365d96 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm @@ -71,7 +71,7 @@ - (instancetype)initWithProject:(FlutterDartProject*)projectOrNil _flutterView.reset([[FlutterView alloc] initWithDelegate:_engine opaque:self.isViewOpaque]); [_engine.get() createShell:nil libraryURI:nil]; _engineNeedsLaunch = YES; - + [self loadDefaultSplashScreenView]; [self performCommonViewControllerInitialization]; } From 99e73d8c64ed3ebefd90cd339f268b819660932e Mon Sep 17 00:00:00 2001 From: Alexander Aprelev Date: Sat, 24 Nov 2018 22:51:03 -0800 Subject: [PATCH 0317/1537] Roll buildroot to 29a5d76757ec12655c0562b317830f669bd44ea7. (#6929) This picks up fix to Windows toolchain. --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index bb8bca813440d..e4f54ebb42f17 100644 --- a/DEPS +++ b/DEPS @@ -117,7 +117,7 @@ allowed_hosts = [ ] deps = { - 'src': 'https://github.com/flutter/buildroot.git' + '@' + '7e555aec776cfda9ab2e898f83dccef3005795c2', + 'src': 'https://github.com/flutter/buildroot.git' + '@' + '29a5d76757ec12655c0562b317830f669bd44ea7', # Fuchsia compatibility # From 25d99cd25780e7f692cd44a0c34fcd3aa2600ab4 Mon Sep 17 00:00:00 2001 From: Chris Bracken Date: Mon, 26 Nov 2018 10:48:37 -0800 Subject: [PATCH 0318/1537] Use software renderer in embedder unittests (#6928) Reduces spurious error log messages in GLContextMakeCurrent() attempting set up the GR context: [ERROR:flutter/shell/gpu/gpu_surface_gl.cc(42)] Could not make the context current to setup the gr context. --- .../platform/embedder/tests/embedder_unittests.cc | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/shell/platform/embedder/tests/embedder_unittests.cc b/shell/platform/embedder/tests/embedder_unittests.cc index 2230769654676..6cd3f4d330a65 100644 --- a/shell/platform/embedder/tests/embedder_unittests.cc +++ b/shell/platform/embedder/tests/embedder_unittests.cc @@ -16,19 +16,18 @@ TEST(EmbedderTest, MustNotRunWithInvalidArgs) { } TEST(EmbedderTest, CanLaunchAndShutdownWithValidProjectArgs) { - FlutterOpenGLRendererConfig renderer = {}; - renderer.struct_size = sizeof(FlutterOpenGLRendererConfig); - renderer.make_current = [](void*) { return false; }; - renderer.clear_current = [](void*) { return false; }; - renderer.present = [](void*) { return false; }; - renderer.fbo_callback = [](void*) -> uint32_t { return 0; }; + FlutterSoftwareRendererConfig renderer; + renderer.struct_size = sizeof(FlutterSoftwareRendererConfig); + renderer.surface_present_callback = [](void*, const void*, size_t, size_t) { + return false; + }; std::string main = std::string(testing::GetFixturesPath()) + "/simple_main.dart"; FlutterRendererConfig config = {}; - config.type = FlutterRendererType::kOpenGL; - config.open_gl = renderer; + config.type = FlutterRendererType::kSoftware; + config.software = renderer; FlutterProjectArgs args = {}; args.struct_size = sizeof(FlutterProjectArgs); From eebc6a58958587203f624528ff46b1d4b2b0f2fa Mon Sep 17 00:00:00 2001 From: Todd Volkert Date: Mon, 26 Nov 2018 11:02:42 -0800 Subject: [PATCH 0319/1537] Roll Skia to 988f54e4689b3d9fb6d5220e02b418f5cfa2b6db (#6931) https://github.com/flutter/flutter/issues/24402 https://github.com/flutter/flutter/issues/24289 https://github.com/flutter/flutter/issues/24391 https://github.com/flutter/flutter/issues/24517 https://github.com/flutter/flutter/issues/23900 --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index e4f54ebb42f17..4d4060099c036 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'eb35650f9177d30e59cf6289a834ce1bb86cdfb7', + 'skia_revision': '988f54e4689b3d9fb6d5220e02b418f5cfa2b6db', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 469e5f07d952d..1b405986e74f6 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: d743c750c31db65e8ba714b02e51934b +Signature: ee0a1574bb6026ffa4292566b01d932d UNUSED LICENSES: From f804a1fc6b81bf38a4bbe6b7f085d8dc795980eb Mon Sep 17 00:00:00 2001 From: Chris Bracken Date: Mon, 26 Nov 2018 11:29:56 -0800 Subject: [PATCH 0320/1537] Improve error message when kernel not set (#6924) Pushes the check up front so that we don't always land on the application_kernel_list_asset error message, which may be misleading to readers. Also switches the empty check to only emit in debug builds, since this is almost certainly not a runtime error but a programmer error. --- shell/common/isolate_configuration.cc | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/shell/common/isolate_configuration.cc b/shell/common/isolate_configuration.cc index 59cc56682be9f..173973b64e5b1 100644 --- a/shell/common/isolate_configuration.cc +++ b/shell/common/isolate_configuration.cc @@ -153,6 +153,13 @@ std::unique_ptr IsolateConfiguration::InferFromSettings( return nullptr; } + if (settings.application_kernel_asset.empty() && + settings.application_kernel_list_asset.empty()) { + FML_DLOG(ERROR) << "application_kernel_asset or " + "application_kernel_list_asset must be set"; + return nullptr; + } + // Running from kernel snapshot. { std::unique_ptr kernel = @@ -164,10 +171,6 @@ std::unique_ptr IsolateConfiguration::InferFromSettings( // Running from kernel divided into several pieces (for sharing). { - if (settings.application_kernel_list_asset.empty()) { - FML_LOG(ERROR) << "Application kernel list asset not set"; - return nullptr; - } std::unique_ptr kernel_list = asset_manager->GetAsMapping(settings.application_kernel_list_asset); if (!kernel_list) { From 84e3b137a16d3c673e89b340fbd2b097a4b5a3ba Mon Sep 17 00:00:00 2001 From: Chinmay Garde Date: Mon, 26 Nov 2018 15:30:03 -0800 Subject: [PATCH 0321/1537] Dont attempt to log names of extensions as these change depending on the header used. (#6949) --- vulkan/vulkan_interface.cc | 26 +++----------------------- 1 file changed, 3 insertions(+), 23 deletions(-) diff --git a/vulkan/vulkan_interface.cc b/vulkan/vulkan_interface.cc index cd89954c0d0a1..56cb828e9db04 100644 --- a/vulkan/vulkan_interface.cc +++ b/vulkan/vulkan_interface.cc @@ -66,30 +66,10 @@ std::string VulkanResultToString(VkResult result) { return "VK_ERROR_INVALID_EXTERNAL_HANDLE"; case VK_ERROR_OUT_OF_POOL_MEMORY: return "VK_ERROR_OUT_OF_POOL_MEMORY"; - -#if VK_HEADER_VERSION >= 63 - case VK_ERROR_NOT_PERMITTED_EXT: - return "VK_ERROR_NOT_PERMITTED_EXT"; -#endif - -#if VK_HEADER_VERSION >= 72 - case VK_ERROR_FRAGMENTATION_EXT: - return "VK_ERROR_FRAGMENTATION_EXT"; -#endif - -#if OS_FUCHSIA -#if VK_KHR_external_memory - case VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR: - return "VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR"; -#elif VK_KHX_external_memory - case VK_ERROR_INVALID_EXTERNAL_HANDLE_KHX: - return "VK_ERROR_INVALID_EXTERNAL_HANDLE_KHX"; -#endif - case VK_ERROR_OUT_OF_POOL_MEMORY_KHR: - return "VK_ERROR_OUT_OF_POOL_MEMORY_KHR"; -#endif + default: + return "Unknown Error"; } - return "Unknown Error"; + return ""; } } // namespace vulkan From b8e7678b14e1eccc326e204e433c2273414edd94 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Tue, 27 Nov 2018 11:43:14 -0500 Subject: [PATCH 0322/1537] Roll src/third_party/skia 988f54e4689b..ad5f06949033 (102 commits) (#6960) https://skia.googlesource.com/skia.git/+log/988f54e4689b..ad5f06949033 Created with: gclient setdep -r src/third_party/skia@ad5f06949033 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 51 ++++++-------------------------- sky/packages/sky_engine/LICENSE | 31 ------------------- 3 files changed, 10 insertions(+), 74 deletions(-) diff --git a/DEPS b/DEPS index 4d4060099c036..87dec6bdf4920 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '988f54e4689b3d9fb6d5220e02b418f5cfa2b6db', + 'skia_revision': 'ad5f069490332881eab0697c5c06807f5f89d865', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 1b405986e74f6..cbc8d08235674 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: ee0a1574bb6026ffa4292566b01d932d +Signature: 03ade9bd1ada22cf66f97d26b1b89935 UNUSED LICENSES: @@ -795,7 +795,6 @@ FILE: ../../../third_party/skia/gm/drawregionmodes.cpp FILE: ../../../third_party/skia/gm/encode-platform.cpp FILE: ../../../third_party/skia/gm/encode-srgb.cpp FILE: ../../../third_party/skia/gm/filterbug.cpp -FILE: ../../../third_party/skia/gm/gamut.cpp FILE: ../../../third_party/skia/gm/hardstop_gradients.cpp FILE: ../../../third_party/skia/gm/imagemakewithfilter.cpp FILE: ../../../third_party/skia/gm/imagemasksubset.cpp @@ -830,7 +829,6 @@ FILE: ../../../third_party/skia/include/effects/SkArithmeticImageFilter.h FILE: ../../../third_party/skia/include/effects/SkOverdrawColorFilter.h FILE: ../../../third_party/skia/include/effects/SkPaintImageFilter.h FILE: ../../../third_party/skia/include/gpu/vk/GrVkBackendContext.h -FILE: ../../../third_party/skia/include/gpu/vk/GrVkDefines.h FILE: ../../../third_party/skia/include/gpu/vk/GrVkExtensions.h FILE: ../../../third_party/skia/include/gpu/vk/GrVkTypes.h FILE: ../../../third_party/skia/include/ports/SkFontMgr_FontConfigInterface.h @@ -1281,7 +1279,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ==================================================================================================== LIBRARY: skcms LIBRARY: skia -LIBRARY: vulkan LIBRARY: vulkanmemoryallocator LIBRARY: wuffs ORIGIN: ../../../third_party/skia/bench/ClearBench.cpp + ../../../third_party/skia/LICENSE @@ -1612,6 +1609,7 @@ FILE: ../../../third_party/skia/src/gpu/vk/GrVkImageLayout.h FILE: ../../../third_party/skia/src/gpu/vk/GrVkPipelineLayout.cpp FILE: ../../../third_party/skia/src/gpu/vk/GrVkPipelineLayout.h FILE: ../../../third_party/skia/src/gpu/vk/GrVkTypesPriv.cpp +FILE: ../../../third_party/skia/src/gpu/vk/GrVkVulkan.h FILE: ../../../third_party/skia/src/image/SkImage_GpuBase.cpp FILE: ../../../third_party/skia/src/image/SkImage_GpuBase.h FILE: ../../../third_party/skia/src/image/SkImage_GpuYUVA.cpp @@ -1647,7 +1645,6 @@ FILE: ../../../third_party/skia/third_party/skcms/skcms.cc FILE: ../../../third_party/skia/third_party/skcms/skcms.h FILE: ../../../third_party/skia/third_party/skcms/skcms_internal.h FILE: ../../../third_party/skia/third_party/skcms/src/Transform_inl.h -FILE: ../../../third_party/skia/third_party/vulkan/SkiaVulkan.h FILE: ../../../third_party/skia/third_party/vulkanmemoryallocator/GrVulkanMemoryAllocator.cpp FILE: ../../../third_party/skia/third_party/vulkanmemoryallocator/GrVulkanMemoryAllocator.h FILE: ../../../third_party/skia/third_party/wuffs/wuffs.c @@ -2036,9 +2033,11 @@ FILE: ../../../third_party/skia/experimental/canvaskit/canvaskit/example.html FILE: ../../../third_party/skia/experimental/canvaskit/canvaskit/node.example.js FILE: ../../../third_party/skia/experimental/canvaskit/canvaskit/package.json FILE: ../../../third_party/skia/experimental/canvaskit/cpu.js +FILE: ../../../third_party/skia/experimental/canvaskit/debug.js FILE: ../../../third_party/skia/experimental/canvaskit/externs.js FILE: ../../../third_party/skia/experimental/canvaskit/gpu.js FILE: ../../../third_party/skia/experimental/canvaskit/helper.js +FILE: ../../../third_party/skia/experimental/canvaskit/htmlcanvas/_namedcolors.js FILE: ../../../third_party/skia/experimental/canvaskit/htmlcanvas/canvas2d.js FILE: ../../../third_party/skia/experimental/canvaskit/interface.js FILE: ../../../third_party/skia/experimental/canvaskit/karma.bench.conf.js @@ -2049,6 +2048,7 @@ FILE: ../../../third_party/skia/experimental/canvaskit/perf/assets/confetti.json FILE: ../../../third_party/skia/experimental/canvaskit/perf/assets/drinks.json FILE: ../../../third_party/skia/experimental/canvaskit/perf/assets/lego_loader.json FILE: ../../../third_party/skia/experimental/canvaskit/perf/assets/onboarding.json +FILE: ../../../third_party/skia/experimental/canvaskit/release.js FILE: ../../../third_party/skia/experimental/docs/animationCommon.js FILE: ../../../third_party/skia/experimental/docs/backend.js FILE: ../../../third_party/skia/experimental/docs/canvasBackend.js @@ -2197,8 +2197,10 @@ FILE: ../../../third_party/skia/infra/bots/recipe_modules/vars/examples/full.exp FILE: ../../../third_party/skia/infra/bots/recipe_modules/vars/examples/full.expected/Housekeeper-Weekly-RecreateSKPs.json FILE: ../../../third_party/skia/infra/bots/recipe_modules/vars/examples/full.expected/win_test.json FILE: ../../../third_party/skia/infra/bots/recipes/android_compile.expected/android_compile_nontrybot.json +FILE: ../../../third_party/skia/infra/bots/recipes/android_compile.expected/android_compile_sdk_trybot.json FILE: ../../../third_party/skia/infra/bots/recipes/android_compile.expected/android_compile_trybot.json FILE: ../../../third_party/skia/infra/bots/recipes/android_compile.expected/android_compile_trybot_failure.json +FILE: ../../../third_party/skia/infra/bots/recipes/android_compile.expected/android_compile_unrecognized_target.json FILE: ../../../third_party/skia/infra/bots/recipes/bookmaker.expected/nightly_bookmaker.json FILE: ../../../third_party/skia/infra/bots/recipes/bookmaker.expected/nightly_failed_extract_fiddles.json FILE: ../../../third_party/skia/infra/bots/recipes/bookmaker.expected/nightly_failed_fiddlecli.json @@ -3092,6 +3094,7 @@ FILE: ../../../third_party/skia/src/c/sk_surface.cpp FILE: ../../../third_party/skia/src/core/SkBBHFactory.cpp FILE: ../../../third_party/skia/src/core/SkBitmapCache.cpp FILE: ../../../third_party/skia/src/core/SkBitmapCache.h +FILE: ../../../third_party/skia/src/core/SkBitmapProcState_matrix_neon.h FILE: ../../../third_party/skia/src/core/SkCachedData.cpp FILE: ../../../third_party/skia/src/core/SkCachedData.h FILE: ../../../third_party/skia/src/core/SkCanvasPriv.h @@ -3186,7 +3189,6 @@ FILE: ../../../third_party/skia/src/gpu/ops/GrDashOp.h FILE: ../../../third_party/skia/src/gpu/ops/GrSmallPathRenderer.h FILE: ../../../third_party/skia/src/image/SkReadPixelsRec.h FILE: ../../../third_party/skia/src/image/SkSurface_Gpu.h -FILE: ../../../third_party/skia/src/opts/SkBitmapProcState_matrix_neon.h FILE: ../../../third_party/skia/src/pathops/SkOpBuilder.cpp FILE: ../../../third_party/skia/src/pathops/SkOpSpan.cpp FILE: ../../../third_party/skia/src/pathops/SkPathOpsTSect.cpp @@ -5825,41 +5827,6 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ==================================================================================================== -==================================================================================================== -LIBRARY: skia -ORIGIN: ../../../third_party/skia/src/opts/SkBitmapProcState_matrixProcs_neon.cpp + ../../../third_party/skia/LICENSE -TYPE: LicenseType.bsd -FILE: ../../../third_party/skia/src/opts/SkBitmapProcState_matrixProcs_neon.cpp ----------------------------------------------------------------------------------------------------- -Copyright 2009 Motorola - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -==================================================================================================== - ==================================================================================================== LIBRARY: skia ORIGIN: ../../../third_party/skia/src/ports/SkFontConfigInterface_direct.cpp + ../../../third_party/skia/LICENSE @@ -6016,4 +5983,4 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ==================================================================================================== -Total license count: 53 +Total license count: 52 diff --git a/sky/packages/sky_engine/LICENSE b/sky/packages/sky_engine/LICENSE index 7334fbc6b9b0e..9344e042338f0 100644 --- a/sky/packages/sky_engine/LICENSE +++ b/sky/packages/sky_engine/LICENSE @@ -9611,7 +9611,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- skcms skia -vulkan vulkanmemoryallocator wuffs @@ -9955,36 +9954,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- skia -Copyright 2009 Motorola - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -skia - Copyright 2009 The Android Open Source Project Redistribution and use in source and binary forms, with or without From 5bf4deb4353c1b25f9db8ded62207353040eb94f Mon Sep 17 00:00:00 2001 From: Amir Hardon Date: Tue, 27 Nov 2018 10:03:16 -0800 Subject: [PATCH 0323/1537] Update Dartdoc for SceneBuilder#addPlatformView (#6957) --- lib/ui/compositing.dart | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/lib/ui/compositing.dart b/lib/ui/compositing.dart index a23c2bbbb9d6c..89529c093fda9 100644 --- a/lib/ui/compositing.dart +++ b/lib/ui/compositing.dart @@ -274,7 +274,20 @@ class SceneBuilder extends NativeFieldWrapperClass2 { /// Adds a platform view (e.g an iOS UIView) to the scene. /// - /// This is work in progress and is not currently supported on any platform. + /// Only supported on iOS, this is currently a no-op on other platforms. + /// + /// On iOS this layer splits the current output surface into two surfaces, one for the scene nodes + /// preceding the platform view, and one for the scene nodes following the platform view. + /// + /// ## Performance impact + /// + /// Adding an additional surface doubles the amount of graphics memory directly used by Flutter + /// for output buffers. Quartz might allocated extra buffers for compositing the Flutter surfaces + /// and the platform view. + /// + /// With a platform view in the scene, Quartz has to composite the two Flutter surfaces and the + /// embedded UIView. In addition to that, on iOS versions greater than 9, the Flutter frames are + /// synchronized with the UIView frames adding additional performance overhead. void addPlatformView(int viewId, { Offset offset: Offset.zero, double width: 0.0, double height: 0.0}) { assert(offset != null, 'Offset argument was null'); _addPlatformView(offset.dx, offset.dy, width, height, viewId); From 9d25254dcf86e88fa717bf93208fbdfd5e7c1f1a Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Tue, 27 Nov 2018 13:49:54 -0500 Subject: [PATCH 0324/1537] Roll src/third_party/skia ad5f06949033..df246b9c1bbd (8 commits) (#6962) https://skia.googlesource.com/skia.git/+log/ad5f06949033..df246b9c1bbd Created with: gclient setdep -r src/third_party/skia@df246b9c1bbd The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/DEPS b/DEPS index 87dec6bdf4920..8308fd015c217 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'ad5f069490332881eab0697c5c06807f5f89d865', + 'skia_revision': 'df246b9c1bbd125afa8350595101b7399f7515a3', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index cbc8d08235674..e088e400900c7 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 03ade9bd1ada22cf66f97d26b1b89935 +Signature: 10d7fd3dea1dbbff3b5eb68f87673a6b UNUSED LICENSES: @@ -4192,7 +4192,6 @@ FILE: ../../../third_party/skia/gm/srgb.cpp FILE: ../../../third_party/skia/gm/testgradient.cpp FILE: ../../../third_party/skia/gm/text_scale_skew.cpp FILE: ../../../third_party/skia/gm/thinconcavepaths.cpp -FILE: ../../../third_party/skia/gm/tonalshadows.cpp FILE: ../../../third_party/skia/gm/tosrgb_colorfilter.cpp FILE: ../../../third_party/skia/include/android/SkAndroidFrameworkUtils.h FILE: ../../../third_party/skia/include/atlastext/SkAtlasTextContext.h From a2726bf8cdce4c78991f65ee556048a150ab711e Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Tue, 27 Nov 2018 14:13:37 -0500 Subject: [PATCH 0325/1537] Roll src/third_party/skia df246b9c1bbd..fc06f981e230 (1 commits) (#6963) https://skia.googlesource.com/skia.git/+log/df246b9c1bbd..fc06f981e230 Created with: gclient setdep -r src/third_party/skia@fc06f981e230 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 8308fd015c217..346bea30ffe49 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'df246b9c1bbd125afa8350595101b7399f7515a3', + 'skia_revision': 'fc06f981e230fb6486386af2ddec23671bfca94a', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index e088e400900c7..f502171c7434b 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 10d7fd3dea1dbbff3b5eb68f87673a6b +Signature: c70c86038d89d0497fad5807782200fc UNUSED LICENSES: From 17409ce8647e5071aadfe6d4309aff777d3bdd63 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Tue, 27 Nov 2018 14:38:44 -0500 Subject: [PATCH 0326/1537] Roll src/third_party/skia fc06f981e230..b8c363836398 (3 commits) (#6964) https://skia.googlesource.com/skia.git/+log/fc06f981e230..b8c363836398 Created with: gclient setdep -r src/third_party/skia@b8c363836398 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 346bea30ffe49..10ddd048eb473 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'fc06f981e230fb6486386af2ddec23671bfca94a', + 'skia_revision': 'b8c363836398ec19de70e77bd2b366f5cfa0e142', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index f502171c7434b..8800947b01d87 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: c70c86038d89d0497fad5807782200fc +Signature: b129e4a2fc4080362a46179ae4a61c1b UNUSED LICENSES: From e9c160921e9b6077b4a13dd722b9f2d7f3f95836 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Tue, 27 Nov 2018 15:04:31 -0500 Subject: [PATCH 0327/1537] Roll src/third_party/skia b8c363836398..26d8d77aae56 (1 commits) (#6965) https://skia.googlesource.com/skia.git/+log/b8c363836398..26d8d77aae56 Created with: gclient setdep -r src/third_party/skia@26d8d77aae56 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 10ddd048eb473..08138e019f9df 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'b8c363836398ec19de70e77bd2b366f5cfa0e142', + 'skia_revision': '26d8d77aae56c20b7174ac06056c1e5ec7903e6b', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 8800947b01d87..8724ed89a7a3c 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: b129e4a2fc4080362a46179ae4a61c1b +Signature: 9ffbbf59bd17e850a44f2bee37f03468 UNUSED LICENSES: From 2e68a6036e6b08758f34e4f034fbb2f00d2d605b Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Tue, 27 Nov 2018 15:39:05 -0500 Subject: [PATCH 0328/1537] Roll src/third_party/skia 26d8d77aae56..9f0d8c24c861 (1 commits) (#6966) https://skia.googlesource.com/skia.git/+log/26d8d77aae56..9f0d8c24c861 Created with: gclient setdep -r src/third_party/skia@9f0d8c24c861 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 08138e019f9df..1f14e4fb2dc20 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '26d8d77aae56c20b7174ac06056c1e5ec7903e6b', + 'skia_revision': '9f0d8c24c86146123a336530dd93072a1d046833', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 8724ed89a7a3c..36ac28ba25ac6 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 9ffbbf59bd17e850a44f2bee37f03468 +Signature: b5ecdfbba4b15bae98ce2e89b7be3c99 UNUSED LICENSES: From 8b3dcf7b89f66916e28b7a7e979efa2396bf99de Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Tue, 27 Nov 2018 16:01:31 -0500 Subject: [PATCH 0329/1537] Roll src/third_party/skia 9f0d8c24c861..9b0ba2c2cd09 (3 commits) (#6968) https://skia.googlesource.com/skia.git/+log/9f0d8c24c861..9b0ba2c2cd09 Created with: gclient setdep -r src/third_party/skia@9b0ba2c2cd09 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 1f14e4fb2dc20..54537047634b5 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '9f0d8c24c86146123a336530dd93072a1d046833', + 'skia_revision': '9b0ba2c2cd09ce83ca7c9b602fad9a1d1d5b550e', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 36ac28ba25ac6..b5c2facb93dbf 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: b5ecdfbba4b15bae98ce2e89b7be3c99 +Signature: b36dfc83e46ed767148881a99a2b692f UNUSED LICENSES: From df071dbd6a856f9ab724f6c3f11bbac8aea741d7 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Tue, 27 Nov 2018 16:16:16 -0500 Subject: [PATCH 0330/1537] Roll src/third_party/skia 9b0ba2c2cd09..a23de1d5c86e (1 commits) (#6969) https://skia.googlesource.com/skia.git/+log/9b0ba2c2cd09..a23de1d5c86e Created with: gclient setdep -r src/third_party/skia@a23de1d5c86e The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index 54537047634b5..bd2471636d9d7 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '9b0ba2c2cd09ce83ca7c9b602fad9a1d1d5b550e', + 'skia_revision': 'a23de1d5c86e1590ddf7543e5db259016d49a55e', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the From 2ab019412dce6205c03f081737cc94487edec3cd Mon Sep 17 00:00:00 2001 From: Chris Bracken Date: Tue, 27 Nov 2018 13:51:54 -0800 Subject: [PATCH 0331/1537] Use application_kernel_asset in flutter_tester (#6972) Since the migration to Dart 2, the first positional command-line argument to flutter_tester has been a Dart kernel .dill file. Use Settings::application_kernel_asset here for consistency/clarity. --- shell/testing/tester_main.cc | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/shell/testing/tester_main.cc b/shell/testing/tester_main.cc index 3d24032e951a3..7aa9dee3c0794 100644 --- a/shell/testing/tester_main.cc +++ b/shell/testing/tester_main.cc @@ -120,8 +120,8 @@ int RunTester(const blink::Settings& settings, bool run_forever) { return EXIT_FAILURE; } - if (settings.main_dart_file_path.empty()) { - FML_LOG(ERROR) << "Main dart file not specified."; + if (settings.application_kernel_asset.empty()) { + FML_LOG(ERROR) << "Dart kernel file not specified."; return EXIT_FAILURE; } @@ -142,8 +142,8 @@ int RunTester(const blink::Settings& settings, bool run_forever) { fml::FileMapping::Protection::kRead}; auto main_dart_file_mapping = std::make_unique( fml::OpenFile( - fml::paths::AbsolutePath(settings.main_dart_file_path).c_str(), false, - fml::FilePermission::kRead), + fml::paths::AbsolutePath(settings.application_kernel_asset).c_str(), + false, fml::FilePermission::kRead), protection); auto isolate_configuration = @@ -243,11 +243,11 @@ int main(int argc, char* argv[]) { if (command_line.positional_args().size() > 0) { // The tester may not use the switch for the main dart file path. Specifying // it as a positional argument instead. - settings.main_dart_file_path = command_line.positional_args()[0]; + settings.application_kernel_asset = command_line.positional_args()[0]; } - if (settings.main_dart_file_path.size() == 0) { - FML_LOG(ERROR) << "Main dart file path not specified."; + if (settings.application_kernel_asset.size() == 0) { + FML_LOG(ERROR) << "Dart kernel file not specified."; return EXIT_FAILURE; } From 2f706bea076d75abc19090c8971c57f6db2f0025 Mon Sep 17 00:00:00 2001 From: Michael Goderbauer Date: Tue, 27 Nov 2018 14:12:13 -0800 Subject: [PATCH 0332/1537] Fix EXIF orentation problem (#6974) --- shell/common/io_manager.cc | 1 + shell/gpu/gpu_surface_gl.cc | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/shell/common/io_manager.cc b/shell/common/io_manager.cc index e97222eb40e70..c6ff79b644f30 100644 --- a/shell/common/io_manager.cc +++ b/shell/common/io_manager.cc @@ -24,6 +24,7 @@ sk_sp IOManager::CreateCompatibleResourceLoadingContext( // thread. The necessary work isn't being flushed or synchronized with the // other threads correctly, so the textures end up blank. For now, suppress // that feature, which will cause texture uploads to do CPU YUV conversion. + // A similar work-around is also used in shell/gpu/gpu_surface_gl.cc. options.fDisableGpuYUVConversion = true; // To get video playback on the widest range of devices, we limit Skia to diff --git a/shell/gpu/gpu_surface_gl.cc b/shell/gpu/gpu_surface_gl.cc index d0ff74ffb6e24..675e6d6f7cacf 100644 --- a/shell/gpu/gpu_surface_gl.cc +++ b/shell/gpu/gpu_surface_gl.cc @@ -56,6 +56,10 @@ GPUSurfaceGL::GPUSurfaceGL(GPUSurfaceGLDelegate* delegate) // ES2 shading language when the ES3 external image extension is missing. options.fPreferExternalImagesOverES3 = true; + // TODO(goderbauer): remove option when skbug.com/7523 is fixed. + // A similar work-around is also used in shell/common/io_manager.cc. + options.fDisableGpuYUVConversion = true; + sk_sp interface; if (proc_resolver_ == nullptr) { From be973ea196127383f356d39be466e2f3bd163083 Mon Sep 17 00:00:00 2001 From: Todd Volkert Date: Tue, 27 Nov 2018 15:07:26 -0800 Subject: [PATCH 0333/1537] Roll Skia to bb37aba39910ef1a95cdcbb5b85d99cdabf3c362 (#6975) --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 4d4060099c036..34a083e6f2d4c 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '988f54e4689b3d9fb6d5220e02b418f5cfa2b6db', + 'skia_revision': 'bb37aba39910ef1a95cdcbb5b85d99cdabf3c362', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 1b405986e74f6..9082e899c9b5c 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: ee0a1574bb6026ffa4292566b01d932d +Signature: dcef2b9d9d93b9b2ab1886efff54af73 UNUSED LICENSES: From de2116d2e59b7b5e4a2aa422d59e422f081c0ab9 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Tue, 27 Nov 2018 20:15:06 -0500 Subject: [PATCH 0334/1537] Roll src/third_party/skia a23de1d5c86e..af3dd43a80a0 (1 commits) (#6976) https://skia.googlesource.com/skia.git/+log/a23de1d5c86e..af3dd43a80a0 Created with: gclient setdep -r src/third_party/skia@af3dd43a80a0 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index bd2471636d9d7..1c721aaa8d950 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'a23de1d5c86e1590ddf7543e5db259016d49a55e', + 'skia_revision': 'af3dd43a80a080537deb31fbfc25adf89223cb9f', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index b5c2facb93dbf..dee7592c97594 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: b36dfc83e46ed767148881a99a2b692f +Signature: 2f668e48c1f7dfb44040981d9b387d44 UNUSED LICENSES: From 190a1f60c2914ae43e15950d1127725f936df00e Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Tue, 27 Nov 2018 23:22:09 -0500 Subject: [PATCH 0335/1537] Roll src/third_party/skia af3dd43a80a0..1437355d7e88 (1 commits) (#6978) https://skia.googlesource.com/skia.git/+log/af3dd43a80a0..1437355d7e88 Created with: gclient setdep -r src/third_party/skia@1437355d7e88 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 1c721aaa8d950..c2298380e1cc1 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'af3dd43a80a080537deb31fbfc25adf89223cb9f', + 'skia_revision': '1437355d7e88dff40d951d99bf70893c9b12649f', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index dee7592c97594..699b1755dc06d 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 2f668e48c1f7dfb44040981d9b387d44 +Signature: cbb622ea7a5927afec5775fd5919678a UNUSED LICENSES: From 14985c15e7ca6f40e648989f215f7375d2260827 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Wed, 28 Nov 2018 01:16:41 -0500 Subject: [PATCH 0336/1537] Roll src/third_party/skia 1437355d7e88..600ed126665e (1 commits) (#6979) https://skia.googlesource.com/skia.git/+log/1437355d7e88..600ed126665e Created with: gclient setdep -r src/third_party/skia@600ed126665e The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index c2298380e1cc1..eeb0ef7070834 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '1437355d7e88dff40d951d99bf70893c9b12649f', + 'skia_revision': '600ed126665ed4ff5468f291cb259dbf779f1024', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 699b1755dc06d..82a5984acbe2c 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: cbb622ea7a5927afec5775fd5919678a +Signature: 32c80279ff6671b7ba58c2312818bf82 UNUSED LICENSES: From da3d71dfa860803b69b4d71f16b3cb365ad29042 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Wed, 28 Nov 2018 08:05:39 -0500 Subject: [PATCH 0337/1537] Roll src/third_party/skia 600ed126665e..1dced8648159 (1 commits) (#6980) https://skia.googlesource.com/skia.git/+log/600ed126665e..1dced8648159 Created with: gclient setdep -r src/third_party/skia@1dced8648159 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index eeb0ef7070834..f6d5b8af2a0f6 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '600ed126665ed4ff5468f291cb259dbf779f1024', + 'skia_revision': '1dced8648159c267a847f598b8136b6c23df4491', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 82a5984acbe2c..dcb726f8b8f12 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 32c80279ff6671b7ba58c2312818bf82 +Signature: f79ff90a340212f172339f7bdc2be3a9 UNUSED LICENSES: From e7b2a354529b6631733c8c22484460e51568bb06 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Wed, 28 Nov 2018 08:31:42 -0500 Subject: [PATCH 0338/1537] Roll src/third_party/skia 1dced8648159..d3efa999af6d (1 commits) (#6981) https://skia.googlesource.com/skia.git/+log/1dced8648159..d3efa999af6d Created with: gclient setdep -r src/third_party/skia@d3efa999af6d The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index f6d5b8af2a0f6..92e5511b10521 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '1dced8648159c267a847f598b8136b6c23df4491', + 'skia_revision': 'd3efa999af6d85033ba6af9a96b18f204c73d31b', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index dcb726f8b8f12..82a5984acbe2c 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: f79ff90a340212f172339f7bdc2be3a9 +Signature: 32c80279ff6671b7ba58c2312818bf82 UNUSED LICENSES: From 9ecd11d5371a56f30ecfd19154231ae4a4daf8fa Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Wed, 28 Nov 2018 08:52:38 -0500 Subject: [PATCH 0339/1537] Roll src/third_party/skia d3efa999af6d..d437c79ed036 (1 commits) (#6982) https://skia.googlesource.com/skia.git/+log/d3efa999af6d..d437c79ed036 Created with: gclient setdep -r src/third_party/skia@d437c79ed036 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 92e5511b10521..04e0259aa4369 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'd3efa999af6d85033ba6af9a96b18f204c73d31b', + 'skia_revision': 'd437c79ed0369ea29a436dc2a6fb3edfffdadbd3', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 82a5984acbe2c..6ae5f4f98b762 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 32c80279ff6671b7ba58c2312818bf82 +Signature: 8c92c134752768886369543884a4ccd2 UNUSED LICENSES: From 9e16646ac37b6a1878c5466d69763e946097e104 Mon Sep 17 00:00:00 2001 From: Rusino Date: Wed, 28 Nov 2018 09:05:31 -0500 Subject: [PATCH 0340/1537] Remove SK_SUPPORT_LEGACY_TEXTBLOBBUILD_WITH_PAINT (#6971) * Remove SK_SUPPORT_LEGACY_TEXTBLOBBUILD_WITH_PAINT * Formatting change --- third_party/txt/src/txt/paragraph.cc | 47 ++++++++++++++-------------- 1 file changed, 24 insertions(+), 23 deletions(-) diff --git a/third_party/txt/src/txt/paragraph.cc b/third_party/txt/src/txt/paragraph.cc index dd1c7e6718f1c..512a1e25666b8 100644 --- a/third_party/txt/src/txt/paragraph.cc +++ b/third_party/txt/src/txt/paragraph.cc @@ -38,6 +38,7 @@ #include "unicode/utf16.h" #include "third_party/skia/include/core/SkCanvas.h" +#include "third_party/skia/include/core/SkFont.h" #include "third_party/skia/include/core/SkMaskFilter.h" #include "third_party/skia/include/core/SkPaint.h" #include "third_party/skia/include/core/SkTextBlob.h" @@ -62,10 +63,10 @@ class GlyphTypeface { bool operator!=(GlyphTypeface& other) { return !(*this == other); } - void apply(SkPaint& paint) { - paint.setTypeface(typeface_); - paint.setFakeBoldText(fake_bold_); - paint.setTextSkewX(fake_italic_ ? -SK_Scalar1 / 4 : 0); + void apply(SkFont& font) { + font.setTypeface(typeface_); + font.setEmbolden(fake_bold_); + font.setSkewX(fake_italic_ ? -SK_Scalar1 / 4 : 0); } private: @@ -435,11 +436,10 @@ void Paragraph::Layout(double width, bool force) { if (!ComputeBidiRuns(&bidi_runs)) return; - SkPaint paint; - paint.setAntiAlias(true); - paint.setTextEncoding(SkPaint::kGlyphID_TextEncoding); - paint.setSubpixelText(true); - paint.setHinting(kSlight_SkFontHinting); + SkFont font; + font.setEdging(SkFont::Edging::kAntiAlias); + font.setSubpixel(true); + font.setHinting(kSlight_SkFontHinting); records_.clear(); line_heights_.clear(); @@ -507,10 +507,10 @@ void Paragraph::Layout(double width, bool force) { for (auto line_run_it = line_runs.begin(); line_run_it != line_runs.end(); ++line_run_it) { const BidiRun& run = *line_run_it; - minikin::FontStyle font; + minikin::FontStyle minikin_font; minikin::MinikinPaint minikin_paint; - GetFontAndMinikinPaint(run.style(), &font, &minikin_paint); - paint.setTextSize(run.style().font_size); + GetFontAndMinikinPaint(run.style(), &minikin_font, &minikin_paint); + font.setSize(run.style().font_size); std::shared_ptr minikin_font_collection = GetMinikinFontCollectionForStyle(run.style()); @@ -531,13 +531,14 @@ void Paragraph::Layout(double width, bool force) { paragraph_style_.unlimited_lines())) { float ellipsis_width = layout.measureText( reinterpret_cast(ellipsis.data()), 0, - ellipsis.length(), ellipsis.length(), run.is_rtl(), font, + ellipsis.length(), ellipsis.length(), run.is_rtl(), minikin_font, minikin_paint, minikin_font_collection, nullptr); std::vector text_advances(text_count); - float text_width = layout.measureText( - text_ptr, text_start, text_count, text_.size(), run.is_rtl(), font, - minikin_paint, minikin_font_collection, text_advances.data()); + float text_width = + layout.measureText(text_ptr, text_start, text_count, text_.size(), + run.is_rtl(), minikin_font, minikin_paint, + minikin_font_collection, text_advances.data()); // Truncate characters from the text until the ellipsis fits. size_t truncate_count = 0; @@ -568,7 +569,7 @@ void Paragraph::Layout(double width, bool force) { } layout.doLayout(text_ptr, text_start, text_count, text_size, run.is_rtl(), - font, minikin_paint, minikin_font_collection); + minikin_font, minikin_paint, minikin_font_collection); if (layout.nGlyphs() == 0) continue; @@ -585,9 +586,9 @@ void Paragraph::Layout(double width, bool force) { for (const Range& glyph_blob : glyph_blobs) { std::vector glyph_positions; - GetGlyphTypeface(layout, glyph_blob.start).apply(paint); + GetGlyphTypeface(layout, glyph_blob.start).apply(font); const SkTextBlobBuilder::RunBuffer& blob_buffer = - builder.allocRunPos(paint, glyph_blob.end - glyph_blob.start); + builder.allocRunPos(font, glyph_blob.end - glyph_blob.start); for (size_t glyph_index = glyph_blob.start; glyph_index < glyph_blob.end;) { @@ -687,7 +688,7 @@ void Paragraph::Layout(double width, bool force) { if (glyph_positions.empty()) continue; SkFontMetrics metrics; - paint.getFontMetrics(&metrics); + font.getMetrics(&metrics); paint_records.emplace_back(run.style(), SkPoint::Make(run_x_offset, 0), builder.make(), metrics, line_number, layout.getAdvance()); @@ -770,9 +771,9 @@ void Paragraph::Layout(double width, bool force) { if (paint_records.empty()) { SkFontMetrics metrics; TextStyle style(paragraph_style_.GetTextStyle()); - paint.setTypeface(GetDefaultSkiaTypeface(style)); - paint.setTextSize(style.font_size); - paint.getFontMetrics(&metrics); + font.setTypeface(GetDefaultSkiaTypeface(style)); + font.setSize(style.font_size); + font.getMetrics(&metrics); update_line_metrics(metrics, style); } From bd4b7a5ba36750a6744badf808cb6fc7604b975f Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Wed, 28 Nov 2018 11:04:31 -0500 Subject: [PATCH 0341/1537] Roll src/third_party/skia d437c79ed036..46c774aa54ad (1 commits) (#6983) https://skia.googlesource.com/skia.git/+log/d437c79ed036..46c774aa54ad Created with: gclient setdep -r src/third_party/skia@46c774aa54ad The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index 04e0259aa4369..6e79c3573d24e 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'd437c79ed0369ea29a436dc2a6fb3edfffdadbd3', + 'skia_revision': '46c774aa54ad4a8e6634aec83fc3a7fc028845f7', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the From 3055b47b71dabb2cba27a48cdf3aac1db4de091f Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Wed, 28 Nov 2018 11:19:42 -0500 Subject: [PATCH 0342/1537] Roll src/third_party/skia 46c774aa54ad..fc614f11791f (1 commits) (#6984) https://skia.googlesource.com/skia.git/+log/46c774aa54ad..fc614f11791f Created with: gclient setdep -r src/third_party/skia@fc614f11791f The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index 6e79c3573d24e..abdaa1c64aeed 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '46c774aa54ad4a8e6634aec83fc3a7fc028845f7', + 'skia_revision': 'fc614f11791f39c627cb9f02a8b8aec8e67fcf91', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the From 71efaeec218b03d8974ecc3d45c3998267b2ff0b Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Wed, 28 Nov 2018 11:41:59 -0500 Subject: [PATCH 0343/1537] Roll src/third_party/skia fc614f11791f..ac1abd29ccc0 (4 commits) (#6986) https://skia.googlesource.com/skia.git/+log/fc614f11791f..ac1abd29ccc0 Created with: gclient setdep -r src/third_party/skia@ac1abd29ccc0 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index abdaa1c64aeed..9c35890ee746c 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'fc614f11791f39c627cb9f02a8b8aec8e67fcf91', + 'skia_revision': 'ac1abd29ccc038d47fd3cae4b91833674cd0b709', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 6ae5f4f98b762..fbaa9127c7b65 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 8c92c134752768886369543884a4ccd2 +Signature: 07528733e9b8df7fd1dabc43a29c7f9c UNUSED LICENSES: From 6ea7fd06863a007f495a2cc82dfca1e3076f510b Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Wed, 28 Nov 2018 12:18:38 -0500 Subject: [PATCH 0344/1537] Roll src/third_party/skia ac1abd29ccc0..0aed7ea30152 (1 commits) (#6987) https://skia.googlesource.com/skia.git/+log/ac1abd29ccc0..0aed7ea30152 Created with: gclient setdep -r src/third_party/skia@0aed7ea30152 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 9c35890ee746c..fcfd815d3c6c3 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'ac1abd29ccc038d47fd3cae4b91833674cd0b709', + 'skia_revision': '0aed7ea30152fc2d6a3255d8221c7740f9357d8d', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index fbaa9127c7b65..4574091ff2869 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 07528733e9b8df7fd1dabc43a29c7f9c +Signature: 82c09eff3e2f5bc22ee71033cafd5c18 UNUSED LICENSES: From b40265d093f750a4819255eb138f3ffca7e27b68 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Wed, 28 Nov 2018 12:39:18 -0500 Subject: [PATCH 0345/1537] Roll src/third_party/skia 0aed7ea30152..ef4047db96ec (2 commits) (#6988) https://skia.googlesource.com/skia.git/+log/0aed7ea30152..ef4047db96ec Created with: gclient setdep -r src/third_party/skia@ef4047db96ec The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index fcfd815d3c6c3..d652f492a67ca 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '0aed7ea30152fc2d6a3255d8221c7740f9357d8d', + 'skia_revision': 'ef4047db96ec353bb3b2e5b61a163f578b9bedaa', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 4574091ff2869..16d80000bd0db 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 82c09eff3e2f5bc22ee71033cafd5c18 +Signature: fb6f93a7b805b671e1f99a30d7ab23be UNUSED LICENSES: From 1f7e1da70206583ca0db21a1c0275c31a83023fe Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Wed, 28 Nov 2018 13:04:26 -0500 Subject: [PATCH 0346/1537] Roll src/third_party/skia ef4047db96ec..8061053b73e2 (1 commits) (#6990) https://skia.googlesource.com/skia.git/+log/ef4047db96ec..8061053b73e2 Created with: gclient setdep -r src/third_party/skia@8061053b73e2 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index d652f492a67ca..97c0d73bdd350 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'ef4047db96ec353bb3b2e5b61a163f578b9bedaa', + 'skia_revision': '8061053b73e217b648d33e0da09d9cb3725b6ae3', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 16d80000bd0db..71cebe4d54487 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: fb6f93a7b805b671e1f99a30d7ab23be +Signature: 943cb067d50f317ac23a27ce3142f9be UNUSED LICENSES: From c55ff62bad6a872c44e68360438fdcb075ac90e1 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Wed, 28 Nov 2018 13:45:23 -0500 Subject: [PATCH 0347/1537] Roll src/third_party/skia 8061053b73e2..f98d8c9b5387 (1 commits) (#6992) https://skia.googlesource.com/skia.git/+log/8061053b73e2..f98d8c9b5387 Created with: gclient setdep -r src/third_party/skia@f98d8c9b5387 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 97c0d73bdd350..7f12d7aeef162 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '8061053b73e217b648d33e0da09d9cb3725b6ae3', + 'skia_revision': 'f98d8c9b53870a68fbd3dfde2144676cdb1a5ae8', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 71cebe4d54487..e47236a79f0f6 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 943cb067d50f317ac23a27ce3142f9be +Signature: c3588e350d69a94f581343c93fbc4fff UNUSED LICENSES: From 62ae5545d834725c8bac23a513de04ddc6774511 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Wed, 28 Nov 2018 14:10:28 -0500 Subject: [PATCH 0348/1537] Roll src/third_party/skia f98d8c9b5387..c8f6ab3885a0 (1 commits) (#6993) https://skia.googlesource.com/skia.git/+log/f98d8c9b5387..c8f6ab3885a0 Created with: gclient setdep -r src/third_party/skia@c8f6ab3885a0 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 7f12d7aeef162..aba7e40c2d2e4 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'f98d8c9b53870a68fbd3dfde2144676cdb1a5ae8', + 'skia_revision': 'c8f6ab3885a0b0c4c5e83cde6674280d2edf9388', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index e47236a79f0f6..d65c4e2fa26dc 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: c3588e350d69a94f581343c93fbc4fff +Signature: 2aa6a61eaea44ed1da04eebca592b69c UNUSED LICENSES: From 7e037553703d20ca52998730651b3df00c020dcf Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Wed, 28 Nov 2018 14:30:58 -0500 Subject: [PATCH 0349/1537] Roll src/third_party/skia c8f6ab3885a0..d3c92d9a368b (3 commits) (#6994) https://skia.googlesource.com/skia.git/+log/c8f6ab3885a0..d3c92d9a368b Created with: gclient setdep -r src/third_party/skia@d3c92d9a368b The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index aba7e40c2d2e4..0bc85861395e3 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'c8f6ab3885a0b0c4c5e83cde6674280d2edf9388', + 'skia_revision': 'd3c92d9a368be2d1f592bef4e65727721fc3ecf8', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index d65c4e2fa26dc..d7a00fbeb2834 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 2aa6a61eaea44ed1da04eebca592b69c +Signature: f06e788414c61e8282cc2de166a94e49 UNUSED LICENSES: @@ -1312,6 +1312,7 @@ FILE: ../../../third_party/skia/gm/crbug_887103.cpp FILE: ../../../third_party/skia/gm/crbug_892988.cpp FILE: ../../../third_party/skia/gm/crbug_899512.cpp FILE: ../../../third_party/skia/gm/drawimageset.cpp +FILE: ../../../third_party/skia/gm/drawquadset.cpp FILE: ../../../third_party/skia/gm/fwidth_squircle.cpp FILE: ../../../third_party/skia/gm/gradients_degenerate.cpp FILE: ../../../third_party/skia/gm/hugepath.cpp @@ -1597,6 +1598,8 @@ FILE: ../../../third_party/skia/src/gpu/ops/GrClearStencilClipOp.cpp FILE: ../../../third_party/skia/src/gpu/ops/GrDebugMarkerOp.cpp FILE: ../../../third_party/skia/src/gpu/ops/GrDrawableOp.cpp FILE: ../../../third_party/skia/src/gpu/ops/GrDrawableOp.h +FILE: ../../../third_party/skia/src/gpu/ops/GrFillRectOp.cpp +FILE: ../../../third_party/skia/src/gpu/ops/GrFillRectOp.h FILE: ../../../third_party/skia/src/gpu/ops/GrQuadPerEdgeAA.cpp FILE: ../../../third_party/skia/src/gpu/ops/GrQuadPerEdgeAA.h FILE: ../../../third_party/skia/src/gpu/text/GrAtlasManager.cpp From 2bcbe6ecb9a62f31ff964789f6e29b167a4d73cd Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Wed, 28 Nov 2018 14:53:08 -0500 Subject: [PATCH 0350/1537] Roll src/third_party/skia d3c92d9a368b..85e22fc3618c (1 commits) (#6996) https://skia.googlesource.com/skia.git/+log/d3c92d9a368b..85e22fc3618c Created with: gclient setdep -r src/third_party/skia@85e22fc3618c The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 0bc85861395e3..96d983f2dc95e 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'd3c92d9a368be2d1f592bef4e65727721fc3ecf8', + 'skia_revision': '85e22fc3618cae0e8597a9cd6a55dafaa55fb60f', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index d7a00fbeb2834..f700f363b89de 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: f06e788414c61e8282cc2de166a94e49 +Signature: fecc4729b6a44c4e9f75b3c8e1e4d201 UNUSED LICENSES: From 74e3edf036b032f24bd7032db14b935b0484ca93 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Wed, 28 Nov 2018 15:19:06 -0500 Subject: [PATCH 0351/1537] Roll src/third_party/skia 85e22fc3618c..1a2476d29456 (1 commits) (#6997) https://skia.googlesource.com/skia.git/+log/85e22fc3618c..1a2476d29456 Created with: gclient setdep -r src/third_party/skia@1a2476d29456 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 5 +---- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/DEPS b/DEPS index 96d983f2dc95e..89b5136b677a9 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '85e22fc3618cae0e8597a9cd6a55dafaa55fb60f', + 'skia_revision': '1a2476d2945654e40861292f778090fa04b3c267', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index f700f363b89de..c9b6f2f404f2a 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: fecc4729b6a44c4e9f75b3c8e1e4d201 +Signature: a546138721f08f3c9ff08d9bb92f27f8 UNUSED LICENSES: @@ -1312,7 +1312,6 @@ FILE: ../../../third_party/skia/gm/crbug_887103.cpp FILE: ../../../third_party/skia/gm/crbug_892988.cpp FILE: ../../../third_party/skia/gm/crbug_899512.cpp FILE: ../../../third_party/skia/gm/drawimageset.cpp -FILE: ../../../third_party/skia/gm/drawquadset.cpp FILE: ../../../third_party/skia/gm/fwidth_squircle.cpp FILE: ../../../third_party/skia/gm/gradients_degenerate.cpp FILE: ../../../third_party/skia/gm/hugepath.cpp @@ -1598,8 +1597,6 @@ FILE: ../../../third_party/skia/src/gpu/ops/GrClearStencilClipOp.cpp FILE: ../../../third_party/skia/src/gpu/ops/GrDebugMarkerOp.cpp FILE: ../../../third_party/skia/src/gpu/ops/GrDrawableOp.cpp FILE: ../../../third_party/skia/src/gpu/ops/GrDrawableOp.h -FILE: ../../../third_party/skia/src/gpu/ops/GrFillRectOp.cpp -FILE: ../../../third_party/skia/src/gpu/ops/GrFillRectOp.h FILE: ../../../third_party/skia/src/gpu/ops/GrQuadPerEdgeAA.cpp FILE: ../../../third_party/skia/src/gpu/ops/GrQuadPerEdgeAA.h FILE: ../../../third_party/skia/src/gpu/text/GrAtlasManager.cpp From b74a96212409ae10259ee67542d953482f32ca53 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Wed, 28 Nov 2018 15:50:39 -0500 Subject: [PATCH 0352/1537] Roll src/third_party/skia 1a2476d29456..c33ec9f8c41f (1 commits) (#6998) https://skia.googlesource.com/skia.git/+log/1a2476d29456..c33ec9f8c41f Created with: gclient setdep -r src/third_party/skia@c33ec9f8c41f The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 89b5136b677a9..fb831a344b592 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '1a2476d2945654e40861292f778090fa04b3c267', + 'skia_revision': 'c33ec9f8c41fcbeca55680dea1fce2c9f530aeb8', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index c9b6f2f404f2a..5936acaaa7b4c 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: a546138721f08f3c9ff08d9bb92f27f8 +Signature: 029da82e5eac941f4bd88f61b9d46153 UNUSED LICENSES: From 72c7a7567228cdaf8b7aa4a9e3d212ef9d4cc0ed Mon Sep 17 00:00:00 2001 From: Gary Qian Date: Wed, 28 Nov 2018 12:59:57 -0800 Subject: [PATCH 0353/1537] Prepend [NSLocale currentLocale] for first locale on iOS to ensure countryCode exists. Allow language-only locales. (#6995) --- .../framework/Source/FlutterViewController.mm | 25 ++++++++++++++++--- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm b/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm index 544bad0365d96..5a367bdeae6e1 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm @@ -748,18 +748,35 @@ - (void)onMemoryWarning:(NSNotification*)notification { - (void)onLocaleUpdated:(NSNotification*)notification { NSArray* preferredLocales = [NSLocale preferredLanguages]; - NSMutableArray* data = [NSMutableArray new]; + NSMutableArray* data = [[NSMutableArray new] autorelease]; + + // Force prepend the [NSLocale currentLocale] to the front of the list + // to ensure we are including the full default locale. preferredLocales + // is not guaranteed to include anything beyond the languageCode. + NSLocale* currentLocale = [NSLocale currentLocale]; + NSString* languageCode = [currentLocale objectForKey:NSLocaleLanguageCode]; + NSString* countryCode = [currentLocale objectForKey:NSLocaleCountryCode]; + NSString* scriptCode = [currentLocale objectForKey:NSLocaleScriptCode]; + NSString* variantCode = [currentLocale objectForKey:NSLocaleVariantCode]; + if (languageCode) { + [data addObject:languageCode]; + [data addObject:(countryCode ? countryCode : @"")]; + [data addObject:(scriptCode ? scriptCode : @"")]; + [data addObject:(variantCode ? variantCode : @"")]; + } + + // Add any secondary locales/languages to the list. for (NSString* localeID in preferredLocales) { - NSLocale* currentLocale = [[NSLocale alloc] initWithLocaleIdentifier:localeID]; + NSLocale* currentLocale = [[[NSLocale alloc] initWithLocaleIdentifier:localeID] autorelease]; NSString* languageCode = [currentLocale objectForKey:NSLocaleLanguageCode]; NSString* countryCode = [currentLocale objectForKey:NSLocaleCountryCode]; NSString* scriptCode = [currentLocale objectForKey:NSLocaleScriptCode]; NSString* variantCode = [currentLocale objectForKey:NSLocaleVariantCode]; - if (!languageCode || !countryCode) { + if (!languageCode) { continue; } [data addObject:languageCode]; - [data addObject:countryCode]; + [data addObject:(countryCode ? countryCode : @"")]; [data addObject:(scriptCode ? scriptCode : @"")]; [data addObject:(variantCode ? variantCode : @"")]; } From 4ab2d47705301dea0987bcce9912d34b55faab96 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Wed, 28 Nov 2018 16:16:30 -0500 Subject: [PATCH 0354/1537] Roll src/third_party/skia c33ec9f8c41f..43ff69a83fdf (4 commits) (#6999) https://skia.googlesource.com/skia.git/+log/c33ec9f8c41f..43ff69a83fdf Created with: gclient setdep -r src/third_party/skia@43ff69a83fdf The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index fb831a344b592..30d90fa1d80fe 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'c33ec9f8c41fcbeca55680dea1fce2c9f530aeb8', + 'skia_revision': '43ff69a83fdfb6b613010cc94b9eac8e7d817c4d', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 5936acaaa7b4c..66469a605796d 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 029da82e5eac941f4bd88f61b9d46153 +Signature: 100a841b1ef21649596f571e7c97b413 UNUSED LICENSES: @@ -1312,6 +1312,7 @@ FILE: ../../../third_party/skia/gm/crbug_887103.cpp FILE: ../../../third_party/skia/gm/crbug_892988.cpp FILE: ../../../third_party/skia/gm/crbug_899512.cpp FILE: ../../../third_party/skia/gm/drawimageset.cpp +FILE: ../../../third_party/skia/gm/drawquadset.cpp FILE: ../../../third_party/skia/gm/fwidth_squircle.cpp FILE: ../../../third_party/skia/gm/gradients_degenerate.cpp FILE: ../../../third_party/skia/gm/hugepath.cpp @@ -1597,6 +1598,8 @@ FILE: ../../../third_party/skia/src/gpu/ops/GrClearStencilClipOp.cpp FILE: ../../../third_party/skia/src/gpu/ops/GrDebugMarkerOp.cpp FILE: ../../../third_party/skia/src/gpu/ops/GrDrawableOp.cpp FILE: ../../../third_party/skia/src/gpu/ops/GrDrawableOp.h +FILE: ../../../third_party/skia/src/gpu/ops/GrFillRectOp.cpp +FILE: ../../../third_party/skia/src/gpu/ops/GrFillRectOp.h FILE: ../../../third_party/skia/src/gpu/ops/GrQuadPerEdgeAA.cpp FILE: ../../../third_party/skia/src/gpu/ops/GrQuadPerEdgeAA.h FILE: ../../../third_party/skia/src/gpu/text/GrAtlasManager.cpp From fc054666881c232db2211e79d9255205f4f64f15 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Wed, 28 Nov 2018 16:38:48 -0500 Subject: [PATCH 0355/1537] Roll src/third_party/skia 43ff69a83fdf..2d4f7cbdccc6 (1 commits) (#7000) https://skia.googlesource.com/skia.git/+log/43ff69a83fdf..2d4f7cbdccc6 Created with: gclient setdep -r src/third_party/skia@2d4f7cbdccc6 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 30d90fa1d80fe..7cdb2b5a7eff4 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '43ff69a83fdfb6b613010cc94b9eac8e7d817c4d', + 'skia_revision': '2d4f7cbdccc6d4d20423d5f5a6f644c5cf200d3b', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 66469a605796d..b616ad4f43e46 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 100a841b1ef21649596f571e7c97b413 +Signature: 397b4d8bd6843083b07af565e2d73a02 UNUSED LICENSES: From 93f75f283a473b947fee6a2e04dd94cb40b0945d Mon Sep 17 00:00:00 2001 From: Chinmay Garde Date: Wed, 28 Nov 2018 15:31:16 -0800 Subject: [PATCH 0356/1537] Don't provide system vulkan header paths to Skia. (#7003) Skia privately brings in its own copy. https://skia-review.googlesource.com/c/skia/+/172147 --- tools/gn | 1 - 1 file changed, 1 deletion(-) diff --git a/tools/gn b/tools/gn index 4b4c5960b59af..7bc0fafca87b6 100755 --- a/tools/gn +++ b/tools/gn @@ -209,7 +209,6 @@ def to_gn_args(args): gn_args['shell_enable_vulkan'] = True # Configure Skia for Vulkan support. gn_args['skia_use_vulkan'] = True - gn_args['skia_vulkan_header'] = "flutter/vulkan/skia_vulkan_header.h" # We should not need a special case for x86, but this seems to introduce text relocations # even with -fPIC everywhere. From 0665d497e9cc6faee2924a2c452daa9b2d1214b9 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Wed, 28 Nov 2018 18:57:38 -0500 Subject: [PATCH 0357/1537] Roll src/third_party/skia 2d4f7cbdccc6..22619c2e1a6d (2 commits) (#7004) https://skia.googlesource.com/skia.git/+log/2d4f7cbdccc6..22619c2e1a6d Created with: gclient setdep -r src/third_party/skia@22619c2e1a6d The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 7cdb2b5a7eff4..14ef8559de1d8 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '2d4f7cbdccc6d4d20423d5f5a6f644c5cf200d3b', + 'skia_revision': '22619c2e1a6d885f397e90ec17f1d6d6650218e9', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index b616ad4f43e46..e363b3ded3b97 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 397b4d8bd6843083b07af565e2d73a02 +Signature: 08989b1da80c6ba0d3f967c6d0e915f5 UNUSED LICENSES: From dc1ef3f8c60bbad29ebeca073aa75c91b80fdcd7 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Wed, 28 Nov 2018 21:15:33 -0500 Subject: [PATCH 0358/1537] Roll src/third_party/skia 22619c2e1a6d..1c6c6a5919e3 (1 commits) (#7005) https://skia.googlesource.com/skia.git/+log/22619c2e1a6d..1c6c6a5919e3 Created with: gclient setdep -r src/third_party/skia@1c6c6a5919e3 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 14ef8559de1d8..1b7c8ed885929 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '22619c2e1a6d885f397e90ec17f1d6d6650218e9', + 'skia_revision': '1c6c6a5919e39d3584677d1a71edb564679c4e6c', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index e363b3ded3b97..04476b78cddd1 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 08989b1da80c6ba0d3f967c6d0e915f5 +Signature: b2cc9c8ba7a7fe0d539bb5a2bac142d7 UNUSED LICENSES: From 9c7680c21f4f21429fee6a1f8ff3fb7dc83ca3ab Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Wed, 28 Nov 2018 22:08:38 -0500 Subject: [PATCH 0359/1537] Roll src/third_party/skia 1c6c6a5919e3..de533a4a9657 (1 commits) (#7006) https://skia.googlesource.com/skia.git/+log/1c6c6a5919e3..de533a4a9657 Created with: gclient setdep -r src/third_party/skia@de533a4a9657 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 1b7c8ed885929..11038c970250f 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '1c6c6a5919e39d3584677d1a71edb564679c4e6c', + 'skia_revision': 'de533a4a9657ae5f25622cc17607bc402e9928ea', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 04476b78cddd1..2a465ff59f829 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: b2cc9c8ba7a7fe0d539bb5a2bac142d7 +Signature: e54d0687f6957b00c623631131bc555d UNUSED LICENSES: From f4ce03be479a454fd869e396598b94e95eea916c Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Wed, 28 Nov 2018 23:59:16 -0500 Subject: [PATCH 0360/1537] Roll src/third_party/skia de533a4a9657..0113b4085f5a (1 commits) (#7007) https://skia.googlesource.com/skia.git/+log/de533a4a9657..0113b4085f5a Created with: gclient setdep -r src/third_party/skia@0113b4085f5a The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 11038c970250f..d6dc2d6e99ff5 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'de533a4a9657ae5f25622cc17607bc402e9928ea', + 'skia_revision': '0113b4085f5a935e98dd786745d5d734c3028225', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 2a465ff59f829..abeb1da559251 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: e54d0687f6957b00c623631131bc555d +Signature: 01c63c72a4e190856c48e2977eb90527 UNUSED LICENSES: From 0e4f9f3b4703f43edb735b00ff271f6566c68a04 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Thu, 29 Nov 2018 01:18:32 -0500 Subject: [PATCH 0361/1537] Roll src/third_party/skia 0113b4085f5a..a81526783381 (1 commits) (#7008) https://skia.googlesource.com/skia.git/+log/0113b4085f5a..a81526783381 Created with: gclient setdep -r src/third_party/skia@a81526783381 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index d6dc2d6e99ff5..2733794221931 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '0113b4085f5a935e98dd786745d5d734c3028225', + 'skia_revision': 'a81526783381ce00b02cf4ba5e66990270749a87', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index abeb1da559251..f51c35411e788 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 01c63c72a4e190856c48e2977eb90527 +Signature: baf5060cba143378d653f58faad58d5a UNUSED LICENSES: From 692cedbaad57557dcc528aceede51120af8f9f80 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Thu, 29 Nov 2018 01:49:59 -0500 Subject: [PATCH 0362/1537] Roll src/third_party/skia a81526783381..275e8750e3d2 (1 commits) (#7010) https://skia.googlesource.com/skia.git/+log/a81526783381..275e8750e3d2 Created with: gclient setdep -r src/third_party/skia@275e8750e3d2 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index 2733794221931..9d34c5c2dcaf5 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'a81526783381ce00b02cf4ba5e66990270749a87', + 'skia_revision': '275e8750e3d2b5793b8b0b052c8f3a92a5bda2e9', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the From 59f42ee8a8d3d1dcbd8c1c14e3d55307402b9cd9 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Thu, 29 Nov 2018 06:05:04 -0500 Subject: [PATCH 0363/1537] Roll src/third_party/skia 275e8750e3d2..e6305f38b584 (1 commits) (#7013) https://skia.googlesource.com/skia.git/+log/275e8750e3d2..e6305f38b584 Created with: gclient setdep -r src/third_party/skia@e6305f38b584 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 9d34c5c2dcaf5..3a1ea7577e0ea 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '275e8750e3d2b5793b8b0b052c8f3a92a5bda2e9', + 'skia_revision': 'e6305f38b584ac51368a98de6a76d3f3205c21bf', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index f51c35411e788..7b826b3251b72 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: baf5060cba143378d653f58faad58d5a +Signature: 86f3b48c007419be76c9cb0939a382f5 UNUSED LICENSES: From 0491c30baeef5879e02926c82129015f20540f14 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Thu, 29 Nov 2018 08:20:36 -0500 Subject: [PATCH 0364/1537] Roll src/third_party/skia e6305f38b584..6f0778819654 (1 commits) (#7014) https://skia.googlesource.com/skia.git/+log/e6305f38b584..6f0778819654 Created with: gclient setdep -r src/third_party/skia@6f0778819654 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 3a1ea7577e0ea..5d3d9d5ea5c24 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'e6305f38b584ac51368a98de6a76d3f3205c21bf', + 'skia_revision': '6f0778819654704748934fefea2308c154d88700', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 7b826b3251b72..84b07b7c4edb7 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 86f3b48c007419be76c9cb0939a382f5 +Signature: 4b67853cb9e8d461498c6572d0f16d7f UNUSED LICENSES: From 4f71adea640ec57d71e4ca485774303903fbc7a8 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Thu, 29 Nov 2018 08:55:31 -0500 Subject: [PATCH 0365/1537] Roll src/third_party/skia 6f0778819654..4f60e540e7b4 (1 commits) (#7015) https://skia.googlesource.com/skia.git/+log/6f0778819654..4f60e540e7b4 Created with: gclient setdep -r src/third_party/skia@4f60e540e7b4 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 5d3d9d5ea5c24..ff5de6b8680e3 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '6f0778819654704748934fefea2308c154d88700', + 'skia_revision': '4f60e540e7b47b3e9df3eb838ae0facea31840dd', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 84b07b7c4edb7..c07f92d683520 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 4b67853cb9e8d461498c6572d0f16d7f +Signature: 5a4002698007159685f3295d59335c7a UNUSED LICENSES: From 18fde6ba5d2dd96467aa28fd5a2396a4afe46b34 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Thu, 29 Nov 2018 09:52:42 -0500 Subject: [PATCH 0366/1537] Roll src/third_party/skia 4f60e540e7b4..d058b183e3fd (1 commits) (#7016) https://skia.googlesource.com/skia.git/+log/4f60e540e7b4..d058b183e3fd Created with: gclient setdep -r src/third_party/skia@d058b183e3fd The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index ff5de6b8680e3..f66caf06cd46e 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '4f60e540e7b47b3e9df3eb838ae0facea31840dd', + 'skia_revision': 'd058b183e3fdb0af87c9b681e09d7f31755099fc', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index c07f92d683520..bfb61396b7c40 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 5a4002698007159685f3295d59335c7a +Signature: a2ae66ec6d41c264bc08928ef7878b94 UNUSED LICENSES: From 80fca25febd0bc3778bc6f1740ad91d15449e0aa Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Thu, 29 Nov 2018 11:40:40 -0500 Subject: [PATCH 0367/1537] Roll src/third_party/skia d058b183e3fd..114402087161 (1 commits) (#7017) https://skia.googlesource.com/skia.git/+log/d058b183e3fd..114402087161 Created with: gclient setdep -r src/third_party/skia@114402087161 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index f66caf06cd46e..25dea594f5c7d 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'd058b183e3fdb0af87c9b681e09d7f31755099fc', + 'skia_revision': '114402087161092828ab5b983284c48166350e04', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index bfb61396b7c40..d6fa5314b2294 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: a2ae66ec6d41c264bc08928ef7878b94 +Signature: d24ffa532f3745b460ceed8e333fc88c UNUSED LICENSES: From a40367103616cc07d39f3a42ea923759699e2e8b Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Thu, 29 Nov 2018 12:33:51 -0500 Subject: [PATCH 0368/1537] Roll src/third_party/skia 114402087161..c2e85f942ff9 (1 commits) (#7018) https://skia.googlesource.com/skia.git/+log/114402087161..c2e85f942ff9 Created with: gclient setdep -r src/third_party/skia@c2e85f942ff9 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 25dea594f5c7d..b96173a49002a 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '114402087161092828ab5b983284c48166350e04', + 'skia_revision': 'c2e85f942ff9d9fc6ead20fe08c53f43be2e73fe', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index d6fa5314b2294..669e19001c603 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: d24ffa532f3745b460ceed8e333fc88c +Signature: a9df2c124a7d660486ff477a2e8c79c8 UNUSED LICENSES: From c47a74924b99d2da0f6dc7a41049401a439fb6d4 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Thu, 29 Nov 2018 13:39:51 -0500 Subject: [PATCH 0369/1537] Roll src/third_party/skia c2e85f942ff9..cb6bef0ad50a (1 commits) (#7019) https://skia.googlesource.com/skia.git/+log/c2e85f942ff9..cb6bef0ad50a Created with: gclient setdep -r src/third_party/skia@cb6bef0ad50a The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index b96173a49002a..1c4cfaf7155e0 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'c2e85f942ff9d9fc6ead20fe08c53f43be2e73fe', + 'skia_revision': 'cb6bef0ad50ae1cacbe572b269c555a65c0cb5b7', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 669e19001c603..47c9081ada59b 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: a9df2c124a7d660486ff477a2e8c79c8 +Signature: 1e6ce7516f8e25f068a45521f2dece16 UNUSED LICENSES: @@ -2006,6 +2006,7 @@ FILE: ../../../third_party/skia/docs/SkColor_Reference.bmh FILE: ../../../third_party/skia/docs/SkDynamicMemoryWStream_Reference.bmh FILE: ../../../third_party/skia/docs/SkFILEStream_Reference.bmh FILE: ../../../third_party/skia/docs/SkFILEWStream_Reference.bmh +FILE: ../../../third_party/skia/docs/SkFont_Reference.bmh FILE: ../../../third_party/skia/docs/SkIPoint_Reference.bmh FILE: ../../../third_party/skia/docs/SkIRect_Reference.bmh FILE: ../../../third_party/skia/docs/SkImageInfo_Reference.bmh From 15611d011172080c6ff74e8d61bd8a6952527d4c Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Thu, 29 Nov 2018 14:04:19 -0500 Subject: [PATCH 0370/1537] Roll src/third_party/skia cb6bef0ad50a..23fbefecfda3 (1 commits) (#7020) https://skia.googlesource.com/skia.git/+log/cb6bef0ad50a..23fbefecfda3 Created with: gclient setdep -r src/third_party/skia@23fbefecfda3 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 1c4cfaf7155e0..9cb9281bddcb6 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'cb6bef0ad50ae1cacbe572b269c555a65c0cb5b7', + 'skia_revision': '23fbefecfda30a678ee3c40fc93cb12ad7d6b410', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 47c9081ada59b..e72b3e2a66068 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 1e6ce7516f8e25f068a45521f2dece16 +Signature: 7883691d91974e055ad611178ffe22ca UNUSED LICENSES: From 8214f004025bcffe21e87510be424f93373e14d6 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Thu, 29 Nov 2018 14:25:55 -0500 Subject: [PATCH 0371/1537] Roll src/third_party/skia 23fbefecfda3..f3841931ef5f (3 commits) (#7021) https://skia.googlesource.com/skia.git/+log/23fbefecfda3..f3841931ef5f Created with: gclient setdep -r src/third_party/skia@f3841931ef5f The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 9cb9281bddcb6..21307bcf7ab51 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '23fbefecfda30a678ee3c40fc93cb12ad7d6b410', + 'skia_revision': 'f3841931ef5f6e1636ce698fe06602d9db6fc5d4', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index e72b3e2a66068..01fedbdf3a572 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 7883691d91974e055ad611178ffe22ca +Signature: 6ca16576687b7d60e3311e97dc1498f3 UNUSED LICENSES: From fe4b5ccec332a061c0e7f1d276c494db23e4c0dd Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Thu, 29 Nov 2018 14:53:04 -0500 Subject: [PATCH 0372/1537] Roll src/third_party/skia f3841931ef5f..9e9723137f15 (1 commits) (#7022) https://skia.googlesource.com/skia.git/+log/f3841931ef5f..9e9723137f15 Created with: gclient setdep -r src/third_party/skia@9e9723137f15 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 21307bcf7ab51..fa26e8f74c555 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'f3841931ef5f6e1636ce698fe06602d9db6fc5d4', + 'skia_revision': '9e9723137f153a4673fa24d835111ba0867d1173', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 01fedbdf3a572..adf2bc1d897bc 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 6ca16576687b7d60e3311e97dc1498f3 +Signature: ae02ceac97edc60614e04308b7c91844 UNUSED LICENSES: From 90a7e80b429a7ad32ced992eadada9832eff6812 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Thu, 29 Nov 2018 15:14:42 -0500 Subject: [PATCH 0373/1537] Roll src/third_party/skia 9e9723137f15..ebc38c998c94 (4 commits) (#7023) https://skia.googlesource.com/skia.git/+log/9e9723137f15..ebc38c998c94 Created with: gclient setdep -r src/third_party/skia@ebc38c998c94 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index fa26e8f74c555..f4e7ac1ae5851 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '9e9723137f153a4673fa24d835111ba0867d1173', + 'skia_revision': 'ebc38c998c94eb855eb5763b2297139c8fd22933', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index adf2bc1d897bc..50d9f25f5dcfe 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: ae02ceac97edc60614e04308b7c91844 +Signature: 2c73fb94847c5c5be075b8e56d5a2d99 UNUSED LICENSES: From 05f4c44742173a57bb41e34ab4c5f1b679aeb003 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Thu, 29 Nov 2018 16:53:10 -0500 Subject: [PATCH 0374/1537] Roll src/third_party/skia ebc38c998c94..4f897d18736c (1 commits) (#7025) https://skia.googlesource.com/skia.git/+log/ebc38c998c94..4f897d18736c Created with: gclient setdep -r src/third_party/skia@4f897d18736c The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index f4e7ac1ae5851..ec565b41765d9 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'ebc38c998c94eb855eb5763b2297139c8fd22933', + 'skia_revision': '4f897d18736c57e3a404252bd61258d6290d184a', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 50d9f25f5dcfe..7fc11e9a12178 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 2c73fb94847c5c5be075b8e56d5a2d99 +Signature: a42bea10b2189ce163838af10d31d76d UNUSED LICENSES: From 7375a0f414bde4bc941e623482221db2fc8c4ab5 Mon Sep 17 00:00:00 2001 From: Todd Volkert Date: Thu, 29 Nov 2018 14:08:51 -0800 Subject: [PATCH 0375/1537] Roll Skia to 57d29eaf2ed7518983d9e91fd5219f4cfc181f88 (#7024) flutter/flutter#24402 flutter/flutter#24289 flutter/flutter#24517 --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 34a083e6f2d4c..cd4acaf5ed94b 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'bb37aba39910ef1a95cdcbb5b85d99cdabf3c362', + 'skia_revision': '57d29eaf2ed7518983d9e91fd5219f4cfc181f88', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 9082e899c9b5c..aba11c32d896e 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: dcef2b9d9d93b9b2ab1886efff54af73 +Signature: d3b07999cc854304c62d727819b592c0 UNUSED LICENSES: From 289fe32b3d2cc4c021e5401a54c1001c41893576 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Thu, 29 Nov 2018 17:20:20 -0500 Subject: [PATCH 0376/1537] Roll src/third_party/skia 4f897d18736c..f7b1e11cb39d (1 commits) (#7026) https://skia.googlesource.com/skia.git/+log/4f897d18736c..f7b1e11cb39d Created with: gclient setdep -r src/third_party/skia@f7b1e11cb39d The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index ec565b41765d9..a4b797030ba66 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '4f897d18736c57e3a404252bd61258d6290d184a', + 'skia_revision': 'f7b1e11cb39d4bd9ebb2dc82426130f36d3cfb2f', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 7fc11e9a12178..95d559c0e6c98 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: a42bea10b2189ce163838af10d31d76d +Signature: ae17457f63cd89f69fe03f8313cf406e UNUSED LICENSES: From c6f360faa75f1671e8c1519a48b600d0f3f6c8a8 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Thu, 29 Nov 2018 22:09:33 -0500 Subject: [PATCH 0377/1537] Roll src/third_party/skia f7b1e11cb39d..83144d96a118 (1 commits) (#7027) https://skia.googlesource.com/skia.git/+log/f7b1e11cb39d..83144d96a118 Created with: gclient setdep -r src/third_party/skia@83144d96a118 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index a4b797030ba66..1a6b631a25025 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'f7b1e11cb39d4bd9ebb2dc82426130f36d3cfb2f', + 'skia_revision': '83144d96a118b8ac31bdd85fdc932e4af290698b', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 95d559c0e6c98..23b8ee67d31c1 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: ae17457f63cd89f69fe03f8313cf406e +Signature: be5bf5f8f89e24c4a31687e48de6d2d5 UNUSED LICENSES: From aa3f42896d65c729e0673d569dede2c489f2a921 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Thu, 29 Nov 2018 23:07:23 -0500 Subject: [PATCH 0378/1537] Roll src/third_party/skia 83144d96a118..37cb47685f16 (1 commits) (#7028) https://skia.googlesource.com/skia.git/+log/83144d96a118..37cb47685f16 Created with: gclient setdep -r src/third_party/skia@37cb47685f16 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 1a6b631a25025..b8f928702f97c 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '83144d96a118b8ac31bdd85fdc932e4af290698b', + 'skia_revision': '37cb47685f16213a32743a0cf1669ab8788e976e', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 23b8ee67d31c1..11e6368e5a818 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: be5bf5f8f89e24c4a31687e48de6d2d5 +Signature: 2cb8fdebbf6258095e9f91b597f56c01 UNUSED LICENSES: From 52455ced2d18e950b68b4f810d0c387c067f8f0b Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Thu, 29 Nov 2018 23:48:29 -0500 Subject: [PATCH 0379/1537] Roll src/third_party/skia 37cb47685f16..2c8a9c871e28 (1 commits) (#7029) https://skia.googlesource.com/skia.git/+log/37cb47685f16..2c8a9c871e28 Created with: gclient setdep -r src/third_party/skia@2c8a9c871e28 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index b8f928702f97c..cff81d14dc37b 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '37cb47685f16213a32743a0cf1669ab8788e976e', + 'skia_revision': '2c8a9c871e28c241c700a1951c366e39e0b383c0', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 11e6368e5a818..7756fceb697e2 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 2cb8fdebbf6258095e9f91b597f56c01 +Signature: d5435d818900ebd51e43826665b98385 UNUSED LICENSES: From b6e1d863a349ddbd631615322cfff146e97bac7e Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Fri, 30 Nov 2018 01:13:00 -0500 Subject: [PATCH 0380/1537] Roll src/third_party/skia 2c8a9c871e28..62f64b5a05de (1 commits) (#7030) https://skia.googlesource.com/skia.git/+log/2c8a9c871e28..62f64b5a05de Created with: gclient setdep -r src/third_party/skia@62f64b5a05de The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index cff81d14dc37b..05d124f4b8763 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '2c8a9c871e28c241c700a1951c366e39e0b383c0', + 'skia_revision': '62f64b5a05de894eb50b3c7635f136b250380600', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 7756fceb697e2..a85c8c5e96a09 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: d5435d818900ebd51e43826665b98385 +Signature: f7ce0e3122e0630132b7889ea4aa993e UNUSED LICENSES: From 9f8f6900cef2c234acd0ee8dde362fe6b6b06b76 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Fri, 30 Nov 2018 08:26:10 -0500 Subject: [PATCH 0381/1537] Roll src/third_party/skia 62f64b5a05de..eb2f6b0adb64 (1 commits) (#7032) https://skia.googlesource.com/skia.git/+log/62f64b5a05de..eb2f6b0adb64 Created with: gclient setdep -r src/third_party/skia@eb2f6b0adb64 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 05d124f4b8763..9199badf47102 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '62f64b5a05de894eb50b3c7635f136b250380600', + 'skia_revision': 'eb2f6b0adb64433daab7476f40fdfaf2ff341022', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index a85c8c5e96a09..b56221a6ab22a 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: f7ce0e3122e0630132b7889ea4aa993e +Signature: cdfa759b86ae31a6e444da5e8f44bc57 UNUSED LICENSES: From 9a03978fafaff601718e54b64ada4f9f7948b09b Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Fri, 30 Nov 2018 11:01:35 -0500 Subject: [PATCH 0382/1537] Roll src/third_party/skia eb2f6b0adb64..42af49274f1e (1 commits) (#7033) https://skia.googlesource.com/skia.git/+log/eb2f6b0adb64..42af49274f1e Created with: gclient setdep -r src/third_party/skia@42af49274f1e The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 9199badf47102..fdaf814e5ff72 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'eb2f6b0adb64433daab7476f40fdfaf2ff341022', + 'skia_revision': '42af49274f1ef40a7144b4395f4a64fe9353f0b8', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index b56221a6ab22a..c5c56e851c4f9 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: cdfa759b86ae31a6e444da5e8f44bc57 +Signature: df10786f38ed38c015df6af0a232d9f9 UNUSED LICENSES: From 7561704998539f49a2a6632aa38184d77882c517 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Fri, 30 Nov 2018 11:24:27 -0500 Subject: [PATCH 0383/1537] Roll src/third_party/skia 42af49274f1e..c337a6322949 (1 commits) (#7034) https://skia.googlesource.com/skia.git/+log/42af49274f1e..c337a6322949 Created with: gclient setdep -r src/third_party/skia@c337a6322949 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index fdaf814e5ff72..5652b3c04c48c 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '42af49274f1ef40a7144b4395f4a64fe9353f0b8', + 'skia_revision': 'c337a6322949936da70bdd71adb1e5fa2e5eed80', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index c5c56e851c4f9..535fda871c093 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: df10786f38ed38c015df6af0a232d9f9 +Signature: 730629983c9f2fc386e943d1f389d1cc UNUSED LICENSES: From 7c9dff416d30eda5f2b60b9d6419e2c2b7416d17 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Fri, 30 Nov 2018 11:45:59 -0500 Subject: [PATCH 0384/1537] Roll src/third_party/skia c337a6322949..dfd9c7956630 (1 commits) (#7035) https://skia.googlesource.com/skia.git/+log/c337a6322949..dfd9c7956630 Created with: gclient setdep -r src/third_party/skia@dfd9c7956630 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 5652b3c04c48c..31e423f3b0fd7 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'c337a6322949936da70bdd71adb1e5fa2e5eed80', + 'skia_revision': 'dfd9c79566306f86bd2c69b0bba9a448f158da2d', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 535fda871c093..69ffd6d9fcffe 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 730629983c9f2fc386e943d1f389d1cc +Signature: 6ff8df89234dac194f6961eb6b9ea65b UNUSED LICENSES: From 12e1ee5f61ea7ff2caa7124e13d6caceeaf1e662 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Fri, 30 Nov 2018 12:11:30 -0500 Subject: [PATCH 0385/1537] Roll src/third_party/skia dfd9c7956630..0e5a0ef2abf0 (1 commits) (#7036) https://skia.googlesource.com/skia.git/+log/dfd9c7956630..0e5a0ef2abf0 Created with: gclient setdep -r src/third_party/skia@0e5a0ef2abf0 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 31e423f3b0fd7..12d08fe4ef498 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'dfd9c79566306f86bd2c69b0bba9a448f158da2d', + 'skia_revision': '0e5a0ef2abf0dae1c59aded9a95650f4dc16eff0', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 69ffd6d9fcffe..a10b38b0b6542 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 6ff8df89234dac194f6961eb6b9ea65b +Signature: 335a3c2c7875d58307c17897c217ce85 UNUSED LICENSES: From 66831ecb9f961e37b88c898061c009ae030effb6 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Fri, 30 Nov 2018 12:34:19 -0500 Subject: [PATCH 0386/1537] Roll src/third_party/skia 0e5a0ef2abf0..6d28cf3f8e32 (1 commits) (#7037) https://skia.googlesource.com/skia.git/+log/0e5a0ef2abf0..6d28cf3f8e32 Created with: gclient setdep -r src/third_party/skia@6d28cf3f8e32 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 12d08fe4ef498..27c4ec2b0511c 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '0e5a0ef2abf0dae1c59aded9a95650f4dc16eff0', + 'skia_revision': '6d28cf3f8e3217b22cd978e308a0190ef8bf60ae', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index a10b38b0b6542..34974200fcd7e 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 335a3c2c7875d58307c17897c217ce85 +Signature: d811be4a2354d1cfb48cb1b5e2360fed UNUSED LICENSES: From c3ba12a694e04d91888ebb359b52d88646653aee Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Fri, 30 Nov 2018 13:51:59 -0500 Subject: [PATCH 0387/1537] Roll src/third_party/skia 6d28cf3f8e32..20bd0f93f2ae (1 commits) (#7038) https://skia.googlesource.com/skia.git/+log/6d28cf3f8e32..20bd0f93f2ae Created with: gclient setdep -r src/third_party/skia@20bd0f93f2ae The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 27c4ec2b0511c..cdfc27c12a28d 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '6d28cf3f8e3217b22cd978e308a0190ef8bf60ae', + 'skia_revision': '20bd0f93f2aeb32dfb89d21985e04dba26da4a5f', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 34974200fcd7e..e9cfcc7da54e1 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: d811be4a2354d1cfb48cb1b5e2360fed +Signature: 1bb66e8ee8ec65fa72e61d7ce7041cfa UNUSED LICENSES: From 23c18f18319547864dfa9b2f0d57609766140da2 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Fri, 30 Nov 2018 14:34:54 -0500 Subject: [PATCH 0388/1537] Roll src/third_party/skia 20bd0f93f2ae..577aa0fbaf67 (5 commits) (#7040) https://skia.googlesource.com/skia.git/+log/20bd0f93f2ae..577aa0fbaf67 Created with: gclient setdep -r src/third_party/skia@577aa0fbaf67 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index cdfc27c12a28d..a82a8039d9747 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '20bd0f93f2aeb32dfb89d21985e04dba26da4a5f', + 'skia_revision': '577aa0fbaf67f81cd0004fa3186721cb2b60c85a', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index e9cfcc7da54e1..30af9cd53f8f2 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 1bb66e8ee8ec65fa72e61d7ce7041cfa +Signature: 168c1a0f38c8b115e562a85b62c26f81 UNUSED LICENSES: From 5bb68b43b342cdc05dfb792a1e5fa18bea3a330a Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Fri, 30 Nov 2018 14:59:28 -0500 Subject: [PATCH 0389/1537] Roll src/third_party/skia 577aa0fbaf67..ea905ec3337a (1 commits) (#7041) https://skia.googlesource.com/skia.git/+log/577aa0fbaf67..ea905ec3337a Created with: gclient setdep -r src/third_party/skia@ea905ec3337a The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index a82a8039d9747..984f08a7d61b9 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '577aa0fbaf67f81cd0004fa3186721cb2b60c85a', + 'skia_revision': 'ea905ec3337a7e5482eabba52ae0e95321c7914c', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 30af9cd53f8f2..1c3e0194ebef8 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 168c1a0f38c8b115e562a85b62c26f81 +Signature: 0f23addd78e2a2e90ff975f28a8474c2 UNUSED LICENSES: From 2b14f5b5e6c4b836b811eba51180f0923b428dc3 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Fri, 30 Nov 2018 15:39:36 -0500 Subject: [PATCH 0390/1537] Roll src/third_party/skia ea905ec3337a..e6dfe8e6f86e (1 commits) (#7042) https://skia.googlesource.com/skia.git/+log/ea905ec3337a..e6dfe8e6f86e Created with: gclient setdep -r src/third_party/skia@e6dfe8e6f86e The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index 984f08a7d61b9..f0a1679055b89 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'ea905ec3337a7e5482eabba52ae0e95321c7914c', + 'skia_revision': 'e6dfe8e6f86e933ee29989c1df96a1e3e06f9742', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the From 93b5e0b11958e1c7a4962482a4e069759cad843d Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Fri, 30 Nov 2018 16:01:00 -0500 Subject: [PATCH 0391/1537] Roll src/third_party/skia e6dfe8e6f86e..4b29d420420c (2 commits) (#7043) https://skia.googlesource.com/skia.git/+log/e6dfe8e6f86e..4b29d420420c Created with: gclient setdep -r src/third_party/skia@4b29d420420c The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index f0a1679055b89..23346ed1641b9 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'e6dfe8e6f86e933ee29989c1df96a1e3e06f9742', + 'skia_revision': '4b29d420420c39ed857daa308abd06f66f30c66a', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 1c3e0194ebef8..0379a5066b0ae 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 0f23addd78e2a2e90ff975f28a8474c2 +Signature: 90e0e654845137b06eb9b91bd5154ac4 UNUSED LICENSES: From 835de8f988e2903a481040cc5ec2ef6c0bcb81de Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Fri, 30 Nov 2018 16:23:40 -0500 Subject: [PATCH 0392/1537] Roll src/third_party/skia 4b29d420420c..5ee6fc26dff0 (2 commits) (#7044) https://skia.googlesource.com/skia.git/+log/4b29d420420c..5ee6fc26dff0 Created with: gclient setdep -r src/third_party/skia@5ee6fc26dff0 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 23346ed1641b9..758f65842a258 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '4b29d420420c39ed857daa308abd06f66f30c66a', + 'skia_revision': '5ee6fc26dff01bac2874758a3464c1c3a9a1a69d', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 0379a5066b0ae..63624f16d6e9a 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 90e0e654845137b06eb9b91bd5154ac4 +Signature: af30ede4fce812b0ba58aa8ec0a00f27 UNUSED LICENSES: From 9a2a2d1300fe1f069d6ba621bfe132925ad5605f Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Fri, 30 Nov 2018 16:51:41 -0500 Subject: [PATCH 0393/1537] Roll src/third_party/skia 5ee6fc26dff0..06602e7b7372 (1 commits) (#7045) https://skia.googlesource.com/skia.git/+log/5ee6fc26dff0..06602e7b7372 Created with: gclient setdep -r src/third_party/skia@06602e7b7372 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/DEPS b/DEPS index 758f65842a258..fa755ec2164d3 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '5ee6fc26dff01bac2874758a3464c1c3a9a1a69d', + 'skia_revision': '06602e7b7372ce748278c97d9560f6f85da987b0', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 63624f16d6e9a..aba0ac00fc841 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: af30ede4fce812b0ba58aa8ec0a00f27 +Signature: b5b1c97b11920a2cf87fffdd7336775d UNUSED LICENSES: @@ -2817,7 +2817,6 @@ FILE: ../../../third_party/skia/samplecode/SampleEmboss.cpp FILE: ../../../third_party/skia/samplecode/SampleFillType.cpp FILE: ../../../third_party/skia/samplecode/SampleFilter2.cpp FILE: ../../../third_party/skia/samplecode/SampleFontCache.cpp -FILE: ../../../third_party/skia/samplecode/SampleFontScalerTest.cpp FILE: ../../../third_party/skia/samplecode/SampleFuzz.cpp FILE: ../../../third_party/skia/samplecode/SampleGradients.cpp FILE: ../../../third_party/skia/samplecode/SampleHairCurves.cpp From ccef2387f5ef79c85c5cb8dd9bf170ff23c3d4a8 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Fri, 30 Nov 2018 17:12:49 -0500 Subject: [PATCH 0394/1537] Roll src/third_party/skia 06602e7b7372..64284e14827d (2 commits) (#7046) https://skia.googlesource.com/skia.git/+log/06602e7b7372..64284e14827d Created with: gclient setdep -r src/third_party/skia@64284e14827d The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index fa755ec2164d3..a67448be43e22 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '06602e7b7372ce748278c97d9560f6f85da987b0', + 'skia_revision': '64284e14827d8768e54582c0d8c81d0d33594f7c', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index aba0ac00fc841..2b526ffb66947 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: b5b1c97b11920a2cf87fffdd7336775d +Signature: 681c17fa3a41e7a1980c7aec58473bef UNUSED LICENSES: From 2a45f96a98b55752eeb08cbe36a66aa82f45f2e4 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Fri, 30 Nov 2018 18:44:42 -0500 Subject: [PATCH 0395/1537] Roll src/third_party/skia 64284e14827d..2335644771eb (1 commits) (#7047) https://skia.googlesource.com/skia.git/+log/64284e14827d..2335644771eb Created with: gclient setdep -r src/third_party/skia@2335644771eb The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index a67448be43e22..52f5ffb5b3cae 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '64284e14827d8768e54582c0d8c81d0d33594f7c', + 'skia_revision': '2335644771ebfdb44fbcadd289f1ed0e63c8ea67', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 2b526ffb66947..303b8110a9b6d 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 681c17fa3a41e7a1980c7aec58473bef +Signature: 743c4555846d2c437a0b0db4c4d4699d UNUSED LICENSES: From 56ecb211ae212a315fa7734ee1a2629e1f4a2d5a Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Fri, 30 Nov 2018 21:28:40 -0500 Subject: [PATCH 0396/1537] Roll src/third_party/skia 2335644771eb..30bac10ed0c4 (1 commits) (#7049) https://skia.googlesource.com/skia.git/+log/2335644771eb..30bac10ed0c4 Created with: gclient setdep -r src/third_party/skia@30bac10ed0c4 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 52f5ffb5b3cae..8941de0d2a6d2 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '2335644771ebfdb44fbcadd289f1ed0e63c8ea67', + 'skia_revision': '30bac10ed0c4cbbab7ad299bc3afb2209c3132f7', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 303b8110a9b6d..782c905d0e9e4 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 743c4555846d2c437a0b0db4c4d4699d +Signature: 473b1563feb03a73d1e62543f05532ba UNUSED LICENSES: From 4fe3549327b804cd7e2a075e37d7accbdde771d8 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Sat, 1 Dec 2018 00:04:29 -0500 Subject: [PATCH 0397/1537] Roll src/third_party/skia 30bac10ed0c4..91af8d82026f (1 commits) (#7050) https://skia.googlesource.com/skia.git/+log/30bac10ed0c4..91af8d82026f Created with: gclient setdep -r src/third_party/skia@91af8d82026f The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 8941de0d2a6d2..8bc83aba227f1 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '30bac10ed0c4cbbab7ad299bc3afb2209c3132f7', + 'skia_revision': '91af8d82026fcee250d4073f4630d1c8db0d35d7', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 782c905d0e9e4..74ad17f9acb54 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 473b1563feb03a73d1e62543f05532ba +Signature: 65ea17e9a492f3c2ca3ccb3e503bd937 UNUSED LICENSES: From f2c5bbfb9c0a797368981224e9377b78880281f1 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Sat, 1 Dec 2018 01:15:07 -0500 Subject: [PATCH 0398/1537] Roll src/third_party/skia 91af8d82026f..f31f74a25056 (1 commits) (#7051) https://skia.googlesource.com/skia.git/+log/91af8d82026f..f31f74a25056 Created with: gclient setdep -r src/third_party/skia@f31f74a25056 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 8bc83aba227f1..942610cdb6e82 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '91af8d82026fcee250d4073f4630d1c8db0d35d7', + 'skia_revision': 'f31f74a25056d354f6237181a6d6458bc41c8102', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 74ad17f9acb54..7635f4db1f14b 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 65ea17e9a492f3c2ca3ccb3e503bd937 +Signature: 13ed47d110137d8af8eac16e4d50c281 UNUSED LICENSES: From 1d14500ecdb86357d329c0179aa1d0e74b9adea2 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Sat, 1 Dec 2018 16:39:20 -0500 Subject: [PATCH 0399/1537] Roll src/third_party/skia f31f74a25056..07105bbcbe98 (1 commits) (#7052) https://skia.googlesource.com/skia.git/+log/f31f74a25056..07105bbcbe98 Created with: gclient setdep -r src/third_party/skia@07105bbcbe98 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 942610cdb6e82..f8bcb2da0aa04 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'f31f74a25056d354f6237181a6d6458bc41c8102', + 'skia_revision': '07105bbcbe9840f4e797bd914bef8a90c2cd21f9', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 7635f4db1f14b..38e215d3b6169 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 13ed47d110137d8af8eac16e4d50c281 +Signature: c9a102c0f1544def51303e9203aa9284 UNUSED LICENSES: From 0c0e928e0c95f60af0e7d4a8404e822a72c88598 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Sun, 2 Dec 2018 01:20:35 -0500 Subject: [PATCH 0400/1537] Roll src/third_party/skia 07105bbcbe98..bce67cad86f5 (1 commits) (#7053) https://skia.googlesource.com/skia.git/+log/07105bbcbe98..bce67cad86f5 Created with: gclient setdep -r src/third_party/skia@bce67cad86f5 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index f8bcb2da0aa04..05db163294839 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '07105bbcbe9840f4e797bd914bef8a90c2cd21f9', + 'skia_revision': 'bce67cad86f5e2235859d3c4ceb177de2bc1a9d5', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 38e215d3b6169..068f752cc2c89 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: c9a102c0f1544def51303e9203aa9284 +Signature: 6321311e9cb53af5e3bdfc2f8933685d UNUSED LICENSES: From da2d5ad3ac2d15568480a1d8d93cdf3986bf3028 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Sun, 2 Dec 2018 01:37:04 -0500 Subject: [PATCH 0401/1537] Roll src/third_party/skia bce67cad86f5..6894f22de28b (1 commits) (#7054) https://skia.googlesource.com/skia.git/+log/bce67cad86f5..6894f22de28b Created with: gclient setdep -r src/third_party/skia@6894f22de28b The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index 05db163294839..5ddf8a45772b2 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'bce67cad86f5e2235859d3c4ceb177de2bc1a9d5', + 'skia_revision': '6894f22de28bd0fdd8661f6ab97a5254bea8ec98', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the From d6692d03383895def87ae146c8e4487c62d7fb1f Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Sun, 2 Dec 2018 03:55:57 -0500 Subject: [PATCH 0402/1537] Roll src/third_party/skia 6894f22de28b..683e6492490f (1 commits) (#7055) https://skia.googlesource.com/skia.git/+log/6894f22de28b..683e6492490f Created with: gclient setdep -r src/third_party/skia@683e6492490f The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 5ddf8a45772b2..e63fdbff5f6b8 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '6894f22de28bd0fdd8661f6ab97a5254bea8ec98', + 'skia_revision': '683e6492490f633ad6a149d0ac230ccf6f0f43f0', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 068f752cc2c89..9261a5a5c24e4 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 6321311e9cb53af5e3bdfc2f8933685d +Signature: e2c34c49c2e24dcad7eb43d4ddf4cbf7 UNUSED LICENSES: From 149bb0222d1d732ea16d2e654fb55b21fd6d3dfe Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Sun, 2 Dec 2018 16:54:05 -0500 Subject: [PATCH 0403/1537] Roll src/third_party/skia 683e6492490f..94cca60bfa6a (1 commits) (#7056) https://skia.googlesource.com/skia.git/+log/683e6492490f..94cca60bfa6a Created with: gclient setdep -r src/third_party/skia@94cca60bfa6a The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index e63fdbff5f6b8..b9582b7977329 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '683e6492490f633ad6a149d0ac230ccf6f0f43f0', + 'skia_revision': '94cca60bfa6ac92e33264a27be1f3af0b1e6c31f', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 9261a5a5c24e4..b691dff0a0d35 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: e2c34c49c2e24dcad7eb43d4ddf4cbf7 +Signature: 4ae4bbd6a56fd6cc9536bcf03522e7b9 UNUSED LICENSES: From a33f15934a8f6e727e72bd61cb20fc3975bd9197 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Sun, 2 Dec 2018 23:12:59 -0500 Subject: [PATCH 0404/1537] Roll src/third_party/skia 94cca60bfa6a..da1b99f7f53b (1 commits) (#7057) https://skia.googlesource.com/skia.git/+log/94cca60bfa6a..da1b99f7f53b Created with: gclient setdep -r src/third_party/skia@da1b99f7f53b The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index b9582b7977329..56556ec54af65 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '94cca60bfa6ac92e33264a27be1f3af0b1e6c31f', + 'skia_revision': 'da1b99f7f53b18d657c877253a151296a1439c8c', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index b691dff0a0d35..034327790bea2 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 4ae4bbd6a56fd6cc9536bcf03522e7b9 +Signature: cd2da3c484a7abd2a8e5ab1f8c4b1fbc UNUSED LICENSES: From 5dd4c0f582edd4941689a5503f31a97c77af67e5 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Mon, 3 Dec 2018 01:27:43 -0500 Subject: [PATCH 0405/1537] Roll src/third_party/skia da1b99f7f53b..ec95ac29550a (1 commits) (#7058) https://skia.googlesource.com/skia.git/+log/da1b99f7f53b..ec95ac29550a Created with: gclient setdep -r src/third_party/skia@ec95ac29550a The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 56556ec54af65..2b7f4054e7a22 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'da1b99f7f53b18d657c877253a151296a1439c8c', + 'skia_revision': 'ec95ac29550a5d56753ecd54cae069c4069cdf8f', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 034327790bea2..6ac093b755ae4 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: cd2da3c484a7abd2a8e5ab1f8c4b1fbc +Signature: a66e7f7b5e676264538296752fe598ac UNUSED LICENSES: From 70aab14f55de2e0db00d23754c24cbc83bbf0ce5 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Mon, 3 Dec 2018 02:51:50 -0500 Subject: [PATCH 0406/1537] Roll src/third_party/skia ec95ac29550a..28ce5f269f7d (1 commits) (#7059) https://skia.googlesource.com/skia.git/+log/ec95ac29550a..28ce5f269f7d Created with: gclient setdep -r src/third_party/skia@28ce5f269f7d The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index 2b7f4054e7a22..903708e65f4b2 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'ec95ac29550a5d56753ecd54cae069c4069cdf8f', + 'skia_revision': '28ce5f269f7d544daa006af80abc395f8469ecd7', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the From eca0333086ba4e2ab8a659448ef3897e5b33c89a Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Mon, 3 Dec 2018 05:38:55 -0500 Subject: [PATCH 0407/1537] Roll src/third_party/skia 28ce5f269f7d..5b671c300d8d (1 commits) (#7060) https://skia.googlesource.com/skia.git/+log/28ce5f269f7d..5b671c300d8d Created with: gclient setdep -r src/third_party/skia@5b671c300d8d The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 903708e65f4b2..516b58f1cbf61 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '28ce5f269f7d544daa006af80abc395f8469ecd7', + 'skia_revision': '5b671c300d8d8cc82197d608269818a31a810168', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 6ac093b755ae4..4f4e945797993 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: a66e7f7b5e676264538296752fe598ac +Signature: 894a772a0e9cc8a7570d1211464e49e5 UNUSED LICENSES: From b61d1f8b01060b98acd7f77c0b213cff509751c5 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Mon, 3 Dec 2018 09:32:51 -0500 Subject: [PATCH 0408/1537] Roll src/third_party/skia 5b671c300d8d..78dc72c1fa1d (1 commits) (#7061) https://skia.googlesource.com/skia.git/+log/5b671c300d8d..78dc72c1fa1d Created with: gclient setdep -r src/third_party/skia@78dc72c1fa1d The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 516b58f1cbf61..4556973c91994 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '5b671c300d8d8cc82197d608269818a31a810168', + 'skia_revision': '78dc72c1fa1d8fb24a9cbee9aad4fe36901668f6', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 4f4e945797993..1fefab4cd6828 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 894a772a0e9cc8a7570d1211464e49e5 +Signature: b2f6d96b927065b8905be7c2940aa154 UNUSED LICENSES: From 220bc791dcb2036ae5c7f2978a6fbb83f3a1471b Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Mon, 3 Dec 2018 10:01:13 -0500 Subject: [PATCH 0409/1537] Roll src/third_party/skia 78dc72c1fa1d..f4bf973592ad (3 commits) (#7062) https://skia.googlesource.com/skia.git/+log/78dc72c1fa1d..f4bf973592ad Created with: gclient setdep -r src/third_party/skia@f4bf973592ad The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 4556973c91994..80075732d831a 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '78dc72c1fa1d8fb24a9cbee9aad4fe36901668f6', + 'skia_revision': 'f4bf973592ad9c03b2d587fe593f47a175519b20', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 1fefab4cd6828..e3a3362a19977 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: b2f6d96b927065b8905be7c2940aa154 +Signature: eba985e0fa4e3eac8fe0727372293d3a UNUSED LICENSES: From b0d1c5c71d80986b2499b1ebe3f6befca845e2a8 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Mon, 3 Dec 2018 14:59:48 -0500 Subject: [PATCH 0410/1537] Roll src/third_party/skia f4bf973592ad..0a1293c2e432 (13 commits) (#7064) https://skia.googlesource.com/skia.git/+log/f4bf973592ad..0a1293c2e432 Created with: gclient setdep -r src/third_party/skia@0a1293c2e432 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 80075732d831a..6e9ed4c782662 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'f4bf973592ad9c03b2d587fe593f47a175519b20', + 'skia_revision': '0a1293c2e432a868e1a9125e98a31c3d1437aede', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index e3a3362a19977..664201b915a28 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: eba985e0fa4e3eac8fe0727372293d3a +Signature: 49de449a87219b10aa7a9b585cff3e59 UNUSED LICENSES: @@ -1311,6 +1311,7 @@ FILE: ../../../third_party/skia/gm/crbug_884166.cpp FILE: ../../../third_party/skia/gm/crbug_887103.cpp FILE: ../../../third_party/skia/gm/crbug_892988.cpp FILE: ../../../third_party/skia/gm/crbug_899512.cpp +FILE: ../../../third_party/skia/gm/crbug_905548.cpp FILE: ../../../third_party/skia/gm/drawimageset.cpp FILE: ../../../third_party/skia/gm/drawquadset.cpp FILE: ../../../third_party/skia/gm/fwidth_squircle.cpp @@ -1611,6 +1612,8 @@ FILE: ../../../third_party/skia/src/gpu/vk/GrVkAMDMemoryAllocator.h FILE: ../../../third_party/skia/src/gpu/vk/GrVkImageLayout.h FILE: ../../../third_party/skia/src/gpu/vk/GrVkPipelineLayout.cpp FILE: ../../../third_party/skia/src/gpu/vk/GrVkPipelineLayout.h +FILE: ../../../third_party/skia/src/gpu/vk/GrVkSamplerYcbcrConversion.cpp +FILE: ../../../third_party/skia/src/gpu/vk/GrVkSamplerYcbcrConversion.h FILE: ../../../third_party/skia/src/gpu/vk/GrVkTypesPriv.cpp FILE: ../../../third_party/skia/src/gpu/vk/GrVkVulkan.h FILE: ../../../third_party/skia/src/image/SkImage_GpuBase.cpp @@ -2036,6 +2039,7 @@ FILE: ../../../third_party/skia/docs/usingBookmaker.bmh FILE: ../../../third_party/skia/experimental/canvaskit/canvaskit/example.html FILE: ../../../third_party/skia/experimental/canvaskit/canvaskit/node.example.js FILE: ../../../third_party/skia/experimental/canvaskit/canvaskit/package.json +FILE: ../../../third_party/skia/experimental/canvaskit/canvaskit/test.png FILE: ../../../third_party/skia/experimental/canvaskit/cpu.js FILE: ../../../third_party/skia/experimental/canvaskit/debug.js FILE: ../../../third_party/skia/experimental/canvaskit/externs.js From 403ea7077ba81983aa04b17c8bee4b4f6f3c09bc Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Mon, 3 Dec 2018 16:07:04 -0500 Subject: [PATCH 0411/1537] Roll src/third_party/skia 0a1293c2e432..6ba8c7ea8488 (4 commits) (#7066) https://skia.googlesource.com/skia.git/+log/0a1293c2e432..6ba8c7ea8488 Created with: gclient setdep -r src/third_party/skia@6ba8c7ea8488 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 6e9ed4c782662..97b0a9f13a1ad 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '0a1293c2e432a868e1a9125e98a31c3d1437aede', + 'skia_revision': '6ba8c7ea84882a4d6d1f34b133a063317143775f', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 664201b915a28..526a6eb74ff16 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 49de449a87219b10aa7a9b585cff3e59 +Signature: b274a011958a6dc124c4113c1fd2e460 UNUSED LICENSES: From a0b184b96780b43cd2ce14039f197acd660e3535 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Mon, 3 Dec 2018 16:38:30 -0500 Subject: [PATCH 0412/1537] Roll src/third_party/skia 6ba8c7ea8488..f9910ea25812 (1 commits) (#7067) https://skia.googlesource.com/skia.git/+log/6ba8c7ea8488..f9910ea25812 Created with: gclient setdep -r src/third_party/skia@f9910ea25812 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index 97b0a9f13a1ad..1c7db49d4c8fd 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '6ba8c7ea84882a4d6d1f34b133a063317143775f', + 'skia_revision': 'f9910ea25812d6647da317676e1289804fecd7dc', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the From 950275ba1feaae9218d1d0b6b22408eda337b566 Mon Sep 17 00:00:00 2001 From: Rusino Date: Mon, 3 Dec 2018 17:00:37 -0500 Subject: [PATCH 0413/1537] Old unnoticed changes (Paint->Font) for txt_benchmarks and making (#7068) changes for removed SK_SUPPORT_LEGACY_TEXTENCODINGENUM --- third_party/txt/benchmarks/paint_record_benchmarks.cc | 11 +++++------ third_party/txt/benchmarks/paragraph_benchmarks.cc | 11 +++++------ third_party/txt/src/txt/font_skia.cc | 2 +- 3 files changed, 11 insertions(+), 13 deletions(-) diff --git a/third_party/txt/benchmarks/paint_record_benchmarks.cc b/third_party/txt/benchmarks/paint_record_benchmarks.cc index 1b6cf98d48cdf..b2adf0d3468cd 100644 --- a/third_party/txt/benchmarks/paint_record_benchmarks.cc +++ b/third_party/txt/benchmarks/paint_record_benchmarks.cc @@ -28,14 +28,13 @@ static void BM_PaintRecordInit(benchmark::State& state) { TextStyle style; style.font_family = "Roboto"; - SkPaint paint; - paint.setAntiAlias(true); - paint.setTextEncoding(SkPaint::kGlyphID_TextEncoding); - paint.setTextSize(14); - paint.setFakeBoldText(false); + SkFont font; + font.setEdging(SkFont::Edging::kAntiAlias); + font.setSize(14); + font.setEmbolden(false); SkTextBlobBuilder builder; - builder.allocRunPos(paint, 100); + builder.allocRunPos(font, 100); auto text_blob = builder.make(); while (state.KeepRunning()) { diff --git a/third_party/txt/benchmarks/paragraph_benchmarks.cc b/third_party/txt/benchmarks/paragraph_benchmarks.cc index d3236847bfc41..b19783b169b56 100644 --- a/third_party/txt/benchmarks/paragraph_benchmarks.cc +++ b/third_party/txt/benchmarks/paragraph_benchmarks.cc @@ -426,15 +426,14 @@ BENCHMARK(BM_ParagraphMinikinAddStyleRun) ->Complexity(benchmark::oN); static void BM_ParagraphSkTextBlobAlloc(benchmark::State& state) { - SkPaint paint; - paint.setAntiAlias(true); - paint.setTextEncoding(SkPaint::kGlyphID_TextEncoding); - paint.setTextSize(14); - paint.setFakeBoldText(false); + SkFont font; + font.setEdging(SkFont::Edging::kAntiAlias); + font.setSize(14); + font.setEmbolden(false); while (state.KeepRunning()) { SkTextBlobBuilder builder; - builder.allocRunPos(paint, state.range(0)); + builder.allocRunPos(font, state.range(0)); } state.SetComplexityN(state.range(0)); } diff --git a/third_party/txt/src/txt/font_skia.cc b/third_party/txt/src/txt/font_skia.cc index 5290bdbe4242a..bca78fd18b9bf 100644 --- a/third_party/txt/src/txt/font_skia.cc +++ b/third_party/txt/src/txt/font_skia.cc @@ -51,7 +51,7 @@ static void FontSkia_SetSkiaPaint(sk_sp typeface, SkPaint* skPaint, const minikin::MinikinPaint& paint) { skPaint->setTypeface(std::move(typeface)); - skPaint->setTextEncoding(SkPaint::kGlyphID_TextEncoding); + skPaint->setTextEncoding(kGlyphID_SkTextEncoding); // TODO: set more paint parameters from Minikin skPaint->setTextSize(paint.size); } From aea502f80c3978ec1e946543bb3757c013e79046 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Mon, 3 Dec 2018 17:21:06 -0500 Subject: [PATCH 0414/1537] Roll src/third_party/skia f9910ea25812..5e1f6ea59563 (2 commits) (#7069) https://skia.googlesource.com/skia.git/+log/f9910ea25812..5e1f6ea59563 Created with: gclient setdep -r src/third_party/skia@5e1f6ea59563 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 6 +----- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/DEPS b/DEPS index 1c7db49d4c8fd..13558b52c07a9 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'f9910ea25812d6647da317676e1289804fecd7dc', + 'skia_revision': '5e1f6ea595633e2c9abf1c40646dc53394c27498', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 526a6eb74ff16..1b511e43af578 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: b274a011958a6dc124c4113c1fd2e460 +Signature: 1572d489b7d57f1de9d3c3d9977f7a1a UNUSED LICENSES: @@ -2938,7 +2938,6 @@ FILE: ../../../third_party/skia/src/gpu/ops/GrAAHairLinePathRenderer.cpp FILE: ../../../third_party/skia/src/gpu/ops/GrAAHairLinePathRenderer.h FILE: ../../../third_party/skia/src/gpu/ops/GrDefaultPathRenderer.cpp FILE: ../../../third_party/skia/src/gpu/ops/GrDefaultPathRenderer.h -FILE: ../../../third_party/skia/src/opts/SkBitmapProcState_opts_none.cpp FILE: ../../../third_party/skia/src/pdf/SkPDFConvertType1FontStream.cpp FILE: ../../../third_party/skia/src/pdf/SkPDFDevice.cpp FILE: ../../../third_party/skia/src/pdf/SkPDFDevice.h @@ -5435,9 +5434,6 @@ FILE: ../../../third_party/skia/src/core/SkFontLCDConfig.cpp FILE: ../../../third_party/skia/src/core/SkQuadClipper.cpp FILE: ../../../third_party/skia/src/core/SkQuadClipper.h FILE: ../../../third_party/skia/src/images/SkImageEncoder.cpp -FILE: ../../../third_party/skia/src/opts/SkBitmapProcState_opts_SSE2.cpp -FILE: ../../../third_party/skia/src/opts/SkBitmapProcState_opts_SSE2.h -FILE: ../../../third_party/skia/src/opts/opts_check_x86.cpp ---------------------------------------------------------------------------------------------------- Copyright 2009 The Android Open Source Project From ff2ebbc7d3438fa99c87b3a87e313d6dae60abf5 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Mon, 3 Dec 2018 17:54:41 -0500 Subject: [PATCH 0415/1537] Roll src/third_party/skia 5e1f6ea59563..0b201b07e499 (1 commits) (#7070) https://skia.googlesource.com/skia.git/+log/5e1f6ea59563..0b201b07e499 Created with: gclient setdep -r src/third_party/skia@0b201b07e499 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index 13558b52c07a9..9aeca63253804 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '5e1f6ea595633e2c9abf1c40646dc53394c27498', + 'skia_revision': '0b201b07e499e5ecc2e728fc2ce0889de90582a5', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the From fd34c110e8b147b08d6e82fb00f4c9b33d80cf84 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Mon, 3 Dec 2018 18:31:14 -0500 Subject: [PATCH 0416/1537] Roll src/third_party/skia 0b201b07e499..7b069fa73e88 (1 commits) (#7071) https://skia.googlesource.com/skia.git/+log/0b201b07e499..7b069fa73e88 Created with: gclient setdep -r src/third_party/skia@7b069fa73e88 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 9aeca63253804..6eaa9e4370459 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '0b201b07e499e5ecc2e728fc2ce0889de90582a5', + 'skia_revision': '7b069fa73e88cd579258d6426539d1d28ee5e9a2', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 1b511e43af578..f9d49ef26c2ef 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 1572d489b7d57f1de9d3c3d9977f7a1a +Signature: d842c840b642d1dc5c47b64d5f2fd5e2 UNUSED LICENSES: From 2431217da0daaf143a79d60a2bee70e5b616df9e Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Mon, 3 Dec 2018 19:08:53 -0500 Subject: [PATCH 0417/1537] Roll src/third_party/skia 7b069fa73e88..99cc65bc5d90 (1 commits) (#7072) https://skia.googlesource.com/skia.git/+log/7b069fa73e88..99cc65bc5d90 Created with: gclient setdep -r src/third_party/skia@99cc65bc5d90 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 6eaa9e4370459..402954ad07e71 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '7b069fa73e88cd579258d6426539d1d28ee5e9a2', + 'skia_revision': '99cc65bc5d9027729509a636f073930db18a18cd', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index f9d49ef26c2ef..45eb794bb159c 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: d842c840b642d1dc5c47b64d5f2fd5e2 +Signature: da401432d97189cd51c558da272dace3 UNUSED LICENSES: From cfa357821a795de1eb77b23f8dae87eaa3fb7cce Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Tue, 4 Dec 2018 01:36:57 -0500 Subject: [PATCH 0418/1537] Roll src/third_party/skia 99cc65bc5d90..5021cd653161 (1 commits) (#7073) https://skia.googlesource.com/skia.git/+log/99cc65bc5d90..5021cd653161 Created with: gclient setdep -r src/third_party/skia@5021cd653161 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 402954ad07e71..95cb84753fede 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '99cc65bc5d9027729509a636f073930db18a18cd', + 'skia_revision': '5021cd653161d3ba4b8805928d984b8153457e2d', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 45eb794bb159c..7fbf80cf1530e 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: da401432d97189cd51c558da272dace3 +Signature: 115596faf58fb1fbcc67527f3c2b0ad3 UNUSED LICENSES: From 5c1e4ca1c5ef4c2122447a1513f7c6fece872ba1 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Tue, 4 Dec 2018 01:59:24 -0500 Subject: [PATCH 0419/1537] Roll src/third_party/skia 5021cd653161..fe47c2a60c07 (1 commits) (#7074) https://skia.googlesource.com/skia.git/+log/5021cd653161..fe47c2a60c07 Created with: gclient setdep -r src/third_party/skia@fe47c2a60c07 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index 95cb84753fede..28923561f048f 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '5021cd653161d3ba4b8805928d984b8153457e2d', + 'skia_revision': 'fe47c2a60c0732081457fd2beaafd85cdb9abbf4', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the From 79e2281c0f7a203b9410e90736ffcabb0beef00c Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Tue, 4 Dec 2018 03:15:00 -0500 Subject: [PATCH 0420/1537] Roll src/third_party/skia fe47c2a60c07..1a9956e76b23 (1 commits) (#7075) https://skia.googlesource.com/skia.git/+log/fe47c2a60c07..1a9956e76b23 Created with: gclient setdep -r src/third_party/skia@1a9956e76b23 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 28923561f048f..b8da213ab2449 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'fe47c2a60c0732081457fd2beaafd85cdb9abbf4', + 'skia_revision': '1a9956e76b232236a41203b4a2cdf352ba2bad75', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 7fbf80cf1530e..a134b20f764b0 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 115596faf58fb1fbcc67527f3c2b0ad3 +Signature: efed21cc7f10a977040c55e492a4fb58 UNUSED LICENSES: From 8276880062d032f3d391e0dbe2d87a84e2553cdd Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Tue, 4 Dec 2018 09:02:10 -0500 Subject: [PATCH 0421/1537] Roll src/third_party/skia 1a9956e76b23..240af98c655a (1 commits) (#7076) https://skia.googlesource.com/skia.git/+log/1a9956e76b23..240af98c655a Created with: gclient setdep -r src/third_party/skia@240af98c655a The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index b8da213ab2449..6b8009606fa7c 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '1a9956e76b232236a41203b4a2cdf352ba2bad75', + 'skia_revision': '240af98c655a92c11bbf4541c94a4c0f62283bef', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index a134b20f764b0..36e18b0efa23c 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: efed21cc7f10a977040c55e492a4fb58 +Signature: 788cc4cb0e03e179087ec4547f80bab6 UNUSED LICENSES: From b8dc6f3facfe3cce12cbec290d43f2af05546631 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Tue, 4 Dec 2018 09:38:02 -0500 Subject: [PATCH 0422/1537] Roll src/third_party/skia 240af98c655a..2d9e543a5809 (1 commits) (#7077) https://skia.googlesource.com/skia.git/+log/240af98c655a..2d9e543a5809 Created with: gclient setdep -r src/third_party/skia@2d9e543a5809 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 6b8009606fa7c..4fba9542b57e1 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '240af98c655a92c11bbf4541c94a4c0f62283bef', + 'skia_revision': '2d9e543a5809a2b68a27ca74663af76d61c1755f', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 36e18b0efa23c..497c80829dc16 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 788cc4cb0e03e179087ec4547f80bab6 +Signature: e1011f5cb9c42008413dc8974c30c843 UNUSED LICENSES: From 52d7e5ca7c4f15f382de350766f8bd4dabcbdcc9 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Tue, 4 Dec 2018 10:45:56 -0500 Subject: [PATCH 0423/1537] Roll src/third_party/skia 2d9e543a5809..b24f7f45c201 (1 commits) (#7078) https://skia.googlesource.com/skia.git/+log/2d9e543a5809..b24f7f45c201 Created with: gclient setdep -r src/third_party/skia@b24f7f45c201 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 4fba9542b57e1..9d07bbf7fc7f5 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '2d9e543a5809a2b68a27ca74663af76d61c1755f', + 'skia_revision': 'b24f7f45c201391584394ef68ed7e3d83b5c3c63', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 497c80829dc16..bfb59a17f7a5a 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: e1011f5cb9c42008413dc8974c30c843 +Signature: e5b1b5bef1f612eb31f5e73575992b5c UNUSED LICENSES: From 7c2018648e8cf5d1f8d7a10584d12d189873324e Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Tue, 4 Dec 2018 11:22:44 -0500 Subject: [PATCH 0424/1537] Roll src/third_party/skia b24f7f45c201..8912a5d24004 (6 commits) (#7079) https://skia.googlesource.com/skia.git/+log/b24f7f45c201..8912a5d24004 Created with: gclient setdep -r src/third_party/skia@8912a5d24004 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 9d07bbf7fc7f5..104b29338093f 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'b24f7f45c201391584394ef68ed7e3d83b5c3c63', + 'skia_revision': '8912a5d240048b4d68401658fde0670d26c4a77e', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index bfb59a17f7a5a..b93ee4c13de73 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: e5b1b5bef1f612eb31f5e73575992b5c +Signature: a87d69c3adfeab2c1d051290417f2a02 UNUSED LICENSES: From c228446ac5a278878df3c1e6a9e4f710d8180adf Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Tue, 4 Dec 2018 12:00:56 -0500 Subject: [PATCH 0425/1537] Roll src/third_party/skia 8912a5d24004..7a82edf36069 (4 commits) (#7080) https://skia.googlesource.com/skia.git/+log/8912a5d24004..7a82edf36069 Created with: gclient setdep -r src/third_party/skia@7a82edf36069 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 104b29338093f..04d6f1c8a12f6 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '8912a5d240048b4d68401658fde0670d26c4a77e', + 'skia_revision': '7a82edf360697609d078a414e3a9ead0c49ae070', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index b93ee4c13de73..b9c9d80195d6b 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: a87d69c3adfeab2c1d051290417f2a02 +Signature: 21d2523a1200d49c977392ea185c61aa UNUSED LICENSES: From d4dbfe4df4b9e926e4385097eadc01cff9ff9d66 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Tue, 4 Dec 2018 12:30:45 -0500 Subject: [PATCH 0426/1537] Roll src/third_party/skia 7a82edf36069..017ac1c6d516 (1 commits) (#7081) https://skia.googlesource.com/skia.git/+log/7a82edf36069..017ac1c6d516 Created with: gclient setdep -r src/third_party/skia@017ac1c6d516 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 04d6f1c8a12f6..46b42b5340aa2 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '7a82edf360697609d078a414e3a9ead0c49ae070', + 'skia_revision': '017ac1c6d516e7a5b5c0de4001673942f54fd942', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index b9c9d80195d6b..abbb58cc302c5 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 21d2523a1200d49c977392ea185c61aa +Signature: 59a9b7cbbe85ee7f1608ac5b3edd0462 UNUSED LICENSES: From 33b645d810d7f24494b1b9a3e25c96e3202bfb85 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Tue, 4 Dec 2018 13:22:25 -0500 Subject: [PATCH 0427/1537] Roll src/third_party/skia 017ac1c6d516..14c55c2f7f1d (1 commits) (#7082) https://skia.googlesource.com/skia.git/+log/017ac1c6d516..14c55c2f7f1d Created with: gclient setdep -r src/third_party/skia@14c55c2f7f1d The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 46b42b5340aa2..a69020ef71510 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '017ac1c6d516e7a5b5c0de4001673942f54fd942', + 'skia_revision': '14c55c2f7f1dd6e077af99e806929f2dd88b931e', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index abbb58cc302c5..cd90ac89681fe 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 59a9b7cbbe85ee7f1608ac5b3edd0462 +Signature: b9e5b481bef4316256172670c7e43df9 UNUSED LICENSES: From d67ef1a213d9a59bd6ad8a2d51fb1c144e246f32 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Tue, 4 Dec 2018 13:52:37 -0500 Subject: [PATCH 0428/1537] Roll src/third_party/skia 14c55c2f7f1d..de2244cbda79 (1 commits) (#7083) https://skia.googlesource.com/skia.git/+log/14c55c2f7f1d..de2244cbda79 Created with: gclient setdep -r src/third_party/skia@de2244cbda79 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index a69020ef71510..4563a60885009 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '14c55c2f7f1dd6e077af99e806929f2dd88b931e', + 'skia_revision': 'de2244cbda797ec779c3eaa1f589f33b9a1912bd', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index cd90ac89681fe..16991670809d6 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: b9e5b481bef4316256172670c7e43df9 +Signature: 048ec4dc7b2fa8a8cc50ef754a2090eb UNUSED LICENSES: From bb3d5afd5e35796fd56f6c0791683f14eca17750 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Tue, 4 Dec 2018 14:14:25 -0500 Subject: [PATCH 0429/1537] Roll src/third_party/skia de2244cbda79..9e86b07b13aa (1 commits) (#7084) https://skia.googlesource.com/skia.git/+log/de2244cbda79..9e86b07b13aa Created with: gclient setdep -r src/third_party/skia@9e86b07b13aa The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index 4563a60885009..a3dc8c2846815 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'de2244cbda797ec779c3eaa1f589f33b9a1912bd', + 'skia_revision': '9e86b07b13aa26cce20c64912d326d37945fc566', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the From dd72e5da7ab7b1cbcb60860931a1840515d90053 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Tue, 4 Dec 2018 14:44:40 -0500 Subject: [PATCH 0430/1537] Roll src/third_party/skia 9e86b07b13aa..0ec1c571c88a (2 commits) (#7085) https://skia.googlesource.com/skia.git/+log/9e86b07b13aa..0ec1c571c88a Created with: gclient setdep -r src/third_party/skia@0ec1c571c88a The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/DEPS b/DEPS index a3dc8c2846815..754379fd9a234 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '9e86b07b13aa26cce20c64912d326d37945fc566', + 'skia_revision': '0ec1c571c88aaee670703fb9308c201e566c089a', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 16991670809d6..8d1eaeb51baa1 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 048ec4dc7b2fa8a8cc50ef754a2090eb +Signature: 286e9dafd24e0951ca4799176796f14f UNUSED LICENSES: @@ -3588,7 +3588,6 @@ FILE: ../../../third_party/skia/include/ports/SkFontMgr_android.h FILE: ../../../third_party/skia/include/ports/SkFontMgr_directory.h FILE: ../../../third_party/skia/include/ports/SkFontMgr_empty.h FILE: ../../../third_party/skia/include/ports/SkFontMgr_fontconfig.h -FILE: ../../../third_party/skia/include/private/SkAtomics.h FILE: ../../../third_party/skia/include/private/SkMutex.h FILE: ../../../third_party/skia/include/private/SkNx.h FILE: ../../../third_party/skia/include/private/SkNx_neon.h From 6aa7030baa99c30c31ef322d90d29e11aad05e7e Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Wed, 5 Dec 2018 08:04:00 -0500 Subject: [PATCH 0431/1537] Roll src/third_party/skia 0ec1c571c88a..ae3086eac4c4 (2 commits) (#7086) https://skia.googlesource.com/skia.git/+log/0ec1c571c88a..ae3086eac4c4 Created with: gclient setdep -r src/third_party/skia@ae3086eac4c4 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 754379fd9a234..d4c1ccd3252a9 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '0ec1c571c88aaee670703fb9308c201e566c089a', + 'skia_revision': 'ae3086eac4c4e2b5420847db7d7130677546ffe3', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 8d1eaeb51baa1..9dee2aee66fc5 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 286e9dafd24e0951ca4799176796f14f +Signature: da4f8ed217de7ed216e99b4f80ead657 UNUSED LICENSES: From 675ad6c946397419efc895dbcf1909e21a8572ca Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Wed, 5 Dec 2018 08:39:30 -0500 Subject: [PATCH 0432/1537] Roll src/third_party/skia ae3086eac4c4..9b7091c65532 (22 commits) (#7088) https://skia.googlesource.com/skia.git/+log/ae3086eac4c4..9b7091c65532 Created with: gclient setdep -r src/third_party/skia@9b7091c65532 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/DEPS b/DEPS index d4c1ccd3252a9..21198e8e543fc 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'ae3086eac4c4e2b5420847db7d7130677546ffe3', + 'skia_revision': '9b7091c655327922b8525a1125bc5e07dee1666a', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 9dee2aee66fc5..61c86c0a19418 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: da4f8ed217de7ed216e99b4f80ead657 +Signature: cc5a89d06ace82130b58c98bc71c119b UNUSED LICENSES: @@ -3833,7 +3833,6 @@ FILE: ../../../third_party/skia/src/opts/Sk4px_SSE2.h FILE: ../../../third_party/skia/src/opts/Sk4px_none.h FILE: ../../../third_party/skia/src/opts/SkBlitMask_opts.h FILE: ../../../third_party/skia/src/opts/SkBlitRow_opts.h -FILE: ../../../third_party/skia/src/opts/SkColor_opts_neon.h FILE: ../../../third_party/skia/src/opts/SkOpts_sse41.cpp FILE: ../../../third_party/skia/src/opts/SkOpts_ssse3.cpp FILE: ../../../third_party/skia/src/opts/SkXfermode_opts.h @@ -5690,7 +5689,6 @@ ORIGIN: ../../../third_party/skia/src/core/SkMatrixImageFilter.cpp + ../../../th TYPE: LicenseType.bsd FILE: ../../../third_party/skia/src/core/SkMatrixImageFilter.cpp FILE: ../../../third_party/skia/src/core/SkMatrixImageFilter.h -FILE: ../../../third_party/skia/src/opts/SkColor_opts_SSE2.h ---------------------------------------------------------------------------------------------------- Copyright 2014 The Android Open Source Project From afd85f4d261cf252efcdc611e22f803b8f1bb4d0 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Wed, 5 Dec 2018 11:31:08 -0500 Subject: [PATCH 0433/1537] Roll src/third_party/skia 9b7091c65532..e0dc346d9e45 (2 commits) (#7089) https://skia.googlesource.com/skia.git/+log/9b7091c65532..e0dc346d9e45 Created with: gclient setdep -r src/third_party/skia@e0dc346d9e45 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 21198e8e543fc..921e344f3af9f 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '9b7091c655327922b8525a1125bc5e07dee1666a', + 'skia_revision': 'e0dc346d9e45f3753c4960207596e67122381bff', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 61c86c0a19418..758f4812898f6 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: cc5a89d06ace82130b58c98bc71c119b +Signature: cd09ddee00f49a39664d19254160b5b2 UNUSED LICENSES: From 7a2a75a20d7338552938aa9ff9f2191dd98035c2 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Wed, 5 Dec 2018 12:15:35 -0500 Subject: [PATCH 0434/1537] Roll src/third_party/skia e0dc346d9e45..1958e5d9da9a (2 commits) (#7090) https://skia.googlesource.com/skia.git/+log/e0dc346d9e45..1958e5d9da9a Created with: gclient setdep -r src/third_party/skia@1958e5d9da9a The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/DEPS b/DEPS index 921e344f3af9f..03fe18f7a20f8 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'e0dc346d9e45f3753c4960207596e67122381bff', + 'skia_revision': '1958e5d9da9add33c5a345500511b3908f4291b0', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 758f4812898f6..556209bd08ad7 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: cd09ddee00f49a39664d19254160b5b2 +Signature: a997b669f57504c0d8ee1a51e3bd1bca UNUSED LICENSES: @@ -4149,6 +4149,7 @@ FILE: ../../../third_party/skia/bench/ColorSpaceXformBench.cpp FILE: ../../../third_party/skia/bench/CubicKLMBench.cpp FILE: ../../../third_party/skia/bench/PathTextBench.cpp FILE: ../../../third_party/skia/bench/ShadowBench.cpp +FILE: ../../../third_party/skia/bin/gerrit-number FILE: ../../../third_party/skia/dm/DMGpuTestProcs.cpp FILE: ../../../third_party/skia/example/HelloWorld.cpp FILE: ../../../third_party/skia/example/HelloWorld.h @@ -4160,7 +4161,6 @@ FILE: ../../../third_party/skia/experimental/svg/model/SkSVGRadialGradient.cpp FILE: ../../../third_party/skia/experimental/svg/model/SkSVGRadialGradient.h FILE: ../../../third_party/skia/experimental/svg/model/SkSVGUse.cpp FILE: ../../../third_party/skia/experimental/svg/model/SkSVGUse.h -FILE: ../../../third_party/skia/experimental/tools/gerrit-change-id-to-number FILE: ../../../third_party/skia/fuzz/FuzzCanvas.cpp FILE: ../../../third_party/skia/gm/alpha_image.cpp FILE: ../../../third_party/skia/gm/atlastext.cpp From b341b0289fa1d10acbbf35992b32911a9e7d43b5 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Wed, 5 Dec 2018 12:41:33 -0500 Subject: [PATCH 0435/1537] Roll src/third_party/skia 1958e5d9da9a..8afaa1ef2dbc (2 commits) (#7091) https://skia.googlesource.com/skia.git/+log/1958e5d9da9a..8afaa1ef2dbc Created with: gclient setdep -r src/third_party/skia@8afaa1ef2dbc The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index 03fe18f7a20f8..0c5c9bf2b131f 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '1958e5d9da9add33c5a345500511b3908f4291b0', + 'skia_revision': '8afaa1ef2dbcec0b6145d81f287a0abf74d22a96', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the From c5dd1f9c5e738866c33605bc960d86c104dfcbe2 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Wed, 5 Dec 2018 13:13:56 -0500 Subject: [PATCH 0436/1537] Roll src/third_party/skia 8afaa1ef2dbc..0f9d33ef0698 (1 commits) (#7092) https://skia.googlesource.com/skia.git/+log/8afaa1ef2dbc..0f9d33ef0698 Created with: gclient setdep -r src/third_party/skia@0f9d33ef0698 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 0c5c9bf2b131f..e03fc93b44edf 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '8afaa1ef2dbcec0b6145d81f287a0abf74d22a96', + 'skia_revision': '0f9d33ef06980133cc747a7b51e9a4f65a785077', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 556209bd08ad7..87dd3069849b4 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: a997b669f57504c0d8ee1a51e3bd1bca +Signature: 4426c6f081ee5ab925cb1e8e81e8fc81 UNUSED LICENSES: From 81501f1d4eeb12f75c459bcef5a6625d3ff34a82 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Wed, 5 Dec 2018 13:54:58 -0500 Subject: [PATCH 0437/1537] Roll src/third_party/skia 0f9d33ef0698..b353eeb71693 (1 commits) (#7093) https://skia.googlesource.com/skia.git/+log/0f9d33ef0698..b353eeb71693 Created with: gclient setdep -r src/third_party/skia@b353eeb71693 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index e03fc93b44edf..0a17be52568d7 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '0f9d33ef06980133cc747a7b51e9a4f65a785077', + 'skia_revision': 'b353eeb716930fe7ad69dcb15c2d992f4496c3ac', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 87dd3069849b4..2bd21b809dec7 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 4426c6f081ee5ab925cb1e8e81e8fc81 +Signature: a097c714dbc9fb26d8cfd4976b05154d UNUSED LICENSES: From c904887a054cc34eda1e729ef7ea817829127aa7 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Wed, 5 Dec 2018 14:36:53 -0500 Subject: [PATCH 0438/1537] Roll src/third_party/skia b353eeb71693..ab8f2971f94b (3 commits) (#7094) https://skia.googlesource.com/skia.git/+log/b353eeb71693..ab8f2971f94b Created with: gclient setdep -r src/third_party/skia@ab8f2971f94b The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 0a17be52568d7..bd149744c96de 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'b353eeb716930fe7ad69dcb15c2d992f4496c3ac', + 'skia_revision': 'ab8f2971f94b32bfb570a7e56009bbd0d8695e22', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 2bd21b809dec7..de4e20a6430ca 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: a097c714dbc9fb26d8cfd4976b05154d +Signature: df11c52ef5b3f1611756ab76870871b6 UNUSED LICENSES: From eff711295e6a790f9ecce0f206bbd0a292c891b0 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Wed, 5 Dec 2018 15:11:19 -0500 Subject: [PATCH 0439/1537] Roll src/third_party/skia ab8f2971f94b..ed33af4c64f5 (2 commits) (#7095) https://skia.googlesource.com/skia.git/+log/ab8f2971f94b..ed33af4c64f5 Created with: gclient setdep -r src/third_party/skia@ed33af4c64f5 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index bd149744c96de..56b2462af7983 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'ab8f2971f94b32bfb570a7e56009bbd0d8695e22', + 'skia_revision': 'ed33af4c64f5ef2b3c9f0ac3f7682b5917e79b60', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index de4e20a6430ca..3355245291ed6 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: df11c52ef5b3f1611756ab76870871b6 +Signature: 6d05f6a76eb3c459657ba3b7a5f888cc UNUSED LICENSES: From f0f9811943769097a0198ba3749550d11c1de572 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Wed, 5 Dec 2018 15:47:42 -0500 Subject: [PATCH 0440/1537] Roll src/third_party/skia ed33af4c64f5..796693af3cda (3 commits) (#7096) https://skia.googlesource.com/skia.git/+log/ed33af4c64f5..796693af3cda Created with: gclient setdep -r src/third_party/skia@796693af3cda The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 56b2462af7983..b00220ba08e31 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'ed33af4c64f5ef2b3c9f0ac3f7682b5917e79b60', + 'skia_revision': '796693af3cda0e24a76a89a092ed8de0e46ccb18', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 3355245291ed6..b27bd652ef935 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 6d05f6a76eb3c459657ba3b7a5f888cc +Signature: 5c838ae031700480e9e2a0cb089e8424 UNUSED LICENSES: From 610eb892320bbb0a1f59da61d6681df7d599325e Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Wed, 5 Dec 2018 16:24:24 -0500 Subject: [PATCH 0441/1537] Roll src/third_party/skia 796693af3cda..c86ec97ca4aa (3 commits) (#7099) https://skia.googlesource.com/skia.git/+log/796693af3cda..c86ec97ca4aa Created with: gclient setdep -r src/third_party/skia@c86ec97ca4aa The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index b00220ba08e31..9620217c72b34 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '796693af3cda0e24a76a89a092ed8de0e46ccb18', + 'skia_revision': 'c86ec97ca4aa535b2e2e199138d4963f74552594', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index b27bd652ef935..7bc2d592c01ea 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 5c838ae031700480e9e2a0cb089e8424 +Signature: cf0785b27a170f4ba1d65b527f9bd177 UNUSED LICENSES: From d5b0181f16e488b5fc59355d8cc779475437a1a5 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Wed, 5 Dec 2018 17:01:22 -0500 Subject: [PATCH 0442/1537] Roll src/third_party/skia c86ec97ca4aa..b3f4aac0ba02 (2 commits) (#7100) https://skia.googlesource.com/skia.git/+log/c86ec97ca4aa..b3f4aac0ba02 Created with: gclient setdep -r src/third_party/skia@b3f4aac0ba02 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 9620217c72b34..00f59d685b0a4 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'c86ec97ca4aa535b2e2e199138d4963f74552594', + 'skia_revision': 'b3f4aac0ba02d13af8fa85a33e856d09ab7855b0', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 7bc2d592c01ea..855ba07b52cc3 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: cf0785b27a170f4ba1d65b527f9bd177 +Signature: 420644243e10ae8bebfd099e75dfc3da UNUSED LICENSES: From ab0c1a1d531088fc064f8508aadc3882c939cd1d Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Wed, 5 Dec 2018 17:38:47 -0500 Subject: [PATCH 0443/1537] Roll src/third_party/skia b3f4aac0ba02..c84ccb1ff157 (3 commits) (#7101) https://skia.googlesource.com/skia.git/+log/b3f4aac0ba02..c84ccb1ff157 Created with: gclient setdep -r src/third_party/skia@c84ccb1ff157 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 00f59d685b0a4..11b3c2554ad24 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'b3f4aac0ba02d13af8fa85a33e856d09ab7855b0', + 'skia_revision': 'c84ccb1ff15728f2990a062f1ca721a5db44ff62', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 855ba07b52cc3..cf13adc167aff 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 420644243e10ae8bebfd099e75dfc3da +Signature: effc8c663677deea33be0888c05597dd UNUSED LICENSES: From f0d4bb4c71c7efcd08c5df5305222e346023ab96 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Wed, 5 Dec 2018 21:44:55 -0500 Subject: [PATCH 0444/1537] Roll src/third_party/skia c84ccb1ff157..6d59568196c0 (2 commits) (#7103) https://skia.googlesource.com/skia.git/+log/c84ccb1ff157..6d59568196c0 Created with: gclient setdep -r src/third_party/skia@6d59568196c0 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 11b3c2554ad24..c3f711b7ab12a 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'c84ccb1ff15728f2990a062f1ca721a5db44ff62', + 'skia_revision': '6d59568196c0e923674905eb2c8d874586e5ae34', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index cf13adc167aff..1797552463b89 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: effc8c663677deea33be0888c05597dd +Signature: 04d8a6a343b2f370e337a59a18a3d6d2 UNUSED LICENSES: From bb03fe251f9bfd04e90511b9d579db2df1d47345 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Thu, 6 Dec 2018 13:22:02 -0500 Subject: [PATCH 0445/1537] Roll src/third_party/skia 6d59568196c0..9bd83463e507 (1 commits) (#7104) https://skia.googlesource.com/skia.git/+log/6d59568196c0..9bd83463e507 Created with: gclient setdep -r src/third_party/skia@9bd83463e507 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index c3f711b7ab12a..11d4bd7ba6138 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '6d59568196c0e923674905eb2c8d874586e5ae34', + 'skia_revision': '9bd83463e5078c49f3817e68ae6284fa1e3cb4b6', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 1797552463b89..8ae8feaf8eb99 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 04d8a6a343b2f370e337a59a18a3d6d2 +Signature: 45fc64b737b7268066347c855c147c2f UNUSED LICENSES: From a225f8d407bef632c32c043b64e6a21d19d29f44 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Thu, 6 Dec 2018 14:25:16 -0500 Subject: [PATCH 0446/1537] Roll src/third_party/skia 9bd83463e507..a34e6eac3c6a (22 commits) (#7105) https://skia.googlesource.com/skia.git/+log/9bd83463e507..a34e6eac3c6a Created with: gclient setdep -r src/third_party/skia@a34e6eac3c6a The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 11d4bd7ba6138..97609797e604a 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '9bd83463e5078c49f3817e68ae6284fa1e3cb4b6', + 'skia_revision': 'a34e6eac3c6a765a28abc15e132534652a6295d2', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 8ae8feaf8eb99..8a3fc1cdb7f76 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 45fc64b737b7268066347c855c147c2f +Signature: ce48dabee21e76b51a85b00cab6819ae UNUSED LICENSES: @@ -4150,6 +4150,7 @@ FILE: ../../../third_party/skia/bench/CubicKLMBench.cpp FILE: ../../../third_party/skia/bench/PathTextBench.cpp FILE: ../../../third_party/skia/bench/ShadowBench.cpp FILE: ../../../third_party/skia/bin/gerrit-number +FILE: ../../../third_party/skia/bin/sysopen FILE: ../../../third_party/skia/dm/DMGpuTestProcs.cpp FILE: ../../../third_party/skia/example/HelloWorld.cpp FILE: ../../../third_party/skia/example/HelloWorld.h From d494d64b769ed2ef23e9ec68ae9d8487b1d44b03 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Thu, 6 Dec 2018 18:27:41 -0500 Subject: [PATCH 0447/1537] Roll src/third_party/skia a34e6eac3c6a..704a3429e62b (5 commits) (#7109) https://skia.googlesource.com/skia.git/+log/a34e6eac3c6a..704a3429e62b Created with: gclient setdep -r src/third_party/skia@704a3429e62b The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 97609797e604a..448a8454b6493 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'a34e6eac3c6a765a28abc15e132534652a6295d2', + 'skia_revision': '704a3429e62b0b9cfc5923cdb626bf22520fbc7b', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 8a3fc1cdb7f76..012d7d34bbffd 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: ce48dabee21e76b51a85b00cab6819ae +Signature: d3be528f962040734a772923d8e0772c UNUSED LICENSES: From 4744d7df3d76c32de373b540779f9dcd50a02bdf Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Thu, 6 Dec 2018 19:40:19 -0500 Subject: [PATCH 0448/1537] Roll src/third_party/skia 704a3429e62b..309f1deddf8e (5 commits) (#7110) https://skia.googlesource.com/skia.git/+log/704a3429e62b..309f1deddf8e Created with: gclient setdep -r src/third_party/skia@309f1deddf8e The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 448a8454b6493..f534f730d647e 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '704a3429e62b0b9cfc5923cdb626bf22520fbc7b', + 'skia_revision': '309f1deddf8ef0d5d2ce4f92c3be4c8ecd745b90', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 012d7d34bbffd..caaa49c88d9d8 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: d3be528f962040734a772923d8e0772c +Signature: b9fcb938f7d25e2daba6500285ff555c UNUSED LICENSES: @@ -1348,6 +1348,7 @@ FILE: ../../../third_party/skia/include/effects/SkTrimPathEffect.h FILE: ../../../third_party/skia/include/gpu/GrBackendDrawableInfo.h FILE: ../../../third_party/skia/include/gpu/GrDriverBugWorkarounds.h FILE: ../../../third_party/skia/include/gpu/vk/GrVkMemoryAllocator.h +FILE: ../../../third_party/skia/include/ports/SkFontMgr_fuchsia.h FILE: ../../../third_party/skia/include/private/GrCCClipPath.h FILE: ../../../third_party/skia/include/private/GrCCPerOpListPaths.h FILE: ../../../third_party/skia/include/private/GrProxyRef.h @@ -1630,6 +1631,7 @@ FILE: ../../../third_party/skia/src/pdf/SkClusterator.cpp FILE: ../../../third_party/skia/src/pdf/SkClusterator.h FILE: ../../../third_party/skia/src/pdf/SkPDFTag.cpp FILE: ../../../third_party/skia/src/pdf/SkPDFTag.h +FILE: ../../../third_party/skia/src/ports/SkFontMgr_fuchsia.cpp FILE: ../../../third_party/skia/src/sksl/SkSLCPPUniformCTypes.cpp FILE: ../../../third_party/skia/src/sksl/SkSLCPPUniformCTypes.h FILE: ../../../third_party/skia/src/sksl/SkSLInterpreter.cpp From f260e8fa7b07161334ff66cfd51ad95c80de8d22 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Thu, 6 Dec 2018 20:52:24 -0500 Subject: [PATCH 0449/1537] Roll src/third_party/skia 309f1deddf8e..e6b5b710fcf8 (1 commits) (#7111) https://skia.googlesource.com/skia.git/+log/309f1deddf8e..e6b5b710fcf8 Created with: gclient setdep -r src/third_party/skia@e6b5b710fcf8 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/DEPS b/DEPS index f534f730d647e..4b0836b4a7ca8 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '309f1deddf8ef0d5d2ce4f92c3be4c8ecd745b90', + 'skia_revision': 'e6b5b710fcf8de2be94ab3f3b3dc5e80dfb0f864', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index caaa49c88d9d8..37eacaecf32e8 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: b9fcb938f7d25e2daba6500285ff555c +Signature: ac208f4a5a17b164c44987b17b4381f5 UNUSED LICENSES: @@ -1348,7 +1348,6 @@ FILE: ../../../third_party/skia/include/effects/SkTrimPathEffect.h FILE: ../../../third_party/skia/include/gpu/GrBackendDrawableInfo.h FILE: ../../../third_party/skia/include/gpu/GrDriverBugWorkarounds.h FILE: ../../../third_party/skia/include/gpu/vk/GrVkMemoryAllocator.h -FILE: ../../../third_party/skia/include/ports/SkFontMgr_fuchsia.h FILE: ../../../third_party/skia/include/private/GrCCClipPath.h FILE: ../../../third_party/skia/include/private/GrCCPerOpListPaths.h FILE: ../../../third_party/skia/include/private/GrProxyRef.h @@ -1631,7 +1630,6 @@ FILE: ../../../third_party/skia/src/pdf/SkClusterator.cpp FILE: ../../../third_party/skia/src/pdf/SkClusterator.h FILE: ../../../third_party/skia/src/pdf/SkPDFTag.cpp FILE: ../../../third_party/skia/src/pdf/SkPDFTag.h -FILE: ../../../third_party/skia/src/ports/SkFontMgr_fuchsia.cpp FILE: ../../../third_party/skia/src/sksl/SkSLCPPUniformCTypes.cpp FILE: ../../../third_party/skia/src/sksl/SkSLCPPUniformCTypes.h FILE: ../../../third_party/skia/src/sksl/SkSLInterpreter.cpp From b764aa0df472f6b91da8ed9f1c454ee404710802 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Thu, 6 Dec 2018 21:57:58 -0500 Subject: [PATCH 0450/1537] Roll src/third_party/skia e6b5b710fcf8..f3babcd0afb3 (1 commits) (#7112) https://skia.googlesource.com/skia.git/+log/e6b5b710fcf8..f3babcd0afb3 Created with: gclient setdep -r src/third_party/skia@f3babcd0afb3 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 4b0836b4a7ca8..ac5dca499ec63 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'e6b5b710fcf8de2be94ab3f3b3dc5e80dfb0f864', + 'skia_revision': 'f3babcd0afb3a8597d3a1939ca4a402669d05bee', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 37eacaecf32e8..e4871f640b1ef 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: ac208f4a5a17b164c44987b17b4381f5 +Signature: acecf32e69c9d09173e3c3a486029f61 UNUSED LICENSES: @@ -1348,6 +1348,7 @@ FILE: ../../../third_party/skia/include/effects/SkTrimPathEffect.h FILE: ../../../third_party/skia/include/gpu/GrBackendDrawableInfo.h FILE: ../../../third_party/skia/include/gpu/GrDriverBugWorkarounds.h FILE: ../../../third_party/skia/include/gpu/vk/GrVkMemoryAllocator.h +FILE: ../../../third_party/skia/include/ports/SkFontMgr_fuchsia.h FILE: ../../../third_party/skia/include/private/GrCCClipPath.h FILE: ../../../third_party/skia/include/private/GrCCPerOpListPaths.h FILE: ../../../third_party/skia/include/private/GrProxyRef.h @@ -1630,6 +1631,7 @@ FILE: ../../../third_party/skia/src/pdf/SkClusterator.cpp FILE: ../../../third_party/skia/src/pdf/SkClusterator.h FILE: ../../../third_party/skia/src/pdf/SkPDFTag.cpp FILE: ../../../third_party/skia/src/pdf/SkPDFTag.h +FILE: ../../../third_party/skia/src/ports/SkFontMgr_fuchsia.cpp FILE: ../../../third_party/skia/src/sksl/SkSLCPPUniformCTypes.cpp FILE: ../../../third_party/skia/src/sksl/SkSLCPPUniformCTypes.h FILE: ../../../third_party/skia/src/sksl/SkSLInterpreter.cpp From 13646644b1d8ec038e662ac70f65e8feb0baa1cf Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Fri, 7 Dec 2018 01:54:13 -0500 Subject: [PATCH 0451/1537] Roll src/third_party/skia f3babcd0afb3..bba465b98299 (1 commits) (#7113) https://skia.googlesource.com/skia.git/+log/f3babcd0afb3..bba465b98299 Created with: gclient setdep -r src/third_party/skia@bba465b98299 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index ac5dca499ec63..43c8c73debcab 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'f3babcd0afb3a8597d3a1939ca4a402669d05bee', + 'skia_revision': 'bba465b98299739f6544ffa25ee8978d44a808d5', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index e4871f640b1ef..aa13b8a0bfa6f 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: acecf32e69c9d09173e3c3a486029f61 +Signature: 7f455a8637066cfc9515ee90a04c86f0 UNUSED LICENSES: From 3ede39c4175e9bd82671928205cc62d9fbfa2736 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Fri, 7 Dec 2018 04:50:33 -0500 Subject: [PATCH 0452/1537] Roll src/third_party/skia bba465b98299..d2a590893903 (1 commits) (#7114) https://skia.googlesource.com/skia.git/+log/bba465b98299..d2a590893903 Created with: gclient setdep -r src/third_party/skia@d2a590893903 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 43c8c73debcab..dac8f7f42b77d 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'bba465b98299739f6544ffa25ee8978d44a808d5', + 'skia_revision': 'd2a59089390337805c3eb3ec4c41968e3ee5252e', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index aa13b8a0bfa6f..049a755d2f58b 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 7f455a8637066cfc9515ee90a04c86f0 +Signature: 23e11612dfe8d0459c42bd352bcb7aa6 UNUSED LICENSES: From 9a00290c0a6b8d97d99a1ebd62332dc83f738aff Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Fri, 7 Dec 2018 08:48:26 -0500 Subject: [PATCH 0453/1537] Roll src/third_party/skia d2a590893903..1886dd7b2d5b (2 commits) (#7115) https://skia.googlesource.com/skia.git/+log/d2a590893903..1886dd7b2d5b Created with: gclient setdep -r src/third_party/skia@1886dd7b2d5b The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index dac8f7f42b77d..ac0ed826bc3b6 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'd2a59089390337805c3eb3ec4c41968e3ee5252e', + 'skia_revision': '1886dd7b2d5b67d9a4cc90999eca751b3522da56', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 049a755d2f58b..1fec5b566ca64 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 23e11612dfe8d0459c42bd352bcb7aa6 +Signature: f34bf6f22de0f1b03411f43032d8af6a UNUSED LICENSES: From 01c183498f6b35b4190e119a73a925d993a1ded6 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Fri, 7 Dec 2018 09:50:18 -0500 Subject: [PATCH 0454/1537] Roll src/third_party/skia 1886dd7b2d5b..bb786b46cf42 (1 commits) (#7116) https://skia.googlesource.com/skia.git/+log/1886dd7b2d5b..bb786b46cf42 Created with: gclient setdep -r src/third_party/skia@bb786b46cf42 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index ac0ed826bc3b6..5d39bc3fb9ddf 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '1886dd7b2d5b67d9a4cc90999eca751b3522da56', + 'skia_revision': 'bb786b46cf42eb4fcfce5024a375b2ce1753437e', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 1fec5b566ca64..d20a6fc754d32 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: f34bf6f22de0f1b03411f43032d8af6a +Signature: c391578047ddbf3725ef2a24f6430073 UNUSED LICENSES: From b479f85d83c25ebef2ec4ea061333cac4f5393ea Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Fri, 7 Dec 2018 10:52:17 -0500 Subject: [PATCH 0455/1537] Roll src/third_party/skia bb786b46cf42..7a3805c348c3 (5 commits) (#7117) https://skia.googlesource.com/skia.git/+log/bb786b46cf42..7a3805c348c3 Created with: gclient setdep -r src/third_party/skia@7a3805c348c3 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 5d39bc3fb9ddf..6f280e225dc9c 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'bb786b46cf42eb4fcfce5024a375b2ce1753437e', + 'skia_revision': '7a3805c348c3791f86743ab6e7d10dff23c5b98b', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index d20a6fc754d32..0ec87fb4b59d3 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: c391578047ddbf3725ef2a24f6430073 +Signature: c71c3ba0deb15412aa6fab6469e2847a UNUSED LICENSES: From b2ec90c51d3f5e784c482cd30756f7490628b282 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Fri, 7 Dec 2018 11:55:23 -0500 Subject: [PATCH 0456/1537] Roll src/third_party/skia 7a3805c348c3..a63593a10c1b (1 commits) (#7118) https://skia.googlesource.com/skia.git/+log/7a3805c348c3..a63593a10c1b Created with: gclient setdep -r src/third_party/skia@a63593a10c1b The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 6f280e225dc9c..bb657fc5670f0 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '7a3805c348c3791f86743ab6e7d10dff23c5b98b', + 'skia_revision': 'a63593a10c1bb32fd773ecc1cd43a6cc20d12c5f', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 0ec87fb4b59d3..a2f2cd0ee22a5 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: c71c3ba0deb15412aa6fab6469e2847a +Signature: 1b39a93475ec03b58b90888e796b4c5c UNUSED LICENSES: From 4414bf0698729609e19bca94273258df9621a35c Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Fri, 7 Dec 2018 13:42:38 -0500 Subject: [PATCH 0457/1537] Roll src/third_party/skia a63593a10c1b..4f76db153493 (8 commits) (#7119) https://skia.googlesource.com/skia.git/+log/a63593a10c1b..4f76db153493 Created with: gclient setdep -r src/third_party/skia@4f76db153493 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/DEPS b/DEPS index bb657fc5670f0..ca9c6c5121ae8 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'a63593a10c1bb32fd773ecc1cd43a6cc20d12c5f', + 'skia_revision': '4f76db153493d56680258366389a98471efbc6d2', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index a2f2cd0ee22a5..513b319047ca1 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 1b39a93475ec03b58b90888e796b4c5c +Signature: 44d636643644ec05d139913cfeca7a4a UNUSED LICENSES: @@ -1406,6 +1406,7 @@ FILE: ../../../third_party/skia/samplecode/SampleNima.cpp FILE: ../../../third_party/skia/src/android/SkAnimatedImage.cpp FILE: ../../../third_party/skia/src/c/sk_imageinfo.cpp FILE: ../../../third_party/skia/src/codec/SkEncodedInfo.cpp +FILE: ../../../third_party/skia/src/codec/SkOrientationMarker.cpp FILE: ../../../third_party/skia/src/codec/SkWuffsCodec.cpp FILE: ../../../third_party/skia/src/codec/SkWuffsCodec.h FILE: ../../../third_party/skia/src/compute/common/cl/find_cl.c @@ -1476,6 +1477,8 @@ FILE: ../../../third_party/skia/src/effects/SkTrimPE.h FILE: ../../../third_party/skia/src/effects/SkTrimPathEffect.cpp FILE: ../../../third_party/skia/src/gpu/GrContextThreadSafeProxyPriv.h FILE: ../../../third_party/skia/src/gpu/GrDDLContext.cpp +FILE: ../../../third_party/skia/src/gpu/GrDeinstantiateProxyTracker.cpp +FILE: ../../../third_party/skia/src/gpu/GrDeinstantiateProxyTracker.h FILE: ../../../third_party/skia/src/gpu/GrDirectContext.cpp FILE: ../../../third_party/skia/src/gpu/GrDriverBugWorkarounds.cpp FILE: ../../../third_party/skia/src/gpu/GrFPArgs.h @@ -1484,8 +1487,6 @@ FILE: ../../../third_party/skia/src/gpu/GrProxyProvider.h FILE: ../../../third_party/skia/src/gpu/GrQuad.cpp FILE: ../../../third_party/skia/src/gpu/GrRenderTargetProxyPriv.h FILE: ../../../third_party/skia/src/gpu/GrResourceProviderPriv.h -FILE: ../../../third_party/skia/src/gpu/GrUninstantiateProxyTracker.cpp -FILE: ../../../third_party/skia/src/gpu/GrUninstantiateProxyTracker.h FILE: ../../../third_party/skia/src/gpu/ccpr/GrCCClipPath.cpp FILE: ../../../third_party/skia/src/gpu/ccpr/GrCCConicShader.cpp FILE: ../../../third_party/skia/src/gpu/ccpr/GrCCConicShader.h From 779e5d5a945be17d3fa17d83cd6acaf69bea1942 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Fri, 7 Dec 2018 14:04:38 -0500 Subject: [PATCH 0458/1537] Roll src/third_party/skia 4f76db153493..802dce0de3fa (2 commits) (#7120) https://skia.googlesource.com/skia.git/+log/4f76db153493..802dce0de3fa Created with: gclient setdep -r src/third_party/skia@802dce0de3fa The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index ca9c6c5121ae8..2b21be74f0324 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '4f76db153493d56680258366389a98471efbc6d2', + 'skia_revision': '802dce0de3fa59bf5264a00c22fd37d4526ec30b', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 513b319047ca1..1070c3f05f353 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 44d636643644ec05d139913cfeca7a4a +Signature: cd773f365b5560004361b9baf97c5d29 UNUSED LICENSES: From 3f04a0e69b4a4f878791b0694926302e878d06c4 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Fri, 7 Dec 2018 14:28:19 -0500 Subject: [PATCH 0459/1537] Roll src/third_party/skia 802dce0de3fa..646107fe7f04 (4 commits) (#7121) https://skia.googlesource.com/skia.git/+log/802dce0de3fa..646107fe7f04 Created with: gclient setdep -r src/third_party/skia@646107fe7f04 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 2b21be74f0324..5f3a192523893 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '802dce0de3fa59bf5264a00c22fd37d4526ec30b', + 'skia_revision': '646107fe7f0430857838bc12ad1ad1a8b961d907', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 1070c3f05f353..cb5c75d449f13 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: cd773f365b5560004361b9baf97c5d29 +Signature: ee2d57d5777934473b300f3a677ec841 UNUSED LICENSES: From 111e092a330957725c85af7a42a336e02bf3c587 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Fri, 7 Dec 2018 14:48:38 -0500 Subject: [PATCH 0460/1537] Roll src/third_party/skia 646107fe7f04..66c26ac9350a (2 commits) (#7122) https://skia.googlesource.com/skia.git/+log/646107fe7f04..66c26ac9350a Created with: gclient setdep -r src/third_party/skia@66c26ac9350a The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 5f3a192523893..2397a2be90e6d 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '646107fe7f0430857838bc12ad1ad1a8b961d907', + 'skia_revision': '66c26ac9350a10c3dcf209a737cc0b317e85f205', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index cb5c75d449f13..0f98cdea20c80 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: ee2d57d5777934473b300f3a677ec841 +Signature: bf1cd4978e8023773ec5cbbe8acd6406 UNUSED LICENSES: From d6edea19b6c15db6136429d6c8a0c8733d45f3a7 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Fri, 7 Dec 2018 15:10:17 -0500 Subject: [PATCH 0461/1537] Roll src/third_party/skia 66c26ac9350a..581d637371df (2 commits) (#7123) https://skia.googlesource.com/skia.git/+log/66c26ac9350a..581d637371df Created with: gclient setdep -r src/third_party/skia@581d637371df The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 2397a2be90e6d..70e0ab037adc3 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '66c26ac9350a10c3dcf209a737cc0b317e85f205', + 'skia_revision': '581d637371df9dc2702415c9ac3f223b04d11f63', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 0f98cdea20c80..4c8dd27365f5d 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: bf1cd4978e8023773ec5cbbe8acd6406 +Signature: bb6a77c134194a776f9c733becf8da17 UNUSED LICENSES: From 0b5bb7868620663b286f502d38170b63810c1f81 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Fri, 7 Dec 2018 15:30:38 -0500 Subject: [PATCH 0462/1537] Roll src/third_party/skia 581d637371df..ece772d8c269 (1 commits) (#7124) https://skia.googlesource.com/skia.git/+log/581d637371df..ece772d8c269 Created with: gclient setdep -r src/third_party/skia@ece772d8c269 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 70e0ab037adc3..20e4a2430ebc0 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '581d637371df9dc2702415c9ac3f223b04d11f63', + 'skia_revision': 'ece772d8c26982a2388fbc923bf9668d7b6ddbfb', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 4c8dd27365f5d..c5cb5800397ea 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: bb6a77c134194a776f9c733becf8da17 +Signature: 06c7215d60659a1370c1ee4fe1317aa4 UNUSED LICENSES: From bd559f5b325eb1eaefd23e7b70101d3457faa522 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Fri, 7 Dec 2018 15:49:38 -0500 Subject: [PATCH 0463/1537] Roll src/third_party/skia ece772d8c269..5424a5eee9ae (2 commits) (#7125) https://skia.googlesource.com/skia.git/+log/ece772d8c269..5424a5eee9ae Created with: gclient setdep -r src/third_party/skia@5424a5eee9ae The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 20e4a2430ebc0..f93930b8222d5 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'ece772d8c26982a2388fbc923bf9668d7b6ddbfb', + 'skia_revision': '5424a5eee9aea74a067b49711f260c64dde7a137', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index c5cb5800397ea..25372bec3c802 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 06c7215d60659a1370c1ee4fe1317aa4 +Signature: 35006f62b7cc84edbdc6750806c5d7dc UNUSED LICENSES: From 9c273f2faa441bec8ef7dd2b70cedc2eeaa8cb74 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Fri, 7 Dec 2018 16:17:38 -0500 Subject: [PATCH 0464/1537] Roll src/third_party/skia 5424a5eee9ae..a098265198c6 (1 commits) (#7126) https://skia.googlesource.com/skia.git/+log/5424a5eee9ae..a098265198c6 Created with: gclient setdep -r src/third_party/skia@a098265198c6 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index f93930b8222d5..e01a7825c287c 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '5424a5eee9aea74a067b49711f260c64dde7a137', + 'skia_revision': 'a098265198c6b0878752d781db2c62073d82ef5b', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the From c12d991c34106d95448e161ccedf6a2e48711eda Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Fri, 7 Dec 2018 17:18:38 -0500 Subject: [PATCH 0465/1537] Roll src/third_party/skia a098265198c6..85a216ce891c (1 commits) (#7127) https://skia.googlesource.com/skia.git/+log/a098265198c6..85a216ce891c Created with: gclient setdep -r src/third_party/skia@85a216ce891c The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index e01a7825c287c..a70feb9069312 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'a098265198c6b0878752d781db2c62073d82ef5b', + 'skia_revision': '85a216ce891c58c42cdb8b79985d8b3ee2bd1171', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 25372bec3c802..129ec98f3a868 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 35006f62b7cc84edbdc6750806c5d7dc +Signature: b7683070e8f46bdba45ce1b8b053c429 UNUSED LICENSES: From 0a3d76d42269f0d3f634e4112e143815b6e6888e Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Fri, 7 Dec 2018 17:40:17 -0500 Subject: [PATCH 0466/1537] Roll src/third_party/skia 85a216ce891c..4a6a4acab299 (2 commits) (#7128) https://skia.googlesource.com/skia.git/+log/85a216ce891c..4a6a4acab299 Created with: gclient setdep -r src/third_party/skia@4a6a4acab299 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index a70feb9069312..87d404e7a8ca1 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '85a216ce891c58c42cdb8b79985d8b3ee2bd1171', + 'skia_revision': '4a6a4acab2990b7ec1bd6a7d7e5d9b981afdd238', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 129ec98f3a868..3126e1a4d1259 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: b7683070e8f46bdba45ce1b8b053c429 +Signature: 2bf066d6847da94efede52dcab68e7d1 UNUSED LICENSES: From a2b6fd47201560b9419d0b61f1c4d6a790e7740f Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Fri, 7 Dec 2018 18:15:38 -0500 Subject: [PATCH 0467/1537] Roll src/third_party/skia 4a6a4acab299..27be8c696618 (1 commits) (#7129) https://skia.googlesource.com/skia.git/+log/4a6a4acab299..27be8c696618 Created with: gclient setdep -r src/third_party/skia@27be8c696618 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 87d404e7a8ca1..e2aa56061d3fc 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '4a6a4acab2990b7ec1bd6a7d7e5d9b981afdd238', + 'skia_revision': '27be8c696618cd7974c210d04b150326a0e63393', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 3126e1a4d1259..c0ef1dcaa58d1 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 2bf066d6847da94efede52dcab68e7d1 +Signature: 7ca32643b0dffaac6477780966965883 UNUSED LICENSES: From 74907703d753a1945df62c5cc7ba21397063e11e Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Fri, 7 Dec 2018 19:25:21 -0500 Subject: [PATCH 0468/1537] Roll src/third_party/skia 27be8c696618..1ee699d06c63 (2 commits) (#7131) https://skia.googlesource.com/skia.git/+log/27be8c696618..1ee699d06c63 Created with: gclient setdep -r src/third_party/skia@1ee699d06c63 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index e2aa56061d3fc..6ceaf0382dc9e 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '27be8c696618cd7974c210d04b150326a0e63393', + 'skia_revision': '1ee699d06c637c47290bae0fef962d5e74d14db6', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index c0ef1dcaa58d1..ff365cbfdeb64 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 7ca32643b0dffaac6477780966965883 +Signature: 5850c2a83abd1348bebea9d092c58162 UNUSED LICENSES: From 9e2bd7b1ef12747560e71bc0b3126a88165e9308 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Fri, 7 Dec 2018 22:20:37 -0500 Subject: [PATCH 0469/1537] Roll src/third_party/skia 1ee699d06c63..4ba351951e8c (1 commits) (#7132) https://skia.googlesource.com/skia.git/+log/1ee699d06c63..4ba351951e8c Created with: gclient setdep -r src/third_party/skia@4ba351951e8c The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 6ceaf0382dc9e..d634e0d595c9e 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '1ee699d06c637c47290bae0fef962d5e74d14db6', + 'skia_revision': '4ba351951e8c99b00177e049b126e48e7295be3d', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index ff365cbfdeb64..ab1387c355331 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 5850c2a83abd1348bebea9d092c58162 +Signature: 06512363f45956e82d25740665165d5d UNUSED LICENSES: From 6ca1b0a725a8fe7ff1447aec3ad925a506676c95 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Sat, 8 Dec 2018 01:29:56 -0500 Subject: [PATCH 0470/1537] Roll src/third_party/skia 4ba351951e8c..2d8789ded9ed (1 commits) (#7133) https://skia.googlesource.com/skia.git/+log/4ba351951e8c..2d8789ded9ed Created with: gclient setdep -r src/third_party/skia@2d8789ded9ed The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index d634e0d595c9e..f57a6103ab9ca 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '4ba351951e8c99b00177e049b126e48e7295be3d', + 'skia_revision': '2d8789ded9ed40823593cef2cfaceb27d88810fa', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index ab1387c355331..526a18865ef83 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 06512363f45956e82d25740665165d5d +Signature: 20b65da3a86fe8ed57eb5becd9e58f9c UNUSED LICENSES: From ca679de8bb1939ef71fc058687ee4e50296d0e94 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Sat, 8 Dec 2018 07:11:54 -0500 Subject: [PATCH 0471/1537] Roll src/third_party/skia 2d8789ded9ed..955f021a4d0d (1 commits) (#7134) https://skia.googlesource.com/skia.git/+log/2d8789ded9ed..955f021a4d0d Created with: gclient setdep -r src/third_party/skia@955f021a4d0d The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index f57a6103ab9ca..fc30db508147a 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '2d8789ded9ed40823593cef2cfaceb27d88810fa', + 'skia_revision': '955f021a4d0d13c9249b5605837e3b99fac285b0', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 526a18865ef83..0fd9b0bad5053 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 20b65da3a86fe8ed57eb5becd9e58f9c +Signature: 01674a671711b8db37f2d600d2291710 UNUSED LICENSES: From 491c7cac3713e18acae80d2f609a616810e7c3c3 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Sat, 8 Dec 2018 09:19:37 -0500 Subject: [PATCH 0472/1537] Roll src/third_party/skia 955f021a4d0d..4037a18e5d8d (1 commits) (#7135) https://skia.googlesource.com/skia.git/+log/955f021a4d0d..4037a18e5d8d Created with: gclient setdep -r src/third_party/skia@4037a18e5d8d The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index fc30db508147a..7a051872bd371 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '955f021a4d0d13c9249b5605837e3b99fac285b0', + 'skia_revision': '4037a18e5d8dfc05032edb31ad7b8393beb564ff', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 0fd9b0bad5053..5148726e97340 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 01674a671711b8db37f2d600d2291710 +Signature: 4aadd2ae5d1e403f41a5b874a611b4cf UNUSED LICENSES: From c563362f21791a0ac8b1fc1741a7b40495255203 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Sun, 9 Dec 2018 01:22:37 -0500 Subject: [PATCH 0473/1537] Roll src/third_party/skia 4037a18e5d8d..27d5e8123477 (1 commits) (#7136) https://skia.googlesource.com/skia.git/+log/4037a18e5d8d..27d5e8123477 Created with: gclient setdep -r src/third_party/skia@27d5e8123477 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 7a051872bd371..ce6354dac7d4d 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '4037a18e5d8dfc05032edb31ad7b8393beb564ff', + 'skia_revision': '27d5e812347773bde18a646bc20989dab8b9164d', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 5148726e97340..e0c87a17376bb 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 4aadd2ae5d1e403f41a5b874a611b4cf +Signature: 08d2892399d1019c8cc783c25dd448cc UNUSED LICENSES: From 3040ac0a607c4eff0ac59e61fa7c4424b845272c Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll <37626415+skia-flutter-autoroll@users.noreply.github.com> Date: Sun, 9 Dec 2018 04:04:37 -0500 Subject: [PATCH 0474/1537] Roll src/third_party/skia 27d5e8123477..1a592c2a3dee (1 commits) (#7137) https://skia.googlesource.com/skia.git/+log/27d5e8123477..1a592c2a3dee Created with: gclient setdep -r src/third_party/skia@1a592c2a3dee The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index ce6354dac7d4d..e3928135ea4b7 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '27d5e812347773bde18a646bc20989dab8b9164d', + 'skia_revision': '1a592c2a3dee68278aeeaaefd50afe9f68a03248', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index e0c87a17376bb..a8967158f9360 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 08d2892399d1019c8cc783c25dd448cc +Signature: 34ed0d36082d875337a1bec5ff0b18fa UNUSED LICENSES: From 503f45d7c841f77843859560dc7465fa75b9f556 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Mon, 10 Dec 2018 10:21:09 -0500 Subject: [PATCH 0475/1537] Roll src/third_party/skia 1a592c2a3dee..a6e0c2b19c78 (8 commits) (#7138) https://skia.googlesource.com/skia.git/+log/1a592c2a3dee..a6e0c2b19c78 Created with: gclient setdep -r src/third_party/skia@a6e0c2b19c78 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index e3928135ea4b7..e504a276268a1 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '1a592c2a3dee68278aeeaaefd50afe9f68a03248', + 'skia_revision': 'a6e0c2b19c789c67879eeaef83f28251d666a496', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index a8967158f9360..b80d014cea3d4 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 34ed0d36082d875337a1bec5ff0b18fa +Signature: 857d717da36113b59bb11a971288ce5c UNUSED LICENSES: From b74d8787ccab69635c8f99f2ed291ccd05f542f4 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Mon, 10 Dec 2018 11:01:43 -0500 Subject: [PATCH 0476/1537] Roll src/third_party/skia a6e0c2b19c78..f0b6044d6d20 (4 commits) (#7140) https://skia.googlesource.com/skia.git/+log/a6e0c2b19c78..f0b6044d6d20 Created with: gclient setdep -r src/third_party/skia@f0b6044d6d20 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index e504a276268a1..14c757978beaa 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'a6e0c2b19c789c67879eeaef83f28251d666a496', + 'skia_revision': 'f0b6044d6d203f76d6b95766e034c886de68ca89', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index b80d014cea3d4..99f0a86e4cdb4 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 857d717da36113b59bb11a971288ce5c +Signature: 7b87e6dc4b4b46d0686a393598dcd221 UNUSED LICENSES: From c56c896bd6aea9607d3f1dec8566147b01fb8639 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Mon, 10 Dec 2018 11:20:11 -0500 Subject: [PATCH 0477/1537] Roll src/third_party/skia f0b6044d6d20..0c75727f0148 (4 commits) (#7141) https://skia.googlesource.com/skia.git/+log/f0b6044d6d20..0c75727f0148 Created with: gclient setdep -r src/third_party/skia@0c75727f0148 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 14c757978beaa..8fca2626205e0 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'f0b6044d6d203f76d6b95766e034c886de68ca89', + 'skia_revision': '0c75727f0148cafc6653d7d94b3633889ffde7db', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 99f0a86e4cdb4..8ac1b6bf7de35 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 7b87e6dc4b4b46d0686a393598dcd221 +Signature: 597d288a704623f6493d166fa62ea8cc UNUSED LICENSES: From 12d5200889c62b557789f8ce789f3caa6d58cf4b Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Mon, 10 Dec 2018 11:42:09 -0500 Subject: [PATCH 0478/1537] Roll src/third_party/skia 0c75727f0148..be5a09332e5d (1 commits) (#7142) https://skia.googlesource.com/skia.git/+log/0c75727f0148..be5a09332e5d Created with: gclient setdep -r src/third_party/skia@be5a09332e5d The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 8fca2626205e0..06b2862c057fd 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '0c75727f0148cafc6653d7d94b3633889ffde7db', + 'skia_revision': 'be5a09332e5dfd23123900159ea1cd399be151d3', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 8ac1b6bf7de35..1b9827c3ca227 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 597d288a704623f6493d166fa62ea8cc +Signature: 2bd295be7aa397b7c40813a7bf47a5e9 UNUSED LICENSES: From 3fd66365dab3caec925f2b9f3b9307af422bcf49 Mon Sep 17 00:00:00 2001 From: Michael Goderbauer Date: Mon, 10 Dec 2018 09:06:32 -0800 Subject: [PATCH 0479/1537] Reland "Compile libcxx and libcxxabi for Android (#6886)" (#6919) This reverts commit 983d70eb3efc6c4c616f6d7b166451267f581d7c. --- DEPS | 8 +- ci/licenses_golden/licenses_third_party | 545 +++++++++++++++++++++++- sky/packages/sky_engine/LICENSE | 111 +++++ tools/licenses/lib/main.dart | 63 ++- 4 files changed, 722 insertions(+), 5 deletions(-) diff --git a/DEPS b/DEPS index cd4acaf5ed94b..3e7f55a6faee4 100644 --- a/DEPS +++ b/DEPS @@ -117,7 +117,7 @@ allowed_hosts = [ ] deps = { - 'src': 'https://github.com/flutter/buildroot.git' + '@' + '29a5d76757ec12655c0562b317830f669bd44ea7', + 'src': 'https://github.com/flutter/buildroot.git' + '@' + 'b7f2b443b5648b9cd7ad539d8b4f73b3c69fedbf', # Fuchsia compatibility # @@ -140,6 +140,12 @@ deps = { 'src/third_party/harfbuzz': Var('fuchsia_git') + '/third_party/harfbuzz' + '@' + '02caec6c1c6ad996666788b8e920ccaec8b385e5', + 'src/third_party/libcxx': + Var('fuchsia_git') + '/third_party/libcxx' + '@' + 'c5a5fa59789213c7dae68d2e51cb28ef681d8257', + + 'src/third_party/libcxxabi': + Var('fuchsia_git') + '/third_party/libcxxabi' + '@' + '1a9753522f1ae8d72848d365902f39e0d3d59a39', + # Chromium-style # # As part of integrating with Fuchsia, we should eventually remove all these diff --git a/ci/licenses_golden/licenses_third_party b/ci/licenses_golden/licenses_third_party index a06c935614ec2..81459beeffa9e 100644 --- a/ci/licenses_golden/licenses_third_party +++ b/ci/licenses_golden/licenses_third_party @@ -1,4 +1,4 @@ -Signature: 688d05f1b8d8726e65b28a27ccc7dfcb +Signature: d7c30cf5ac4c421cc15ff2731ade24c4 UNUSED LICENSES: @@ -13123,6 +13123,547 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ==================================================================================================== +==================================================================================================== +LIBRARY: libcxx +LIBRARY: libcxxabi +ORIGIN: null +TYPE: LicenseType.mit +FILE: ../../../third_party/libcxx/.arcconfig +FILE: ../../../third_party/libcxx/appveyor-reqs-install.cmd +FILE: ../../../third_party/libcxx/appveyor.yml +FILE: ../../../third_party/libcxx/benchmarks/ContainerBenchmarks.hpp +FILE: ../../../third_party/libcxx/benchmarks/GenerateInput.hpp +FILE: ../../../third_party/libcxx/benchmarks/algorithms.bench.cpp +FILE: ../../../third_party/libcxx/benchmarks/filesystem.bench.cpp +FILE: ../../../third_party/libcxx/benchmarks/lit.site.cfg.py.in +FILE: ../../../third_party/libcxx/benchmarks/string.bench.cpp +FILE: ../../../third_party/libcxx/benchmarks/stringstream.bench.cpp +FILE: ../../../third_party/libcxx/benchmarks/unordered_set_operations.bench.cpp +FILE: ../../../third_party/libcxx/benchmarks/vector_operations.bench.cpp +FILE: ../../../third_party/libcxx/docs/BuildingLibcxx.rst +FILE: ../../../third_party/libcxx/docs/DesignDocs/ABIVersioning.rst +FILE: ../../../third_party/libcxx/docs/DesignDocs/AvailabilityMarkup.rst +FILE: ../../../third_party/libcxx/docs/DesignDocs/DebugMode.rst +FILE: ../../../third_party/libcxx/docs/DesignDocs/FileTimeType.rst +FILE: ../../../third_party/libcxx/docs/DesignDocs/ThreadingSupportAPI.rst +FILE: ../../../third_party/libcxx/docs/DesignDocs/VisibilityMacros.rst +FILE: ../../../third_party/libcxx/docs/Makefile.sphinx +FILE: ../../../third_party/libcxx/docs/ReleaseNotes.rst +FILE: ../../../third_party/libcxx/docs/TestingLibcxx.rst +FILE: ../../../third_party/libcxx/docs/UsingLibcxx.rst +FILE: ../../../third_party/libcxx/docs/index.rst +FILE: ../../../third_party/libcxx/include/__libcpp_version +FILE: ../../../third_party/libcxx/include/__split_buffer +FILE: ../../../third_party/libcxx/include/__string +FILE: ../../../third_party/libcxx/include/__undef_macros +FILE: ../../../third_party/libcxx/include/any +FILE: ../../../third_party/libcxx/include/atomic +FILE: ../../../third_party/libcxx/include/cinttypes +FILE: ../../../third_party/libcxx/include/cstring +FILE: ../../../third_party/libcxx/include/experimental/any +FILE: ../../../third_party/libcxx/include/experimental/chrono +FILE: ../../../third_party/libcxx/include/experimental/coroutine +FILE: ../../../third_party/libcxx/include/experimental/iterator +FILE: ../../../third_party/libcxx/include/experimental/memory_resource +FILE: ../../../third_party/libcxx/include/experimental/ratio +FILE: ../../../third_party/libcxx/include/experimental/string_view +FILE: ../../../third_party/libcxx/include/inttypes.h +FILE: ../../../third_party/libcxx/include/module.modulemap +FILE: ../../../third_party/libcxx/include/stdint.h +FILE: ../../../third_party/libcxx/include/string +FILE: ../../../third_party/libcxx/include/string.h +FILE: ../../../third_party/libcxx/include/string_view +FILE: ../../../third_party/libcxx/include/tuple +FILE: ../../../third_party/libcxx/lib/abi/3.9/x86_64-apple-darwin16.abilist +FILE: ../../../third_party/libcxx/lib/abi/3.9/x86_64-linux-gnu.abilist +FILE: ../../../third_party/libcxx/lib/abi/4.0/x86_64-apple-darwin16.abilist +FILE: ../../../third_party/libcxx/lib/abi/4.0/x86_64-unknown-linux-gnu.abilist +FILE: ../../../third_party/libcxx/lib/abi/5.0/x86_64-apple-darwin16.abilist +FILE: ../../../third_party/libcxx/lib/abi/5.0/x86_64-unknown-linux-gnu.abilist +FILE: ../../../third_party/libcxx/lib/abi/6.0/x86_64-apple-darwin16.abilist +FILE: ../../../third_party/libcxx/lib/abi/6.0/x86_64-unknown-linux-gnu.abilist +FILE: ../../../third_party/libcxx/lib/abi/x86_64-apple-darwin.v1.abilist +FILE: ../../../third_party/libcxx/lib/abi/x86_64-apple-darwin.v2.abilist +FILE: ../../../third_party/libcxx/lib/abi/x86_64-unknown-linux-gnu.v1.abilist +FILE: ../../../third_party/libcxx/lib/libc++abi-new-delete.exp +FILE: ../../../third_party/libcxx/lib/libc++abi.exp +FILE: ../../../third_party/libcxx/lib/libc++abi2.exp +FILE: ../../../third_party/libcxx/lib/libc++sjlj-abi.exp +FILE: ../../../third_party/libcxx/lib/libc++unexp.exp +FILE: ../../../third_party/libcxx/lib/notweak.exp +FILE: ../../../third_party/libcxx/lib/weak.exp +FILE: ../../../third_party/libcxx/src/filesystem/int128_builtins.cpp +FILE: ../../../third_party/libcxx/www/TS_deprecation.html +FILE: ../../../third_party/libcxx/www/atomic_design.html +FILE: ../../../third_party/libcxx/www/atomic_design_a.html +FILE: ../../../third_party/libcxx/www/atomic_design_b.html +FILE: ../../../third_party/libcxx/www/atomic_design_c.html +FILE: ../../../third_party/libcxx/www/cxx1y_status.html +FILE: ../../../third_party/libcxx/www/cxx1z_status.html +FILE: ../../../third_party/libcxx/www/cxx2a_status.html +FILE: ../../../third_party/libcxx/www/index.html +FILE: ../../../third_party/libcxx/www/ts1z_status.html +FILE: ../../../third_party/libcxx/www/type_traits_design.html +FILE: ../../../third_party/libcxx/www/upcoming_meeting.html +FILE: ../../../third_party/libcxxabi/.arcconfig +FILE: ../../../third_party/libcxxabi/fuzz/cxa_demangle_fuzzer.cpp +FILE: ../../../third_party/libcxxabi/include/__cxxabi_config.h +FILE: ../../../third_party/libcxxabi/include/cxxabi.h +FILE: ../../../third_party/libcxxabi/src/abort_message.cpp +FILE: ../../../third_party/libcxxabi/src/abort_message.h +FILE: ../../../third_party/libcxxabi/src/cxa_aux_runtime.cpp +FILE: ../../../third_party/libcxxabi/src/cxa_default_handlers.cpp +FILE: ../../../third_party/libcxxabi/src/cxa_demangle.cpp +FILE: ../../../third_party/libcxxabi/src/cxa_exception.cpp +FILE: ../../../third_party/libcxxabi/src/cxa_exception.hpp +FILE: ../../../third_party/libcxxabi/src/cxa_exception_storage.cpp +FILE: ../../../third_party/libcxxabi/src/cxa_guard.cpp +FILE: ../../../third_party/libcxxabi/src/cxa_handlers.cpp +FILE: ../../../third_party/libcxxabi/src/cxa_handlers.hpp +FILE: ../../../third_party/libcxxabi/src/cxa_noexception.cpp +FILE: ../../../third_party/libcxxabi/src/cxa_personality.cpp +FILE: ../../../third_party/libcxxabi/src/cxa_thread_atexit.cpp +FILE: ../../../third_party/libcxxabi/src/cxa_unexpected.cpp +FILE: ../../../third_party/libcxxabi/src/cxa_vector.cpp +FILE: ../../../third_party/libcxxabi/src/cxa_virtual.cpp +FILE: ../../../third_party/libcxxabi/src/demangle/Compiler.h +FILE: ../../../third_party/libcxxabi/src/demangle/ItaniumDemangle.h +FILE: ../../../third_party/libcxxabi/src/demangle/StringView.h +FILE: ../../../third_party/libcxxabi/src/demangle/Utility.h +FILE: ../../../third_party/libcxxabi/src/fallback_malloc.cpp +FILE: ../../../third_party/libcxxabi/src/fallback_malloc.h +FILE: ../../../third_party/libcxxabi/src/include/atomic_support.h +FILE: ../../../third_party/libcxxabi/src/include/refstring.h +FILE: ../../../third_party/libcxxabi/src/private_typeinfo.cpp +FILE: ../../../third_party/libcxxabi/src/private_typeinfo.h +FILE: ../../../third_party/libcxxabi/src/stdlib_exception.cpp +FILE: ../../../third_party/libcxxabi/src/stdlib_new_delete.cpp +FILE: ../../../third_party/libcxxabi/src/stdlib_stdexcept.cpp +FILE: ../../../third_party/libcxxabi/src/stdlib_typeinfo.cpp +FILE: ../../../third_party/libcxxabi/www/index.html +FILE: ../../../third_party/libcxxabi/www/spec.html +---------------------------------------------------------------------------------------------------- +Copyright (c) 2009-2014 by the contributors listed in CREDITS.TXT + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +==================================================================================================== + +==================================================================================================== +LIBRARY: libcxx +ORIGIN: null +TYPE: LicenseType.bsd +FILE: ../../../third_party/libcxx/.arcconfig +FILE: ../../../third_party/libcxx/appveyor-reqs-install.cmd +FILE: ../../../third_party/libcxx/appveyor.yml +FILE: ../../../third_party/libcxx/benchmarks/CartesianBenchmarks.hpp +FILE: ../../../third_party/libcxx/benchmarks/ContainerBenchmarks.hpp +FILE: ../../../third_party/libcxx/benchmarks/GenerateInput.hpp +FILE: ../../../third_party/libcxx/benchmarks/algorithms.bench.cpp +FILE: ../../../third_party/libcxx/benchmarks/filesystem.bench.cpp +FILE: ../../../third_party/libcxx/benchmarks/function.bench.cpp +FILE: ../../../third_party/libcxx/benchmarks/lit.site.cfg.py.in +FILE: ../../../third_party/libcxx/benchmarks/ordered_set.bench.cpp +FILE: ../../../third_party/libcxx/benchmarks/string.bench.cpp +FILE: ../../../third_party/libcxx/benchmarks/stringstream.bench.cpp +FILE: ../../../third_party/libcxx/benchmarks/unordered_set_operations.bench.cpp +FILE: ../../../third_party/libcxx/benchmarks/util_smartptr.bench.cpp +FILE: ../../../third_party/libcxx/benchmarks/vector_operations.bench.cpp +FILE: ../../../third_party/libcxx/docs/BuildingLibcxx.rst +FILE: ../../../third_party/libcxx/docs/DesignDocs/ABIVersioning.rst +FILE: ../../../third_party/libcxx/docs/DesignDocs/AvailabilityMarkup.rst +FILE: ../../../third_party/libcxx/docs/DesignDocs/CapturingConfigInfo.rst +FILE: ../../../third_party/libcxx/docs/DesignDocs/CapturingConfigInfo.rst +FILE: ../../../third_party/libcxx/docs/DesignDocs/DebugMode.rst +FILE: ../../../third_party/libcxx/docs/DesignDocs/FileTimeType.rst +FILE: ../../../third_party/libcxx/docs/DesignDocs/ThreadingSupportAPI.rst +FILE: ../../../third_party/libcxx/docs/DesignDocs/VisibilityMacros.rst +FILE: ../../../third_party/libcxx/docs/Makefile.sphinx +FILE: ../../../third_party/libcxx/docs/ReleaseNotes.rst +FILE: ../../../third_party/libcxx/docs/TestingLibcxx.rst +FILE: ../../../third_party/libcxx/docs/UsingLibcxx.rst +FILE: ../../../third_party/libcxx/docs/index.rst +FILE: ../../../third_party/libcxx/fuzzing/fuzz_test.cpp +FILE: ../../../third_party/libcxx/fuzzing/fuzzing.cpp +FILE: ../../../third_party/libcxx/fuzzing/fuzzing.h +FILE: ../../../third_party/libcxx/include/__bit_reference +FILE: ../../../third_party/libcxx/include/__bsd_locale_defaults.h +FILE: ../../../third_party/libcxx/include/__bsd_locale_fallbacks.h +FILE: ../../../third_party/libcxx/include/__config +FILE: ../../../third_party/libcxx/include/__config_site.in +FILE: ../../../third_party/libcxx/include/__debug +FILE: ../../../third_party/libcxx/include/__errc +FILE: ../../../third_party/libcxx/include/__functional_03 +FILE: ../../../third_party/libcxx/include/__functional_base +FILE: ../../../third_party/libcxx/include/__functional_base_03 +FILE: ../../../third_party/libcxx/include/__hash_table +FILE: ../../../third_party/libcxx/include/__libcpp_version +FILE: ../../../third_party/libcxx/include/__locale +FILE: ../../../third_party/libcxx/include/__mutex_base +FILE: ../../../third_party/libcxx/include/__node_handle +FILE: ../../../third_party/libcxx/include/__nullptr +FILE: ../../../third_party/libcxx/include/__split_buffer +FILE: ../../../third_party/libcxx/include/__sso_allocator +FILE: ../../../third_party/libcxx/include/__std_stream +FILE: ../../../third_party/libcxx/include/__string +FILE: ../../../third_party/libcxx/include/__threading_support +FILE: ../../../third_party/libcxx/include/__tree +FILE: ../../../third_party/libcxx/include/__tuple +FILE: ../../../third_party/libcxx/include/__undef_macros +FILE: ../../../third_party/libcxx/include/algorithm +FILE: ../../../third_party/libcxx/include/any +FILE: ../../../third_party/libcxx/include/array +FILE: ../../../third_party/libcxx/include/atomic +FILE: ../../../third_party/libcxx/include/bit +FILE: ../../../third_party/libcxx/include/bitset +FILE: ../../../third_party/libcxx/include/cassert +FILE: ../../../third_party/libcxx/include/ccomplex +FILE: ../../../third_party/libcxx/include/cctype +FILE: ../../../third_party/libcxx/include/cerrno +FILE: ../../../third_party/libcxx/include/cfenv +FILE: ../../../third_party/libcxx/include/cfloat +FILE: ../../../third_party/libcxx/include/charconv +FILE: ../../../third_party/libcxx/include/chrono +FILE: ../../../third_party/libcxx/include/cinttypes +FILE: ../../../third_party/libcxx/include/ciso646 +FILE: ../../../third_party/libcxx/include/climits +FILE: ../../../third_party/libcxx/include/clocale +FILE: ../../../third_party/libcxx/include/cmath +FILE: ../../../third_party/libcxx/include/codecvt +FILE: ../../../third_party/libcxx/include/compare +FILE: ../../../third_party/libcxx/include/complex +FILE: ../../../third_party/libcxx/include/complex.h +FILE: ../../../third_party/libcxx/include/condition_variable +FILE: ../../../third_party/libcxx/include/csetjmp +FILE: ../../../third_party/libcxx/include/csignal +FILE: ../../../third_party/libcxx/include/cstdarg +FILE: ../../../third_party/libcxx/include/cstdbool +FILE: ../../../third_party/libcxx/include/cstddef +FILE: ../../../third_party/libcxx/include/cstdint +FILE: ../../../third_party/libcxx/include/cstdio +FILE: ../../../third_party/libcxx/include/cstdlib +FILE: ../../../third_party/libcxx/include/cstring +FILE: ../../../third_party/libcxx/include/ctgmath +FILE: ../../../third_party/libcxx/include/ctime +FILE: ../../../third_party/libcxx/include/ctype.h +FILE: ../../../third_party/libcxx/include/cwchar +FILE: ../../../third_party/libcxx/include/cwctype +FILE: ../../../third_party/libcxx/include/deque +FILE: ../../../third_party/libcxx/include/errno.h +FILE: ../../../third_party/libcxx/include/exception +FILE: ../../../third_party/libcxx/include/experimental/__config +FILE: ../../../third_party/libcxx/include/experimental/__memory +FILE: ../../../third_party/libcxx/include/experimental/algorithm +FILE: ../../../third_party/libcxx/include/experimental/any +FILE: ../../../third_party/libcxx/include/experimental/chrono +FILE: ../../../third_party/libcxx/include/experimental/coroutine +FILE: ../../../third_party/libcxx/include/experimental/deque +FILE: ../../../third_party/libcxx/include/experimental/dynarray +FILE: ../../../third_party/libcxx/include/experimental/filesystem +FILE: ../../../third_party/libcxx/include/experimental/forward_list +FILE: ../../../third_party/libcxx/include/experimental/functional +FILE: ../../../third_party/libcxx/include/experimental/iterator +FILE: ../../../third_party/libcxx/include/experimental/list +FILE: ../../../third_party/libcxx/include/experimental/map +FILE: ../../../third_party/libcxx/include/experimental/memory_resource +FILE: ../../../third_party/libcxx/include/experimental/numeric +FILE: ../../../third_party/libcxx/include/experimental/optional +FILE: ../../../third_party/libcxx/include/experimental/propagate_const +FILE: ../../../third_party/libcxx/include/experimental/ratio +FILE: ../../../third_party/libcxx/include/experimental/regex +FILE: ../../../third_party/libcxx/include/experimental/set +FILE: ../../../third_party/libcxx/include/experimental/simd +FILE: ../../../third_party/libcxx/include/experimental/string +FILE: ../../../third_party/libcxx/include/experimental/string_view +FILE: ../../../third_party/libcxx/include/experimental/system_error +FILE: ../../../third_party/libcxx/include/experimental/tuple +FILE: ../../../third_party/libcxx/include/experimental/type_traits +FILE: ../../../third_party/libcxx/include/experimental/unordered_map +FILE: ../../../third_party/libcxx/include/experimental/unordered_set +FILE: ../../../third_party/libcxx/include/experimental/utility +FILE: ../../../third_party/libcxx/include/experimental/vector +FILE: ../../../third_party/libcxx/include/ext/__hash +FILE: ../../../third_party/libcxx/include/ext/hash_map +FILE: ../../../third_party/libcxx/include/ext/hash_set +FILE: ../../../third_party/libcxx/include/filesystem +FILE: ../../../third_party/libcxx/include/float.h +FILE: ../../../third_party/libcxx/include/forward_list +FILE: ../../../third_party/libcxx/include/fstream +FILE: ../../../third_party/libcxx/include/functional +FILE: ../../../third_party/libcxx/include/future +FILE: ../../../third_party/libcxx/include/initializer_list +FILE: ../../../third_party/libcxx/include/inttypes.h +FILE: ../../../third_party/libcxx/include/iomanip +FILE: ../../../third_party/libcxx/include/ios +FILE: ../../../third_party/libcxx/include/iosfwd +FILE: ../../../third_party/libcxx/include/iostream +FILE: ../../../third_party/libcxx/include/istream +FILE: ../../../third_party/libcxx/include/iterator +FILE: ../../../third_party/libcxx/include/limits +FILE: ../../../third_party/libcxx/include/limits.h +FILE: ../../../third_party/libcxx/include/list +FILE: ../../../third_party/libcxx/include/locale +FILE: ../../../third_party/libcxx/include/locale.h +FILE: ../../../third_party/libcxx/include/map +FILE: ../../../third_party/libcxx/include/math.h +FILE: ../../../third_party/libcxx/include/memory +FILE: ../../../third_party/libcxx/include/module.modulemap +FILE: ../../../third_party/libcxx/include/mutex +FILE: ../../../third_party/libcxx/include/new +FILE: ../../../third_party/libcxx/include/numeric +FILE: ../../../third_party/libcxx/include/optional +FILE: ../../../third_party/libcxx/include/ostream +FILE: ../../../third_party/libcxx/include/queue +FILE: ../../../third_party/libcxx/include/random +FILE: ../../../third_party/libcxx/include/ratio +FILE: ../../../third_party/libcxx/include/regex +FILE: ../../../third_party/libcxx/include/scoped_allocator +FILE: ../../../third_party/libcxx/include/set +FILE: ../../../third_party/libcxx/include/setjmp.h +FILE: ../../../third_party/libcxx/include/shared_mutex +FILE: ../../../third_party/libcxx/include/span +FILE: ../../../third_party/libcxx/include/sstream +FILE: ../../../third_party/libcxx/include/stack +FILE: ../../../third_party/libcxx/include/stdbool.h +FILE: ../../../third_party/libcxx/include/stddef.h +FILE: ../../../third_party/libcxx/include/stdexcept +FILE: ../../../third_party/libcxx/include/stdint.h +FILE: ../../../third_party/libcxx/include/stdio.h +FILE: ../../../third_party/libcxx/include/stdlib.h +FILE: ../../../third_party/libcxx/include/streambuf +FILE: ../../../third_party/libcxx/include/string +FILE: ../../../third_party/libcxx/include/string.h +FILE: ../../../third_party/libcxx/include/string_view +FILE: ../../../third_party/libcxx/include/strstream +FILE: ../../../third_party/libcxx/include/support/android/locale_bionic.h +FILE: ../../../third_party/libcxx/include/support/fuchsia/xlocale.h +FILE: ../../../third_party/libcxx/include/support/ibm/limits.h +FILE: ../../../third_party/libcxx/include/support/ibm/locale_mgmt_aix.h +FILE: ../../../third_party/libcxx/include/support/ibm/support.h +FILE: ../../../third_party/libcxx/include/support/ibm/xlocale.h +FILE: ../../../third_party/libcxx/include/support/musl/xlocale.h +FILE: ../../../third_party/libcxx/include/support/newlib/xlocale.h +FILE: ../../../third_party/libcxx/include/support/solaris/floatingpoint.h +FILE: ../../../third_party/libcxx/include/support/solaris/wchar.h +FILE: ../../../third_party/libcxx/include/support/solaris/xlocale.h +FILE: ../../../third_party/libcxx/include/support/win32/limits_msvc_win32.h +FILE: ../../../third_party/libcxx/include/support/win32/locale_win32.h +FILE: ../../../third_party/libcxx/include/support/xlocale/__nop_locale_mgmt.h +FILE: ../../../third_party/libcxx/include/support/xlocale/__posix_l_fallback.h +FILE: ../../../third_party/libcxx/include/support/xlocale/__strtonum_fallback.h +FILE: ../../../third_party/libcxx/include/system_error +FILE: ../../../third_party/libcxx/include/tgmath.h +FILE: ../../../third_party/libcxx/include/thread +FILE: ../../../third_party/libcxx/include/tuple +FILE: ../../../third_party/libcxx/include/type_traits +FILE: ../../../third_party/libcxx/include/typeindex +FILE: ../../../third_party/libcxx/include/typeinfo +FILE: ../../../third_party/libcxx/include/unordered_map +FILE: ../../../third_party/libcxx/include/unordered_set +FILE: ../../../third_party/libcxx/include/utility +FILE: ../../../third_party/libcxx/include/valarray +FILE: ../../../third_party/libcxx/include/variant +FILE: ../../../third_party/libcxx/include/vector +FILE: ../../../third_party/libcxx/include/version +FILE: ../../../third_party/libcxx/include/wchar.h +FILE: ../../../third_party/libcxx/include/wctype.h +FILE: ../../../third_party/libcxx/lib/abi/3.9/x86_64-apple-darwin16.abilist +FILE: ../../../third_party/libcxx/lib/abi/3.9/x86_64-linux-gnu.abilist +FILE: ../../../third_party/libcxx/lib/abi/4.0/x86_64-apple-darwin16.abilist +FILE: ../../../third_party/libcxx/lib/abi/4.0/x86_64-unknown-linux-gnu.abilist +FILE: ../../../third_party/libcxx/lib/abi/5.0/x86_64-apple-darwin16.abilist +FILE: ../../../third_party/libcxx/lib/abi/5.0/x86_64-unknown-linux-gnu.abilist +FILE: ../../../third_party/libcxx/lib/abi/6.0/x86_64-apple-darwin16.abilist +FILE: ../../../third_party/libcxx/lib/abi/6.0/x86_64-unknown-linux-gnu.abilist +FILE: ../../../third_party/libcxx/lib/abi/x86_64-apple-darwin.v1.abilist +FILE: ../../../third_party/libcxx/lib/abi/x86_64-apple-darwin.v2.abilist +FILE: ../../../third_party/libcxx/lib/abi/x86_64-unknown-linux-gnu.v1.abilist +FILE: ../../../third_party/libcxx/lib/libc++abi-new-delete.exp +FILE: ../../../third_party/libcxx/lib/libc++abi.exp +FILE: ../../../third_party/libcxx/lib/libc++abi2.exp +FILE: ../../../third_party/libcxx/lib/libc++sjlj-abi.exp +FILE: ../../../third_party/libcxx/lib/libc++unexp.exp +FILE: ../../../third_party/libcxx/lib/notweak.exp +FILE: ../../../third_party/libcxx/lib/weak.exp +FILE: ../../../third_party/libcxx/src/algorithm.cpp +FILE: ../../../third_party/libcxx/src/any.cpp +FILE: ../../../third_party/libcxx/src/bind.cpp +FILE: ../../../third_party/libcxx/src/charconv.cpp +FILE: ../../../third_party/libcxx/src/chrono.cpp +FILE: ../../../third_party/libcxx/src/condition_variable.cpp +FILE: ../../../third_party/libcxx/src/debug.cpp +FILE: ../../../third_party/libcxx/src/exception.cpp +FILE: ../../../third_party/libcxx/src/experimental/memory_resource.cpp +FILE: ../../../third_party/libcxx/src/filesystem/directory_iterator.cpp +FILE: ../../../third_party/libcxx/src/filesystem/filesystem_common.h +FILE: ../../../third_party/libcxx/src/filesystem/int128_builtins.cpp +FILE: ../../../third_party/libcxx/src/filesystem/operations.cpp +FILE: ../../../third_party/libcxx/src/functional.cpp +FILE: ../../../third_party/libcxx/src/future.cpp +FILE: ../../../third_party/libcxx/src/hash.cpp +FILE: ../../../third_party/libcxx/src/include/apple_availability.h +FILE: ../../../third_party/libcxx/src/include/atomic_support.h +FILE: ../../../third_party/libcxx/src/include/config_elast.h +FILE: ../../../third_party/libcxx/src/include/refstring.h +FILE: ../../../third_party/libcxx/src/ios.cpp +FILE: ../../../third_party/libcxx/src/iostream.cpp +FILE: ../../../third_party/libcxx/src/locale.cpp +FILE: ../../../third_party/libcxx/src/memory.cpp +FILE: ../../../third_party/libcxx/src/mutex.cpp +FILE: ../../../third_party/libcxx/src/new.cpp +FILE: ../../../third_party/libcxx/src/optional.cpp +FILE: ../../../third_party/libcxx/src/random.cpp +FILE: ../../../third_party/libcxx/src/regex.cpp +FILE: ../../../third_party/libcxx/src/shared_mutex.cpp +FILE: ../../../third_party/libcxx/src/stdexcept.cpp +FILE: ../../../third_party/libcxx/src/string.cpp +FILE: ../../../third_party/libcxx/src/strstream.cpp +FILE: ../../../third_party/libcxx/src/support/runtime/exception_fallback.ipp +FILE: ../../../third_party/libcxx/src/support/runtime/exception_glibcxx.ipp +FILE: ../../../third_party/libcxx/src/support/runtime/exception_libcxxabi.ipp +FILE: ../../../third_party/libcxx/src/support/runtime/exception_libcxxrt.ipp +FILE: ../../../third_party/libcxx/src/support/runtime/exception_msvc.ipp +FILE: ../../../third_party/libcxx/src/support/runtime/exception_pointer_cxxabi.ipp +FILE: ../../../third_party/libcxx/src/support/runtime/exception_pointer_glibcxx.ipp +FILE: ../../../third_party/libcxx/src/support/runtime/exception_pointer_msvc.ipp +FILE: ../../../third_party/libcxx/src/support/runtime/exception_pointer_unimplemented.ipp +FILE: ../../../third_party/libcxx/src/support/runtime/new_handler_fallback.ipp +FILE: ../../../third_party/libcxx/src/support/win32/locale_win32.cpp +FILE: ../../../third_party/libcxx/src/support/win32/support.cpp +FILE: ../../../third_party/libcxx/src/support/win32/thread_win32.cpp +FILE: ../../../third_party/libcxx/src/system_error.cpp +FILE: ../../../third_party/libcxx/src/thread.cpp +FILE: ../../../third_party/libcxx/src/typeinfo.cpp +FILE: ../../../third_party/libcxx/src/utility.cpp +FILE: ../../../third_party/libcxx/src/valarray.cpp +FILE: ../../../third_party/libcxx/src/variant.cpp +FILE: ../../../third_party/libcxx/src/vector.cpp +FILE: ../../../third_party/libcxx/www/TS_deprecation.html +FILE: ../../../third_party/libcxx/www/atomic_design.html +FILE: ../../../third_party/libcxx/www/atomic_design_a.html +FILE: ../../../third_party/libcxx/www/atomic_design_b.html +FILE: ../../../third_party/libcxx/www/atomic_design_c.html +FILE: ../../../third_party/libcxx/www/cxx1y_status.html +FILE: ../../../third_party/libcxx/www/cxx1z_status.html +FILE: ../../../third_party/libcxx/www/cxx2a_status.html +FILE: ../../../third_party/libcxx/www/index.html +FILE: ../../../third_party/libcxx/www/ts1z_status.html +FILE: ../../../third_party/libcxx/www/type_traits_design.html +FILE: ../../../third_party/libcxx/www/upcoming_meeting.html +---------------------------------------------------------------------------------------------------- +University of Illinois/NCSA +Open Source License + +Copyright (c) 2009-2017 by the contributors listed in CREDITS.TXT + +All rights reserved. + +Developed by: + + LLVM Team + + University of Illinois at Urbana-Champaign + + http://llvm.org + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal with +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimers. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimers in the + documentation and/or other materials provided with the distribution. + + * Neither the names of the LLVM Team, University of Illinois at + Urbana-Champaign, nor the names of its contributors may be used to + endorse or promote products derived from this Software without specific + prior written permission. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE +SOFTWARE. +==================================================================================================== + +==================================================================================================== +LIBRARY: libcxxabi +ORIGIN: null +TYPE: LicenseType.bsd +FILE: ../../../third_party/libcxxabi/.arcconfig +FILE: ../../../third_party/libcxxabi/fuzz/cxa_demangle_fuzzer.cpp +FILE: ../../../third_party/libcxxabi/src/demangle/Compiler.h +FILE: ../../../third_party/libcxxabi/src/demangle/StringView.h +FILE: ../../../third_party/libcxxabi/src/demangle/Utility.h +FILE: ../../../third_party/libcxxabi/www/index.html +FILE: ../../../third_party/libcxxabi/www/spec.html +---------------------------------------------------------------------------------------------------- +University of Illinois/NCSA +Open Source License + +Copyright (c) 2009-2018 by the contributors listed in CREDITS.TXT + +All rights reserved. + +Developed by: + + LLVM Team + + University of Illinois at Urbana-Champaign + + http://llvm.org + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal with +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimers. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimers in the + documentation and/or other materials provided with the distribution. + + * Neither the names of the LLVM Team, University of Illinois at + Urbana-Champaign, nor the names of its contributors may be used to + endorse or promote products derived from this Software without specific + prior written permission. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE +SOFTWARE. +==================================================================================================== + ==================================================================================================== LIBRARY: libjpeg-turbo ORIGIN: ../../../third_party/libjpeg-turbo/README.ijg @@ -17844,4 +18385,4 @@ freely, subject to the following restrictions: misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. ==================================================================================================== -Total license count: 304 +Total license count: 307 diff --git a/sky/packages/sky_engine/LICENSE b/sky/packages/sky_engine/LICENSE index 7334fbc6b9b0e..38fca4e7cc13f 100644 --- a/sky/packages/sky_engine/LICENSE +++ b/sky/packages/sky_engine/LICENSE @@ -7116,6 +7116,117 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- +libcxx + +University of Illinois/NCSA +Open Source License + +Copyright (c) 2009-2017 by the contributors listed in CREDITS.TXT + +All rights reserved. + +Developed by: + + LLVM Team + + University of Illinois at Urbana-Champaign + + http://llvm.org + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal with +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimers. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimers in the + documentation and/or other materials provided with the distribution. + + * Neither the names of the LLVM Team, University of Illinois at + Urbana-Champaign, nor the names of its contributors may be used to + endorse or promote products derived from this Software without specific + prior written permission. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE +SOFTWARE. +-------------------------------------------------------------------------------- +libcxx +libcxxabi + +Copyright (c) 2009-2014 by the contributors listed in CREDITS.TXT + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +-------------------------------------------------------------------------------- +libcxxabi + +University of Illinois/NCSA +Open Source License + +Copyright (c) 2009-2018 by the contributors listed in CREDITS.TXT + +All rights reserved. + +Developed by: + + LLVM Team + + University of Illinois at Urbana-Champaign + + http://llvm.org + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal with +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimers. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimers in the + documentation and/or other materials provided with the distribution. + + * Neither the names of the LLVM Team, University of Illinois at + Urbana-Champaign, nor the names of its contributors may be used to + endorse or promote products derived from this Software without specific + prior written permission. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE +SOFTWARE. +-------------------------------------------------------------------------------- libjpeg-turbo Copyright (C) 1999-2006, MIYASAKA Masaru. diff --git a/tools/licenses/lib/main.dart b/tools/licenses/lib/main.dart index 39aff8a821c0e..a2ab8e2057003 100644 --- a/tools/licenses/lib/main.dart +++ b/tools/licenses/lib/main.dart @@ -809,8 +809,7 @@ class _RepositoryMultiLicenseNoticesForFilesFile extends _RepositoryLicenseFile Iterable get licenses => _licenses.values; } -// TODO(goderbauer): use this in https://github.com/flutter/engine/pull/6886. -class _RepositoryCxxStlDualLicenseFile extends _RepositoryLicenseFile { // ignore: unused_element +class _RepositoryCxxStlDualLicenseFile extends _RepositoryLicenseFile { _RepositoryCxxStlDualLicenseFile(_RepositoryDirectory parent, fs.TextFile io) : _licenses = _parseLicenses(io), super(parent, io); @@ -1488,6 +1487,62 @@ class _RepositoryJSR305SrcDirectory extends _RepositoryDirectory { } } +class _RepositoryLibcxxDirectory extends _RepositoryDirectory { + _RepositoryLibcxxDirectory(_RepositoryDirectory parent, fs.Directory io) : super(parent, io); + + @override + bool shouldRecurse(fs.IoNode entry) { + return entry.name != 'utils' + && super.shouldRecurse(entry); + } + + @override + _RepositoryDirectory createSubdirectory(fs.Directory entry) { + if (entry.name == 'src') + return new _RepositoryLibcxxSrcDirectory(this, entry); + return super.createSubdirectory(entry); + } + + @override + _RepositoryFile createFile(fs.IoNode entry) { + if (entry.name == 'LICENSE.TXT') + return new _RepositoryCxxStlDualLicenseFile(this, entry); + return super.createFile(entry); + } +} + +class _RepositoryLibcxxSrcDirectory extends _RepositoryDirectory { + _RepositoryLibcxxSrcDirectory(_RepositoryDirectory parent, fs.Directory io) : super(parent, io); + + @override + _RepositoryDirectory createSubdirectory(fs.Directory entry) { + if (entry.name == 'support') + return new _RepositoryLibcxxSrcSupportDirectory(this, entry); + return super.createSubdirectory(entry); + } +} + +class _RepositoryLibcxxSrcSupportDirectory extends _RepositoryDirectory { + _RepositoryLibcxxSrcSupportDirectory(_RepositoryDirectory parent, fs.Directory io) : super(parent, io); + + @override + bool shouldRecurse(fs.IoNode entry) { + return entry.name != 'solaris' + && super.shouldRecurse(entry); + } +} + +class _RepositoryLibcxxabiDirectory extends _RepositoryDirectory { + _RepositoryLibcxxabiDirectory(_RepositoryDirectory parent, fs.Directory io) : super(parent, io); + + @override + _RepositoryFile createFile(fs.IoNode entry) { + if (entry.name == 'LICENSE.TXT') + return new _RepositoryCxxStlDualLicenseFile(this, entry); + return super.createFile(entry); + } +} + class _RepositoryLibJpegDirectory extends _RepositoryDirectory { _RepositoryLibJpegDirectory(_RepositoryDirectory parent, fs.Directory io) : super(parent, io); @@ -1699,6 +1754,10 @@ class _RepositoryRootThirdPartyDirectory extends _RepositoryGenericThirdPartyDir return new _RepositoryIcuDirectory(this, entry); if (entry.name == 'jsr-305') return new _RepositoryJSR305Directory(this, entry); + if (entry.name == 'libcxx') + return new _RepositoryLibcxxDirectory(this, entry); + if (entry.name == 'libcxxabi') + return new _RepositoryLibcxxabiDirectory(this, entry); if (entry.name == 'libjpeg') return new _RepositoryLibJpegDirectory(this, entry); if (entry.name == 'libjpeg_turbo' || entry.name == 'libjpeg-turbo') From dcfae4e80350daf6f21857da311574c020229738 Mon Sep 17 00:00:00 2001 From: Chris Bracken Date: Mon, 10 Dec 2018 09:12:10 -0800 Subject: [PATCH 0480/1537] Eliminate main_dart_file_path, package_file_path (#6973) These settings were specific to Dart 1 and are no longer used in the engine. This eliminates them from the Settings class. --- common/settings.cc | 2 -- common/settings.h | 3 --- shell/common/switches.cc | 6 ------ shell/common/switches.h | 2 -- .../ios/framework/Source/FlutterDartProject.mm | 9 --------- shell/platform/embedder/embedder.cc | 16 +++++----------- 6 files changed, 5 insertions(+), 33 deletions(-) diff --git a/common/settings.cc b/common/settings.cc index a85d69fc8596c..f495bac77ff02 100644 --- a/common/settings.cc +++ b/common/settings.cc @@ -25,8 +25,6 @@ std::string Settings::ToString() const { << std::endl; stream << "application_library_path: " << application_library_path << std::endl; - stream << "main_dart_file_path: " << main_dart_file_path << std::endl; - stream << "packages_file_path: " << packages_file_path << std::endl; stream << "temp_directory_path: " << temp_directory_path << std::endl; stream << "dart_flags:" << std::endl; for (const auto& dart_flag : dart_flags) { diff --git a/common/settings.h b/common/settings.h index 92a8e37109ff2..7d9e4e0173935 100644 --- a/common/settings.h +++ b/common/settings.h @@ -38,9 +38,6 @@ struct Settings { std::string application_kernel_asset; std::string application_kernel_list_asset; - std::string main_dart_file_path; - std::string packages_file_path; - std::string temp_directory_path; std::vector dart_flags; diff --git a/shell/common/switches.cc b/shell/common/switches.cc index d2b4d56eb2070..8472f27a38ed4 100644 --- a/shell/common/switches.cc +++ b/shell/common/switches.cc @@ -170,12 +170,6 @@ blink::Settings SettingsFromCommandLine(const fml::CommandLine& command_line) { command_line.GetOptionValue(FlagForSwitch(Switch::FlutterAssetsDir), &settings.assets_path); - command_line.GetOptionValue(FlagForSwitch(Switch::MainDartFile), - &settings.main_dart_file_path); - - command_line.GetOptionValue(FlagForSwitch(Switch::Packages), - &settings.packages_file_path); - std::string aot_shared_library_path; command_line.GetOptionValue(FlagForSwitch(Switch::AotSharedLibraryPath), &aot_shared_library_path); diff --git a/shell/common/switches.h b/shell/common/switches.h index bbaa5b4760ad1..9abaf7951acf4 100644 --- a/shell/common/switches.h +++ b/shell/common/switches.h @@ -92,8 +92,6 @@ DEF_SWITCH(FlutterAssetsDir, "Path to the Flutter assets directory.") DEF_SWITCH(Help, "help", "Display this help text.") DEF_SWITCH(LogTag, "log-tag", "Tag associated with log messages.") -DEF_SWITCH(MainDartFile, "dart-main", "The path to the main Dart file.") -DEF_SWITCH(Packages, "packages", "Specify the path to the packages.") DEF_SWITCH(StartPaused, "start-paused", "Start the application paused in the Dart debugger.") diff --git a/shell/platform/darwin/ios/framework/Source/FlutterDartProject.mm b/shell/platform/darwin/ios/framework/Source/FlutterDartProject.mm index 0e5bf4fdcbf8a..20e1c0d2ca7f8 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterDartProject.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterDartProject.mm @@ -157,15 +157,6 @@ - (instancetype)initWithFlutterAssets:(NSURL*)flutterAssetsURL if (self) { _settings = DefaultSettingsForProcess(); - - if (dartMainURL != nil && [[NSFileManager defaultManager] fileExistsAtPath:dartMainURL.path]) { - _settings.main_dart_file_path = dartMainURL.path.UTF8String; - } - - if (dartPackages.path != nil && - [[NSFileManager defaultManager] fileExistsAtPath:dartPackages.path]) { - _settings.packages_file_path = dartPackages.path.UTF8String; - } } return self; diff --git a/shell/platform/embedder/embedder.cc b/shell/platform/embedder/embedder.cc index d7acb7d4db068..d5d5ea51d9bff 100644 --- a/shell/platform/embedder/embedder.cc +++ b/shell/platform/embedder/embedder.cc @@ -266,9 +266,7 @@ FlutterResult FlutterEngineRun(size_t version, return kInvalidArguments; } - if (SAFE_ACCESS(args, assets_path, nullptr) == nullptr || - SAFE_ACCESS(args, main_path, nullptr) == nullptr || - SAFE_ACCESS(args, packages_path, nullptr) == nullptr) { + if (SAFE_ACCESS(args, assets_path, nullptr) == nullptr) { return kInvalidArguments; } @@ -293,18 +291,14 @@ FlutterResult FlutterEngineRun(size_t version, settings.icu_data_path = icu_data_path; settings.assets_path = args->assets_path; - // Check whether the assets path contains Dart 2 kernel assets. + // Verify the assets path contains Dart 2 kernel assets. const std::string kApplicationKernelSnapshotFileName = "kernel_blob.bin"; std::string application_kernel_path = fml::paths::JoinPaths( {settings.assets_path, kApplicationKernelSnapshotFileName}); - if (fml::IsFile(application_kernel_path)) { - // Run from a kernel snapshot. - settings.application_kernel_asset = kApplicationKernelSnapshotFileName; - } else { - // Run from a main Dart file. - settings.main_dart_file_path = args->main_path; - settings.packages_file_path = args->packages_path; + if (!fml::IsFile(application_kernel_path)) { + return kInvalidArguments; } + settings.application_kernel_asset = kApplicationKernelSnapshotFileName; settings.task_observer_add = [](intptr_t key, fml::closure callback) { fml::MessageLoop::GetCurrent().AddTaskObserver(key, std::move(callback)); From 1be783272f383a65d849ce255ee7145b0952858f Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Mon, 10 Dec 2018 12:19:54 -0500 Subject: [PATCH 0481/1537] Roll src/third_party/skia be5a09332e5d..f23a1527155b (1 commits) (#7143) https://skia.googlesource.com/skia.git/+log/be5a09332e5d..f23a1527155b Created with: gclient setdep -r src/third_party/skia@f23a1527155b The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 06b2862c057fd..593b2d760b083 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'be5a09332e5dfd23123900159ea1cd399be151d3', + 'skia_revision': 'f23a1527155b2e91da696b9397d79f46087b6f29', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 1b9827c3ca227..8367c54b6cf0c 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 2bd295be7aa397b7c40813a7bf47a5e9 +Signature: c2c13131921d58e6727447fcfed81ad1 UNUSED LICENSES: From 69a17de2dca7157927a04eed198583314ac3076c Mon Sep 17 00:00:00 2001 From: Michael Goderbauer Date: Mon, 10 Dec 2018 09:29:34 -0800 Subject: [PATCH 0482/1537] Roll buildtools to bac220c15490dcf7b7d8136f75100bbc77e8d217 (#6926) This reduces `libflutter.so` by 6 KB (compressed!). --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index 3e7f55a6faee4..a94338e18ecc6 100644 --- a/DEPS +++ b/DEPS @@ -104,7 +104,7 @@ vars = { # Build bot tooling for iOS 'ios_tools_revision': '69b7c1b160e7107a6a98d948363772dc9caea46f', - 'buildtools_revision': '5a9e1b3a0b84a2871f20f85fde665e54a894ba72', + 'buildtools_revision': 'bac220c15490dcf7b7d8136f75100bbc77e8d217', } # Only these hosts are allowed for dependencies in this DEPS file. From fe5786c3b0eb22bb4f52b5e936c9d86bd764e5b5 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Mon, 10 Dec 2018 12:30:11 -0500 Subject: [PATCH 0483/1537] Roll src/third_party/skia f23a1527155b..22fabcae16d9 (2 commits) (#7144) https://skia.googlesource.com/skia.git/+log/f23a1527155b..22fabcae16d9 Created with: gclient setdep -r src/third_party/skia@22fabcae16d9 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index 593b2d760b083..deb415c64d309 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'f23a1527155b2e91da696b9397d79f46087b6f29', + 'skia_revision': '22fabcae16d970cfbe96de85bb27962ece274dd2', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the From fb777f4053f41ad6c118b9af73fe9a791cb36a4d Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Mon, 10 Dec 2018 12:40:09 -0500 Subject: [PATCH 0484/1537] Roll src/third_party/skia 22fabcae16d9..6788a54afe2d (1 commits) (#7145) https://skia.googlesource.com/skia.git/+log/22fabcae16d9..6788a54afe2d Created with: gclient setdep -r src/third_party/skia@6788a54afe2d The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index deb415c64d309..4e65030c13fc7 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '22fabcae16d970cfbe96de85bb27962ece274dd2', + 'skia_revision': '6788a54afe2da92479067b60b663fb502d43b107', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the From a8d55821ccc58c55046e21d96563d85e719234bc Mon Sep 17 00:00:00 2001 From: Michael Goderbauer Date: Mon, 10 Dec 2018 10:07:13 -0800 Subject: [PATCH 0485/1537] Revert "Reland "Compile libcxx and libcxxabi for Android (#6886)"" (#7146) --- DEPS | 8 +- ci/licenses_golden/licenses_third_party | 545 +----------------------- sky/packages/sky_engine/LICENSE | 111 ----- tools/licenses/lib/main.dart | 63 +-- 4 files changed, 5 insertions(+), 722 deletions(-) diff --git a/DEPS b/DEPS index a94338e18ecc6..9423b489e1dbe 100644 --- a/DEPS +++ b/DEPS @@ -117,7 +117,7 @@ allowed_hosts = [ ] deps = { - 'src': 'https://github.com/flutter/buildroot.git' + '@' + 'b7f2b443b5648b9cd7ad539d8b4f73b3c69fedbf', + 'src': 'https://github.com/flutter/buildroot.git' + '@' + '29a5d76757ec12655c0562b317830f669bd44ea7', # Fuchsia compatibility # @@ -140,12 +140,6 @@ deps = { 'src/third_party/harfbuzz': Var('fuchsia_git') + '/third_party/harfbuzz' + '@' + '02caec6c1c6ad996666788b8e920ccaec8b385e5', - 'src/third_party/libcxx': - Var('fuchsia_git') + '/third_party/libcxx' + '@' + 'c5a5fa59789213c7dae68d2e51cb28ef681d8257', - - 'src/third_party/libcxxabi': - Var('fuchsia_git') + '/third_party/libcxxabi' + '@' + '1a9753522f1ae8d72848d365902f39e0d3d59a39', - # Chromium-style # # As part of integrating with Fuchsia, we should eventually remove all these diff --git a/ci/licenses_golden/licenses_third_party b/ci/licenses_golden/licenses_third_party index 81459beeffa9e..a06c935614ec2 100644 --- a/ci/licenses_golden/licenses_third_party +++ b/ci/licenses_golden/licenses_third_party @@ -1,4 +1,4 @@ -Signature: d7c30cf5ac4c421cc15ff2731ade24c4 +Signature: 688d05f1b8d8726e65b28a27ccc7dfcb UNUSED LICENSES: @@ -13123,547 +13123,6 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ==================================================================================================== -==================================================================================================== -LIBRARY: libcxx -LIBRARY: libcxxabi -ORIGIN: null -TYPE: LicenseType.mit -FILE: ../../../third_party/libcxx/.arcconfig -FILE: ../../../third_party/libcxx/appveyor-reqs-install.cmd -FILE: ../../../third_party/libcxx/appveyor.yml -FILE: ../../../third_party/libcxx/benchmarks/ContainerBenchmarks.hpp -FILE: ../../../third_party/libcxx/benchmarks/GenerateInput.hpp -FILE: ../../../third_party/libcxx/benchmarks/algorithms.bench.cpp -FILE: ../../../third_party/libcxx/benchmarks/filesystem.bench.cpp -FILE: ../../../third_party/libcxx/benchmarks/lit.site.cfg.py.in -FILE: ../../../third_party/libcxx/benchmarks/string.bench.cpp -FILE: ../../../third_party/libcxx/benchmarks/stringstream.bench.cpp -FILE: ../../../third_party/libcxx/benchmarks/unordered_set_operations.bench.cpp -FILE: ../../../third_party/libcxx/benchmarks/vector_operations.bench.cpp -FILE: ../../../third_party/libcxx/docs/BuildingLibcxx.rst -FILE: ../../../third_party/libcxx/docs/DesignDocs/ABIVersioning.rst -FILE: ../../../third_party/libcxx/docs/DesignDocs/AvailabilityMarkup.rst -FILE: ../../../third_party/libcxx/docs/DesignDocs/DebugMode.rst -FILE: ../../../third_party/libcxx/docs/DesignDocs/FileTimeType.rst -FILE: ../../../third_party/libcxx/docs/DesignDocs/ThreadingSupportAPI.rst -FILE: ../../../third_party/libcxx/docs/DesignDocs/VisibilityMacros.rst -FILE: ../../../third_party/libcxx/docs/Makefile.sphinx -FILE: ../../../third_party/libcxx/docs/ReleaseNotes.rst -FILE: ../../../third_party/libcxx/docs/TestingLibcxx.rst -FILE: ../../../third_party/libcxx/docs/UsingLibcxx.rst -FILE: ../../../third_party/libcxx/docs/index.rst -FILE: ../../../third_party/libcxx/include/__libcpp_version -FILE: ../../../third_party/libcxx/include/__split_buffer -FILE: ../../../third_party/libcxx/include/__string -FILE: ../../../third_party/libcxx/include/__undef_macros -FILE: ../../../third_party/libcxx/include/any -FILE: ../../../third_party/libcxx/include/atomic -FILE: ../../../third_party/libcxx/include/cinttypes -FILE: ../../../third_party/libcxx/include/cstring -FILE: ../../../third_party/libcxx/include/experimental/any -FILE: ../../../third_party/libcxx/include/experimental/chrono -FILE: ../../../third_party/libcxx/include/experimental/coroutine -FILE: ../../../third_party/libcxx/include/experimental/iterator -FILE: ../../../third_party/libcxx/include/experimental/memory_resource -FILE: ../../../third_party/libcxx/include/experimental/ratio -FILE: ../../../third_party/libcxx/include/experimental/string_view -FILE: ../../../third_party/libcxx/include/inttypes.h -FILE: ../../../third_party/libcxx/include/module.modulemap -FILE: ../../../third_party/libcxx/include/stdint.h -FILE: ../../../third_party/libcxx/include/string -FILE: ../../../third_party/libcxx/include/string.h -FILE: ../../../third_party/libcxx/include/string_view -FILE: ../../../third_party/libcxx/include/tuple -FILE: ../../../third_party/libcxx/lib/abi/3.9/x86_64-apple-darwin16.abilist -FILE: ../../../third_party/libcxx/lib/abi/3.9/x86_64-linux-gnu.abilist -FILE: ../../../third_party/libcxx/lib/abi/4.0/x86_64-apple-darwin16.abilist -FILE: ../../../third_party/libcxx/lib/abi/4.0/x86_64-unknown-linux-gnu.abilist -FILE: ../../../third_party/libcxx/lib/abi/5.0/x86_64-apple-darwin16.abilist -FILE: ../../../third_party/libcxx/lib/abi/5.0/x86_64-unknown-linux-gnu.abilist -FILE: ../../../third_party/libcxx/lib/abi/6.0/x86_64-apple-darwin16.abilist -FILE: ../../../third_party/libcxx/lib/abi/6.0/x86_64-unknown-linux-gnu.abilist -FILE: ../../../third_party/libcxx/lib/abi/x86_64-apple-darwin.v1.abilist -FILE: ../../../third_party/libcxx/lib/abi/x86_64-apple-darwin.v2.abilist -FILE: ../../../third_party/libcxx/lib/abi/x86_64-unknown-linux-gnu.v1.abilist -FILE: ../../../third_party/libcxx/lib/libc++abi-new-delete.exp -FILE: ../../../third_party/libcxx/lib/libc++abi.exp -FILE: ../../../third_party/libcxx/lib/libc++abi2.exp -FILE: ../../../third_party/libcxx/lib/libc++sjlj-abi.exp -FILE: ../../../third_party/libcxx/lib/libc++unexp.exp -FILE: ../../../third_party/libcxx/lib/notweak.exp -FILE: ../../../third_party/libcxx/lib/weak.exp -FILE: ../../../third_party/libcxx/src/filesystem/int128_builtins.cpp -FILE: ../../../third_party/libcxx/www/TS_deprecation.html -FILE: ../../../third_party/libcxx/www/atomic_design.html -FILE: ../../../third_party/libcxx/www/atomic_design_a.html -FILE: ../../../third_party/libcxx/www/atomic_design_b.html -FILE: ../../../third_party/libcxx/www/atomic_design_c.html -FILE: ../../../third_party/libcxx/www/cxx1y_status.html -FILE: ../../../third_party/libcxx/www/cxx1z_status.html -FILE: ../../../third_party/libcxx/www/cxx2a_status.html -FILE: ../../../third_party/libcxx/www/index.html -FILE: ../../../third_party/libcxx/www/ts1z_status.html -FILE: ../../../third_party/libcxx/www/type_traits_design.html -FILE: ../../../third_party/libcxx/www/upcoming_meeting.html -FILE: ../../../third_party/libcxxabi/.arcconfig -FILE: ../../../third_party/libcxxabi/fuzz/cxa_demangle_fuzzer.cpp -FILE: ../../../third_party/libcxxabi/include/__cxxabi_config.h -FILE: ../../../third_party/libcxxabi/include/cxxabi.h -FILE: ../../../third_party/libcxxabi/src/abort_message.cpp -FILE: ../../../third_party/libcxxabi/src/abort_message.h -FILE: ../../../third_party/libcxxabi/src/cxa_aux_runtime.cpp -FILE: ../../../third_party/libcxxabi/src/cxa_default_handlers.cpp -FILE: ../../../third_party/libcxxabi/src/cxa_demangle.cpp -FILE: ../../../third_party/libcxxabi/src/cxa_exception.cpp -FILE: ../../../third_party/libcxxabi/src/cxa_exception.hpp -FILE: ../../../third_party/libcxxabi/src/cxa_exception_storage.cpp -FILE: ../../../third_party/libcxxabi/src/cxa_guard.cpp -FILE: ../../../third_party/libcxxabi/src/cxa_handlers.cpp -FILE: ../../../third_party/libcxxabi/src/cxa_handlers.hpp -FILE: ../../../third_party/libcxxabi/src/cxa_noexception.cpp -FILE: ../../../third_party/libcxxabi/src/cxa_personality.cpp -FILE: ../../../third_party/libcxxabi/src/cxa_thread_atexit.cpp -FILE: ../../../third_party/libcxxabi/src/cxa_unexpected.cpp -FILE: ../../../third_party/libcxxabi/src/cxa_vector.cpp -FILE: ../../../third_party/libcxxabi/src/cxa_virtual.cpp -FILE: ../../../third_party/libcxxabi/src/demangle/Compiler.h -FILE: ../../../third_party/libcxxabi/src/demangle/ItaniumDemangle.h -FILE: ../../../third_party/libcxxabi/src/demangle/StringView.h -FILE: ../../../third_party/libcxxabi/src/demangle/Utility.h -FILE: ../../../third_party/libcxxabi/src/fallback_malloc.cpp -FILE: ../../../third_party/libcxxabi/src/fallback_malloc.h -FILE: ../../../third_party/libcxxabi/src/include/atomic_support.h -FILE: ../../../third_party/libcxxabi/src/include/refstring.h -FILE: ../../../third_party/libcxxabi/src/private_typeinfo.cpp -FILE: ../../../third_party/libcxxabi/src/private_typeinfo.h -FILE: ../../../third_party/libcxxabi/src/stdlib_exception.cpp -FILE: ../../../third_party/libcxxabi/src/stdlib_new_delete.cpp -FILE: ../../../third_party/libcxxabi/src/stdlib_stdexcept.cpp -FILE: ../../../third_party/libcxxabi/src/stdlib_typeinfo.cpp -FILE: ../../../third_party/libcxxabi/www/index.html -FILE: ../../../third_party/libcxxabi/www/spec.html ----------------------------------------------------------------------------------------------------- -Copyright (c) 2009-2014 by the contributors listed in CREDITS.TXT - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. -==================================================================================================== - -==================================================================================================== -LIBRARY: libcxx -ORIGIN: null -TYPE: LicenseType.bsd -FILE: ../../../third_party/libcxx/.arcconfig -FILE: ../../../third_party/libcxx/appveyor-reqs-install.cmd -FILE: ../../../third_party/libcxx/appveyor.yml -FILE: ../../../third_party/libcxx/benchmarks/CartesianBenchmarks.hpp -FILE: ../../../third_party/libcxx/benchmarks/ContainerBenchmarks.hpp -FILE: ../../../third_party/libcxx/benchmarks/GenerateInput.hpp -FILE: ../../../third_party/libcxx/benchmarks/algorithms.bench.cpp -FILE: ../../../third_party/libcxx/benchmarks/filesystem.bench.cpp -FILE: ../../../third_party/libcxx/benchmarks/function.bench.cpp -FILE: ../../../third_party/libcxx/benchmarks/lit.site.cfg.py.in -FILE: ../../../third_party/libcxx/benchmarks/ordered_set.bench.cpp -FILE: ../../../third_party/libcxx/benchmarks/string.bench.cpp -FILE: ../../../third_party/libcxx/benchmarks/stringstream.bench.cpp -FILE: ../../../third_party/libcxx/benchmarks/unordered_set_operations.bench.cpp -FILE: ../../../third_party/libcxx/benchmarks/util_smartptr.bench.cpp -FILE: ../../../third_party/libcxx/benchmarks/vector_operations.bench.cpp -FILE: ../../../third_party/libcxx/docs/BuildingLibcxx.rst -FILE: ../../../third_party/libcxx/docs/DesignDocs/ABIVersioning.rst -FILE: ../../../third_party/libcxx/docs/DesignDocs/AvailabilityMarkup.rst -FILE: ../../../third_party/libcxx/docs/DesignDocs/CapturingConfigInfo.rst -FILE: ../../../third_party/libcxx/docs/DesignDocs/CapturingConfigInfo.rst -FILE: ../../../third_party/libcxx/docs/DesignDocs/DebugMode.rst -FILE: ../../../third_party/libcxx/docs/DesignDocs/FileTimeType.rst -FILE: ../../../third_party/libcxx/docs/DesignDocs/ThreadingSupportAPI.rst -FILE: ../../../third_party/libcxx/docs/DesignDocs/VisibilityMacros.rst -FILE: ../../../third_party/libcxx/docs/Makefile.sphinx -FILE: ../../../third_party/libcxx/docs/ReleaseNotes.rst -FILE: ../../../third_party/libcxx/docs/TestingLibcxx.rst -FILE: ../../../third_party/libcxx/docs/UsingLibcxx.rst -FILE: ../../../third_party/libcxx/docs/index.rst -FILE: ../../../third_party/libcxx/fuzzing/fuzz_test.cpp -FILE: ../../../third_party/libcxx/fuzzing/fuzzing.cpp -FILE: ../../../third_party/libcxx/fuzzing/fuzzing.h -FILE: ../../../third_party/libcxx/include/__bit_reference -FILE: ../../../third_party/libcxx/include/__bsd_locale_defaults.h -FILE: ../../../third_party/libcxx/include/__bsd_locale_fallbacks.h -FILE: ../../../third_party/libcxx/include/__config -FILE: ../../../third_party/libcxx/include/__config_site.in -FILE: ../../../third_party/libcxx/include/__debug -FILE: ../../../third_party/libcxx/include/__errc -FILE: ../../../third_party/libcxx/include/__functional_03 -FILE: ../../../third_party/libcxx/include/__functional_base -FILE: ../../../third_party/libcxx/include/__functional_base_03 -FILE: ../../../third_party/libcxx/include/__hash_table -FILE: ../../../third_party/libcxx/include/__libcpp_version -FILE: ../../../third_party/libcxx/include/__locale -FILE: ../../../third_party/libcxx/include/__mutex_base -FILE: ../../../third_party/libcxx/include/__node_handle -FILE: ../../../third_party/libcxx/include/__nullptr -FILE: ../../../third_party/libcxx/include/__split_buffer -FILE: ../../../third_party/libcxx/include/__sso_allocator -FILE: ../../../third_party/libcxx/include/__std_stream -FILE: ../../../third_party/libcxx/include/__string -FILE: ../../../third_party/libcxx/include/__threading_support -FILE: ../../../third_party/libcxx/include/__tree -FILE: ../../../third_party/libcxx/include/__tuple -FILE: ../../../third_party/libcxx/include/__undef_macros -FILE: ../../../third_party/libcxx/include/algorithm -FILE: ../../../third_party/libcxx/include/any -FILE: ../../../third_party/libcxx/include/array -FILE: ../../../third_party/libcxx/include/atomic -FILE: ../../../third_party/libcxx/include/bit -FILE: ../../../third_party/libcxx/include/bitset -FILE: ../../../third_party/libcxx/include/cassert -FILE: ../../../third_party/libcxx/include/ccomplex -FILE: ../../../third_party/libcxx/include/cctype -FILE: ../../../third_party/libcxx/include/cerrno -FILE: ../../../third_party/libcxx/include/cfenv -FILE: ../../../third_party/libcxx/include/cfloat -FILE: ../../../third_party/libcxx/include/charconv -FILE: ../../../third_party/libcxx/include/chrono -FILE: ../../../third_party/libcxx/include/cinttypes -FILE: ../../../third_party/libcxx/include/ciso646 -FILE: ../../../third_party/libcxx/include/climits -FILE: ../../../third_party/libcxx/include/clocale -FILE: ../../../third_party/libcxx/include/cmath -FILE: ../../../third_party/libcxx/include/codecvt -FILE: ../../../third_party/libcxx/include/compare -FILE: ../../../third_party/libcxx/include/complex -FILE: ../../../third_party/libcxx/include/complex.h -FILE: ../../../third_party/libcxx/include/condition_variable -FILE: ../../../third_party/libcxx/include/csetjmp -FILE: ../../../third_party/libcxx/include/csignal -FILE: ../../../third_party/libcxx/include/cstdarg -FILE: ../../../third_party/libcxx/include/cstdbool -FILE: ../../../third_party/libcxx/include/cstddef -FILE: ../../../third_party/libcxx/include/cstdint -FILE: ../../../third_party/libcxx/include/cstdio -FILE: ../../../third_party/libcxx/include/cstdlib -FILE: ../../../third_party/libcxx/include/cstring -FILE: ../../../third_party/libcxx/include/ctgmath -FILE: ../../../third_party/libcxx/include/ctime -FILE: ../../../third_party/libcxx/include/ctype.h -FILE: ../../../third_party/libcxx/include/cwchar -FILE: ../../../third_party/libcxx/include/cwctype -FILE: ../../../third_party/libcxx/include/deque -FILE: ../../../third_party/libcxx/include/errno.h -FILE: ../../../third_party/libcxx/include/exception -FILE: ../../../third_party/libcxx/include/experimental/__config -FILE: ../../../third_party/libcxx/include/experimental/__memory -FILE: ../../../third_party/libcxx/include/experimental/algorithm -FILE: ../../../third_party/libcxx/include/experimental/any -FILE: ../../../third_party/libcxx/include/experimental/chrono -FILE: ../../../third_party/libcxx/include/experimental/coroutine -FILE: ../../../third_party/libcxx/include/experimental/deque -FILE: ../../../third_party/libcxx/include/experimental/dynarray -FILE: ../../../third_party/libcxx/include/experimental/filesystem -FILE: ../../../third_party/libcxx/include/experimental/forward_list -FILE: ../../../third_party/libcxx/include/experimental/functional -FILE: ../../../third_party/libcxx/include/experimental/iterator -FILE: ../../../third_party/libcxx/include/experimental/list -FILE: ../../../third_party/libcxx/include/experimental/map -FILE: ../../../third_party/libcxx/include/experimental/memory_resource -FILE: ../../../third_party/libcxx/include/experimental/numeric -FILE: ../../../third_party/libcxx/include/experimental/optional -FILE: ../../../third_party/libcxx/include/experimental/propagate_const -FILE: ../../../third_party/libcxx/include/experimental/ratio -FILE: ../../../third_party/libcxx/include/experimental/regex -FILE: ../../../third_party/libcxx/include/experimental/set -FILE: ../../../third_party/libcxx/include/experimental/simd -FILE: ../../../third_party/libcxx/include/experimental/string -FILE: ../../../third_party/libcxx/include/experimental/string_view -FILE: ../../../third_party/libcxx/include/experimental/system_error -FILE: ../../../third_party/libcxx/include/experimental/tuple -FILE: ../../../third_party/libcxx/include/experimental/type_traits -FILE: ../../../third_party/libcxx/include/experimental/unordered_map -FILE: ../../../third_party/libcxx/include/experimental/unordered_set -FILE: ../../../third_party/libcxx/include/experimental/utility -FILE: ../../../third_party/libcxx/include/experimental/vector -FILE: ../../../third_party/libcxx/include/ext/__hash -FILE: ../../../third_party/libcxx/include/ext/hash_map -FILE: ../../../third_party/libcxx/include/ext/hash_set -FILE: ../../../third_party/libcxx/include/filesystem -FILE: ../../../third_party/libcxx/include/float.h -FILE: ../../../third_party/libcxx/include/forward_list -FILE: ../../../third_party/libcxx/include/fstream -FILE: ../../../third_party/libcxx/include/functional -FILE: ../../../third_party/libcxx/include/future -FILE: ../../../third_party/libcxx/include/initializer_list -FILE: ../../../third_party/libcxx/include/inttypes.h -FILE: ../../../third_party/libcxx/include/iomanip -FILE: ../../../third_party/libcxx/include/ios -FILE: ../../../third_party/libcxx/include/iosfwd -FILE: ../../../third_party/libcxx/include/iostream -FILE: ../../../third_party/libcxx/include/istream -FILE: ../../../third_party/libcxx/include/iterator -FILE: ../../../third_party/libcxx/include/limits -FILE: ../../../third_party/libcxx/include/limits.h -FILE: ../../../third_party/libcxx/include/list -FILE: ../../../third_party/libcxx/include/locale -FILE: ../../../third_party/libcxx/include/locale.h -FILE: ../../../third_party/libcxx/include/map -FILE: ../../../third_party/libcxx/include/math.h -FILE: ../../../third_party/libcxx/include/memory -FILE: ../../../third_party/libcxx/include/module.modulemap -FILE: ../../../third_party/libcxx/include/mutex -FILE: ../../../third_party/libcxx/include/new -FILE: ../../../third_party/libcxx/include/numeric -FILE: ../../../third_party/libcxx/include/optional -FILE: ../../../third_party/libcxx/include/ostream -FILE: ../../../third_party/libcxx/include/queue -FILE: ../../../third_party/libcxx/include/random -FILE: ../../../third_party/libcxx/include/ratio -FILE: ../../../third_party/libcxx/include/regex -FILE: ../../../third_party/libcxx/include/scoped_allocator -FILE: ../../../third_party/libcxx/include/set -FILE: ../../../third_party/libcxx/include/setjmp.h -FILE: ../../../third_party/libcxx/include/shared_mutex -FILE: ../../../third_party/libcxx/include/span -FILE: ../../../third_party/libcxx/include/sstream -FILE: ../../../third_party/libcxx/include/stack -FILE: ../../../third_party/libcxx/include/stdbool.h -FILE: ../../../third_party/libcxx/include/stddef.h -FILE: ../../../third_party/libcxx/include/stdexcept -FILE: ../../../third_party/libcxx/include/stdint.h -FILE: ../../../third_party/libcxx/include/stdio.h -FILE: ../../../third_party/libcxx/include/stdlib.h -FILE: ../../../third_party/libcxx/include/streambuf -FILE: ../../../third_party/libcxx/include/string -FILE: ../../../third_party/libcxx/include/string.h -FILE: ../../../third_party/libcxx/include/string_view -FILE: ../../../third_party/libcxx/include/strstream -FILE: ../../../third_party/libcxx/include/support/android/locale_bionic.h -FILE: ../../../third_party/libcxx/include/support/fuchsia/xlocale.h -FILE: ../../../third_party/libcxx/include/support/ibm/limits.h -FILE: ../../../third_party/libcxx/include/support/ibm/locale_mgmt_aix.h -FILE: ../../../third_party/libcxx/include/support/ibm/support.h -FILE: ../../../third_party/libcxx/include/support/ibm/xlocale.h -FILE: ../../../third_party/libcxx/include/support/musl/xlocale.h -FILE: ../../../third_party/libcxx/include/support/newlib/xlocale.h -FILE: ../../../third_party/libcxx/include/support/solaris/floatingpoint.h -FILE: ../../../third_party/libcxx/include/support/solaris/wchar.h -FILE: ../../../third_party/libcxx/include/support/solaris/xlocale.h -FILE: ../../../third_party/libcxx/include/support/win32/limits_msvc_win32.h -FILE: ../../../third_party/libcxx/include/support/win32/locale_win32.h -FILE: ../../../third_party/libcxx/include/support/xlocale/__nop_locale_mgmt.h -FILE: ../../../third_party/libcxx/include/support/xlocale/__posix_l_fallback.h -FILE: ../../../third_party/libcxx/include/support/xlocale/__strtonum_fallback.h -FILE: ../../../third_party/libcxx/include/system_error -FILE: ../../../third_party/libcxx/include/tgmath.h -FILE: ../../../third_party/libcxx/include/thread -FILE: ../../../third_party/libcxx/include/tuple -FILE: ../../../third_party/libcxx/include/type_traits -FILE: ../../../third_party/libcxx/include/typeindex -FILE: ../../../third_party/libcxx/include/typeinfo -FILE: ../../../third_party/libcxx/include/unordered_map -FILE: ../../../third_party/libcxx/include/unordered_set -FILE: ../../../third_party/libcxx/include/utility -FILE: ../../../third_party/libcxx/include/valarray -FILE: ../../../third_party/libcxx/include/variant -FILE: ../../../third_party/libcxx/include/vector -FILE: ../../../third_party/libcxx/include/version -FILE: ../../../third_party/libcxx/include/wchar.h -FILE: ../../../third_party/libcxx/include/wctype.h -FILE: ../../../third_party/libcxx/lib/abi/3.9/x86_64-apple-darwin16.abilist -FILE: ../../../third_party/libcxx/lib/abi/3.9/x86_64-linux-gnu.abilist -FILE: ../../../third_party/libcxx/lib/abi/4.0/x86_64-apple-darwin16.abilist -FILE: ../../../third_party/libcxx/lib/abi/4.0/x86_64-unknown-linux-gnu.abilist -FILE: ../../../third_party/libcxx/lib/abi/5.0/x86_64-apple-darwin16.abilist -FILE: ../../../third_party/libcxx/lib/abi/5.0/x86_64-unknown-linux-gnu.abilist -FILE: ../../../third_party/libcxx/lib/abi/6.0/x86_64-apple-darwin16.abilist -FILE: ../../../third_party/libcxx/lib/abi/6.0/x86_64-unknown-linux-gnu.abilist -FILE: ../../../third_party/libcxx/lib/abi/x86_64-apple-darwin.v1.abilist -FILE: ../../../third_party/libcxx/lib/abi/x86_64-apple-darwin.v2.abilist -FILE: ../../../third_party/libcxx/lib/abi/x86_64-unknown-linux-gnu.v1.abilist -FILE: ../../../third_party/libcxx/lib/libc++abi-new-delete.exp -FILE: ../../../third_party/libcxx/lib/libc++abi.exp -FILE: ../../../third_party/libcxx/lib/libc++abi2.exp -FILE: ../../../third_party/libcxx/lib/libc++sjlj-abi.exp -FILE: ../../../third_party/libcxx/lib/libc++unexp.exp -FILE: ../../../third_party/libcxx/lib/notweak.exp -FILE: ../../../third_party/libcxx/lib/weak.exp -FILE: ../../../third_party/libcxx/src/algorithm.cpp -FILE: ../../../third_party/libcxx/src/any.cpp -FILE: ../../../third_party/libcxx/src/bind.cpp -FILE: ../../../third_party/libcxx/src/charconv.cpp -FILE: ../../../third_party/libcxx/src/chrono.cpp -FILE: ../../../third_party/libcxx/src/condition_variable.cpp -FILE: ../../../third_party/libcxx/src/debug.cpp -FILE: ../../../third_party/libcxx/src/exception.cpp -FILE: ../../../third_party/libcxx/src/experimental/memory_resource.cpp -FILE: ../../../third_party/libcxx/src/filesystem/directory_iterator.cpp -FILE: ../../../third_party/libcxx/src/filesystem/filesystem_common.h -FILE: ../../../third_party/libcxx/src/filesystem/int128_builtins.cpp -FILE: ../../../third_party/libcxx/src/filesystem/operations.cpp -FILE: ../../../third_party/libcxx/src/functional.cpp -FILE: ../../../third_party/libcxx/src/future.cpp -FILE: ../../../third_party/libcxx/src/hash.cpp -FILE: ../../../third_party/libcxx/src/include/apple_availability.h -FILE: ../../../third_party/libcxx/src/include/atomic_support.h -FILE: ../../../third_party/libcxx/src/include/config_elast.h -FILE: ../../../third_party/libcxx/src/include/refstring.h -FILE: ../../../third_party/libcxx/src/ios.cpp -FILE: ../../../third_party/libcxx/src/iostream.cpp -FILE: ../../../third_party/libcxx/src/locale.cpp -FILE: ../../../third_party/libcxx/src/memory.cpp -FILE: ../../../third_party/libcxx/src/mutex.cpp -FILE: ../../../third_party/libcxx/src/new.cpp -FILE: ../../../third_party/libcxx/src/optional.cpp -FILE: ../../../third_party/libcxx/src/random.cpp -FILE: ../../../third_party/libcxx/src/regex.cpp -FILE: ../../../third_party/libcxx/src/shared_mutex.cpp -FILE: ../../../third_party/libcxx/src/stdexcept.cpp -FILE: ../../../third_party/libcxx/src/string.cpp -FILE: ../../../third_party/libcxx/src/strstream.cpp -FILE: ../../../third_party/libcxx/src/support/runtime/exception_fallback.ipp -FILE: ../../../third_party/libcxx/src/support/runtime/exception_glibcxx.ipp -FILE: ../../../third_party/libcxx/src/support/runtime/exception_libcxxabi.ipp -FILE: ../../../third_party/libcxx/src/support/runtime/exception_libcxxrt.ipp -FILE: ../../../third_party/libcxx/src/support/runtime/exception_msvc.ipp -FILE: ../../../third_party/libcxx/src/support/runtime/exception_pointer_cxxabi.ipp -FILE: ../../../third_party/libcxx/src/support/runtime/exception_pointer_glibcxx.ipp -FILE: ../../../third_party/libcxx/src/support/runtime/exception_pointer_msvc.ipp -FILE: ../../../third_party/libcxx/src/support/runtime/exception_pointer_unimplemented.ipp -FILE: ../../../third_party/libcxx/src/support/runtime/new_handler_fallback.ipp -FILE: ../../../third_party/libcxx/src/support/win32/locale_win32.cpp -FILE: ../../../third_party/libcxx/src/support/win32/support.cpp -FILE: ../../../third_party/libcxx/src/support/win32/thread_win32.cpp -FILE: ../../../third_party/libcxx/src/system_error.cpp -FILE: ../../../third_party/libcxx/src/thread.cpp -FILE: ../../../third_party/libcxx/src/typeinfo.cpp -FILE: ../../../third_party/libcxx/src/utility.cpp -FILE: ../../../third_party/libcxx/src/valarray.cpp -FILE: ../../../third_party/libcxx/src/variant.cpp -FILE: ../../../third_party/libcxx/src/vector.cpp -FILE: ../../../third_party/libcxx/www/TS_deprecation.html -FILE: ../../../third_party/libcxx/www/atomic_design.html -FILE: ../../../third_party/libcxx/www/atomic_design_a.html -FILE: ../../../third_party/libcxx/www/atomic_design_b.html -FILE: ../../../third_party/libcxx/www/atomic_design_c.html -FILE: ../../../third_party/libcxx/www/cxx1y_status.html -FILE: ../../../third_party/libcxx/www/cxx1z_status.html -FILE: ../../../third_party/libcxx/www/cxx2a_status.html -FILE: ../../../third_party/libcxx/www/index.html -FILE: ../../../third_party/libcxx/www/ts1z_status.html -FILE: ../../../third_party/libcxx/www/type_traits_design.html -FILE: ../../../third_party/libcxx/www/upcoming_meeting.html ----------------------------------------------------------------------------------------------------- -University of Illinois/NCSA -Open Source License - -Copyright (c) 2009-2017 by the contributors listed in CREDITS.TXT - -All rights reserved. - -Developed by: - - LLVM Team - - University of Illinois at Urbana-Champaign - - http://llvm.org - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal with -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies -of the Software, and to permit persons to whom the Software is furnished to do -so, subject to the following conditions: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimers. - - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimers in the - documentation and/or other materials provided with the distribution. - - * Neither the names of the LLVM Team, University of Illinois at - Urbana-Champaign, nor the names of its contributors may be used to - endorse or promote products derived from this Software without specific - prior written permission. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE -SOFTWARE. -==================================================================================================== - -==================================================================================================== -LIBRARY: libcxxabi -ORIGIN: null -TYPE: LicenseType.bsd -FILE: ../../../third_party/libcxxabi/.arcconfig -FILE: ../../../third_party/libcxxabi/fuzz/cxa_demangle_fuzzer.cpp -FILE: ../../../third_party/libcxxabi/src/demangle/Compiler.h -FILE: ../../../third_party/libcxxabi/src/demangle/StringView.h -FILE: ../../../third_party/libcxxabi/src/demangle/Utility.h -FILE: ../../../third_party/libcxxabi/www/index.html -FILE: ../../../third_party/libcxxabi/www/spec.html ----------------------------------------------------------------------------------------------------- -University of Illinois/NCSA -Open Source License - -Copyright (c) 2009-2018 by the contributors listed in CREDITS.TXT - -All rights reserved. - -Developed by: - - LLVM Team - - University of Illinois at Urbana-Champaign - - http://llvm.org - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal with -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies -of the Software, and to permit persons to whom the Software is furnished to do -so, subject to the following conditions: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimers. - - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimers in the - documentation and/or other materials provided with the distribution. - - * Neither the names of the LLVM Team, University of Illinois at - Urbana-Champaign, nor the names of its contributors may be used to - endorse or promote products derived from this Software without specific - prior written permission. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE -SOFTWARE. -==================================================================================================== - ==================================================================================================== LIBRARY: libjpeg-turbo ORIGIN: ../../../third_party/libjpeg-turbo/README.ijg @@ -18385,4 +17844,4 @@ freely, subject to the following restrictions: misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. ==================================================================================================== -Total license count: 307 +Total license count: 304 diff --git a/sky/packages/sky_engine/LICENSE b/sky/packages/sky_engine/LICENSE index 38fca4e7cc13f..7334fbc6b9b0e 100644 --- a/sky/packages/sky_engine/LICENSE +++ b/sky/packages/sky_engine/LICENSE @@ -7116,117 +7116,6 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- -libcxx - -University of Illinois/NCSA -Open Source License - -Copyright (c) 2009-2017 by the contributors listed in CREDITS.TXT - -All rights reserved. - -Developed by: - - LLVM Team - - University of Illinois at Urbana-Champaign - - http://llvm.org - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal with -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies -of the Software, and to permit persons to whom the Software is furnished to do -so, subject to the following conditions: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimers. - - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimers in the - documentation and/or other materials provided with the distribution. - - * Neither the names of the LLVM Team, University of Illinois at - Urbana-Champaign, nor the names of its contributors may be used to - endorse or promote products derived from this Software without specific - prior written permission. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE -SOFTWARE. --------------------------------------------------------------------------------- -libcxx -libcxxabi - -Copyright (c) 2009-2014 by the contributors listed in CREDITS.TXT - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. --------------------------------------------------------------------------------- -libcxxabi - -University of Illinois/NCSA -Open Source License - -Copyright (c) 2009-2018 by the contributors listed in CREDITS.TXT - -All rights reserved. - -Developed by: - - LLVM Team - - University of Illinois at Urbana-Champaign - - http://llvm.org - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal with -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies -of the Software, and to permit persons to whom the Software is furnished to do -so, subject to the following conditions: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimers. - - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimers in the - documentation and/or other materials provided with the distribution. - - * Neither the names of the LLVM Team, University of Illinois at - Urbana-Champaign, nor the names of its contributors may be used to - endorse or promote products derived from this Software without specific - prior written permission. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE -SOFTWARE. --------------------------------------------------------------------------------- libjpeg-turbo Copyright (C) 1999-2006, MIYASAKA Masaru. diff --git a/tools/licenses/lib/main.dart b/tools/licenses/lib/main.dart index a2ab8e2057003..39aff8a821c0e 100644 --- a/tools/licenses/lib/main.dart +++ b/tools/licenses/lib/main.dart @@ -809,7 +809,8 @@ class _RepositoryMultiLicenseNoticesForFilesFile extends _RepositoryLicenseFile Iterable get licenses => _licenses.values; } -class _RepositoryCxxStlDualLicenseFile extends _RepositoryLicenseFile { +// TODO(goderbauer): use this in https://github.com/flutter/engine/pull/6886. +class _RepositoryCxxStlDualLicenseFile extends _RepositoryLicenseFile { // ignore: unused_element _RepositoryCxxStlDualLicenseFile(_RepositoryDirectory parent, fs.TextFile io) : _licenses = _parseLicenses(io), super(parent, io); @@ -1487,62 +1488,6 @@ class _RepositoryJSR305SrcDirectory extends _RepositoryDirectory { } } -class _RepositoryLibcxxDirectory extends _RepositoryDirectory { - _RepositoryLibcxxDirectory(_RepositoryDirectory parent, fs.Directory io) : super(parent, io); - - @override - bool shouldRecurse(fs.IoNode entry) { - return entry.name != 'utils' - && super.shouldRecurse(entry); - } - - @override - _RepositoryDirectory createSubdirectory(fs.Directory entry) { - if (entry.name == 'src') - return new _RepositoryLibcxxSrcDirectory(this, entry); - return super.createSubdirectory(entry); - } - - @override - _RepositoryFile createFile(fs.IoNode entry) { - if (entry.name == 'LICENSE.TXT') - return new _RepositoryCxxStlDualLicenseFile(this, entry); - return super.createFile(entry); - } -} - -class _RepositoryLibcxxSrcDirectory extends _RepositoryDirectory { - _RepositoryLibcxxSrcDirectory(_RepositoryDirectory parent, fs.Directory io) : super(parent, io); - - @override - _RepositoryDirectory createSubdirectory(fs.Directory entry) { - if (entry.name == 'support') - return new _RepositoryLibcxxSrcSupportDirectory(this, entry); - return super.createSubdirectory(entry); - } -} - -class _RepositoryLibcxxSrcSupportDirectory extends _RepositoryDirectory { - _RepositoryLibcxxSrcSupportDirectory(_RepositoryDirectory parent, fs.Directory io) : super(parent, io); - - @override - bool shouldRecurse(fs.IoNode entry) { - return entry.name != 'solaris' - && super.shouldRecurse(entry); - } -} - -class _RepositoryLibcxxabiDirectory extends _RepositoryDirectory { - _RepositoryLibcxxabiDirectory(_RepositoryDirectory parent, fs.Directory io) : super(parent, io); - - @override - _RepositoryFile createFile(fs.IoNode entry) { - if (entry.name == 'LICENSE.TXT') - return new _RepositoryCxxStlDualLicenseFile(this, entry); - return super.createFile(entry); - } -} - class _RepositoryLibJpegDirectory extends _RepositoryDirectory { _RepositoryLibJpegDirectory(_RepositoryDirectory parent, fs.Directory io) : super(parent, io); @@ -1754,10 +1699,6 @@ class _RepositoryRootThirdPartyDirectory extends _RepositoryGenericThirdPartyDir return new _RepositoryIcuDirectory(this, entry); if (entry.name == 'jsr-305') return new _RepositoryJSR305Directory(this, entry); - if (entry.name == 'libcxx') - return new _RepositoryLibcxxDirectory(this, entry); - if (entry.name == 'libcxxabi') - return new _RepositoryLibcxxabiDirectory(this, entry); if (entry.name == 'libjpeg') return new _RepositoryLibJpegDirectory(this, entry); if (entry.name == 'libjpeg_turbo' || entry.name == 'libjpeg-turbo') From 87566452bf0564f4e1a17256259b9fe1c9198af4 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Mon, 10 Dec 2018 13:08:09 -0500 Subject: [PATCH 0486/1537] Roll src/third_party/skia 6788a54afe2d..ca91e1f6c517 (1 commits) (#7147) https://skia.googlesource.com/skia.git/+log/6788a54afe2d..ca91e1f6c517 Created with: gclient setdep -r src/third_party/skia@ca91e1f6c517 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 4e65030c13fc7..3d6b658c8d79f 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '6788a54afe2da92479067b60b663fb502d43b107', + 'skia_revision': 'ca91e1f6c517e6a6285fcd6f96dbf1a049aac9d5', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 8367c54b6cf0c..4c0b253a9238a 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: c2c13131921d58e6727447fcfed81ad1 +Signature: a01e9b979f8ce07b25f7ce3fa960f4c7 UNUSED LICENSES: From f3de9c98c7c05662b1885314ef7a057ef0003a86 Mon Sep 17 00:00:00 2001 From: Craig Stout Date: Wed, 5 Dec 2018 13:57:14 -0800 Subject: [PATCH 0487/1537] [vulkan] Remove magma native surface The Vulkan surface extension as used here is meant for testing only. Since this isn't used, remove it so we don't have to maintain it. Also remove the attempt to locate all related Vulkan entry points. Test: pixelbook:build topaz, launch a spinning cube --- ci/licenses_golden/licenses_flutter | 2 - vulkan/BUILD.gn | 11 +---- vulkan/vulkan_device.cc | 9 +++- vulkan/vulkan_native_surface_magma.cc | 66 --------------------------- vulkan/vulkan_native_surface_magma.h | 43 ----------------- vulkan/vulkan_proc_table.cc | 25 ++++------ vulkan/vulkan_proc_table.h | 14 +++--- 7 files changed, 25 insertions(+), 145 deletions(-) delete mode 100644 vulkan/vulkan_native_surface_magma.cc delete mode 100644 vulkan/vulkan_native_surface_magma.h diff --git a/ci/licenses_golden/licenses_flutter b/ci/licenses_golden/licenses_flutter index 63b2ac899e260..5442f3c564cad 100644 --- a/ci/licenses_golden/licenses_flutter +++ b/ci/licenses_golden/licenses_flutter @@ -594,8 +594,6 @@ FILE: ../../../flutter/vulkan/vulkan_native_surface.cc FILE: ../../../flutter/vulkan/vulkan_native_surface.h FILE: ../../../flutter/vulkan/vulkan_native_surface_android.cc FILE: ../../../flutter/vulkan/vulkan_native_surface_android.h -FILE: ../../../flutter/vulkan/vulkan_native_surface_magma.cc -FILE: ../../../flutter/vulkan/vulkan_native_surface_magma.h FILE: ../../../flutter/vulkan/vulkan_proc_table.cc FILE: ../../../flutter/vulkan/vulkan_proc_table.h FILE: ../../../flutter/vulkan/vulkan_provider.cc diff --git a/vulkan/BUILD.gn b/vulkan/BUILD.gn index e5412a6431a21..d6e3767af9518 100644 --- a/vulkan/BUILD.gn +++ b/vulkan/BUILD.gn @@ -35,8 +35,6 @@ source_set("vulkan") { "vulkan_proc_table.h", "vulkan_surface.cc", "vulkan_surface.h", - "vulkan_swapchain.cc", - "vulkan_swapchain.h", "vulkan_utilities.cc", "vulkan_utilities.h", "vulkan_window.cc", @@ -47,13 +45,8 @@ source_set("vulkan") { sources += [ "vulkan_native_surface_android.cc", "vulkan_native_surface_android.h", - ] - } - - if (is_fuchsia) { - sources += [ - "vulkan_native_surface_magma.cc", - "vulkan_native_surface_magma.h", + "vulkan_swapchain.cc", + "vulkan_swapchain.h", ] } diff --git a/vulkan/vulkan_device.cc b/vulkan/vulkan_device.cc index 50688c1bac16a..772b1909225af 100644 --- a/vulkan/vulkan_device.cc +++ b/vulkan/vulkan_device.cc @@ -58,7 +58,9 @@ VulkanDevice::VulkanDevice(VulkanProcTable& p_vk, }; const char* extensions[] = { +#if OS_ANDROID VK_KHR_SWAPCHAIN_EXTENSION_NAME, +#endif #if OS_FUCHSIA VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME, VK_KHR_EXTERNAL_MEMORY_FUCHSIA_EXTENSION_NAME, @@ -177,6 +179,7 @@ uint32_t VulkanDevice::GetGraphicsQueueIndex() const { bool VulkanDevice::GetSurfaceCapabilities( const VulkanSurface& surface, VkSurfaceCapabilitiesKHR* capabilities) const { +#if OS_ANDROID if (!surface.IsValid() || capabilities == nullptr) { return false; } @@ -206,6 +209,9 @@ bool VulkanDevice::GetSurfaceCapabilities( capabilities->currentExtent.width = size.width(); capabilities->currentExtent.height = size.height(); return true; +#else + return false; +#endif } bool VulkanDevice::GetPhysicalDeviceFeatures( @@ -262,6 +268,7 @@ std::vector VulkanDevice::GetQueueFamilyProperties() int VulkanDevice::ChooseSurfaceFormat(const VulkanSurface& surface, std::vector desired_formats, VkSurfaceFormatKHR* format) const { +#if OS_ANDROID if (!surface.IsValid() || format == nullptr) { return -1; } @@ -297,7 +304,7 @@ int VulkanDevice::ChooseSurfaceFormat(const VulkanSurface& surface, return static_cast(i); } } - +#endif return -1; } diff --git a/vulkan/vulkan_native_surface_magma.cc b/vulkan/vulkan_native_surface_magma.cc deleted file mode 100644 index 61c12d8d2d0ac..0000000000000 --- a/vulkan/vulkan_native_surface_magma.cc +++ /dev/null @@ -1,66 +0,0 @@ -// 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/vulkan/vulkan_native_surface_magma.h" - -namespace vulkan { - -VulkanNativeSurfaceMagma::VulkanNativeSurfaceMagma() = default; - -VulkanNativeSurfaceMagma::VulkanNativeSurfaceMagma(int32_t width, - int32_t height) { - size_ = SkISize::Make(width, height); -} - -VulkanNativeSurfaceMagma::~VulkanNativeSurfaceMagma() = default; - -const char* VulkanNativeSurfaceMagma::GetExtensionName() const { - return VK_KHR_MAGMA_SURFACE_EXTENSION_NAME; -} - -uint32_t VulkanNativeSurfaceMagma::GetSkiaExtensionName() const { - // There is no counterpart in Skia that recognizes the Magma extension name. - // However, Flutter handles all setup anyway, so this is unnecessary. - return 0; -} - -VkSurfaceKHR VulkanNativeSurfaceMagma::CreateSurfaceHandle( - vulkan::VulkanProcTable& vk, - const vulkan::VulkanHandle& instance) const { - if (!vk.IsValid() || !instance) { - return VK_NULL_HANDLE; - } - - const VkMagmaSurfaceCreateInfoKHR create_info = { - .sType = VK_STRUCTURE_TYPE_MAGMA_SURFACE_CREATE_INFO_KHR, - .pNext = nullptr, - }; - - VkSurfaceKHR surface = VK_NULL_HANDLE; - - if (VK_CALL_LOG_ERROR(vk.CreateMagmaSurfaceKHR( - instance, &create_info, nullptr /* allocator */, &surface)) != - VK_SUCCESS) { - return VK_NULL_HANDLE; - } - - return surface; -} - -bool VulkanNativeSurfaceMagma::IsValid() const { - // vkCreateMagmaSurfaceKHR doesn't actually take a native handle. So there is - // nothing to check the validity of. - return true; -} - -SkISize VulkanNativeSurfaceMagma::GetSize() const { - if (size_.width() != 0 && size_.height() != 0) { - return size_; - } else { - // TODO: Don't hardcode this after we get a proper Fuchsia Display API. - return SkISize::Make(2160, 1440); - } -} - -} // namespace vulkan diff --git a/vulkan/vulkan_native_surface_magma.h b/vulkan/vulkan_native_surface_magma.h deleted file mode 100644 index 1f3bbfe2f09f2..0000000000000 --- a/vulkan/vulkan_native_surface_magma.h +++ /dev/null @@ -1,43 +0,0 @@ -// 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. - -#ifndef FLUTTER_VULKAN_VULKAN_NATIVE_SURFACE_MAGMA_H_ -#define FLUTTER_VULKAN_VULKAN_NATIVE_SURFACE_MAGMA_H_ - -#include "flutter/fml/macros.h" -#include "flutter/vulkan/vulkan_native_surface.h" - -namespace vulkan { - -class VulkanNativeSurfaceMagma : public vulkan::VulkanNativeSurface { - public: - VulkanNativeSurfaceMagma(); - - // Alternate constructor which allows the caller to specify the surface's - // width and height. - // TODO: Remove this once we have a Fuchsia Display API. - VulkanNativeSurfaceMagma(int32_t surface_width, int32_t surface_height); - - ~VulkanNativeSurfaceMagma(); - - const char* GetExtensionName() const override; - - uint32_t GetSkiaExtensionName() const override; - - VkSurfaceKHR CreateSurfaceHandle( - vulkan::VulkanProcTable& vk, - const vulkan::VulkanHandle& instance) const override; - - bool IsValid() const override; - - SkISize GetSize() const override; - - private: - SkISize size_; - FML_DISALLOW_COPY_AND_ASSIGN(VulkanNativeSurfaceMagma); -}; - -} // namespace vulkan - -#endif // FLUTTER_VULKAN_VULKAN_NATIVE_SURFACE_MAGMA_H_ diff --git a/vulkan/vulkan_proc_table.cc b/vulkan/vulkan_proc_table.cc index 50d25b44263ef..b94e1ab4b23db 100644 --- a/vulkan/vulkan_proc_table.cc +++ b/vulkan/vulkan_proc_table.cc @@ -74,29 +74,20 @@ bool VulkanProcTable::SetupInstanceProcAddresses( ACQUIRE_PROC(CreateDevice, handle); ACQUIRE_PROC(DestroyDevice, handle); ACQUIRE_PROC(DestroyInstance, handle); - ACQUIRE_PROC(DestroySurfaceKHR, handle); ACQUIRE_PROC(EnumerateDeviceLayerProperties, handle); ACQUIRE_PROC(EnumeratePhysicalDevices, handle); ACQUIRE_PROC(GetDeviceProcAddr, handle); ACQUIRE_PROC(GetPhysicalDeviceFeatures, handle); ACQUIRE_PROC(GetPhysicalDeviceQueueFamilyProperties, handle); +#if OS_ANDROID ACQUIRE_PROC(GetPhysicalDeviceSurfaceCapabilitiesKHR, handle); ACQUIRE_PROC(GetPhysicalDeviceSurfaceFormatsKHR, handle); ACQUIRE_PROC(GetPhysicalDeviceSurfacePresentModesKHR, handle); ACQUIRE_PROC(GetPhysicalDeviceSurfaceSupportKHR, handle); - -#if OS_ANDROID + ACQUIRE_PROC(DestroySurfaceKHR, handle); ACQUIRE_PROC(CreateAndroidSurfaceKHR, handle); #endif // OS_ANDROID -#if OS_FUCHSIA - [this, &handle]() -> bool { - ACQUIRE_PROC(CreateMagmaSurfaceKHR, handle); - ACQUIRE_PROC(GetPhysicalDeviceMagmaPresentationSupportKHR, handle); - return true; - }(); -#endif // OS_FUCHSIA - // The debug report functions are optional. We don't want proc acquisition to // fail here because the optional methods were not present (since ACQUIRE_PROC // returns false on failure). Wrap the optional proc acquisitions in an @@ -114,7 +105,6 @@ bool VulkanProcTable::SetupInstanceProcAddresses( bool VulkanProcTable::SetupDeviceProcAddresses( const VulkanHandle& handle) { - ACQUIRE_PROC(AcquireNextImageKHR, handle); ACQUIRE_PROC(AllocateCommandBuffers, handle); ACQUIRE_PROC(AllocateMemory, handle); ACQUIRE_PROC(BeginCommandBuffer, handle); @@ -124,25 +114,28 @@ bool VulkanProcTable::SetupDeviceProcAddresses( ACQUIRE_PROC(CreateFence, handle); ACQUIRE_PROC(CreateImage, handle); ACQUIRE_PROC(CreateSemaphore, handle); - ACQUIRE_PROC(CreateSwapchainKHR, handle); ACQUIRE_PROC(DestroyCommandPool, handle); ACQUIRE_PROC(DestroyFence, handle); ACQUIRE_PROC(DestroyImage, handle); ACQUIRE_PROC(DestroySemaphore, handle); - ACQUIRE_PROC(DestroySwapchainKHR, handle); ACQUIRE_PROC(DeviceWaitIdle, handle); ACQUIRE_PROC(EndCommandBuffer, handle); ACQUIRE_PROC(FreeCommandBuffers, handle); ACQUIRE_PROC(FreeMemory, handle); ACQUIRE_PROC(GetDeviceQueue, handle); ACQUIRE_PROC(GetImageMemoryRequirements, handle); - ACQUIRE_PROC(GetSwapchainImagesKHR, handle); - ACQUIRE_PROC(QueuePresentKHR, handle); ACQUIRE_PROC(QueueSubmit, handle); ACQUIRE_PROC(QueueWaitIdle, handle); ACQUIRE_PROC(ResetCommandBuffer, handle); ACQUIRE_PROC(ResetFences, handle); ACQUIRE_PROC(WaitForFences, handle); +#if OS_ANDROID + ACQUIRE_PROC(AcquireNextImageKHR, handle); + ACQUIRE_PROC(CreateSwapchainKHR, handle); + ACQUIRE_PROC(DestroySwapchainKHR, handle); + ACQUIRE_PROC(GetSwapchainImagesKHR, handle); + ACQUIRE_PROC(QueuePresentKHR, handle); +#endif // OS_ANDROID #if OS_FUCHSIA ACQUIRE_PROC(GetMemoryFuchsiaHandleKHR, handle); ACQUIRE_PROC(ImportSemaphoreFuchsiaHandleKHR, handle); diff --git a/vulkan/vulkan_proc_table.h b/vulkan/vulkan_proc_table.h index 12d4b5beb9b03..d145150bcf84c 100644 --- a/vulkan/vulkan_proc_table.h +++ b/vulkan/vulkan_proc_table.h @@ -100,24 +100,22 @@ class VulkanProcTable : public fml::RefCountedThreadSafe { DEFINE_PROC(GetInstanceProcAddr); DEFINE_PROC(GetPhysicalDeviceFeatures); DEFINE_PROC(GetPhysicalDeviceQueueFamilyProperties); - DEFINE_PROC(GetPhysicalDeviceSurfaceCapabilitiesKHR); - DEFINE_PROC(GetPhysicalDeviceSurfaceFormatsKHR); - DEFINE_PROC(GetPhysicalDeviceSurfacePresentModesKHR); - DEFINE_PROC(GetPhysicalDeviceSurfaceSupportKHR); - DEFINE_PROC(GetSwapchainImagesKHR); - DEFINE_PROC(QueuePresentKHR); DEFINE_PROC(QueueSubmit); DEFINE_PROC(QueueWaitIdle); DEFINE_PROC(ResetCommandBuffer); DEFINE_PROC(ResetFences); DEFINE_PROC(WaitForFences); #if OS_ANDROID + DEFINE_PROC(GetPhysicalDeviceSurfaceCapabilitiesKHR); + DEFINE_PROC(GetPhysicalDeviceSurfaceFormatsKHR); + DEFINE_PROC(GetPhysicalDeviceSurfacePresentModesKHR); + DEFINE_PROC(GetPhysicalDeviceSurfaceSupportKHR); + DEFINE_PROC(GetSwapchainImagesKHR); + DEFINE_PROC(QueuePresentKHR); DEFINE_PROC(CreateAndroidSurfaceKHR); #endif // OS_ANDROID #if OS_FUCHSIA - DEFINE_PROC(CreateMagmaSurfaceKHR); DEFINE_PROC(GetMemoryFuchsiaHandleKHR); - DEFINE_PROC(GetPhysicalDeviceMagmaPresentationSupportKHR); DEFINE_PROC(ImportSemaphoreFuchsiaHandleKHR); #endif // OS_FUCHSIA From da9985a89fd6be92a181814e085a3611fa209df3 Mon Sep 17 00:00:00 2001 From: Craig Stout Date: Wed, 5 Dec 2018 14:02:02 -0800 Subject: [PATCH 0488/1537] [vulkan] Define VK_USE_PLATFORM_FUCHSIA VK_USE_PLATFORM_MAGMA_KHR is old and will be removed. --- vulkan/vulkan_interface.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/vulkan/vulkan_interface.h b/vulkan/vulkan_interface.h index 6934ec97925eb..33b9c908b1da0 100644 --- a/vulkan/vulkan_interface.h +++ b/vulkan/vulkan_interface.h @@ -22,6 +22,9 @@ #ifndef VK_USE_PLATFORM_MAGMA_KHR #define VK_USE_PLATFORM_MAGMA_KHR 1 #endif // VK_USE_PLATFORM_MAGMA_KHR +#ifndef VK_USE_PLATFORM_FUCHSIA +#define VK_USE_PLATFORM_FUCHSIA 1 +#endif // VK_USE_PLATFORM_FUCHSIA #endif // OS_FUCHSIA #if !VULKAN_LINK_STATICALLY From 16c46740f9857740d120ddea4f605254262233e7 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Mon, 10 Dec 2018 13:27:09 -0500 Subject: [PATCH 0489/1537] Roll src/third_party/skia ca91e1f6c517..dad4bfcfa39f (2 commits) (#7148) https://skia.googlesource.com/skia.git/+log/ca91e1f6c517..dad4bfcfa39f Created with: gclient setdep -r src/third_party/skia@dad4bfcfa39f The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 3d6b658c8d79f..9e072ecacef44 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'ca91e1f6c517e6a6285fcd6f96dbf1a049aac9d5', + 'skia_revision': 'dad4bfcfa39f744bf9d9c8f2a8f5b040982e6022', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 4c0b253a9238a..b5f49983b2bd9 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: a01e9b979f8ce07b25f7ce3fa960f4c7 +Signature: 79bfa7c52d5ffb8c1733d3a3d23707ff UNUSED LICENSES: From 267fb35efdd7b593bd1457fc4a5e61c03f15b909 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Mon, 10 Dec 2018 13:49:10 -0500 Subject: [PATCH 0490/1537] Roll src/third_party/skia dad4bfcfa39f..a72e8d3f4053 (1 commits) (#7149) https://skia.googlesource.com/skia.git/+log/dad4bfcfa39f..a72e8d3f4053 Created with: gclient setdep -r src/third_party/skia@a72e8d3f4053 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 9e072ecacef44..46f257941a89e 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'dad4bfcfa39f744bf9d9c8f2a8f5b040982e6022', + 'skia_revision': 'a72e8d3f40539f0c13329fced7eba8edf926df9f', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index b5f49983b2bd9..58a5822610be8 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 79bfa7c52d5ffb8c1733d3a3d23707ff +Signature: 6ac0195411df2fbf1d98d08354fda0d2 UNUSED LICENSES: From c97911e0242610acc512e99b3842072073bca129 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Mon, 10 Dec 2018 14:18:13 -0500 Subject: [PATCH 0491/1537] Roll src/third_party/skia a72e8d3f4053..a0160896f339 (1 commits) (#7150) https://skia.googlesource.com/skia.git/+log/a72e8d3f4053..a0160896f339 Created with: gclient setdep -r src/third_party/skia@a0160896f339 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 46f257941a89e..7921122cff0b2 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'a72e8d3f40539f0c13329fced7eba8edf926df9f', + 'skia_revision': 'a0160896f339e565f58bceaa607e49fa0a832762', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 58a5822610be8..5bbc136cedc66 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 6ac0195411df2fbf1d98d08354fda0d2 +Signature: a3ad2ebe6291c1be0c19990c8f4479d4 UNUSED LICENSES: From dec947cc1295680dfca01ba7f4172d0f3644b8be Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Mon, 10 Dec 2018 14:37:09 -0500 Subject: [PATCH 0492/1537] Roll src/third_party/skia a0160896f339..dbfd7664f265 (1 commits) (#7153) https://skia.googlesource.com/skia.git/+log/a0160896f339..dbfd7664f265 Created with: gclient setdep -r src/third_party/skia@dbfd7664f265 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/DEPS b/DEPS index 7921122cff0b2..dbcbbb01bbd97 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'a0160896f339e565f58bceaa607e49fa0a832762', + 'skia_revision': 'dbfd7664f26512eec643a427e2014d15c0ec79dc', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 5bbc136cedc66..9c0ede49dab22 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: a3ad2ebe6291c1be0c19990c8f4479d4 +Signature: c47d511e771d36f091f50e0c0b6e1ceb UNUSED LICENSES: @@ -2861,7 +2861,6 @@ FILE: ../../../third_party/skia/src/core/SkAAClip.cpp FILE: ../../../third_party/skia/src/core/SkAAClip.h FILE: ../../../third_party/skia/src/core/SkAdvancedTypefaceMetrics.h FILE: ../../../third_party/skia/src/core/SkBitmapProcState.cpp -FILE: ../../../third_party/skia/src/core/SkBitmapProcState_matrix.h FILE: ../../../third_party/skia/src/core/SkBlitRow.h FILE: ../../../third_party/skia/src/core/SkBlitRow_D32.cpp FILE: ../../../third_party/skia/src/core/SkClipStack.cpp From f7770eee52ef802e01290e7323aaed52153bce32 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Mon, 10 Dec 2018 14:56:09 -0500 Subject: [PATCH 0493/1537] Roll src/third_party/skia dbfd7664f265..3ccaa88c5031 (1 commits) (#7154) https://skia.googlesource.com/skia.git/+log/dbfd7664f265..3ccaa88c5031 Created with: gclient setdep -r src/third_party/skia@3ccaa88c5031 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index dbcbbb01bbd97..e15b6554edadf 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'dbfd7664f26512eec643a427e2014d15c0ec79dc', + 'skia_revision': '3ccaa88c5031f1216cebe962d10b7efd398b3832', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 9c0ede49dab22..5c9982c01e677 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: c47d511e771d36f091f50e0c0b6e1ceb +Signature: 33ccb56009a13d1132781da2f146e087 UNUSED LICENSES: From be36ba6468adf2605d718aa364061c2be4b83735 Mon Sep 17 00:00:00 2001 From: Stanislav Baranov Date: Mon, 10 Dec 2018 12:19:22 -0800 Subject: [PATCH 0494/1537] Generalize runFromBundle to support multiple bundlePaths (#7151) --- .../io/flutter/view/FlutterNativeView.java | 31 +++++++----- .../io/flutter/view/FlutterRunArguments.java | 1 + .../android/platform_view_android_jni.cc | 48 ++++++++----------- 3 files changed, 41 insertions(+), 39 deletions(-) diff --git a/shell/platform/android/io/flutter/view/FlutterNativeView.java b/shell/platform/android/io/flutter/view/FlutterNativeView.java index bb5e132d46ac6..bf49b43c2a058 100644 --- a/shell/platform/android/io/flutter/view/FlutterNativeView.java +++ b/shell/platform/android/io/flutter/view/FlutterNativeView.java @@ -76,12 +76,20 @@ public void assertAttached() { } public void runFromBundle(FlutterRunArguments args) { - if (args.bundlePath == null) { - throw new AssertionError("A bundlePath must be specified"); + if (args.bundlePath == null && args.bundlePaths.length == 0) { + throw new AssertionError("Either bundlePath or bundlePaths must be specified"); + } else if ((args.bundlePath != null || args.defaultPath != null) && + args.bundlePaths.length != 0) { + throw new AssertionError("Can't specify both bundlePath and bundlePaths"); } else if (args.entrypoint == null) { - throw new AssertionError("An entrypoint must be specified"); + throw new AssertionError("An entrypoint must be specified"); + } + if (args.bundlePaths.length != 0) { + runFromBundleInternal(args.bundlePaths, args.entrypoint, args.libraryPath); + } else { + runFromBundleInternal(new String[] {args.bundlePath, args.defaultPath}, + args.entrypoint, args.libraryPath); } - runFromBundleInternal(args.bundlePath, args.entrypoint, args.libraryPath, args.defaultPath); } /** @@ -92,17 +100,17 @@ public void runFromBundle(FlutterRunArguments args) { @Deprecated public void runFromBundle(String bundlePath, String defaultPath, String entrypoint, boolean reuseRuntimeController) { - runFromBundleInternal(bundlePath, entrypoint, null, defaultPath); + runFromBundleInternal(new String[] {bundlePath, defaultPath}, entrypoint, null); } - private void runFromBundleInternal(String bundlePath, String entrypoint, - String libraryPath, String defaultPath) { + private void runFromBundleInternal(String[] bundlePaths, String entrypoint, + String libraryPath) { assertAttached(); if (applicationIsRunning) throw new AssertionError( "This Flutter engine instance is already running an application"); - nativeRunBundleAndSnapshotFromLibrary(mNativePlatformView, bundlePath, - defaultPath, entrypoint, libraryPath, mContext.getResources().getAssets()); + nativeRunBundleAndSnapshotFromLibrary(mNativePlatformView, bundlePaths, + entrypoint, libraryPath, mContext.getResources().getAssets()); applicationIsRunning = true; } @@ -240,9 +248,8 @@ private void onPreEngineRestart() { private static native void nativeDetach(long nativePlatformViewAndroid); private static native void nativeRunBundleAndSnapshotFromLibrary( - long nativePlatformViewAndroid, String bundlePath, - String defaultPath, String entrypoint, String libraryUrl, - AssetManager manager); + long nativePlatformViewAndroid, String[] bundlePaths, + String entrypoint, String libraryUrl, AssetManager manager); private static native String nativeGetObservatoryUri(); diff --git a/shell/platform/android/io/flutter/view/FlutterRunArguments.java b/shell/platform/android/io/flutter/view/FlutterRunArguments.java index 04e13afbb5872..9440933031893 100644 --- a/shell/platform/android/io/flutter/view/FlutterRunArguments.java +++ b/shell/platform/android/io/flutter/view/FlutterRunArguments.java @@ -9,6 +9,7 @@ * the first time. */ public class FlutterRunArguments { + public String[] bundlePaths; public String bundlePath; public String entrypoint; public String libraryPath; diff --git a/shell/platform/android/platform_view_android_jni.cc b/shell/platform/android/platform_view_android_jni.cc index be42414b6c9be..69e40dd9e1d32 100644 --- a/shell/platform/android/platform_view_android_jni.cc +++ b/shell/platform/android/platform_view_android_jni.cc @@ -236,15 +236,17 @@ std::unique_ptr CreateIsolateConfiguration( static void RunBundleAndSnapshotFromLibrary(JNIEnv* env, jobject jcaller, jlong shell_holder, - jstring jbundlepath, - jstring jdefaultPath, + jobjectArray jbundlepaths, jstring jEntrypoint, jstring jLibraryUrl, jobject jAssetManager) { auto asset_manager = std::make_shared(); + for (const auto& bundlepath : + fml::jni::StringArrayToVector(env, jbundlepaths)) { + if (bundlepath.empty()) { + continue; + } - const auto bundlepath = fml::jni::JavaStringToString(env, jbundlepath); - if (bundlepath.size() > 0) { // If we got a bundle path, attempt to use that as a directory asset // bundle or a zip asset bundle. const auto file_ext_index = bundlepath.rfind("."); @@ -255,30 +257,23 @@ static void RunBundleAndSnapshotFromLibrary(JNIEnv* env, asset_manager->PushBack( std::make_unique(fml::OpenDirectory( bundlepath.c_str(), false, fml::FilePermission::kRead))); - } - // Use the last path component of the bundle path to determine the - // directory in the APK assets. - const auto last_slash_index = bundlepath.rfind("/", bundlepath.size()); - if (last_slash_index != std::string::npos) { - auto apk_asset_dir = bundlepath.substr( - last_slash_index + 1, bundlepath.size() - last_slash_index); - - asset_manager->PushBack(std::make_unique( - env, // jni environment - jAssetManager, // asset manager - std::move(apk_asset_dir)) // apk asset dir - ); + // Use the last path component of the bundle path to determine the + // directory in the APK assets. + const auto last_slash_index = bundlepath.rfind("/", bundlepath.size()); + if (last_slash_index != std::string::npos) { + auto apk_asset_dir = bundlepath.substr( + last_slash_index + 1, bundlepath.size() - last_slash_index); + + asset_manager->PushBack(std::make_unique( + env, // jni environment + jAssetManager, // asset manager + std::move(apk_asset_dir)) // apk asset dir + ); + } } } - const auto defaultpath = fml::jni::JavaStringToString(env, jdefaultPath); - if (defaultpath.size() > 0) { - asset_manager->PushBack( - std::make_unique(fml::OpenDirectory( - defaultpath.c_str(), false, fml::FilePermission::kRead))); - } - auto isolate_configuration = CreateIsolateConfiguration(*asset_manager); if (!isolate_configuration) { FML_DLOG(ERROR) @@ -591,9 +586,8 @@ bool PlatformViewAndroid::Register(JNIEnv* env) { }, { .name = "nativeRunBundleAndSnapshotFromLibrary", - .signature = - "(JLjava/lang/String;Ljava/lang/String;Ljava/lang/String;" - "Ljava/lang/String;Landroid/content/res/AssetManager;)V", + .signature = "(J[Ljava/lang/String;Ljava/lang/String;" + "Ljava/lang/String;Landroid/content/res/AssetManager;)V", .fnPtr = reinterpret_cast(&shell::RunBundleAndSnapshotFromLibrary), }, From 08922e112d30f65d2bc2f388933a1dfddadc9dc0 Mon Sep 17 00:00:00 2001 From: Chris Bracken Date: Mon, 10 Dec 2018 12:36:09 -0800 Subject: [PATCH 0495/1537] Rename dart-non-checked-mode: disable-dart-asserts (#6977) In Dart 2, runtime checked mode has been eliminated. Many of these type checks have been moved to static compile-time checks, the remainder are enforced at runtime, and are no longer optional. --- common/settings.cc | 2 +- common/settings.h | 2 +- runtime/dart_vm.cc | 10 +++++----- shell/common/switches.cc | 4 ++-- shell/common/switches.h | 14 +++++++------- 5 files changed, 16 insertions(+), 16 deletions(-) diff --git a/common/settings.cc b/common/settings.cc index f495bac77ff02..d03c52157e141 100644 --- a/common/settings.cc +++ b/common/settings.cc @@ -35,7 +35,7 @@ std::string Settings::ToString() const { stream << "trace_startup: " << trace_startup << std::endl; stream << "endless_trace_buffer: " << endless_trace_buffer << std::endl; stream << "enable_dart_profiling: " << enable_dart_profiling << std::endl; - stream << "dart_non_checked_mode: " << dart_non_checked_mode << std::endl; + stream << "disable_dart_asserts: " << disable_dart_asserts << std::endl; stream << "enable_observatory: " << enable_observatory << std::endl; stream << "observatory_port: " << observatory_port << std::endl; stream << "ipv6: " << ipv6 << std::endl; diff --git a/common/settings.h b/common/settings.h index 7d9e4e0173935..9e61e729d978d 100644 --- a/common/settings.h +++ b/common/settings.h @@ -47,7 +47,7 @@ struct Settings { bool trace_startup = false; bool endless_trace_buffer = false; bool enable_dart_profiling = false; - bool dart_non_checked_mode = false; + bool disable_dart_asserts = false; // Used as the script URI in debug messages. Does not affect how the Dart code // is executed. std::string advisory_script_uri = "main.dart"; diff --git a/runtime/dart_vm.cc b/runtime/dart_vm.cc index 4c3f67c9f6ff6..76613f6e4aa47 100644 --- a/runtime/dart_vm.cc +++ b/runtime/dart_vm.cc @@ -325,18 +325,18 @@ DartVM::DartVM(const Settings& settings, arraysize(kDartPrecompilationArgs)); } - // Enable checked mode if we are not running precompiled code. We run non- + // Enable Dart assertions if we are not running precompiled code. We run non- // precompiled code only in the debug product mode. - bool use_checked_mode = !settings.dart_non_checked_mode; + bool enable_asserts = !settings.disable_dart_asserts; #if FLUTTER_RUNTIME_MODE == FLUTTER_RUNTIME_MODE_DYNAMIC_PROFILE || \ FLUTTER_RUNTIME_MODE == FLUTTER_RUNTIME_MODE_DYNAMIC_RELEASE - use_checked_mode = false; + enable_asserts = false; #endif #if !OS_FUCHSIA if (IsRunningPrecompiledCode()) { - use_checked_mode = false; + enable_asserts = false; } #endif // !OS_FUCHSIA @@ -347,7 +347,7 @@ DartVM::DartVM(const Settings& settings, arraysize(kDartWriteProtectCodeArgs)); #endif - if (use_checked_mode) { + if (enable_asserts) { PushBackAll(&args, kDartAssertArgs, arraysize(kDartAssertArgs)); } diff --git a/shell/common/switches.cc b/shell/common/switches.cc index 8472f27a38ed4..8b17a0172939e 100644 --- a/shell/common/switches.cc +++ b/shell/common/switches.cc @@ -139,8 +139,8 @@ blink::Settings SettingsFromCommandLine(const fml::CommandLine& command_line) { } // Checked mode overrides. - settings.dart_non_checked_mode = - command_line.HasOption(FlagForSwitch(Switch::DartNonCheckedMode)); + settings.disable_dart_asserts = + command_line.HasOption(FlagForSwitch(Switch::DisableDartAsserts)); settings.ipv6 = command_line.HasOption(FlagForSwitch(Switch::IPv6)); diff --git a/shell/common/switches.h b/shell/common/switches.h index 9abaf7951acf4..829ae9c04f6fa 100644 --- a/shell/common/switches.h +++ b/shell/common/switches.h @@ -120,13 +120,13 @@ DEF_SWITCH(RunForever, "run-forever", "In non-interactive mode, keep the shell running after the Dart " "script has completed.") -DEF_SWITCH(DartNonCheckedMode, - "dart-non-checked-mode", - "Dart code runs in checked mode when the runtime mode is debug. In " - "profile and release product modes, the application code is " - "precompiled and checked mode is unsupported. However, this flag " - "may be specified if the user wishes to run in the debug product " - "mode (i.e. with JIT or DBC) with checked mode off.") +DEF_SWITCH(DisableDartAsserts, + "disable-dart-asserts", + "Dart code runs with assertions enabled when the runtime mode is " + "debug. In profile and release product modes, assertions are " + "disabled. This flag may be specified if the user wishes to run " + "with assertions disabled in the debug product mode (i.e. with JIT " + "or DBC).") DEF_SWITCHES_END void PrintUsage(const std::string& executable_name); From 82f36f01603e0480bc8a3687c49b9272fe4d8f1a Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Mon, 10 Dec 2018 15:56:09 -0500 Subject: [PATCH 0496/1537] Roll src/third_party/skia 3ccaa88c5031..d1ca6726734f (1 commits) (#7155) https://skia.googlesource.com/skia.git/+log/3ccaa88c5031..d1ca6726734f Created with: gclient setdep -r src/third_party/skia@d1ca6726734f The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index e15b6554edadf..cbe72f11c8692 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '3ccaa88c5031f1216cebe962d10b7efd398b3832', + 'skia_revision': 'd1ca6726734f09ce15eae830d27ecffbeaec0db6', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 5c9982c01e677..7109bfc4a617f 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 33ccb56009a13d1132781da2f146e087 +Signature: 6379778f07f7b2e17171f06669fd0642 UNUSED LICENSES: From 85522031e8601312593da83105d7bad0953f3165 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Mon, 10 Dec 2018 16:29:09 -0500 Subject: [PATCH 0497/1537] Roll src/third_party/skia d1ca6726734f..a0b54cd58943 (1 commits) (#7156) https://skia.googlesource.com/skia.git/+log/d1ca6726734f..a0b54cd58943 Created with: gclient setdep -r src/third_party/skia@a0b54cd58943 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index cbe72f11c8692..1d4b6b973f0f0 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'd1ca6726734f09ce15eae830d27ecffbeaec0db6', + 'skia_revision': 'a0b54cd58943157d847cdc3167fbddfc34531be4', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 7109bfc4a617f..def8ce75514f6 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 6379778f07f7b2e17171f06669fd0642 +Signature: 54d830739046bb31231b34ee166933cf UNUSED LICENSES: From c3de4f49942b01f79680fa5ffc723f6c18307011 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Mon, 10 Dec 2018 16:49:09 -0500 Subject: [PATCH 0498/1537] Roll src/third_party/skia a0b54cd58943..4616f5521db0 (1 commits) (#7157) https://skia.googlesource.com/skia.git/+log/a0b54cd58943..4616f5521db0 Created with: gclient setdep -r src/third_party/skia@4616f5521db0 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 1d4b6b973f0f0..879f766cb6212 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'a0b54cd58943157d847cdc3167fbddfc34531be4', + 'skia_revision': '4616f5521db0654b2dc9d3923888c8841c3823d9', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index def8ce75514f6..adb718e60c6f4 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 54d830739046bb31231b34ee166933cf +Signature: 9c5f2086160159cf593b3f059c520b21 UNUSED LICENSES: From 23788485a573aeeaa11821b5ad70bfeedc29eb61 Mon Sep 17 00:00:00 2001 From: Gary Qian Date: Mon, 10 Dec 2018 14:03:10 -0800 Subject: [PATCH 0499/1537] Minor comment fix and add TODO. (#7158) --- third_party/txt/src/txt/paragraph.cc | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/third_party/txt/src/txt/paragraph.cc b/third_party/txt/src/txt/paragraph.cc index dd1c7e6718f1c..ff017b661b784 100644 --- a/third_party/txt/src/txt/paragraph.cc +++ b/third_party/txt/src/txt/paragraph.cc @@ -479,8 +479,12 @@ void Paragraph::Layout(double width, bool force) { } } - // Exclude trailing whitespace from right-justified lines so the last - // visible character in the line will be flush with the right margin. + // TODO(garyq): Make GetRectsForRange return a zero-width box for the + // excluded whitespace such that the caret placement is correct regardless + // of the index being whitespace or not. + + // Exclude trailing whitespace from right and center-justified lines so the + // last visible character in the line will be flush with the right margin. size_t line_end_index = (paragraph_style_.effective_align() == TextAlign::right || paragraph_style_.effective_align() == TextAlign::center) From 2b0687f1bcfbed8c0ab34baadbbbe25671eb5bb9 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Mon, 10 Dec 2018 17:10:09 -0500 Subject: [PATCH 0500/1537] Roll src/third_party/skia 4616f5521db0..15640698497a (2 commits) (#7159) https://skia.googlesource.com/skia.git/+log/4616f5521db0..15640698497a Created with: gclient setdep -r src/third_party/skia@15640698497a The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 879f766cb6212..4d2a9b3708ec8 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '4616f5521db0654b2dc9d3923888c8841c3823d9', + 'skia_revision': '15640698497a9d9175828091922d7c57f38093e2', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index adb718e60c6f4..f527180aab2e2 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 9c5f2086160159cf593b3f059c520b21 +Signature: 1140a8d8bb2944644846746c2d155e91 UNUSED LICENSES: From 3011c2b754d5d6980614b54df22fc648344009de Mon Sep 17 00:00:00 2001 From: Jason Simmons Date: Mon, 10 Dec 2018 14:38:44 -0800 Subject: [PATCH 0501/1537] Handle null bundlePaths in FlutterRunArguments (#7161) --- .../android/io/flutter/view/FlutterNativeView.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/shell/platform/android/io/flutter/view/FlutterNativeView.java b/shell/platform/android/io/flutter/view/FlutterNativeView.java index bf49b43c2a058..6d4a4e8bdc9e4 100644 --- a/shell/platform/android/io/flutter/view/FlutterNativeView.java +++ b/shell/platform/android/io/flutter/view/FlutterNativeView.java @@ -76,15 +76,16 @@ public void assertAttached() { } public void runFromBundle(FlutterRunArguments args) { - if (args.bundlePath == null && args.bundlePaths.length == 0) { + boolean hasBundlePaths = args.bundlePaths != null && args.bundlePaths.length != 0; + if (args.bundlePath == null && !hasBundlePaths) { throw new AssertionError("Either bundlePath or bundlePaths must be specified"); } else if ((args.bundlePath != null || args.defaultPath != null) && - args.bundlePaths.length != 0) { + hasBundlePaths) { throw new AssertionError("Can't specify both bundlePath and bundlePaths"); } else if (args.entrypoint == null) { throw new AssertionError("An entrypoint must be specified"); } - if (args.bundlePaths.length != 0) { + if (hasBundlePaths) { runFromBundleInternal(args.bundlePaths, args.entrypoint, args.libraryPath); } else { runFromBundleInternal(new String[] {args.bundlePath, args.defaultPath}, From 25c6c1be1a7bb43f8d80a9474d6836e0b3c49342 Mon Sep 17 00:00:00 2001 From: Gary Qian Date: Mon, 10 Dec 2018 15:30:46 -0800 Subject: [PATCH 0502/1537] Add empty metrics to account for truncated whitespace for GetRectsForRange. (#7164) --- third_party/txt/src/txt/paragraph.cc | 21 +- third_party/txt/tests/paragraph_unittests.cc | 239 +++++++++++++++++++ 2 files changed, 256 insertions(+), 4 deletions(-) diff --git a/third_party/txt/src/txt/paragraph.cc b/third_party/txt/src/txt/paragraph.cc index 4c6a2eacfb70b..40b0c300c5f5f 100644 --- a/third_party/txt/src/txt/paragraph.cc +++ b/third_party/txt/src/txt/paragraph.cc @@ -479,10 +479,6 @@ void Paragraph::Layout(double width, bool force) { } } - // TODO(garyq): Make GetRectsForRange return a zero-width box for the - // excluded whitespace such that the caret placement is correct regardless - // of the index being whitespace or not. - // Exclude trailing whitespace from right and center-justified lines so the // last visible character in the line will be flush with the right margin. size_t line_end_index = @@ -740,6 +736,23 @@ void Paragraph::Layout(double width, bool force) { code_unit_runs_.insert(code_unit_runs_.end(), line_code_unit_runs.begin(), line_code_unit_runs.end()); + // Add extra empty metrics for skipped whitespace at line end. This allows + // GetRectsForRange to properly draw empty rects at the ends of lines with + // truncated whitespace. + if (line_end_index < line_range.end) { + std::vector empty_glyph_positions; + double end_x = line_code_unit_runs.back().positions.back().x_pos.end; + for (size_t index = line_end_index; index < line_range.end; ++index) { + empty_glyph_positions.emplace_back(end_x, 0, index, 1); + } + code_unit_runs_.emplace_back( + std::move(empty_glyph_positions), + Range(line_end_index, line_range.end), + Range(end_x, end_x), line_code_unit_runs.back().line_number, + line_code_unit_runs.back().font_metrics, + line_code_unit_runs.back().direction); + } + double max_line_spacing = 0; double max_descent = 0; SkScalar max_unscaled_ascent = 0; diff --git a/third_party/txt/tests/paragraph_unittests.cc b/third_party/txt/tests/paragraph_unittests.cc index b7589f7e211fd..2f8d44f78ae65 100644 --- a/third_party/txt/tests/paragraph_unittests.cc +++ b/third_party/txt/tests/paragraph_unittests.cc @@ -1613,6 +1613,245 @@ TEST_F(ParagraphTest, ASSERT_TRUE(Snapshot()); } +TEST_F(ParagraphTest, DISABLE_ON_WINDOWS(GetRectsForRangeCenterParagraph)) { + const char* text = "01234   "; // includes ideographic space + // and english space. + auto icu_text = icu::UnicodeString::fromUTF8(text); + std::u16string u16_text(icu_text.getBuffer(), + icu_text.getBuffer() + icu_text.length()); + + txt::ParagraphStyle paragraph_style; + paragraph_style.max_lines = 10; + paragraph_style.text_align = TextAlign::center; + txt::ParagraphBuilder builder(paragraph_style, GetTestFontCollection()); + + txt::TextStyle text_style; + text_style.font_family = "Roboto"; + text_style.font_size = 50; + text_style.letter_spacing = 0; + text_style.font_weight = FontWeight::w500; + text_style.word_spacing = 0; + text_style.color = SK_ColorBLACK; + text_style.height = 1; + builder.PushStyle(text_style); + + builder.AddText(u16_text); + + builder.Pop(); + + auto paragraph = builder.Build(); + paragraph->Layout(550); + + paragraph->Paint(GetCanvas(), 0, 0); + + SkPaint paint; + paint.setStyle(SkPaint::kStroke_Style); + paint.setAntiAlias(true); + paint.setStrokeWidth(1); + + // Tests for GetRectsForRange() + Paragraph::RectHeightStyle rect_height_style = + Paragraph::RectHeightStyle::kMax; + Paragraph::RectWidthStyle rect_width_style = + Paragraph::RectWidthStyle::kTight; + paint.setColor(SK_ColorRED); + std::vector boxes = + paragraph->GetRectsForRange(0, 0, rect_height_style, rect_width_style); + for (size_t i = 0; i < boxes.size(); ++i) { + GetCanvas()->drawRect(boxes[i].rect, paint); + } + EXPECT_EQ(boxes.size(), 0ull); + + boxes = + paragraph->GetRectsForRange(0, 1, rect_height_style, rect_width_style); + for (size_t i = 0; i < boxes.size(); ++i) { + GetCanvas()->drawRect(boxes[i].rect, paint); + } + EXPECT_EQ(boxes.size(), 1ull); + EXPECT_FLOAT_EQ(boxes[0].rect.left(), 203.95508); + EXPECT_FLOAT_EQ(boxes[0].rect.top(), 0.40625); + EXPECT_FLOAT_EQ(boxes[0].rect.right(), 232.37305); + EXPECT_FLOAT_EQ(boxes[0].rect.bottom(), 59); + + paint.setColor(SK_ColorBLUE); + boxes = + paragraph->GetRectsForRange(2, 4, rect_height_style, rect_width_style); + for (size_t i = 0; i < boxes.size(); ++i) { + GetCanvas()->drawRect(boxes[i].rect, paint); + } + EXPECT_EQ(boxes.size(), 1ull); + EXPECT_FLOAT_EQ(boxes[0].rect.left(), 260.79102); + EXPECT_FLOAT_EQ(boxes[0].rect.top(), 0.40625); + EXPECT_FLOAT_EQ(boxes[0].rect.right(), 317.62695); + EXPECT_FLOAT_EQ(boxes[0].rect.bottom(), 59); + + paint.setColor(SK_ColorGREEN); + boxes = + paragraph->GetRectsForRange(4, 6, rect_height_style, rect_width_style); + for (size_t i = 0; i < boxes.size(); ++i) { + GetCanvas()->drawRect(boxes[i].rect, paint); + } + EXPECT_EQ(boxes.size(), 2ull); + EXPECT_FLOAT_EQ(boxes[0].rect.left(), 317.62695); + EXPECT_FLOAT_EQ(boxes[0].rect.top(), 0.40625); + EXPECT_FLOAT_EQ(boxes[0].rect.right(), 346.04492); + EXPECT_FLOAT_EQ(boxes[0].rect.bottom(), 59); + + paint.setColor(SK_ColorBLACK); + boxes = + paragraph->GetRectsForRange(5, 6, rect_height_style, rect_width_style); + for (size_t i = 0; i < boxes.size(); ++i) { + GetCanvas()->drawRect(boxes[i].rect, paint); + } + EXPECT_EQ(boxes.size(), 1ull); + EXPECT_FLOAT_EQ(boxes[0].rect.left(), 346.04492); + EXPECT_FLOAT_EQ(boxes[0].rect.top(), 0.40625); + EXPECT_FLOAT_EQ(boxes[0].rect.right(), 346.04492); + EXPECT_FLOAT_EQ(boxes[0].rect.bottom(), 59); + + paint.setColor(SK_ColorRED); + boxes = + paragraph->GetRectsForRange(21, 21, rect_height_style, rect_width_style); + for (size_t i = 0; i < boxes.size(); ++i) { + GetCanvas()->drawRect(boxes[i].rect, paint); + } + EXPECT_EQ(boxes.size(), 0ull); + + ASSERT_TRUE(Snapshot()); +} + +TEST_F(ParagraphTest, + DISABLE_ON_WINDOWS(GetRectsForRangeCenterMultiLineParagraph)) { + const char* text = "01234   \n0123  "; // includes ideographic + // space and english space. + auto icu_text = icu::UnicodeString::fromUTF8(text); + std::u16string u16_text(icu_text.getBuffer(), + icu_text.getBuffer() + icu_text.length()); + + txt::ParagraphStyle paragraph_style; + paragraph_style.max_lines = 10; + paragraph_style.text_align = TextAlign::center; + txt::ParagraphBuilder builder(paragraph_style, GetTestFontCollection()); + + txt::TextStyle text_style; + text_style.font_family = "Roboto"; + text_style.font_size = 50; + text_style.letter_spacing = 0; + text_style.font_weight = FontWeight::w500; + text_style.word_spacing = 0; + text_style.color = SK_ColorBLACK; + text_style.height = 1; + builder.PushStyle(text_style); + + builder.AddText(u16_text); + + builder.Pop(); + + auto paragraph = builder.Build(); + paragraph->Layout(550); + + paragraph->Paint(GetCanvas(), 0, 0); + + SkPaint paint; + paint.setStyle(SkPaint::kStroke_Style); + paint.setAntiAlias(true); + paint.setStrokeWidth(1); + + // Tests for GetRectsForRange() + Paragraph::RectHeightStyle rect_height_style = + Paragraph::RectHeightStyle::kMax; + Paragraph::RectWidthStyle rect_width_style = + Paragraph::RectWidthStyle::kTight; + paint.setColor(SK_ColorRED); + std::vector boxes = + paragraph->GetRectsForRange(0, 0, rect_height_style, rect_width_style); + for (size_t i = 0; i < boxes.size(); ++i) { + GetCanvas()->drawRect(boxes[i].rect, paint); + } + EXPECT_EQ(boxes.size(), 0ull); + + boxes = + paragraph->GetRectsForRange(0, 1, rect_height_style, rect_width_style); + for (size_t i = 0; i < boxes.size(); ++i) { + GetCanvas()->drawRect(boxes[i].rect, paint); + } + EXPECT_EQ(boxes.size(), 1ull); + EXPECT_FLOAT_EQ(boxes[0].rect.left(), 203.95508); + EXPECT_FLOAT_EQ(boxes[0].rect.top(), 0.40625); + EXPECT_FLOAT_EQ(boxes[0].rect.right(), 232.37305); + EXPECT_FLOAT_EQ(boxes[0].rect.bottom(), 59); + + paint.setColor(SK_ColorBLUE); + boxes = + paragraph->GetRectsForRange(2, 4, rect_height_style, rect_width_style); + for (size_t i = 0; i < boxes.size(); ++i) { + GetCanvas()->drawRect(boxes[i].rect, paint); + } + EXPECT_EQ(boxes.size(), 1ull); + EXPECT_FLOAT_EQ(boxes[0].rect.left(), 260.79102); + EXPECT_FLOAT_EQ(boxes[0].rect.top(), 0.40625); + EXPECT_FLOAT_EQ(boxes[0].rect.right(), 317.62695); + EXPECT_FLOAT_EQ(boxes[0].rect.bottom(), 59); + + paint.setColor(SK_ColorGREEN); + boxes = + paragraph->GetRectsForRange(4, 6, rect_height_style, rect_width_style); + for (size_t i = 0; i < boxes.size(); ++i) { + GetCanvas()->drawRect(boxes[i].rect, paint); + } + EXPECT_EQ(boxes.size(), 2ull); + EXPECT_FLOAT_EQ(boxes[0].rect.left(), 317.62695); + EXPECT_FLOAT_EQ(boxes[0].rect.top(), 0.40625); + EXPECT_FLOAT_EQ(boxes[0].rect.right(), 346.04492); + EXPECT_FLOAT_EQ(boxes[0].rect.bottom(), 59); + + paint.setColor(SK_ColorBLACK); + boxes = + paragraph->GetRectsForRange(5, 6, rect_height_style, rect_width_style); + for (size_t i = 0; i < boxes.size(); ++i) { + GetCanvas()->drawRect(boxes[i].rect, paint); + } + EXPECT_EQ(boxes.size(), 1ull); + EXPECT_FLOAT_EQ(boxes[0].rect.left(), 346.04492); + EXPECT_FLOAT_EQ(boxes[0].rect.top(), 0.40625); + EXPECT_FLOAT_EQ(boxes[0].rect.right(), 346.04492); + EXPECT_FLOAT_EQ(boxes[0].rect.bottom(), 59); + + paint.setColor(SK_ColorBLACK); + boxes = + paragraph->GetRectsForRange(10, 12, rect_height_style, rect_width_style); + for (size_t i = 0; i < boxes.size(); ++i) { + GetCanvas()->drawRect(boxes[i].rect, paint); + } + EXPECT_EQ(boxes.size(), 1ull); + EXPECT_FLOAT_EQ(boxes[0].rect.left(), 218.16406); + EXPECT_FLOAT_EQ(boxes[0].rect.top(), 59.40625); + EXPECT_FLOAT_EQ(boxes[0].rect.right(), 275); + EXPECT_FLOAT_EQ(boxes[0].rect.bottom(), 118); + + paint.setColor(SK_ColorBLACK); + boxes = + paragraph->GetRectsForRange(14, 18, rect_height_style, rect_width_style); + for (size_t i = 0; i < boxes.size(); ++i) { + GetCanvas()->drawRect(boxes[i].rect, paint); + } + EXPECT_EQ(boxes.size(), 1ull); + EXPECT_FLOAT_EQ(boxes[0].rect.left(), 331.83594); + EXPECT_FLOAT_EQ(boxes[0].rect.top(), 59.40625); + EXPECT_FLOAT_EQ(boxes[0].rect.right(), 331.83594); + EXPECT_FLOAT_EQ(boxes[0].rect.bottom(), 118); + + paint.setColor(SK_ColorRED); + boxes = + paragraph->GetRectsForRange(21, 21, rect_height_style, rect_width_style); + for (size_t i = 0; i < boxes.size(); ++i) { + GetCanvas()->drawRect(boxes[i].rect, paint); + } + EXPECT_EQ(boxes.size(), 0ull); + + ASSERT_TRUE(Snapshot()); +} + SkRect GetCoordinatesForGlyphPosition(const txt::Paragraph& paragraph, size_t pos) { std::vector boxes = From 4b233f033b8ba7b7e5e84f1607dbdf2e4dcdc5d8 Mon Sep 17 00:00:00 2001 From: Gary Qian Date: Mon, 10 Dec 2018 15:35:44 -0800 Subject: [PATCH 0503/1537] Support overriding font leading in TextStyle and LibTxt (#6927) --- lib/ui/text.dart | 36 ++-- lib/ui/text/paragraph_builder.cc | 16 +- lib/ui/text/paragraph_builder.h | 1 + third_party/txt/src/txt/paragraph.cc | 11 +- third_party/txt/src/txt/paragraph.h | 5 +- third_party/txt/src/txt/styled_runs.h | 5 +- third_party/txt/src/txt/text_style.cc | 4 + third_party/txt/src/txt/text_style.h | 2 + third_party/txt/tests/paragraph_unittests.cc | 197 +++++++++++++++++-- 9 files changed, 240 insertions(+), 37 deletions(-) diff --git a/lib/ui/text.dart b/lib/ui/text.dart index 9655585061974..88063162d262f 100644 --- a/lib/ui/text.dart +++ b/lib/ui/text.dart @@ -256,6 +256,7 @@ Int32List _encodeTextStyle( double letterSpacing, double wordSpacing, double height, + double leading, Locale locale, Paint background, Paint foreground, @@ -310,22 +311,26 @@ Int32List _encodeTextStyle( result[0] |= 1 << 12; // Passed separately to native. } - if (locale != null) { + if (leading != null) { result[0] |= 1 << 13; // Passed separately to native. } - if (background != null) { + if (locale != null) { result[0] |= 1 << 14; // Passed separately to native. } - if (foreground != null) { + if (background != null) { result[0] |= 1 << 15; // Passed separately to native. } - if (shadows != null) { + if (foreground != null) { result[0] |= 1 << 16; // Passed separately to native. } + if (shadows != null) { + result[0] |= 1 << 17; + // Passed separately to native. + } return result; } @@ -344,7 +349,8 @@ class TextStyle { /// * `letterSpacing`: The amount of space (in logical pixels) to add between each letter. /// * `wordSpacing`: The amount of space (in logical pixels) to add at each sequence of white-space (i.e. between each word). /// * `textBaseline`: The common baseline that should be aligned between this text span and its parent text span, or, for the root text spans, with the line box. - /// * `height`: The height of this text span, as a multiple of the font size. + /// * `height`: The height of this text span, as a multiple of the sum of font size and leading. + /// * `leading`: Custom leading to use instead of the font-provided leading as a multiple of font size. When null, default font leading will be used. Leading is the additional spacing between lines. /// * `locale`: The locale used to select region-specific glyphs. /// * `background`: The paint drawn as a background for the text. /// * `foreground`: The paint used to draw the text. If this is specified, `color` must be null. @@ -361,6 +367,7 @@ class TextStyle { double letterSpacing, double wordSpacing, double height, + double leading, Locale locale, Paint background, Paint foreground, @@ -382,6 +389,7 @@ class TextStyle { letterSpacing, wordSpacing, height, + leading, locale, background, foreground, @@ -392,6 +400,7 @@ class TextStyle { _letterSpacing = letterSpacing, _wordSpacing = wordSpacing, _height = height, + _leading = leading, _locale = locale, _background = background, _foreground = foreground, @@ -403,6 +412,7 @@ class TextStyle { final double _letterSpacing; final double _wordSpacing; final double _height; + final double _leading; final Locale _locale; final Paint _background; final Paint _foreground; @@ -420,6 +430,7 @@ class TextStyle { _letterSpacing != typedOther._letterSpacing || _wordSpacing != typedOther._wordSpacing || _height != typedOther._height || + _leading != typedOther._leading || _locale != typedOther._locale || _background != typedOther._background || _foreground != typedOther._foreground) @@ -434,7 +445,7 @@ class TextStyle { } @override - int get hashCode => hashValues(hashList(_encoded), _fontFamily, _fontSize, _letterSpacing, _wordSpacing, _height, _locale, _background, _foreground); + int get hashCode => hashValues(hashList(_encoded), _fontFamily, _fontSize, _letterSpacing, _wordSpacing, _height, _leading, _locale, _background, _foreground); @override String toString() { @@ -451,10 +462,11 @@ class TextStyle { 'letterSpacing: ${ _encoded[0] & 0x00400 == 0x00400 ? "${_letterSpacing}x" : "unspecified"}, ' 'wordSpacing: ${ _encoded[0] & 0x00800 == 0x00800 ? "${_wordSpacing}x" : "unspecified"}, ' 'height: ${ _encoded[0] & 0x01000 == 0x01000 ? "${_height}x" : "unspecified"}, ' - 'locale: ${ _encoded[0] & 0x02000 == 0x02000 ? _locale : "unspecified"}, ' - 'background: ${ _encoded[0] & 0x04000 == 0x04000 ? _background : "unspecified"}, ' - 'foreground: ${ _encoded[0] & 0x08000 == 0x08000 ? _foreground : "unspecified"}, ' - 'shadows: ${ _encoded[0] & 0x10000 == 0x10000 ? _shadows : "unspecified"}' + 'leading: ${ _encoded[0] & 0x02000 == 0x02000 ? "${_leading}x" : "unspecified"}, ' + 'locale: ${ _encoded[0] & 0x04000 == 0x04000 ? _locale : "unspecified"}, ' + 'background: ${ _encoded[0] & 0x08000 == 0x08000 ? _background : "unspecified"}, ' + 'foreground: ${ _encoded[0] & 0x10000 == 0x10000 ? _foreground : "unspecified"}, ' + 'shadows: ${ _encoded[0] & 0x20000 == 0x20000 ? _shadows : "unspecified"}' ')'; } } @@ -1135,8 +1147,8 @@ class ParagraphBuilder extends NativeFieldWrapperClass2 { /// Applies the given style to the added text until [pop] is called. /// /// See [pop] for details. - void pushStyle(TextStyle style) => _pushStyle(style._encoded, style._fontFamily, style._fontSize, style._letterSpacing, style._wordSpacing, style._height, _encodeLocale(style._locale), style._background?._objects, style._background?._data, style._foreground?._objects, style._foreground?._data, Shadow._encodeShadows(style._shadows)); - void _pushStyle(Int32List encoded, String fontFamily, double fontSize, double letterSpacing, double wordSpacing, double height, String locale, List backgroundObjects, ByteData backgroundData, List foregroundObjects, ByteData foregroundData, ByteData shadowsData) native 'ParagraphBuilder_pushStyle'; + void pushStyle(TextStyle style) => _pushStyle(style._encoded, style._fontFamily, style._fontSize, style._letterSpacing, style._wordSpacing, style._height, style._leading, _encodeLocale(style._locale), style._background?._objects, style._background?._data, style._foreground?._objects, style._foreground?._data, Shadow._encodeShadows(style._shadows)); + void _pushStyle(Int32List encoded, String fontFamily, double fontSize, double letterSpacing, double wordSpacing, double height, double leading, String locale, List backgroundObjects, ByteData backgroundData, List foregroundObjects, ByteData foregroundData, ByteData shadowsData) native 'ParagraphBuilder_pushStyle'; static String _encodeLocale(Locale locale) => locale?.toString() ?? ''; diff --git a/lib/ui/text/paragraph_builder.cc b/lib/ui/text/paragraph_builder.cc index bb822417082c2..f03fef9e119ce 100644 --- a/lib/ui/text/paragraph_builder.cc +++ b/lib/ui/text/paragraph_builder.cc @@ -41,10 +41,11 @@ const int tsFontSizeIndex = 9; const int tsLetterSpacingIndex = 10; const int tsWordSpacingIndex = 11; const int tsHeightIndex = 12; -const int tsLocaleIndex = 13; -const int tsBackgroundIndex = 14; -const int tsForegroundIndex = 15; -const int tsTextShadowsIndex = 16; +const int tsLeadingIndex = 13; +const int tsLocaleIndex = 14; +const int tsBackgroundIndex = 15; +const int tsForegroundIndex = 16; +const int tsTextShadowsIndex = 17; const int tsColorMask = 1 << tsColorIndex; const int tsTextDecorationMask = 1 << tsTextDecorationIndex; @@ -58,6 +59,7 @@ const int tsFontSizeMask = 1 << tsFontSizeIndex; const int tsLetterSpacingMask = 1 << tsLetterSpacingIndex; const int tsWordSpacingMask = 1 << tsWordSpacingIndex; const int tsHeightMask = 1 << tsHeightIndex; +const int tsLeadingMask = 1 << tsLeadingIndex; const int tsLocaleMask = 1 << tsLocaleIndex; const int tsBackgroundMask = 1 << tsBackgroundIndex; const int tsForegroundMask = 1 << tsForegroundIndex; @@ -207,6 +209,7 @@ void ParagraphBuilder::pushStyle(tonic::Int32List& encoded, double letterSpacing, double wordSpacing, double height, + double leading, const std::string& locale, Dart_Handle background_objects, Dart_Handle background_data, @@ -269,6 +272,11 @@ void ParagraphBuilder::pushStyle(tonic::Int32List& encoded, style.height = height; } + if (mask & tsLeadingMask) { + style.use_custom_leading = true; + style.leading = leading; + } + if (mask & tsLocaleMask) { style.locale = locale; } diff --git a/lib/ui/text/paragraph_builder.h b/lib/ui/text/paragraph_builder.h index 89383527c6db7..e5cfb5fe93132 100644 --- a/lib/ui/text/paragraph_builder.h +++ b/lib/ui/text/paragraph_builder.h @@ -40,6 +40,7 @@ class ParagraphBuilder : public RefCountedDartWrappable { double letterSpacing, double wordSpacing, double height, + double leading, const std::string& locale, Dart_Handle background_objects, Dart_Handle background_data, diff --git a/third_party/txt/src/txt/paragraph.cc b/third_party/txt/src/txt/paragraph.cc index 40b0c300c5f5f..0dc0c60f60259 100644 --- a/third_party/txt/src/txt/paragraph.cc +++ b/third_party/txt/src/txt/paragraph.cc @@ -761,10 +761,13 @@ void Paragraph::Layout(double width, bool force) { // TODO(garyq): Multipling in the style.height on the first line is // probably wrong. Figure out how paragraph and line heights are supposed // to work and fix it. - double line_spacing = - (line_number == 0) - ? -metrics.fAscent * style.height - : (-metrics.fAscent + metrics.fLeading) * style.height; + double leading = + style.use_custom_leading + ? (metrics.fDescent - metrics.fAscent) * style.leading + : metrics.fLeading; + double line_spacing = (line_number == 0) + ? -metrics.fAscent * style.height + : (-metrics.fAscent + leading) * style.height; if (line_spacing > max_line_spacing) { max_line_spacing = line_spacing; if (line_number == 0) { diff --git a/third_party/txt/src/txt/paragraph.h b/third_party/txt/src/txt/paragraph.h index 850bd1b5b499b..3040f068d0116 100644 --- a/third_party/txt/src/txt/paragraph.h +++ b/third_party/txt/src/txt/paragraph.h @@ -214,7 +214,10 @@ class Paragraph { FRIEND_TEST(ParagraphTest, DecorationsParagraph); FRIEND_TEST(ParagraphTest, ItalicsParagraph); FRIEND_TEST(ParagraphTest, ChineseParagraph); - FRIEND_TEST(ParagraphTest, DISABLED_ArabicParagraph); + FRIEND_TEST(ParagraphTest, ArabicParagraph); + FRIEND_TEST(ParagraphTest, ArabicLeadingOverrideParagraph); + FRIEND_TEST(ParagraphTest, ArabicLeadingOverrideTallParagraph); + FRIEND_TEST(ParagraphTest, ArabicLeadingOverrideNegativeParagraph); FRIEND_TEST(ParagraphTest, SpacingParagraph); FRIEND_TEST(ParagraphTest, LongWordParagraph); FRIEND_TEST(ParagraphTest, KernScaleParagraph); diff --git a/third_party/txt/src/txt/styled_runs.h b/third_party/txt/src/txt/styled_runs.h index c3707c0c6a35b..7cac4d8c33244 100644 --- a/third_party/txt/src/txt/styled_runs.h +++ b/third_party/txt/src/txt/styled_runs.h @@ -73,7 +73,10 @@ class StyledRuns { FRIEND_TEST(ParagraphTest, DecorationsParagraph); FRIEND_TEST(ParagraphTest, ItalicsParagraph); FRIEND_TEST(ParagraphTest, ChineseParagraph); - FRIEND_TEST(ParagraphTest, DISABLED_ArabicParagraph); + FRIEND_TEST(ParagraphTest, ArabicParagraph); + FRIEND_TEST(ParagraphTest, ArabicLeadingOverrideParagraph); + FRIEND_TEST(ParagraphTest, ArabicLeadingOverrideTallParagraph); + FRIEND_TEST(ParagraphTest, ArabicLeadingOverrideNegativeParagraph); FRIEND_TEST(ParagraphTest, LongWordParagraph); FRIEND_TEST(ParagraphTest, KernParagraph); FRIEND_TEST(ParagraphTest, HyphenBreakParagraph); diff --git a/third_party/txt/src/txt/text_style.cc b/third_party/txt/src/txt/text_style.cc index b2da694ef6a4c..9aa309f36b82f 100644 --- a/third_party/txt/src/txt/text_style.cc +++ b/third_party/txt/src/txt/text_style.cc @@ -47,6 +47,10 @@ bool TextStyle::equals(const TextStyle& other) const { return false; if (height != other.height) return false; + if (use_custom_leading != other.use_custom_leading) + return false; + if (use_custom_leading && leading != other.leading) + return false; if (locale != other.locale) return false; if (foreground != other.foreground) diff --git a/third_party/txt/src/txt/text_style.h b/third_party/txt/src/txt/text_style.h index 7b0d351e8fa3f..c3f94daa94c4c 100644 --- a/third_party/txt/src/txt/text_style.h +++ b/third_party/txt/src/txt/text_style.h @@ -48,6 +48,8 @@ class TextStyle { double letter_spacing = 0.0; double word_spacing = 0.0; double height = 1.0; + double leading = 0; + bool use_custom_leading = false; std::string locale; bool has_background = false; SkPaint background; diff --git a/third_party/txt/tests/paragraph_unittests.cc b/third_party/txt/tests/paragraph_unittests.cc index 2f8d44f78ae65..5a558f96b48d3 100644 --- a/third_party/txt/tests/paragraph_unittests.cc +++ b/third_party/txt/tests/paragraph_unittests.cc @@ -821,11 +821,15 @@ TEST_F(ParagraphTest, ChineseParagraph) { ASSERT_TRUE(Snapshot()); } -// TODO(garyq): Support RTL languages. -TEST_F(ParagraphTest, DISABLED_ArabicParagraph) { +TEST_F(ParagraphTest, ArabicParagraph) { const char* text = "من أسر وإعلان الخاصّة وهولندا،, عل قائمة الضغوط بالمطالبة تلك. الصفحة " - "بمباركة التقليدية قام عن. تصفح"; + "بمباركة التقليدية قام عن. تصفحبمباركة التقل. يدية فح قام عن. " + "تصفحبمباركة التقليدية قام عن. تصفحبمباركة التقليدية تصفحب قام عن. فح " + "تصفحبمقباركة التقلفحيدية قام عن. تصفحبمباركة التقليدية ققام عن. " + "تصفحبمباركة التقليدية قام عن. تصفحبمباركة التقليدية قام عن. تص تصفحب " + "فحبمباركة التقققليدية قام عن. تصفحبمباركة التقليدية قام عن. تصفحبمباركة " + "التقليدية قام عن. تصفحبمباركة التقليدية قام عن. تصفح"; auto icu_text = icu::UnicodeString::fromUTF8(text); std::u16string u16_text(icu_text.getBuffer(), icu_text.getBuffer() + icu_text.length()); @@ -838,12 +842,9 @@ TEST_F(ParagraphTest, DISABLED_ArabicParagraph) { txt::TextStyle text_style; text_style.color = SK_ColorBLACK; - text_style.font_size = 35; + text_style.font_size = 45; text_style.letter_spacing = 2; text_style.font_family = "Katibeh"; - text_style.decoration = TextDecoration::kUnderline | - TextDecoration::kOverline | - TextDecoration::kLineThrough; text_style.decoration_style = txt::TextDecorationStyle::kSolid; text_style.decoration_color = SK_ColorBLACK; builder.PushStyle(text_style); @@ -856,21 +857,190 @@ TEST_F(ParagraphTest, DISABLED_ArabicParagraph) { paragraph->Layout(GetTestCanvasWidth() - 100); paragraph->Paint(GetCanvas(), 0, 0); + ASSERT_TRUE(Snapshot()); - ASSERT_EQ(paragraph->text_.size(), std::string{text}.length()); + ASSERT_EQ(paragraph->text_.size(), 458ull); // Arabic script uses ligatures ASSERT_EQ(paragraph->runs_.runs_.size(), 1ull); ASSERT_EQ(paragraph->runs_.styles_.size(), 2ull); ASSERT_TRUE(paragraph->runs_.styles_[1].equals(text_style)); ASSERT_EQ(paragraph->records_[0].style().color, text_style.color); - ASSERT_EQ(paragraph->records_.size(), 2ull); + ASSERT_EQ(paragraph->records_.size(), + 8ull); // 8 lines, breaks into 8 records. ASSERT_EQ(paragraph->paragraph_style_.text_direction, TextDirection::rtl); - for (size_t i = 0; i < u16_text.length(); i++) { - ASSERT_EQ(paragraph->text_[i], u16_text[u16_text.length() - i]); - } + ASSERT_EQ(paragraph->line_heights_[0], 45); + ASSERT_EQ(paragraph->line_heights_[1], 99); + ASSERT_EQ(paragraph->line_heights_[2], 153); + ASSERT_EQ(paragraph->line_heights_[3], 207); +} + +TEST_F(ParagraphTest, ArabicLeadingOverrideParagraph) { + const char* text = + "من أسر وإعلان الخاصّة وهولندا،, عل قائمة الضغوط بالمطالبة تلك. الصفحة " + "بمباركة التقليدية قام عن. تصفحبمباركة التقل. يدية فح قام عن. " + "تصفحبمباركة التقليدية قام عن. تصفحبمباركة التقليدية تصفحب قام عن. فح " + "تصفحبمقباركة التقلفحيدية قام عن. تصفحبمباركة التقليدية ققام عن. " + "تصفحبمباركة التقليدية قام عن. تصفحبمباركة التقليدية قام عن. تص تصفحب " + "فحبمباركة التقققليدية قام عن. تصفحبمباركة التقليدية قام عن. تصفحبمباركة " + "التقليدية قام عن. تصفحبمباركة التقليدية قام عن. تصفح"; + auto icu_text = icu::UnicodeString::fromUTF8(text); + std::u16string u16_text(icu_text.getBuffer(), + icu_text.getBuffer() + icu_text.length()); + + txt::ParagraphStyle paragraph_style; + paragraph_style.max_lines = 14; + paragraph_style.text_align = TextAlign::right; + paragraph_style.text_direction = TextDirection::rtl; + txt::ParagraphBuilder builder(paragraph_style, GetTestFontCollection()); + + txt::TextStyle text_style; + text_style.color = SK_ColorBLACK; + text_style.font_size = 45; + text_style.letter_spacing = 2; + text_style.font_family = "Katibeh"; + text_style.decoration_style = txt::TextDecorationStyle::kSolid; + text_style.decoration_color = SK_ColorBLACK; + text_style.use_custom_leading = true; + text_style.leading = 0; + builder.PushStyle(text_style); + + builder.AddText(u16_text); + + builder.Pop(); + + auto paragraph = builder.Build(); + paragraph->Layout(GetTestCanvasWidth() - 100); + + paragraph->Paint(GetCanvas(), 0, 0); + ASSERT_TRUE(Snapshot()); + + ASSERT_EQ(paragraph->text_.size(), 458ull); // Arabic script uses ligatures + + ASSERT_EQ(paragraph->runs_.runs_.size(), 1ull); + ASSERT_EQ(paragraph->runs_.styles_.size(), 2ull); + ASSERT_TRUE(paragraph->runs_.styles_[1].equals(text_style)); + ASSERT_EQ(paragraph->records_[0].style().color, text_style.color); + ASSERT_EQ(paragraph->records_.size(), + 8ull); // 8 lines, breaks into 8 records. + ASSERT_EQ(paragraph->paragraph_style_.text_direction, TextDirection::rtl); + + ASSERT_EQ(paragraph->line_heights_[0], 45); + ASSERT_EQ(paragraph->line_heights_[1], 90); + ASSERT_EQ(paragraph->line_heights_[2], 135); + ASSERT_EQ(paragraph->line_heights_[3], 180); +} + +TEST_F(ParagraphTest, ArabicLeadingOverrideTallParagraph) { + const char* text = + "من أسر وإعلان الخاصّة وهولندا،, عل قائمة الضغوط بالمطالبة تلك. الصفحة " + "بمباركة التقليدية قام عن. تصفحبمباركة التقل. يدية فح قام عن. " + "تصفحبمباركة التقليدية قام عن. تصفحبمباركة التقليدية تصفحب قام عن. فح " + "تصفحبمقباركة التقلفحيدية قام عن. تصفحبمباركة التقليدية ققام عن. " + "تصفحبمباركة التقليدية قام عن. تصفحبمباركة التقليدية قام عن. تص تصفحب " + "فحبمباركة التقققليدية قام عن. تصفحبمباركة التقليدية قام عن. تصفحبمباركة " + "التقليدية قام عن. تصفحبمباركة التقليدية قام عن. تصفح"; + auto icu_text = icu::UnicodeString::fromUTF8(text); + std::u16string u16_text(icu_text.getBuffer(), + icu_text.getBuffer() + icu_text.length()); + + txt::ParagraphStyle paragraph_style; + paragraph_style.max_lines = 14; + paragraph_style.text_align = TextAlign::right; + paragraph_style.text_direction = TextDirection::rtl; + txt::ParagraphBuilder builder(paragraph_style, GetTestFontCollection()); + + txt::TextStyle text_style; + text_style.color = SK_ColorBLACK; + text_style.font_size = 45; + text_style.letter_spacing = 2; + text_style.font_family = "Katibeh"; + text_style.decoration_style = txt::TextDecorationStyle::kSolid; + text_style.decoration_color = SK_ColorBLACK; + text_style.use_custom_leading = true; + text_style.leading = 0.65; + builder.PushStyle(text_style); + + builder.AddText(u16_text); + + builder.Pop(); + + auto paragraph = builder.Build(); + paragraph->Layout(GetTestCanvasWidth() - 100); + paragraph->Paint(GetCanvas(), 0, 0); ASSERT_TRUE(Snapshot()); + + ASSERT_EQ(paragraph->text_.size(), 458ull); // Arabic script uses ligatures + + ASSERT_EQ(paragraph->runs_.runs_.size(), 1ull); + ASSERT_EQ(paragraph->runs_.styles_.size(), 2ull); + ASSERT_TRUE(paragraph->runs_.styles_[1].equals(text_style)); + ASSERT_EQ(paragraph->records_[0].style().color, text_style.color); + ASSERT_EQ(paragraph->records_.size(), + 8ull); // 8 lines, breaks into 8 records. + ASSERT_EQ(paragraph->paragraph_style_.text_direction, TextDirection::rtl); + + ASSERT_EQ(paragraph->line_heights_[0], 45); + ASSERT_EQ(paragraph->line_heights_[1], 119); + ASSERT_EQ(paragraph->line_heights_[2], 193); + ASSERT_EQ(paragraph->line_heights_[3], 267); +} + +TEST_F(ParagraphTest, ArabicLeadingOverrideNegativeParagraph) { + const char* text = + "من أسر وإعلان الخاصّة وهولندا،, عل قائمة الضغوط بالمطالبة تلك. الصفحة " + "بمباركة التقليدية قام عن. تصفحبمباركة التقل. يدية فح قام عن. " + "تصفحبمباركة التقليدية قام عن. تصفحبمباركة التقليدية تصفحب قام عن. فح " + "تصفحبمقباركة التقلفحيدية قام عن. تصفحبمباركة التقليدية ققام عن. " + "تصفحبمباركة التقليدية قام عن. تصفحبمباركة التقليدية قام عن. تص تصفحب " + "فحبمباركة التقققليدية قام عن. تصفحبمباركة التقليدية قام عن. تصفحبمباركة " + "التقليدية قام عن. تصفحبمباركة التقليدية قام عن. تصفح"; + auto icu_text = icu::UnicodeString::fromUTF8(text); + std::u16string u16_text(icu_text.getBuffer(), + icu_text.getBuffer() + icu_text.length()); + + txt::ParagraphStyle paragraph_style; + paragraph_style.max_lines = 14; + paragraph_style.text_align = TextAlign::right; + paragraph_style.text_direction = TextDirection::rtl; + txt::ParagraphBuilder builder(paragraph_style, GetTestFontCollection()); + + txt::TextStyle text_style; + text_style.color = SK_ColorBLACK; + text_style.font_size = 45; + text_style.letter_spacing = 2; + text_style.font_family = "Katibeh"; + text_style.decoration_style = txt::TextDecorationStyle::kSolid; + text_style.decoration_color = SK_ColorBLACK; + text_style.use_custom_leading = true; + text_style.leading = -0.2; + builder.PushStyle(text_style); + + builder.AddText(u16_text); + + builder.Pop(); + + auto paragraph = builder.Build(); + paragraph->Layout(GetTestCanvasWidth() - 100); + + paragraph->Paint(GetCanvas(), 0, 0); + ASSERT_TRUE(Snapshot()); + + ASSERT_EQ(paragraph->text_.size(), 458ull); // Arabic script uses ligatures + + ASSERT_EQ(paragraph->runs_.runs_.size(), 1ull); + ASSERT_EQ(paragraph->runs_.styles_.size(), 2ull); + ASSERT_TRUE(paragraph->runs_.styles_[1].equals(text_style)); + ASSERT_EQ(paragraph->records_[0].style().color, text_style.color); + ASSERT_EQ(paragraph->records_.size(), + 8ull); // 8 lines, breaks into 8 records. + ASSERT_EQ(paragraph->paragraph_style_.text_direction, TextDirection::rtl); + + ASSERT_EQ(paragraph->line_heights_[0], 45); + ASSERT_EQ(paragraph->line_heights_[1], 81); + ASSERT_EQ(paragraph->line_heights_[2], 117); + ASSERT_EQ(paragraph->line_heights_[3], 153); } TEST_F(ParagraphTest, GetGlyphPositionAtCoordinateParagraph) { @@ -1162,9 +1332,6 @@ TEST_F(ParagraphTest, DISABLE_ON_WINDOWS(GetRectsForRangeTight)) { TEST_F(ParagraphTest, DISABLE_ON_WINDOWS(GetRectsForRangeIncludeLineSpacingMiddle)) { - // const char* text = - // "12345, \"67890\" 12345 67890 12345 67890 12345 67890 12345 67890 - // 12345 " "67890 12345"; const char* text = "( ´・‿・`)( ´・‿・`)( ´・‿・`)( ´・‿・`)( ´・‿・`)( ´・‿・`)( ´・‿・`)(" " ´・‿・`)( ´・‿・`)( ´・‿・`)( ´・‿・`)( ´・‿・`)( ´・‿・`)( ´・‿・`)(" From 9434bb64881a7289df6a80ba8456ad1308bed435 Mon Sep 17 00:00:00 2001 From: Gary Qian Date: Mon, 10 Dec 2018 16:04:23 -0800 Subject: [PATCH 0504/1537] Return null when locale has not been set in loocale closure. (#6936) --- lib/ui/hooks.dart | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/ui/hooks.dart b/lib/ui/hooks.dart index 54c5033b40c65..1262a51ec12cf 100644 --- a/lib/ui/hooks.dart +++ b/lib/ui/hooks.dart @@ -42,7 +42,12 @@ void _updateWindowMetrics(double devicePixelRatio, typedef _LocaleClosure = String Function(); -String _localeClosure() => window.locale.toString(); +String _localeClosure() { + if (window.locale == null) { + return null; + } + return window.locale.toString(); +} @pragma('vm:entry-point') _LocaleClosure _getLocaleClosure() => _localeClosure; From 97d96bc9a5e5649afa8ad06af9aaa89515abe4bf Mon Sep 17 00:00:00 2001 From: Chris Bracken Date: Mon, 10 Dec 2018 17:07:00 -0800 Subject: [PATCH 0505/1537] Eliminate obsolete FlutterDartProject initializers (#6967) Technically both of these are part of the public API exposed in Flutter.framework. Neither is used within Flutter itself, and both have been broken since the removal of Dart 1 support, so eliminating rather than marking unavailable. --- .../framework/Headers/FlutterDartProject.h | 16 +--------- .../framework/Source/FlutterDartProject.mm | 29 +------------------ 2 files changed, 2 insertions(+), 43 deletions(-) diff --git a/shell/platform/darwin/ios/framework/Headers/FlutterDartProject.h b/shell/platform/darwin/ios/framework/Headers/FlutterDartProject.h index f8850e202db4f..c2b4339d55b33 100644 --- a/shell/platform/darwin/ios/framework/Headers/FlutterDartProject.h +++ b/shell/platform/darwin/ios/framework/Headers/FlutterDartProject.h @@ -16,24 +16,10 @@ FLUTTER_EXPORT @interface FlutterDartProject : NSObject /** - * Initializes with a specific + * Initializes a Flutter Dart project from a bundle. */ - (instancetype)initWithPrecompiledDartBundle:(NSBundle*)bundle NS_DESIGNATED_INITIALIZER; -/** - * Initializes with a specific set of Flutter Assets, with a specified location of - * main() and Dart packages. - */ -- (instancetype)initWithFlutterAssets:(NSURL*)flutterAssetsURL - dartMain:(NSURL*)dartMainURL - packages:(NSURL*)dartPackages NS_DESIGNATED_INITIALIZER; - -/** - * Initializes from a specific set of Flutter Assets. - */ -- (instancetype)initWithFlutterAssetsWithScriptSnapshot:(NSURL*)flutterAssetsURL - NS_DESIGNATED_INITIALIZER; - /** * Unavailable - use `init` instead. */ diff --git a/shell/platform/darwin/ios/framework/Source/FlutterDartProject.mm b/shell/platform/darwin/ios/framework/Source/FlutterDartProject.mm index 20e1c0d2ca7f8..1d17ced53da48 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterDartProject.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterDartProject.mm @@ -134,7 +134,7 @@ @implementation FlutterDartProject { #pragma mark - Override base class designated initializers - (instancetype)init { - return [self initWithFlutterAssets:nil dartMain:nil packages:nil]; + return [self initWithPrecompiledDartBundle:nil]; } #pragma mark - Designated initializers @@ -150,33 +150,6 @@ - (instancetype)initWithPrecompiledDartBundle:(NSBundle*)bundle { return self; } -- (instancetype)initWithFlutterAssets:(NSURL*)flutterAssetsURL - dartMain:(NSURL*)dartMainURL - packages:(NSURL*)dartPackages { - self = [super init]; - - if (self) { - _settings = DefaultSettingsForProcess(); - } - - return self; -} - -- (instancetype)initWithFlutterAssetsWithScriptSnapshot:(NSURL*)flutterAssetsURL { - self = [super init]; - - if (self) { - _settings = DefaultSettingsForProcess(); - - if (flutterAssetsURL != nil && - [[NSFileManager defaultManager] fileExistsAtPath:flutterAssetsURL.path]) { - _settings.assets_path = flutterAssetsURL.path.UTF8String; - } - } - - return self; -} - #pragma mark - Settings accessors - (const blink::Settings&)settings { From 9e64d79dbb5d44eceb8c98bf77617cf6117e11c6 Mon Sep 17 00:00:00 2001 From: Stanislav Baranov Date: Mon, 10 Dec 2018 17:23:23 -0800 Subject: [PATCH 0506/1537] Add native for fetching compilation trace as a memory buffer (#7152) --- lib/ui/natives.dart | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/lib/ui/natives.dart b/lib/ui/natives.dart index fd34b93ff3dce..4375c3eea3e44 100644 --- a/lib/ui/natives.dart +++ b/lib/ui/natives.dart @@ -45,6 +45,13 @@ void saveCompilationTrace(String filePath) { file.writeAsBytesSync(result); } +List dumpCompilationTrace() { + final dynamic result = _saveCompilationTrace(); + if (result is Error) + throw result; + return result; +} + dynamic _saveCompilationTrace() native 'SaveCompilationTrace'; void _scheduleMicrotask(void callback()) native 'ScheduleMicrotask'; From 27bebc4e4ad2831b13b18f1964b68f19e9a59fb5 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Mon, 10 Dec 2018 21:07:13 -0500 Subject: [PATCH 0507/1537] Roll src/third_party/skia 15640698497a..a10494c302e6 (1 commits) (#7167) https://skia.googlesource.com/skia.git/+log/15640698497a..a10494c302e6 Created with: gclient setdep -r src/third_party/skia@a10494c302e6 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index b8c4ff2cfa133..68b4c8c09537c 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '15640698497a9d9175828091922d7c57f38093e2', + 'skia_revision': 'a10494c302e68dd7d4f34ce4b41cb9b05d78604c', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index f527180aab2e2..470b6e571d73f 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 1140a8d8bb2944644846746c2d155e91 +Signature: c632fe7c63eaff00dae0f7d13f937e05 UNUSED LICENSES: From 561c5328edf0576831499953436f28b0bb7aa82b Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Mon, 10 Dec 2018 21:36:13 -0500 Subject: [PATCH 0508/1537] Roll src/third_party/skia a10494c302e6..40bd76027f8e (1 commits) (#7168) https://skia.googlesource.com/skia.git/+log/a10494c302e6..40bd76027f8e Created with: gclient setdep -r src/third_party/skia@40bd76027f8e The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 68b4c8c09537c..2d9cfde11a052 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'a10494c302e68dd7d4f34ce4b41cb9b05d78604c', + 'skia_revision': '40bd76027f8e6b9227ed09316f823bbd988f843f', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 470b6e571d73f..01d7f5535dc45 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: c632fe7c63eaff00dae0f7d13f937e05 +Signature: 817144c497a70b5f8cae122f39ca51b0 UNUSED LICENSES: From 7728f5748c8c0da83671422304faf472677875e3 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Mon, 10 Dec 2018 22:51:13 -0500 Subject: [PATCH 0509/1537] Roll src/third_party/skia 40bd76027f8e..376a7481c17f (1 commits) (#7169) https://skia.googlesource.com/skia.git/+log/40bd76027f8e..376a7481c17f Created with: gclient setdep -r src/third_party/skia@376a7481c17f The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 2d9cfde11a052..5070ae90d1988 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '40bd76027f8e6b9227ed09316f823bbd988f843f', + 'skia_revision': '376a7481c17fab8fa1051addd62cfb4b77474db2', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 01d7f5535dc45..37131fbbd52ce 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 817144c497a70b5f8cae122f39ca51b0 +Signature: 523d8e54ad3dfd115015dbca4a13a7b7 UNUSED LICENSES: From 70c4456242784a8a3c1a1149b0b9dee21bc6828e Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Mon, 10 Dec 2018 23:11:13 -0500 Subject: [PATCH 0510/1537] Roll src/third_party/skia 376a7481c17f..ae0d860ba31b (1 commits) (#7170) https://skia.googlesource.com/skia.git/+log/376a7481c17f..ae0d860ba31b Created with: gclient setdep -r src/third_party/skia@ae0d860ba31b The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 5070ae90d1988..37d5ca0833f43 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '376a7481c17fab8fa1051addd62cfb4b77474db2', + 'skia_revision': 'ae0d860ba31b0424ead28aa5be5432d6ca355b87', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 37131fbbd52ce..617900ab98e47 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 523d8e54ad3dfd115015dbca4a13a7b7 +Signature: 559bb6f056f5ac46983d76164289b2a1 UNUSED LICENSES: From 9071a39dd2a5c298d9176d41c26bcd12db1bf555 Mon Sep 17 00:00:00 2001 From: Rafael Ring Date: Tue, 11 Dec 2018 03:01:12 -0200 Subject: [PATCH 0511/1537] Fix keyboard not showing for targetSdk 28 (#6985) After bumping the targetSdk of Flutter apps to 28, the keyboard doesn't open anymore when inputting text on an Android Pie devices. The problem is caused by a change on the way the focus in handled: when the call `mImm.showSoftInput(view, 0);` is made, the currently focused view is the `DecorView` from the `Activity` hosting Flutter but the passed view reference (`view` argument) is the `FlutterView`. As the `InputMethodManager` checks if both views are the same before showing the keyboard, it never appears because the `FlutterView` never has focus. As Flutter doesn't have any input views as far as the Android side is concerned, the focus should always stay on the `FlutterView` itself and thus, this PR changes the `TextInputPlugin` to focus on the `FlutterView` as soon as it's created, fixing the keyboard issue. Co-authored-by: Igor Borges --- .../android/io/flutter/plugin/editing/TextInputPlugin.java | 1 + 1 file changed, 1 insertion(+) diff --git a/shell/platform/android/io/flutter/plugin/editing/TextInputPlugin.java b/shell/platform/android/io/flutter/plugin/editing/TextInputPlugin.java index cd7282f87b968..c59ee25148e2d 100644 --- a/shell/platform/android/io/flutter/plugin/editing/TextInputPlugin.java +++ b/shell/platform/android/io/flutter/plugin/editing/TextInputPlugin.java @@ -167,6 +167,7 @@ public InputConnection createInputConnection(FlutterView view, EditorInfo outAtt } private void showTextInput(FlutterView view) { + view.requestFocus(); mImm.showSoftInput(view, 0); } From 95d9eff466436cbb76ae3f4b7ce72b1e99b03dff Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Tue, 11 Dec 2018 01:34:15 -0500 Subject: [PATCH 0512/1537] Roll src/third_party/skia ae0d860ba31b..264843e30745 (1 commits) (#7171) https://skia.googlesource.com/skia.git/+log/ae0d860ba31b..264843e30745 Created with: gclient setdep -r src/third_party/skia@264843e30745 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 37d5ca0833f43..f46356ccf4d5c 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'ae0d860ba31b0424ead28aa5be5432d6ca355b87', + 'skia_revision': '264843e30745e77b0bd754ffc794f2ca668b6546', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 617900ab98e47..b3ab08b9e5af4 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 559bb6f056f5ac46983d76164289b2a1 +Signature: b51f26d7fee9cae6f975e8205cac752d UNUSED LICENSES: From 85ef5137cb92628be969cf817c6675f9b0ac4af5 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Tue, 11 Dec 2018 01:49:13 -0500 Subject: [PATCH 0513/1537] Roll src/third_party/skia 264843e30745..9cabb4f98e99 (1 commits) (#7172) https://skia.googlesource.com/skia.git/+log/264843e30745..9cabb4f98e99 Created with: gclient setdep -r src/third_party/skia@9cabb4f98e99 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index f46356ccf4d5c..2ac894b0decf0 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '264843e30745e77b0bd754ffc794f2ca668b6546', + 'skia_revision': '9cabb4f98e998409612a0227b3f0e7530f853b72', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the From 41320b812996204a3ef367ff265f1fcb15cbcb82 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Tue, 11 Dec 2018 07:20:14 -0500 Subject: [PATCH 0514/1537] Roll src/third_party/skia 9cabb4f98e99..53eabf6871b1 (1 commits) (#7173) https://skia.googlesource.com/skia.git/+log/9cabb4f98e99..53eabf6871b1 Created with: gclient setdep -r src/third_party/skia@53eabf6871b1 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 14 ++++++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/DEPS b/DEPS index 2ac894b0decf0..53df94bfb7c5c 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '9cabb4f98e998409612a0227b3f0e7530f853b72', + 'skia_revision': '53eabf6871b16d6d32470523c977ea9d18bb3ffa', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index b3ab08b9e5af4..f6e996db1dcf1 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: b51f26d7fee9cae6f975e8205cac752d +Signature: 3e939872206350b5a913ba0c685f400b UNUSED LICENSES: @@ -2049,7 +2049,17 @@ FILE: ../../../third_party/skia/experimental/canvaskit/externs.js FILE: ../../../third_party/skia/experimental/canvaskit/gpu.js FILE: ../../../third_party/skia/experimental/canvaskit/helper.js FILE: ../../../third_party/skia/experimental/canvaskit/htmlcanvas/_namedcolors.js -FILE: ../../../third_party/skia/experimental/canvaskit/htmlcanvas/canvas2d.js +FILE: ../../../third_party/skia/experimental/canvaskit/htmlcanvas/canvas2dcontext.js +FILE: ../../../third_party/skia/experimental/canvaskit/htmlcanvas/color.js +FILE: ../../../third_party/skia/experimental/canvaskit/htmlcanvas/font.js +FILE: ../../../third_party/skia/experimental/canvaskit/htmlcanvas/htmlcanvas.js +FILE: ../../../third_party/skia/experimental/canvaskit/htmlcanvas/imagedata.js +FILE: ../../../third_party/skia/experimental/canvaskit/htmlcanvas/lineargradient.js +FILE: ../../../third_party/skia/experimental/canvaskit/htmlcanvas/pattern.js +FILE: ../../../third_party/skia/experimental/canvaskit/htmlcanvas/postamble.js +FILE: ../../../third_party/skia/experimental/canvaskit/htmlcanvas/preamble.js +FILE: ../../../third_party/skia/experimental/canvaskit/htmlcanvas/radialgradient.js +FILE: ../../../third_party/skia/experimental/canvaskit/htmlcanvas/util.js FILE: ../../../third_party/skia/experimental/canvaskit/interface.js FILE: ../../../third_party/skia/experimental/canvaskit/karma.bench.conf.js FILE: ../../../third_party/skia/experimental/canvaskit/karma.conf.js From 6f98411a73c221cd6e399cb646fbe0700c3b22bd Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Tue, 11 Dec 2018 07:49:16 -0500 Subject: [PATCH 0515/1537] Roll src/third_party/skia 53eabf6871b1..eb39b8108b4a (1 commits) (#7174) https://skia.googlesource.com/skia.git/+log/53eabf6871b1..eb39b8108b4a Created with: gclient setdep -r src/third_party/skia@eb39b8108b4a The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 53df94bfb7c5c..2a8eaf56788b2 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '53eabf6871b16d6d32470523c977ea9d18bb3ffa', + 'skia_revision': 'eb39b8108b4ad6debdbe58d7b25ec819bbfed1dc', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index f6e996db1dcf1..bcb5d15290023 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 3e939872206350b5a913ba0c685f400b +Signature: 901c32aa5b5d7a74fef3b937704b95af UNUSED LICENSES: From 8af3376a6890ec6e9adf1cd6becc05bb6fa27d3d Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Tue, 11 Dec 2018 09:06:14 -0500 Subject: [PATCH 0516/1537] Roll src/third_party/skia eb39b8108b4a..4f738832a976 (1 commits) (#7175) https://skia.googlesource.com/skia.git/+log/eb39b8108b4a..4f738832a976 Created with: gclient setdep -r src/third_party/skia@4f738832a976 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 2a8eaf56788b2..e846f162a8a64 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'eb39b8108b4ad6debdbe58d7b25ec819bbfed1dc', + 'skia_revision': '4f738832a9762ca61c8eac9dadd2830c8ba903bd', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index bcb5d15290023..90ab5981869ea 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 901c32aa5b5d7a74fef3b937704b95af +Signature: 0e8abbfbc6d0b401dfbe56bb3091715f UNUSED LICENSES: From 6dc353641293c3df64e5c8364dfc06de1cbcdb91 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Tue, 11 Dec 2018 09:29:14 -0500 Subject: [PATCH 0517/1537] Roll src/third_party/skia 4f738832a976..db80cbe34ad7 (1 commits) (#7176) https://skia.googlesource.com/skia.git/+log/4f738832a976..db80cbe34ad7 Created with: gclient setdep -r src/third_party/skia@db80cbe34ad7 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index e846f162a8a64..27398f23ae941 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '4f738832a9762ca61c8eac9dadd2830c8ba903bd', + 'skia_revision': 'db80cbe34ad7ea44aea86e47d76034cfa716afd7', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 90ab5981869ea..94afc2d79e151 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 0e8abbfbc6d0b401dfbe56bb3091715f +Signature: 8352a87f953e73539e9dcdd8f61598d1 UNUSED LICENSES: From ed88ba2b8fc708156400ff08533123ae91d8a7dd Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Tue, 11 Dec 2018 10:26:14 -0500 Subject: [PATCH 0518/1537] Roll src/third_party/skia db80cbe34ad7..e7f165be2e2d (1 commits) (#7177) https://skia.googlesource.com/skia.git/+log/db80cbe34ad7..e7f165be2e2d Created with: gclient setdep -r src/third_party/skia@e7f165be2e2d The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 27398f23ae941..a680c7ce16647 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'db80cbe34ad7ea44aea86e47d76034cfa716afd7', + 'skia_revision': 'e7f165be2e2d6208110c257bb42ff20127821211', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 94afc2d79e151..7aca7d34630cb 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 8352a87f953e73539e9dcdd8f61598d1 +Signature: 163054540871aed5a7142da193dd2c33 UNUSED LICENSES: From e1e4f00d62098c2bf49e7e8009b64b521686a94a Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Tue, 11 Dec 2018 10:47:38 -0500 Subject: [PATCH 0519/1537] Roll src/third_party/skia e7f165be2e2d..3bdc3f5f9c0b (2 commits) (#7178) https://skia.googlesource.com/skia.git/+log/e7f165be2e2d..3bdc3f5f9c0b Created with: gclient setdep -r src/third_party/skia@3bdc3f5f9c0b The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/DEPS b/DEPS index a680c7ce16647..29c302e5dc3dd 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'e7f165be2e2d6208110c257bb42ff20127821211', + 'skia_revision': '3bdc3f5f9c0bf62c1eb7932f67f9f4838782a36a', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 7aca7d34630cb..0e6e39392a4b9 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 163054540871aed5a7142da193dd2c33 +Signature: 881b0a7a89e9e0978fe75c655f5a77ac UNUSED LICENSES: @@ -2799,7 +2799,6 @@ FILE: ../../../third_party/skia/include/core/SkMatrix44.h FILE: ../../../third_party/skia/include/core/SkSize.h FILE: ../../../third_party/skia/include/core/SkTLazy.h FILE: ../../../third_party/skia/include/effects/SkLayerDrawLooper.h -FILE: ../../../third_party/skia/include/gpu/GrRenderTarget.h FILE: ../../../third_party/skia/include/gpu/GrTexture.h FILE: ../../../third_party/skia/include/gpu/gl/GrGLConfig.h FILE: ../../../third_party/skia/include/gpu/gl/GrGLConfig_chrome.h @@ -2918,6 +2917,7 @@ FILE: ../../../third_party/skia/src/gpu/GrPathRendererChain.h FILE: ../../../third_party/skia/src/gpu/GrPathUtils.cpp FILE: ../../../third_party/skia/src/gpu/GrPathUtils.h FILE: ../../../third_party/skia/src/gpu/GrRenderTarget.cpp +FILE: ../../../third_party/skia/src/gpu/GrRenderTarget.h FILE: ../../../third_party/skia/src/gpu/GrStencilAttachment.cpp FILE: ../../../third_party/skia/src/gpu/GrStencilAttachment.h FILE: ../../../third_party/skia/src/gpu/GrStencilSettings.cpp @@ -3098,11 +3098,11 @@ FILE: ../../../third_party/skia/include/core/SkMultiPictureDraw.h FILE: ../../../third_party/skia/include/core/SkPictureRecorder.h FILE: ../../../third_party/skia/include/core/SkSurfaceProps.h FILE: ../../../third_party/skia/include/core/SkTextBlob.h -FILE: ../../../third_party/skia/include/gpu/GrGpuResource.h -FILE: ../../../third_party/skia/include/gpu/GrResourceKey.h FILE: ../../../third_party/skia/include/gpu/gl/GrGLAssembleInterface.h FILE: ../../../third_party/skia/include/ports/SkFontMgr_indirect.h FILE: ../../../third_party/skia/include/ports/SkRemotableFontMgr.h +FILE: ../../../third_party/skia/include/private/GrGpuResource.h +FILE: ../../../third_party/skia/include/private/GrResourceKey.h FILE: ../../../third_party/skia/include/private/SkHalf.h FILE: ../../../third_party/skia/samplecode/SampleHT.cpp FILE: ../../../third_party/skia/samplecode/SampleIdentityScale.cpp @@ -3312,9 +3312,9 @@ FILE: ../../../third_party/skia/include/core/SkImage.h FILE: ../../../third_party/skia/include/core/SkRRect.h FILE: ../../../third_party/skia/include/core/SkStrokeRec.h FILE: ../../../third_party/skia/include/core/SkSurface.h -FILE: ../../../third_party/skia/include/gpu/GrSurface.h FILE: ../../../third_party/skia/include/gpu/gl/GrGLFunctions.h FILE: ../../../third_party/skia/include/pathops/SkPathOps.h +FILE: ../../../third_party/skia/include/private/GrSurface.h FILE: ../../../third_party/skia/include/private/SkChecksum.h FILE: ../../../third_party/skia/include/private/SkPathRef.h FILE: ../../../third_party/skia/include/private/SkTInternalLList.h @@ -3594,12 +3594,12 @@ FILE: ../../../third_party/skia/include/core/SkTraceMemoryDump.h FILE: ../../../third_party/skia/include/effects/SkImageSource.h FILE: ../../../third_party/skia/include/effects/SkTableColorFilter.h FILE: ../../../third_party/skia/include/gpu/GrContextOptions.h -FILE: ../../../third_party/skia/include/gpu/GrSamplerState.h FILE: ../../../third_party/skia/include/gpu/gl/GrGLTypes.h FILE: ../../../third_party/skia/include/ports/SkFontMgr_android.h FILE: ../../../third_party/skia/include/ports/SkFontMgr_directory.h FILE: ../../../third_party/skia/include/ports/SkFontMgr_empty.h FILE: ../../../third_party/skia/include/ports/SkFontMgr_fontconfig.h +FILE: ../../../third_party/skia/include/private/GrSamplerState.h FILE: ../../../third_party/skia/include/private/SkMutex.h FILE: ../../../third_party/skia/include/private/SkNx.h FILE: ../../../third_party/skia/include/private/SkNx_neon.h From 86af415177206802ea60bb303427cca949eefc4d Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Tue, 11 Dec 2018 11:46:04 -0500 Subject: [PATCH 0520/1537] Roll src/third_party/skia 3bdc3f5f9c0b..46f40f42478c (1 commits) (#7180) https://skia.googlesource.com/skia.git/+log/3bdc3f5f9c0b..46f40f42478c Created with: gclient setdep -r src/third_party/skia@46f40f42478c The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 29c302e5dc3dd..3f7c37f591d01 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '3bdc3f5f9c0bf62c1eb7932f67f9f4838782a36a', + 'skia_revision': '46f40f42478c401661acd41f76c3409b90f2bcbd', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 0e6e39392a4b9..62ccb9089bda5 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 881b0a7a89e9e0978fe75c655f5a77ac +Signature: 1a777fb66f7d5bdeaa2efde25e4391a0 UNUSED LICENSES: From 2ea94a6d8ba7bd4d25f10eda78678ac98761bd0c Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Tue, 11 Dec 2018 12:07:15 -0500 Subject: [PATCH 0521/1537] Roll src/third_party/skia 46f40f42478c..72ab3461b747 (1 commits) (#7181) https://skia.googlesource.com/skia.git/+log/46f40f42478c..72ab3461b747 Created with: gclient setdep -r src/third_party/skia@72ab3461b747 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 9 +++------ 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/DEPS b/DEPS index 3f7c37f591d01..1400f22404597 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '46f40f42478c401661acd41f76c3409b90f2bcbd', + 'skia_revision': '72ab3461b7473c0375c68ae280530a5a8d27026d', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 62ccb9089bda5..337e3e80ec1ce 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 1a777fb66f7d5bdeaa2efde25e4391a0 +Signature: ade717176ffbea37d14ec8f3185a0809 UNUSED LICENSES: @@ -1605,6 +1605,8 @@ FILE: ../../../third_party/skia/src/gpu/ops/GrFillRectOp.cpp FILE: ../../../third_party/skia/src/gpu/ops/GrFillRectOp.h FILE: ../../../third_party/skia/src/gpu/ops/GrQuadPerEdgeAA.cpp FILE: ../../../third_party/skia/src/gpu/ops/GrQuadPerEdgeAA.h +FILE: ../../../third_party/skia/src/gpu/ops/GrStrokeRectOp.cpp +FILE: ../../../third_party/skia/src/gpu/ops/GrStrokeRectOp.h FILE: ../../../third_party/skia/src/gpu/text/GrAtlasManager.cpp FILE: ../../../third_party/skia/src/gpu/text/GrAtlasManager.h FILE: ../../../third_party/skia/src/gpu/text/GrSDFMaskFilter.cpp @@ -3764,10 +3766,8 @@ FILE: ../../../third_party/skia/src/gpu/glsl/GrGLSLVarying.h FILE: ../../../third_party/skia/src/gpu/glsl/GrGLSLXferProcessor.h FILE: ../../../third_party/skia/src/gpu/ops/GrAAConvexTessellator.cpp FILE: ../../../third_party/skia/src/gpu/ops/GrAAConvexTessellator.h -FILE: ../../../third_party/skia/src/gpu/ops/GrAAFillRectOp.cpp FILE: ../../../third_party/skia/src/gpu/ops/GrAALinearizingConvexPathRenderer.cpp FILE: ../../../third_party/skia/src/gpu/ops/GrAALinearizingConvexPathRenderer.h -FILE: ../../../third_party/skia/src/gpu/ops/GrAAStrokeRectOp.cpp FILE: ../../../third_party/skia/src/gpu/ops/GrAtlasTextOp.cpp FILE: ../../../third_party/skia/src/gpu/ops/GrAtlasTextOp.h FILE: ../../../third_party/skia/src/gpu/ops/GrClearOp.h @@ -3786,7 +3786,6 @@ FILE: ../../../third_party/skia/src/gpu/ops/GrLatticeOp.cpp FILE: ../../../third_party/skia/src/gpu/ops/GrLatticeOp.h FILE: ../../../third_party/skia/src/gpu/ops/GrMeshDrawOp.cpp FILE: ../../../third_party/skia/src/gpu/ops/GrMeshDrawOp.h -FILE: ../../../third_party/skia/src/gpu/ops/GrNonAAStrokeRectOp.cpp FILE: ../../../third_party/skia/src/gpu/ops/GrOp.cpp FILE: ../../../third_party/skia/src/gpu/ops/GrOp.h FILE: ../../../third_party/skia/src/gpu/ops/GrStencilPathOp.h @@ -4477,8 +4476,6 @@ FILE: ../../../third_party/skia/src/gpu/mtl/GrMtlUtil.h FILE: ../../../third_party/skia/src/gpu/mtl/GrMtlUtil.mm FILE: ../../../third_party/skia/src/gpu/ops/GrClearOp.cpp FILE: ../../../third_party/skia/src/gpu/ops/GrDebugMarkerOp.h -FILE: ../../../third_party/skia/src/gpu/ops/GrNonAAFillRectOp.cpp -FILE: ../../../third_party/skia/src/gpu/ops/GrRectOpFactory.h FILE: ../../../third_party/skia/src/gpu/ops/GrSemaphoreOp.cpp FILE: ../../../third_party/skia/src/gpu/ops/GrSemaphoreOp.h FILE: ../../../third_party/skia/src/gpu/ops/GrSimpleMeshDrawOpHelper.cpp From 9c6d7f5ac3b793c20b8b7aebeb86c7da467cef30 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Tue, 11 Dec 2018 12:29:14 -0500 Subject: [PATCH 0522/1537] Roll src/third_party/skia 72ab3461b747..dfa432cb0647 (1 commits) (#7182) https://skia.googlesource.com/skia.git/+log/72ab3461b747..dfa432cb0647 Created with: gclient setdep -r src/third_party/skia@dfa432cb0647 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 1400f22404597..b79b51fe95984 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '72ab3461b7473c0375c68ae280530a5a8d27026d', + 'skia_revision': 'dfa432cb06472520252884feae945e0748fbec4c', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 337e3e80ec1ce..231d7f8fd82b1 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: ade717176ffbea37d14ec8f3185a0809 +Signature: 5165520309f921e87d1d8d4435891814 UNUSED LICENSES: From b0a3c74ca54994486d4558ca4ee38669610a91b7 Mon Sep 17 00:00:00 2001 From: Gary Qian Date: Tue, 11 Dec 2018 10:33:10 -0800 Subject: [PATCH 0523/1537] Check for empty line before adding empty 'padding' metrics (#7185) --- third_party/txt/src/txt/paragraph.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/third_party/txt/src/txt/paragraph.cc b/third_party/txt/src/txt/paragraph.cc index 0dc0c60f60259..770a333b59200 100644 --- a/third_party/txt/src/txt/paragraph.cc +++ b/third_party/txt/src/txt/paragraph.cc @@ -739,7 +739,7 @@ void Paragraph::Layout(double width, bool force) { // Add extra empty metrics for skipped whitespace at line end. This allows // GetRectsForRange to properly draw empty rects at the ends of lines with // truncated whitespace. - if (line_end_index < line_range.end) { + if (line_end_index < line_range.end && !line_code_unit_runs.empty()) { std::vector empty_glyph_positions; double end_x = line_code_unit_runs.back().positions.back().x_pos.end; for (size_t index = line_end_index; index < line_range.end; ++index) { From 497c65924c226c4e4a6264926c8cfe161fae394f Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Tue, 11 Dec 2018 13:38:42 -0500 Subject: [PATCH 0524/1537] Roll src/third_party/skia dfa432cb0647..6417060b1c23 (4 commits) (#7186) https://skia.googlesource.com/skia.git/+log/dfa432cb0647..6417060b1c23 Created with: gclient setdep -r src/third_party/skia@6417060b1c23 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index b79b51fe95984..5768de48f1066 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'dfa432cb06472520252884feae945e0748fbec4c', + 'skia_revision': '6417060b1c2330919c6af1a63570752a4c473674', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 231d7f8fd82b1..796a9b412a24a 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 5165520309f921e87d1d8d4435891814 +Signature: 13fc10881fe243f710665ac16224bbb5 UNUSED LICENSES: @@ -1985,6 +1985,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. LIBRARY: skia ORIGIN: ../../../third_party/skia/LICENSE TYPE: LicenseType.bsd +FILE: ../../../third_party/skia/.clang-tidy FILE: ../../../third_party/skia/CQ_COMMITTERS FILE: ../../../third_party/skia/DEPS FILE: ../../../third_party/skia/Doxyfile From 25b58c0c67dc740ec3404ae9dc0d05c5e088f68d Mon Sep 17 00:00:00 2001 From: Gary Qian Date: Tue, 11 Dec 2018 10:43:03 -0800 Subject: [PATCH 0525/1537] Revert "Support overriding font leading in TextStyle and LibTxt (#6927)" (#7187) This reverts commit 4b233f033b8ba7b7e5e84f1607dbdf2e4dcdc5d8. --- lib/ui/text.dart | 36 ++-- lib/ui/text/paragraph_builder.cc | 16 +- lib/ui/text/paragraph_builder.h | 1 - third_party/txt/src/txt/paragraph.cc | 11 +- third_party/txt/src/txt/paragraph.h | 5 +- third_party/txt/src/txt/styled_runs.h | 5 +- third_party/txt/src/txt/text_style.cc | 4 - third_party/txt/src/txt/text_style.h | 2 - third_party/txt/tests/paragraph_unittests.cc | 197 ++----------------- 9 files changed, 37 insertions(+), 240 deletions(-) diff --git a/lib/ui/text.dart b/lib/ui/text.dart index 88063162d262f..9655585061974 100644 --- a/lib/ui/text.dart +++ b/lib/ui/text.dart @@ -256,7 +256,6 @@ Int32List _encodeTextStyle( double letterSpacing, double wordSpacing, double height, - double leading, Locale locale, Paint background, Paint foreground, @@ -311,24 +310,20 @@ Int32List _encodeTextStyle( result[0] |= 1 << 12; // Passed separately to native. } - if (leading != null) { - result[0] |= 1 << 13; - // Passed separately to native. - } if (locale != null) { - result[0] |= 1 << 14; + result[0] |= 1 << 13; // Passed separately to native. } if (background != null) { - result[0] |= 1 << 15; + result[0] |= 1 << 14; // Passed separately to native. } if (foreground != null) { - result[0] |= 1 << 16; + result[0] |= 1 << 15; // Passed separately to native. } if (shadows != null) { - result[0] |= 1 << 17; + result[0] |= 1 << 16; // Passed separately to native. } return result; @@ -349,8 +344,7 @@ class TextStyle { /// * `letterSpacing`: The amount of space (in logical pixels) to add between each letter. /// * `wordSpacing`: The amount of space (in logical pixels) to add at each sequence of white-space (i.e. between each word). /// * `textBaseline`: The common baseline that should be aligned between this text span and its parent text span, or, for the root text spans, with the line box. - /// * `height`: The height of this text span, as a multiple of the sum of font size and leading. - /// * `leading`: Custom leading to use instead of the font-provided leading as a multiple of font size. When null, default font leading will be used. Leading is the additional spacing between lines. + /// * `height`: The height of this text span, as a multiple of the font size. /// * `locale`: The locale used to select region-specific glyphs. /// * `background`: The paint drawn as a background for the text. /// * `foreground`: The paint used to draw the text. If this is specified, `color` must be null. @@ -367,7 +361,6 @@ class TextStyle { double letterSpacing, double wordSpacing, double height, - double leading, Locale locale, Paint background, Paint foreground, @@ -389,7 +382,6 @@ class TextStyle { letterSpacing, wordSpacing, height, - leading, locale, background, foreground, @@ -400,7 +392,6 @@ class TextStyle { _letterSpacing = letterSpacing, _wordSpacing = wordSpacing, _height = height, - _leading = leading, _locale = locale, _background = background, _foreground = foreground, @@ -412,7 +403,6 @@ class TextStyle { final double _letterSpacing; final double _wordSpacing; final double _height; - final double _leading; final Locale _locale; final Paint _background; final Paint _foreground; @@ -430,7 +420,6 @@ class TextStyle { _letterSpacing != typedOther._letterSpacing || _wordSpacing != typedOther._wordSpacing || _height != typedOther._height || - _leading != typedOther._leading || _locale != typedOther._locale || _background != typedOther._background || _foreground != typedOther._foreground) @@ -445,7 +434,7 @@ class TextStyle { } @override - int get hashCode => hashValues(hashList(_encoded), _fontFamily, _fontSize, _letterSpacing, _wordSpacing, _height, _leading, _locale, _background, _foreground); + int get hashCode => hashValues(hashList(_encoded), _fontFamily, _fontSize, _letterSpacing, _wordSpacing, _height, _locale, _background, _foreground); @override String toString() { @@ -462,11 +451,10 @@ class TextStyle { 'letterSpacing: ${ _encoded[0] & 0x00400 == 0x00400 ? "${_letterSpacing}x" : "unspecified"}, ' 'wordSpacing: ${ _encoded[0] & 0x00800 == 0x00800 ? "${_wordSpacing}x" : "unspecified"}, ' 'height: ${ _encoded[0] & 0x01000 == 0x01000 ? "${_height}x" : "unspecified"}, ' - 'leading: ${ _encoded[0] & 0x02000 == 0x02000 ? "${_leading}x" : "unspecified"}, ' - 'locale: ${ _encoded[0] & 0x04000 == 0x04000 ? _locale : "unspecified"}, ' - 'background: ${ _encoded[0] & 0x08000 == 0x08000 ? _background : "unspecified"}, ' - 'foreground: ${ _encoded[0] & 0x10000 == 0x10000 ? _foreground : "unspecified"}, ' - 'shadows: ${ _encoded[0] & 0x20000 == 0x20000 ? _shadows : "unspecified"}' + 'locale: ${ _encoded[0] & 0x02000 == 0x02000 ? _locale : "unspecified"}, ' + 'background: ${ _encoded[0] & 0x04000 == 0x04000 ? _background : "unspecified"}, ' + 'foreground: ${ _encoded[0] & 0x08000 == 0x08000 ? _foreground : "unspecified"}, ' + 'shadows: ${ _encoded[0] & 0x10000 == 0x10000 ? _shadows : "unspecified"}' ')'; } } @@ -1147,8 +1135,8 @@ class ParagraphBuilder extends NativeFieldWrapperClass2 { /// Applies the given style to the added text until [pop] is called. /// /// See [pop] for details. - void pushStyle(TextStyle style) => _pushStyle(style._encoded, style._fontFamily, style._fontSize, style._letterSpacing, style._wordSpacing, style._height, style._leading, _encodeLocale(style._locale), style._background?._objects, style._background?._data, style._foreground?._objects, style._foreground?._data, Shadow._encodeShadows(style._shadows)); - void _pushStyle(Int32List encoded, String fontFamily, double fontSize, double letterSpacing, double wordSpacing, double height, double leading, String locale, List backgroundObjects, ByteData backgroundData, List foregroundObjects, ByteData foregroundData, ByteData shadowsData) native 'ParagraphBuilder_pushStyle'; + void pushStyle(TextStyle style) => _pushStyle(style._encoded, style._fontFamily, style._fontSize, style._letterSpacing, style._wordSpacing, style._height, _encodeLocale(style._locale), style._background?._objects, style._background?._data, style._foreground?._objects, style._foreground?._data, Shadow._encodeShadows(style._shadows)); + void _pushStyle(Int32List encoded, String fontFamily, double fontSize, double letterSpacing, double wordSpacing, double height, String locale, List backgroundObjects, ByteData backgroundData, List foregroundObjects, ByteData foregroundData, ByteData shadowsData) native 'ParagraphBuilder_pushStyle'; static String _encodeLocale(Locale locale) => locale?.toString() ?? ''; diff --git a/lib/ui/text/paragraph_builder.cc b/lib/ui/text/paragraph_builder.cc index f03fef9e119ce..bb822417082c2 100644 --- a/lib/ui/text/paragraph_builder.cc +++ b/lib/ui/text/paragraph_builder.cc @@ -41,11 +41,10 @@ const int tsFontSizeIndex = 9; const int tsLetterSpacingIndex = 10; const int tsWordSpacingIndex = 11; const int tsHeightIndex = 12; -const int tsLeadingIndex = 13; -const int tsLocaleIndex = 14; -const int tsBackgroundIndex = 15; -const int tsForegroundIndex = 16; -const int tsTextShadowsIndex = 17; +const int tsLocaleIndex = 13; +const int tsBackgroundIndex = 14; +const int tsForegroundIndex = 15; +const int tsTextShadowsIndex = 16; const int tsColorMask = 1 << tsColorIndex; const int tsTextDecorationMask = 1 << tsTextDecorationIndex; @@ -59,7 +58,6 @@ const int tsFontSizeMask = 1 << tsFontSizeIndex; const int tsLetterSpacingMask = 1 << tsLetterSpacingIndex; const int tsWordSpacingMask = 1 << tsWordSpacingIndex; const int tsHeightMask = 1 << tsHeightIndex; -const int tsLeadingMask = 1 << tsLeadingIndex; const int tsLocaleMask = 1 << tsLocaleIndex; const int tsBackgroundMask = 1 << tsBackgroundIndex; const int tsForegroundMask = 1 << tsForegroundIndex; @@ -209,7 +207,6 @@ void ParagraphBuilder::pushStyle(tonic::Int32List& encoded, double letterSpacing, double wordSpacing, double height, - double leading, const std::string& locale, Dart_Handle background_objects, Dart_Handle background_data, @@ -272,11 +269,6 @@ void ParagraphBuilder::pushStyle(tonic::Int32List& encoded, style.height = height; } - if (mask & tsLeadingMask) { - style.use_custom_leading = true; - style.leading = leading; - } - if (mask & tsLocaleMask) { style.locale = locale; } diff --git a/lib/ui/text/paragraph_builder.h b/lib/ui/text/paragraph_builder.h index e5cfb5fe93132..89383527c6db7 100644 --- a/lib/ui/text/paragraph_builder.h +++ b/lib/ui/text/paragraph_builder.h @@ -40,7 +40,6 @@ class ParagraphBuilder : public RefCountedDartWrappable { double letterSpacing, double wordSpacing, double height, - double leading, const std::string& locale, Dart_Handle background_objects, Dart_Handle background_data, diff --git a/third_party/txt/src/txt/paragraph.cc b/third_party/txt/src/txt/paragraph.cc index 770a333b59200..db8cad8c30c22 100644 --- a/third_party/txt/src/txt/paragraph.cc +++ b/third_party/txt/src/txt/paragraph.cc @@ -761,13 +761,10 @@ void Paragraph::Layout(double width, bool force) { // TODO(garyq): Multipling in the style.height on the first line is // probably wrong. Figure out how paragraph and line heights are supposed // to work and fix it. - double leading = - style.use_custom_leading - ? (metrics.fDescent - metrics.fAscent) * style.leading - : metrics.fLeading; - double line_spacing = (line_number == 0) - ? -metrics.fAscent * style.height - : (-metrics.fAscent + leading) * style.height; + double line_spacing = + (line_number == 0) + ? -metrics.fAscent * style.height + : (-metrics.fAscent + metrics.fLeading) * style.height; if (line_spacing > max_line_spacing) { max_line_spacing = line_spacing; if (line_number == 0) { diff --git a/third_party/txt/src/txt/paragraph.h b/third_party/txt/src/txt/paragraph.h index 3040f068d0116..850bd1b5b499b 100644 --- a/third_party/txt/src/txt/paragraph.h +++ b/third_party/txt/src/txt/paragraph.h @@ -214,10 +214,7 @@ class Paragraph { FRIEND_TEST(ParagraphTest, DecorationsParagraph); FRIEND_TEST(ParagraphTest, ItalicsParagraph); FRIEND_TEST(ParagraphTest, ChineseParagraph); - FRIEND_TEST(ParagraphTest, ArabicParagraph); - FRIEND_TEST(ParagraphTest, ArabicLeadingOverrideParagraph); - FRIEND_TEST(ParagraphTest, ArabicLeadingOverrideTallParagraph); - FRIEND_TEST(ParagraphTest, ArabicLeadingOverrideNegativeParagraph); + FRIEND_TEST(ParagraphTest, DISABLED_ArabicParagraph); FRIEND_TEST(ParagraphTest, SpacingParagraph); FRIEND_TEST(ParagraphTest, LongWordParagraph); FRIEND_TEST(ParagraphTest, KernScaleParagraph); diff --git a/third_party/txt/src/txt/styled_runs.h b/third_party/txt/src/txt/styled_runs.h index 7cac4d8c33244..c3707c0c6a35b 100644 --- a/third_party/txt/src/txt/styled_runs.h +++ b/third_party/txt/src/txt/styled_runs.h @@ -73,10 +73,7 @@ class StyledRuns { FRIEND_TEST(ParagraphTest, DecorationsParagraph); FRIEND_TEST(ParagraphTest, ItalicsParagraph); FRIEND_TEST(ParagraphTest, ChineseParagraph); - FRIEND_TEST(ParagraphTest, ArabicParagraph); - FRIEND_TEST(ParagraphTest, ArabicLeadingOverrideParagraph); - FRIEND_TEST(ParagraphTest, ArabicLeadingOverrideTallParagraph); - FRIEND_TEST(ParagraphTest, ArabicLeadingOverrideNegativeParagraph); + FRIEND_TEST(ParagraphTest, DISABLED_ArabicParagraph); FRIEND_TEST(ParagraphTest, LongWordParagraph); FRIEND_TEST(ParagraphTest, KernParagraph); FRIEND_TEST(ParagraphTest, HyphenBreakParagraph); diff --git a/third_party/txt/src/txt/text_style.cc b/third_party/txt/src/txt/text_style.cc index 9aa309f36b82f..b2da694ef6a4c 100644 --- a/third_party/txt/src/txt/text_style.cc +++ b/third_party/txt/src/txt/text_style.cc @@ -47,10 +47,6 @@ bool TextStyle::equals(const TextStyle& other) const { return false; if (height != other.height) return false; - if (use_custom_leading != other.use_custom_leading) - return false; - if (use_custom_leading && leading != other.leading) - return false; if (locale != other.locale) return false; if (foreground != other.foreground) diff --git a/third_party/txt/src/txt/text_style.h b/third_party/txt/src/txt/text_style.h index c3f94daa94c4c..7b0d351e8fa3f 100644 --- a/third_party/txt/src/txt/text_style.h +++ b/third_party/txt/src/txt/text_style.h @@ -48,8 +48,6 @@ class TextStyle { double letter_spacing = 0.0; double word_spacing = 0.0; double height = 1.0; - double leading = 0; - bool use_custom_leading = false; std::string locale; bool has_background = false; SkPaint background; diff --git a/third_party/txt/tests/paragraph_unittests.cc b/third_party/txt/tests/paragraph_unittests.cc index 5a558f96b48d3..2f8d44f78ae65 100644 --- a/third_party/txt/tests/paragraph_unittests.cc +++ b/third_party/txt/tests/paragraph_unittests.cc @@ -821,15 +821,11 @@ TEST_F(ParagraphTest, ChineseParagraph) { ASSERT_TRUE(Snapshot()); } -TEST_F(ParagraphTest, ArabicParagraph) { +// TODO(garyq): Support RTL languages. +TEST_F(ParagraphTest, DISABLED_ArabicParagraph) { const char* text = "من أسر وإعلان الخاصّة وهولندا،, عل قائمة الضغوط بالمطالبة تلك. الصفحة " - "بمباركة التقليدية قام عن. تصفحبمباركة التقل. يدية فح قام عن. " - "تصفحبمباركة التقليدية قام عن. تصفحبمباركة التقليدية تصفحب قام عن. فح " - "تصفحبمقباركة التقلفحيدية قام عن. تصفحبمباركة التقليدية ققام عن. " - "تصفحبمباركة التقليدية قام عن. تصفحبمباركة التقليدية قام عن. تص تصفحب " - "فحبمباركة التقققليدية قام عن. تصفحبمباركة التقليدية قام عن. تصفحبمباركة " - "التقليدية قام عن. تصفحبمباركة التقليدية قام عن. تصفح"; + "بمباركة التقليدية قام عن. تصفح"; auto icu_text = icu::UnicodeString::fromUTF8(text); std::u16string u16_text(icu_text.getBuffer(), icu_text.getBuffer() + icu_text.length()); @@ -842,123 +838,14 @@ TEST_F(ParagraphTest, ArabicParagraph) { txt::TextStyle text_style; text_style.color = SK_ColorBLACK; - text_style.font_size = 45; - text_style.letter_spacing = 2; - text_style.font_family = "Katibeh"; - text_style.decoration_style = txt::TextDecorationStyle::kSolid; - text_style.decoration_color = SK_ColorBLACK; - builder.PushStyle(text_style); - - builder.AddText(u16_text); - - builder.Pop(); - - auto paragraph = builder.Build(); - paragraph->Layout(GetTestCanvasWidth() - 100); - - paragraph->Paint(GetCanvas(), 0, 0); - ASSERT_TRUE(Snapshot()); - - ASSERT_EQ(paragraph->text_.size(), 458ull); // Arabic script uses ligatures - - ASSERT_EQ(paragraph->runs_.runs_.size(), 1ull); - ASSERT_EQ(paragraph->runs_.styles_.size(), 2ull); - ASSERT_TRUE(paragraph->runs_.styles_[1].equals(text_style)); - ASSERT_EQ(paragraph->records_[0].style().color, text_style.color); - ASSERT_EQ(paragraph->records_.size(), - 8ull); // 8 lines, breaks into 8 records. - ASSERT_EQ(paragraph->paragraph_style_.text_direction, TextDirection::rtl); - - ASSERT_EQ(paragraph->line_heights_[0], 45); - ASSERT_EQ(paragraph->line_heights_[1], 99); - ASSERT_EQ(paragraph->line_heights_[2], 153); - ASSERT_EQ(paragraph->line_heights_[3], 207); -} - -TEST_F(ParagraphTest, ArabicLeadingOverrideParagraph) { - const char* text = - "من أسر وإعلان الخاصّة وهولندا،, عل قائمة الضغوط بالمطالبة تلك. الصفحة " - "بمباركة التقليدية قام عن. تصفحبمباركة التقل. يدية فح قام عن. " - "تصفحبمباركة التقليدية قام عن. تصفحبمباركة التقليدية تصفحب قام عن. فح " - "تصفحبمقباركة التقلفحيدية قام عن. تصفحبمباركة التقليدية ققام عن. " - "تصفحبمباركة التقليدية قام عن. تصفحبمباركة التقليدية قام عن. تص تصفحب " - "فحبمباركة التقققليدية قام عن. تصفحبمباركة التقليدية قام عن. تصفحبمباركة " - "التقليدية قام عن. تصفحبمباركة التقليدية قام عن. تصفح"; - auto icu_text = icu::UnicodeString::fromUTF8(text); - std::u16string u16_text(icu_text.getBuffer(), - icu_text.getBuffer() + icu_text.length()); - - txt::ParagraphStyle paragraph_style; - paragraph_style.max_lines = 14; - paragraph_style.text_align = TextAlign::right; - paragraph_style.text_direction = TextDirection::rtl; - txt::ParagraphBuilder builder(paragraph_style, GetTestFontCollection()); - - txt::TextStyle text_style; - text_style.color = SK_ColorBLACK; - text_style.font_size = 45; - text_style.letter_spacing = 2; - text_style.font_family = "Katibeh"; - text_style.decoration_style = txt::TextDecorationStyle::kSolid; - text_style.decoration_color = SK_ColorBLACK; - text_style.use_custom_leading = true; - text_style.leading = 0; - builder.PushStyle(text_style); - - builder.AddText(u16_text); - - builder.Pop(); - - auto paragraph = builder.Build(); - paragraph->Layout(GetTestCanvasWidth() - 100); - - paragraph->Paint(GetCanvas(), 0, 0); - ASSERT_TRUE(Snapshot()); - - ASSERT_EQ(paragraph->text_.size(), 458ull); // Arabic script uses ligatures - - ASSERT_EQ(paragraph->runs_.runs_.size(), 1ull); - ASSERT_EQ(paragraph->runs_.styles_.size(), 2ull); - ASSERT_TRUE(paragraph->runs_.styles_[1].equals(text_style)); - ASSERT_EQ(paragraph->records_[0].style().color, text_style.color); - ASSERT_EQ(paragraph->records_.size(), - 8ull); // 8 lines, breaks into 8 records. - ASSERT_EQ(paragraph->paragraph_style_.text_direction, TextDirection::rtl); - - ASSERT_EQ(paragraph->line_heights_[0], 45); - ASSERT_EQ(paragraph->line_heights_[1], 90); - ASSERT_EQ(paragraph->line_heights_[2], 135); - ASSERT_EQ(paragraph->line_heights_[3], 180); -} - -TEST_F(ParagraphTest, ArabicLeadingOverrideTallParagraph) { - const char* text = - "من أسر وإعلان الخاصّة وهولندا،, عل قائمة الضغوط بالمطالبة تلك. الصفحة " - "بمباركة التقليدية قام عن. تصفحبمباركة التقل. يدية فح قام عن. " - "تصفحبمباركة التقليدية قام عن. تصفحبمباركة التقليدية تصفحب قام عن. فح " - "تصفحبمقباركة التقلفحيدية قام عن. تصفحبمباركة التقليدية ققام عن. " - "تصفحبمباركة التقليدية قام عن. تصفحبمباركة التقليدية قام عن. تص تصفحب " - "فحبمباركة التقققليدية قام عن. تصفحبمباركة التقليدية قام عن. تصفحبمباركة " - "التقليدية قام عن. تصفحبمباركة التقليدية قام عن. تصفح"; - auto icu_text = icu::UnicodeString::fromUTF8(text); - std::u16string u16_text(icu_text.getBuffer(), - icu_text.getBuffer() + icu_text.length()); - - txt::ParagraphStyle paragraph_style; - paragraph_style.max_lines = 14; - paragraph_style.text_align = TextAlign::right; - paragraph_style.text_direction = TextDirection::rtl; - txt::ParagraphBuilder builder(paragraph_style, GetTestFontCollection()); - - txt::TextStyle text_style; - text_style.color = SK_ColorBLACK; - text_style.font_size = 45; + text_style.font_size = 35; text_style.letter_spacing = 2; text_style.font_family = "Katibeh"; + text_style.decoration = TextDecoration::kUnderline | + TextDecoration::kOverline | + TextDecoration::kLineThrough; text_style.decoration_style = txt::TextDecorationStyle::kSolid; text_style.decoration_color = SK_ColorBLACK; - text_style.use_custom_leading = true; - text_style.leading = 0.65; builder.PushStyle(text_style); builder.AddText(u16_text); @@ -969,78 +856,21 @@ TEST_F(ParagraphTest, ArabicLeadingOverrideTallParagraph) { paragraph->Layout(GetTestCanvasWidth() - 100); paragraph->Paint(GetCanvas(), 0, 0); - ASSERT_TRUE(Snapshot()); - ASSERT_EQ(paragraph->text_.size(), 458ull); // Arabic script uses ligatures + ASSERT_EQ(paragraph->text_.size(), std::string{text}.length()); ASSERT_EQ(paragraph->runs_.runs_.size(), 1ull); ASSERT_EQ(paragraph->runs_.styles_.size(), 2ull); ASSERT_TRUE(paragraph->runs_.styles_[1].equals(text_style)); ASSERT_EQ(paragraph->records_[0].style().color, text_style.color); - ASSERT_EQ(paragraph->records_.size(), - 8ull); // 8 lines, breaks into 8 records. + ASSERT_EQ(paragraph->records_.size(), 2ull); ASSERT_EQ(paragraph->paragraph_style_.text_direction, TextDirection::rtl); - ASSERT_EQ(paragraph->line_heights_[0], 45); - ASSERT_EQ(paragraph->line_heights_[1], 119); - ASSERT_EQ(paragraph->line_heights_[2], 193); - ASSERT_EQ(paragraph->line_heights_[3], 267); -} - -TEST_F(ParagraphTest, ArabicLeadingOverrideNegativeParagraph) { - const char* text = - "من أسر وإعلان الخاصّة وهولندا،, عل قائمة الضغوط بالمطالبة تلك. الصفحة " - "بمباركة التقليدية قام عن. تصفحبمباركة التقل. يدية فح قام عن. " - "تصفحبمباركة التقليدية قام عن. تصفحبمباركة التقليدية تصفحب قام عن. فح " - "تصفحبمقباركة التقلفحيدية قام عن. تصفحبمباركة التقليدية ققام عن. " - "تصفحبمباركة التقليدية قام عن. تصفحبمباركة التقليدية قام عن. تص تصفحب " - "فحبمباركة التقققليدية قام عن. تصفحبمباركة التقليدية قام عن. تصفحبمباركة " - "التقليدية قام عن. تصفحبمباركة التقليدية قام عن. تصفح"; - auto icu_text = icu::UnicodeString::fromUTF8(text); - std::u16string u16_text(icu_text.getBuffer(), - icu_text.getBuffer() + icu_text.length()); - - txt::ParagraphStyle paragraph_style; - paragraph_style.max_lines = 14; - paragraph_style.text_align = TextAlign::right; - paragraph_style.text_direction = TextDirection::rtl; - txt::ParagraphBuilder builder(paragraph_style, GetTestFontCollection()); - - txt::TextStyle text_style; - text_style.color = SK_ColorBLACK; - text_style.font_size = 45; - text_style.letter_spacing = 2; - text_style.font_family = "Katibeh"; - text_style.decoration_style = txt::TextDecorationStyle::kSolid; - text_style.decoration_color = SK_ColorBLACK; - text_style.use_custom_leading = true; - text_style.leading = -0.2; - builder.PushStyle(text_style); - - builder.AddText(u16_text); - - builder.Pop(); - - auto paragraph = builder.Build(); - paragraph->Layout(GetTestCanvasWidth() - 100); + for (size_t i = 0; i < u16_text.length(); i++) { + ASSERT_EQ(paragraph->text_[i], u16_text[u16_text.length() - i]); + } - paragraph->Paint(GetCanvas(), 0, 0); ASSERT_TRUE(Snapshot()); - - ASSERT_EQ(paragraph->text_.size(), 458ull); // Arabic script uses ligatures - - ASSERT_EQ(paragraph->runs_.runs_.size(), 1ull); - ASSERT_EQ(paragraph->runs_.styles_.size(), 2ull); - ASSERT_TRUE(paragraph->runs_.styles_[1].equals(text_style)); - ASSERT_EQ(paragraph->records_[0].style().color, text_style.color); - ASSERT_EQ(paragraph->records_.size(), - 8ull); // 8 lines, breaks into 8 records. - ASSERT_EQ(paragraph->paragraph_style_.text_direction, TextDirection::rtl); - - ASSERT_EQ(paragraph->line_heights_[0], 45); - ASSERT_EQ(paragraph->line_heights_[1], 81); - ASSERT_EQ(paragraph->line_heights_[2], 117); - ASSERT_EQ(paragraph->line_heights_[3], 153); } TEST_F(ParagraphTest, GetGlyphPositionAtCoordinateParagraph) { @@ -1332,6 +1162,9 @@ TEST_F(ParagraphTest, DISABLE_ON_WINDOWS(GetRectsForRangeTight)) { TEST_F(ParagraphTest, DISABLE_ON_WINDOWS(GetRectsForRangeIncludeLineSpacingMiddle)) { + // const char* text = + // "12345, \"67890\" 12345 67890 12345 67890 12345 67890 12345 67890 + // 12345 " "67890 12345"; const char* text = "( ´・‿・`)( ´・‿・`)( ´・‿・`)( ´・‿・`)( ´・‿・`)( ´・‿・`)( ´・‿・`)(" " ´・‿・`)( ´・‿・`)( ´・‿・`)( ´・‿・`)( ´・‿・`)( ´・‿・`)( ´・‿・`)(" From 31e6861d491392446fc0be535f4c77158bdb7246 Mon Sep 17 00:00:00 2001 From: Michael Goderbauer Date: Tue, 11 Dec 2018 19:20:53 -0800 Subject: [PATCH 0526/1537] Reland "Compile libcxx and libcxxabi for Android (#6886)" (#7160) This reverts commit a8d55821ccc58c55046e21d96563d85e719234bc. --- DEPS | 8 +- ci/licenses_golden/licenses_third_party | 545 +++++++++++++++++++++++- sky/packages/sky_engine/LICENSE | 111 +++++ tools/licenses/lib/main.dart | 63 ++- 4 files changed, 722 insertions(+), 5 deletions(-) diff --git a/DEPS b/DEPS index 5768de48f1066..e0da8f4d3ac47 100644 --- a/DEPS +++ b/DEPS @@ -117,7 +117,7 @@ allowed_hosts = [ ] deps = { - 'src': 'https://github.com/flutter/buildroot.git' + '@' + '29a5d76757ec12655c0562b317830f669bd44ea7', + 'src': 'https://github.com/flutter/buildroot.git' + '@' + '466a8d1bf8403c35cd5a2dffe958087ba31504f7', # Fuchsia compatibility # @@ -140,6 +140,12 @@ deps = { 'src/third_party/harfbuzz': Var('fuchsia_git') + '/third_party/harfbuzz' + '@' + '02caec6c1c6ad996666788b8e920ccaec8b385e5', + 'src/third_party/libcxx': + Var('fuchsia_git') + '/third_party/libcxx' + '@' + 'c5a5fa59789213c7dae68d2e51cb28ef681d8257', + + 'src/third_party/libcxxabi': + Var('fuchsia_git') + '/third_party/libcxxabi' + '@' + '1a9753522f1ae8d72848d365902f39e0d3d59a39', + # Chromium-style # # As part of integrating with Fuchsia, we should eventually remove all these diff --git a/ci/licenses_golden/licenses_third_party b/ci/licenses_golden/licenses_third_party index a06c935614ec2..81459beeffa9e 100644 --- a/ci/licenses_golden/licenses_third_party +++ b/ci/licenses_golden/licenses_third_party @@ -1,4 +1,4 @@ -Signature: 688d05f1b8d8726e65b28a27ccc7dfcb +Signature: d7c30cf5ac4c421cc15ff2731ade24c4 UNUSED LICENSES: @@ -13123,6 +13123,547 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ==================================================================================================== +==================================================================================================== +LIBRARY: libcxx +LIBRARY: libcxxabi +ORIGIN: null +TYPE: LicenseType.mit +FILE: ../../../third_party/libcxx/.arcconfig +FILE: ../../../third_party/libcxx/appveyor-reqs-install.cmd +FILE: ../../../third_party/libcxx/appveyor.yml +FILE: ../../../third_party/libcxx/benchmarks/ContainerBenchmarks.hpp +FILE: ../../../third_party/libcxx/benchmarks/GenerateInput.hpp +FILE: ../../../third_party/libcxx/benchmarks/algorithms.bench.cpp +FILE: ../../../third_party/libcxx/benchmarks/filesystem.bench.cpp +FILE: ../../../third_party/libcxx/benchmarks/lit.site.cfg.py.in +FILE: ../../../third_party/libcxx/benchmarks/string.bench.cpp +FILE: ../../../third_party/libcxx/benchmarks/stringstream.bench.cpp +FILE: ../../../third_party/libcxx/benchmarks/unordered_set_operations.bench.cpp +FILE: ../../../third_party/libcxx/benchmarks/vector_operations.bench.cpp +FILE: ../../../third_party/libcxx/docs/BuildingLibcxx.rst +FILE: ../../../third_party/libcxx/docs/DesignDocs/ABIVersioning.rst +FILE: ../../../third_party/libcxx/docs/DesignDocs/AvailabilityMarkup.rst +FILE: ../../../third_party/libcxx/docs/DesignDocs/DebugMode.rst +FILE: ../../../third_party/libcxx/docs/DesignDocs/FileTimeType.rst +FILE: ../../../third_party/libcxx/docs/DesignDocs/ThreadingSupportAPI.rst +FILE: ../../../third_party/libcxx/docs/DesignDocs/VisibilityMacros.rst +FILE: ../../../third_party/libcxx/docs/Makefile.sphinx +FILE: ../../../third_party/libcxx/docs/ReleaseNotes.rst +FILE: ../../../third_party/libcxx/docs/TestingLibcxx.rst +FILE: ../../../third_party/libcxx/docs/UsingLibcxx.rst +FILE: ../../../third_party/libcxx/docs/index.rst +FILE: ../../../third_party/libcxx/include/__libcpp_version +FILE: ../../../third_party/libcxx/include/__split_buffer +FILE: ../../../third_party/libcxx/include/__string +FILE: ../../../third_party/libcxx/include/__undef_macros +FILE: ../../../third_party/libcxx/include/any +FILE: ../../../third_party/libcxx/include/atomic +FILE: ../../../third_party/libcxx/include/cinttypes +FILE: ../../../third_party/libcxx/include/cstring +FILE: ../../../third_party/libcxx/include/experimental/any +FILE: ../../../third_party/libcxx/include/experimental/chrono +FILE: ../../../third_party/libcxx/include/experimental/coroutine +FILE: ../../../third_party/libcxx/include/experimental/iterator +FILE: ../../../third_party/libcxx/include/experimental/memory_resource +FILE: ../../../third_party/libcxx/include/experimental/ratio +FILE: ../../../third_party/libcxx/include/experimental/string_view +FILE: ../../../third_party/libcxx/include/inttypes.h +FILE: ../../../third_party/libcxx/include/module.modulemap +FILE: ../../../third_party/libcxx/include/stdint.h +FILE: ../../../third_party/libcxx/include/string +FILE: ../../../third_party/libcxx/include/string.h +FILE: ../../../third_party/libcxx/include/string_view +FILE: ../../../third_party/libcxx/include/tuple +FILE: ../../../third_party/libcxx/lib/abi/3.9/x86_64-apple-darwin16.abilist +FILE: ../../../third_party/libcxx/lib/abi/3.9/x86_64-linux-gnu.abilist +FILE: ../../../third_party/libcxx/lib/abi/4.0/x86_64-apple-darwin16.abilist +FILE: ../../../third_party/libcxx/lib/abi/4.0/x86_64-unknown-linux-gnu.abilist +FILE: ../../../third_party/libcxx/lib/abi/5.0/x86_64-apple-darwin16.abilist +FILE: ../../../third_party/libcxx/lib/abi/5.0/x86_64-unknown-linux-gnu.abilist +FILE: ../../../third_party/libcxx/lib/abi/6.0/x86_64-apple-darwin16.abilist +FILE: ../../../third_party/libcxx/lib/abi/6.0/x86_64-unknown-linux-gnu.abilist +FILE: ../../../third_party/libcxx/lib/abi/x86_64-apple-darwin.v1.abilist +FILE: ../../../third_party/libcxx/lib/abi/x86_64-apple-darwin.v2.abilist +FILE: ../../../third_party/libcxx/lib/abi/x86_64-unknown-linux-gnu.v1.abilist +FILE: ../../../third_party/libcxx/lib/libc++abi-new-delete.exp +FILE: ../../../third_party/libcxx/lib/libc++abi.exp +FILE: ../../../third_party/libcxx/lib/libc++abi2.exp +FILE: ../../../third_party/libcxx/lib/libc++sjlj-abi.exp +FILE: ../../../third_party/libcxx/lib/libc++unexp.exp +FILE: ../../../third_party/libcxx/lib/notweak.exp +FILE: ../../../third_party/libcxx/lib/weak.exp +FILE: ../../../third_party/libcxx/src/filesystem/int128_builtins.cpp +FILE: ../../../third_party/libcxx/www/TS_deprecation.html +FILE: ../../../third_party/libcxx/www/atomic_design.html +FILE: ../../../third_party/libcxx/www/atomic_design_a.html +FILE: ../../../third_party/libcxx/www/atomic_design_b.html +FILE: ../../../third_party/libcxx/www/atomic_design_c.html +FILE: ../../../third_party/libcxx/www/cxx1y_status.html +FILE: ../../../third_party/libcxx/www/cxx1z_status.html +FILE: ../../../third_party/libcxx/www/cxx2a_status.html +FILE: ../../../third_party/libcxx/www/index.html +FILE: ../../../third_party/libcxx/www/ts1z_status.html +FILE: ../../../third_party/libcxx/www/type_traits_design.html +FILE: ../../../third_party/libcxx/www/upcoming_meeting.html +FILE: ../../../third_party/libcxxabi/.arcconfig +FILE: ../../../third_party/libcxxabi/fuzz/cxa_demangle_fuzzer.cpp +FILE: ../../../third_party/libcxxabi/include/__cxxabi_config.h +FILE: ../../../third_party/libcxxabi/include/cxxabi.h +FILE: ../../../third_party/libcxxabi/src/abort_message.cpp +FILE: ../../../third_party/libcxxabi/src/abort_message.h +FILE: ../../../third_party/libcxxabi/src/cxa_aux_runtime.cpp +FILE: ../../../third_party/libcxxabi/src/cxa_default_handlers.cpp +FILE: ../../../third_party/libcxxabi/src/cxa_demangle.cpp +FILE: ../../../third_party/libcxxabi/src/cxa_exception.cpp +FILE: ../../../third_party/libcxxabi/src/cxa_exception.hpp +FILE: ../../../third_party/libcxxabi/src/cxa_exception_storage.cpp +FILE: ../../../third_party/libcxxabi/src/cxa_guard.cpp +FILE: ../../../third_party/libcxxabi/src/cxa_handlers.cpp +FILE: ../../../third_party/libcxxabi/src/cxa_handlers.hpp +FILE: ../../../third_party/libcxxabi/src/cxa_noexception.cpp +FILE: ../../../third_party/libcxxabi/src/cxa_personality.cpp +FILE: ../../../third_party/libcxxabi/src/cxa_thread_atexit.cpp +FILE: ../../../third_party/libcxxabi/src/cxa_unexpected.cpp +FILE: ../../../third_party/libcxxabi/src/cxa_vector.cpp +FILE: ../../../third_party/libcxxabi/src/cxa_virtual.cpp +FILE: ../../../third_party/libcxxabi/src/demangle/Compiler.h +FILE: ../../../third_party/libcxxabi/src/demangle/ItaniumDemangle.h +FILE: ../../../third_party/libcxxabi/src/demangle/StringView.h +FILE: ../../../third_party/libcxxabi/src/demangle/Utility.h +FILE: ../../../third_party/libcxxabi/src/fallback_malloc.cpp +FILE: ../../../third_party/libcxxabi/src/fallback_malloc.h +FILE: ../../../third_party/libcxxabi/src/include/atomic_support.h +FILE: ../../../third_party/libcxxabi/src/include/refstring.h +FILE: ../../../third_party/libcxxabi/src/private_typeinfo.cpp +FILE: ../../../third_party/libcxxabi/src/private_typeinfo.h +FILE: ../../../third_party/libcxxabi/src/stdlib_exception.cpp +FILE: ../../../third_party/libcxxabi/src/stdlib_new_delete.cpp +FILE: ../../../third_party/libcxxabi/src/stdlib_stdexcept.cpp +FILE: ../../../third_party/libcxxabi/src/stdlib_typeinfo.cpp +FILE: ../../../third_party/libcxxabi/www/index.html +FILE: ../../../third_party/libcxxabi/www/spec.html +---------------------------------------------------------------------------------------------------- +Copyright (c) 2009-2014 by the contributors listed in CREDITS.TXT + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +==================================================================================================== + +==================================================================================================== +LIBRARY: libcxx +ORIGIN: null +TYPE: LicenseType.bsd +FILE: ../../../third_party/libcxx/.arcconfig +FILE: ../../../third_party/libcxx/appveyor-reqs-install.cmd +FILE: ../../../third_party/libcxx/appveyor.yml +FILE: ../../../third_party/libcxx/benchmarks/CartesianBenchmarks.hpp +FILE: ../../../third_party/libcxx/benchmarks/ContainerBenchmarks.hpp +FILE: ../../../third_party/libcxx/benchmarks/GenerateInput.hpp +FILE: ../../../third_party/libcxx/benchmarks/algorithms.bench.cpp +FILE: ../../../third_party/libcxx/benchmarks/filesystem.bench.cpp +FILE: ../../../third_party/libcxx/benchmarks/function.bench.cpp +FILE: ../../../third_party/libcxx/benchmarks/lit.site.cfg.py.in +FILE: ../../../third_party/libcxx/benchmarks/ordered_set.bench.cpp +FILE: ../../../third_party/libcxx/benchmarks/string.bench.cpp +FILE: ../../../third_party/libcxx/benchmarks/stringstream.bench.cpp +FILE: ../../../third_party/libcxx/benchmarks/unordered_set_operations.bench.cpp +FILE: ../../../third_party/libcxx/benchmarks/util_smartptr.bench.cpp +FILE: ../../../third_party/libcxx/benchmarks/vector_operations.bench.cpp +FILE: ../../../third_party/libcxx/docs/BuildingLibcxx.rst +FILE: ../../../third_party/libcxx/docs/DesignDocs/ABIVersioning.rst +FILE: ../../../third_party/libcxx/docs/DesignDocs/AvailabilityMarkup.rst +FILE: ../../../third_party/libcxx/docs/DesignDocs/CapturingConfigInfo.rst +FILE: ../../../third_party/libcxx/docs/DesignDocs/CapturingConfigInfo.rst +FILE: ../../../third_party/libcxx/docs/DesignDocs/DebugMode.rst +FILE: ../../../third_party/libcxx/docs/DesignDocs/FileTimeType.rst +FILE: ../../../third_party/libcxx/docs/DesignDocs/ThreadingSupportAPI.rst +FILE: ../../../third_party/libcxx/docs/DesignDocs/VisibilityMacros.rst +FILE: ../../../third_party/libcxx/docs/Makefile.sphinx +FILE: ../../../third_party/libcxx/docs/ReleaseNotes.rst +FILE: ../../../third_party/libcxx/docs/TestingLibcxx.rst +FILE: ../../../third_party/libcxx/docs/UsingLibcxx.rst +FILE: ../../../third_party/libcxx/docs/index.rst +FILE: ../../../third_party/libcxx/fuzzing/fuzz_test.cpp +FILE: ../../../third_party/libcxx/fuzzing/fuzzing.cpp +FILE: ../../../third_party/libcxx/fuzzing/fuzzing.h +FILE: ../../../third_party/libcxx/include/__bit_reference +FILE: ../../../third_party/libcxx/include/__bsd_locale_defaults.h +FILE: ../../../third_party/libcxx/include/__bsd_locale_fallbacks.h +FILE: ../../../third_party/libcxx/include/__config +FILE: ../../../third_party/libcxx/include/__config_site.in +FILE: ../../../third_party/libcxx/include/__debug +FILE: ../../../third_party/libcxx/include/__errc +FILE: ../../../third_party/libcxx/include/__functional_03 +FILE: ../../../third_party/libcxx/include/__functional_base +FILE: ../../../third_party/libcxx/include/__functional_base_03 +FILE: ../../../third_party/libcxx/include/__hash_table +FILE: ../../../third_party/libcxx/include/__libcpp_version +FILE: ../../../third_party/libcxx/include/__locale +FILE: ../../../third_party/libcxx/include/__mutex_base +FILE: ../../../third_party/libcxx/include/__node_handle +FILE: ../../../third_party/libcxx/include/__nullptr +FILE: ../../../third_party/libcxx/include/__split_buffer +FILE: ../../../third_party/libcxx/include/__sso_allocator +FILE: ../../../third_party/libcxx/include/__std_stream +FILE: ../../../third_party/libcxx/include/__string +FILE: ../../../third_party/libcxx/include/__threading_support +FILE: ../../../third_party/libcxx/include/__tree +FILE: ../../../third_party/libcxx/include/__tuple +FILE: ../../../third_party/libcxx/include/__undef_macros +FILE: ../../../third_party/libcxx/include/algorithm +FILE: ../../../third_party/libcxx/include/any +FILE: ../../../third_party/libcxx/include/array +FILE: ../../../third_party/libcxx/include/atomic +FILE: ../../../third_party/libcxx/include/bit +FILE: ../../../third_party/libcxx/include/bitset +FILE: ../../../third_party/libcxx/include/cassert +FILE: ../../../third_party/libcxx/include/ccomplex +FILE: ../../../third_party/libcxx/include/cctype +FILE: ../../../third_party/libcxx/include/cerrno +FILE: ../../../third_party/libcxx/include/cfenv +FILE: ../../../third_party/libcxx/include/cfloat +FILE: ../../../third_party/libcxx/include/charconv +FILE: ../../../third_party/libcxx/include/chrono +FILE: ../../../third_party/libcxx/include/cinttypes +FILE: ../../../third_party/libcxx/include/ciso646 +FILE: ../../../third_party/libcxx/include/climits +FILE: ../../../third_party/libcxx/include/clocale +FILE: ../../../third_party/libcxx/include/cmath +FILE: ../../../third_party/libcxx/include/codecvt +FILE: ../../../third_party/libcxx/include/compare +FILE: ../../../third_party/libcxx/include/complex +FILE: ../../../third_party/libcxx/include/complex.h +FILE: ../../../third_party/libcxx/include/condition_variable +FILE: ../../../third_party/libcxx/include/csetjmp +FILE: ../../../third_party/libcxx/include/csignal +FILE: ../../../third_party/libcxx/include/cstdarg +FILE: ../../../third_party/libcxx/include/cstdbool +FILE: ../../../third_party/libcxx/include/cstddef +FILE: ../../../third_party/libcxx/include/cstdint +FILE: ../../../third_party/libcxx/include/cstdio +FILE: ../../../third_party/libcxx/include/cstdlib +FILE: ../../../third_party/libcxx/include/cstring +FILE: ../../../third_party/libcxx/include/ctgmath +FILE: ../../../third_party/libcxx/include/ctime +FILE: ../../../third_party/libcxx/include/ctype.h +FILE: ../../../third_party/libcxx/include/cwchar +FILE: ../../../third_party/libcxx/include/cwctype +FILE: ../../../third_party/libcxx/include/deque +FILE: ../../../third_party/libcxx/include/errno.h +FILE: ../../../third_party/libcxx/include/exception +FILE: ../../../third_party/libcxx/include/experimental/__config +FILE: ../../../third_party/libcxx/include/experimental/__memory +FILE: ../../../third_party/libcxx/include/experimental/algorithm +FILE: ../../../third_party/libcxx/include/experimental/any +FILE: ../../../third_party/libcxx/include/experimental/chrono +FILE: ../../../third_party/libcxx/include/experimental/coroutine +FILE: ../../../third_party/libcxx/include/experimental/deque +FILE: ../../../third_party/libcxx/include/experimental/dynarray +FILE: ../../../third_party/libcxx/include/experimental/filesystem +FILE: ../../../third_party/libcxx/include/experimental/forward_list +FILE: ../../../third_party/libcxx/include/experimental/functional +FILE: ../../../third_party/libcxx/include/experimental/iterator +FILE: ../../../third_party/libcxx/include/experimental/list +FILE: ../../../third_party/libcxx/include/experimental/map +FILE: ../../../third_party/libcxx/include/experimental/memory_resource +FILE: ../../../third_party/libcxx/include/experimental/numeric +FILE: ../../../third_party/libcxx/include/experimental/optional +FILE: ../../../third_party/libcxx/include/experimental/propagate_const +FILE: ../../../third_party/libcxx/include/experimental/ratio +FILE: ../../../third_party/libcxx/include/experimental/regex +FILE: ../../../third_party/libcxx/include/experimental/set +FILE: ../../../third_party/libcxx/include/experimental/simd +FILE: ../../../third_party/libcxx/include/experimental/string +FILE: ../../../third_party/libcxx/include/experimental/string_view +FILE: ../../../third_party/libcxx/include/experimental/system_error +FILE: ../../../third_party/libcxx/include/experimental/tuple +FILE: ../../../third_party/libcxx/include/experimental/type_traits +FILE: ../../../third_party/libcxx/include/experimental/unordered_map +FILE: ../../../third_party/libcxx/include/experimental/unordered_set +FILE: ../../../third_party/libcxx/include/experimental/utility +FILE: ../../../third_party/libcxx/include/experimental/vector +FILE: ../../../third_party/libcxx/include/ext/__hash +FILE: ../../../third_party/libcxx/include/ext/hash_map +FILE: ../../../third_party/libcxx/include/ext/hash_set +FILE: ../../../third_party/libcxx/include/filesystem +FILE: ../../../third_party/libcxx/include/float.h +FILE: ../../../third_party/libcxx/include/forward_list +FILE: ../../../third_party/libcxx/include/fstream +FILE: ../../../third_party/libcxx/include/functional +FILE: ../../../third_party/libcxx/include/future +FILE: ../../../third_party/libcxx/include/initializer_list +FILE: ../../../third_party/libcxx/include/inttypes.h +FILE: ../../../third_party/libcxx/include/iomanip +FILE: ../../../third_party/libcxx/include/ios +FILE: ../../../third_party/libcxx/include/iosfwd +FILE: ../../../third_party/libcxx/include/iostream +FILE: ../../../third_party/libcxx/include/istream +FILE: ../../../third_party/libcxx/include/iterator +FILE: ../../../third_party/libcxx/include/limits +FILE: ../../../third_party/libcxx/include/limits.h +FILE: ../../../third_party/libcxx/include/list +FILE: ../../../third_party/libcxx/include/locale +FILE: ../../../third_party/libcxx/include/locale.h +FILE: ../../../third_party/libcxx/include/map +FILE: ../../../third_party/libcxx/include/math.h +FILE: ../../../third_party/libcxx/include/memory +FILE: ../../../third_party/libcxx/include/module.modulemap +FILE: ../../../third_party/libcxx/include/mutex +FILE: ../../../third_party/libcxx/include/new +FILE: ../../../third_party/libcxx/include/numeric +FILE: ../../../third_party/libcxx/include/optional +FILE: ../../../third_party/libcxx/include/ostream +FILE: ../../../third_party/libcxx/include/queue +FILE: ../../../third_party/libcxx/include/random +FILE: ../../../third_party/libcxx/include/ratio +FILE: ../../../third_party/libcxx/include/regex +FILE: ../../../third_party/libcxx/include/scoped_allocator +FILE: ../../../third_party/libcxx/include/set +FILE: ../../../third_party/libcxx/include/setjmp.h +FILE: ../../../third_party/libcxx/include/shared_mutex +FILE: ../../../third_party/libcxx/include/span +FILE: ../../../third_party/libcxx/include/sstream +FILE: ../../../third_party/libcxx/include/stack +FILE: ../../../third_party/libcxx/include/stdbool.h +FILE: ../../../third_party/libcxx/include/stddef.h +FILE: ../../../third_party/libcxx/include/stdexcept +FILE: ../../../third_party/libcxx/include/stdint.h +FILE: ../../../third_party/libcxx/include/stdio.h +FILE: ../../../third_party/libcxx/include/stdlib.h +FILE: ../../../third_party/libcxx/include/streambuf +FILE: ../../../third_party/libcxx/include/string +FILE: ../../../third_party/libcxx/include/string.h +FILE: ../../../third_party/libcxx/include/string_view +FILE: ../../../third_party/libcxx/include/strstream +FILE: ../../../third_party/libcxx/include/support/android/locale_bionic.h +FILE: ../../../third_party/libcxx/include/support/fuchsia/xlocale.h +FILE: ../../../third_party/libcxx/include/support/ibm/limits.h +FILE: ../../../third_party/libcxx/include/support/ibm/locale_mgmt_aix.h +FILE: ../../../third_party/libcxx/include/support/ibm/support.h +FILE: ../../../third_party/libcxx/include/support/ibm/xlocale.h +FILE: ../../../third_party/libcxx/include/support/musl/xlocale.h +FILE: ../../../third_party/libcxx/include/support/newlib/xlocale.h +FILE: ../../../third_party/libcxx/include/support/solaris/floatingpoint.h +FILE: ../../../third_party/libcxx/include/support/solaris/wchar.h +FILE: ../../../third_party/libcxx/include/support/solaris/xlocale.h +FILE: ../../../third_party/libcxx/include/support/win32/limits_msvc_win32.h +FILE: ../../../third_party/libcxx/include/support/win32/locale_win32.h +FILE: ../../../third_party/libcxx/include/support/xlocale/__nop_locale_mgmt.h +FILE: ../../../third_party/libcxx/include/support/xlocale/__posix_l_fallback.h +FILE: ../../../third_party/libcxx/include/support/xlocale/__strtonum_fallback.h +FILE: ../../../third_party/libcxx/include/system_error +FILE: ../../../third_party/libcxx/include/tgmath.h +FILE: ../../../third_party/libcxx/include/thread +FILE: ../../../third_party/libcxx/include/tuple +FILE: ../../../third_party/libcxx/include/type_traits +FILE: ../../../third_party/libcxx/include/typeindex +FILE: ../../../third_party/libcxx/include/typeinfo +FILE: ../../../third_party/libcxx/include/unordered_map +FILE: ../../../third_party/libcxx/include/unordered_set +FILE: ../../../third_party/libcxx/include/utility +FILE: ../../../third_party/libcxx/include/valarray +FILE: ../../../third_party/libcxx/include/variant +FILE: ../../../third_party/libcxx/include/vector +FILE: ../../../third_party/libcxx/include/version +FILE: ../../../third_party/libcxx/include/wchar.h +FILE: ../../../third_party/libcxx/include/wctype.h +FILE: ../../../third_party/libcxx/lib/abi/3.9/x86_64-apple-darwin16.abilist +FILE: ../../../third_party/libcxx/lib/abi/3.9/x86_64-linux-gnu.abilist +FILE: ../../../third_party/libcxx/lib/abi/4.0/x86_64-apple-darwin16.abilist +FILE: ../../../third_party/libcxx/lib/abi/4.0/x86_64-unknown-linux-gnu.abilist +FILE: ../../../third_party/libcxx/lib/abi/5.0/x86_64-apple-darwin16.abilist +FILE: ../../../third_party/libcxx/lib/abi/5.0/x86_64-unknown-linux-gnu.abilist +FILE: ../../../third_party/libcxx/lib/abi/6.0/x86_64-apple-darwin16.abilist +FILE: ../../../third_party/libcxx/lib/abi/6.0/x86_64-unknown-linux-gnu.abilist +FILE: ../../../third_party/libcxx/lib/abi/x86_64-apple-darwin.v1.abilist +FILE: ../../../third_party/libcxx/lib/abi/x86_64-apple-darwin.v2.abilist +FILE: ../../../third_party/libcxx/lib/abi/x86_64-unknown-linux-gnu.v1.abilist +FILE: ../../../third_party/libcxx/lib/libc++abi-new-delete.exp +FILE: ../../../third_party/libcxx/lib/libc++abi.exp +FILE: ../../../third_party/libcxx/lib/libc++abi2.exp +FILE: ../../../third_party/libcxx/lib/libc++sjlj-abi.exp +FILE: ../../../third_party/libcxx/lib/libc++unexp.exp +FILE: ../../../third_party/libcxx/lib/notweak.exp +FILE: ../../../third_party/libcxx/lib/weak.exp +FILE: ../../../third_party/libcxx/src/algorithm.cpp +FILE: ../../../third_party/libcxx/src/any.cpp +FILE: ../../../third_party/libcxx/src/bind.cpp +FILE: ../../../third_party/libcxx/src/charconv.cpp +FILE: ../../../third_party/libcxx/src/chrono.cpp +FILE: ../../../third_party/libcxx/src/condition_variable.cpp +FILE: ../../../third_party/libcxx/src/debug.cpp +FILE: ../../../third_party/libcxx/src/exception.cpp +FILE: ../../../third_party/libcxx/src/experimental/memory_resource.cpp +FILE: ../../../third_party/libcxx/src/filesystem/directory_iterator.cpp +FILE: ../../../third_party/libcxx/src/filesystem/filesystem_common.h +FILE: ../../../third_party/libcxx/src/filesystem/int128_builtins.cpp +FILE: ../../../third_party/libcxx/src/filesystem/operations.cpp +FILE: ../../../third_party/libcxx/src/functional.cpp +FILE: ../../../third_party/libcxx/src/future.cpp +FILE: ../../../third_party/libcxx/src/hash.cpp +FILE: ../../../third_party/libcxx/src/include/apple_availability.h +FILE: ../../../third_party/libcxx/src/include/atomic_support.h +FILE: ../../../third_party/libcxx/src/include/config_elast.h +FILE: ../../../third_party/libcxx/src/include/refstring.h +FILE: ../../../third_party/libcxx/src/ios.cpp +FILE: ../../../third_party/libcxx/src/iostream.cpp +FILE: ../../../third_party/libcxx/src/locale.cpp +FILE: ../../../third_party/libcxx/src/memory.cpp +FILE: ../../../third_party/libcxx/src/mutex.cpp +FILE: ../../../third_party/libcxx/src/new.cpp +FILE: ../../../third_party/libcxx/src/optional.cpp +FILE: ../../../third_party/libcxx/src/random.cpp +FILE: ../../../third_party/libcxx/src/regex.cpp +FILE: ../../../third_party/libcxx/src/shared_mutex.cpp +FILE: ../../../third_party/libcxx/src/stdexcept.cpp +FILE: ../../../third_party/libcxx/src/string.cpp +FILE: ../../../third_party/libcxx/src/strstream.cpp +FILE: ../../../third_party/libcxx/src/support/runtime/exception_fallback.ipp +FILE: ../../../third_party/libcxx/src/support/runtime/exception_glibcxx.ipp +FILE: ../../../third_party/libcxx/src/support/runtime/exception_libcxxabi.ipp +FILE: ../../../third_party/libcxx/src/support/runtime/exception_libcxxrt.ipp +FILE: ../../../third_party/libcxx/src/support/runtime/exception_msvc.ipp +FILE: ../../../third_party/libcxx/src/support/runtime/exception_pointer_cxxabi.ipp +FILE: ../../../third_party/libcxx/src/support/runtime/exception_pointer_glibcxx.ipp +FILE: ../../../third_party/libcxx/src/support/runtime/exception_pointer_msvc.ipp +FILE: ../../../third_party/libcxx/src/support/runtime/exception_pointer_unimplemented.ipp +FILE: ../../../third_party/libcxx/src/support/runtime/new_handler_fallback.ipp +FILE: ../../../third_party/libcxx/src/support/win32/locale_win32.cpp +FILE: ../../../third_party/libcxx/src/support/win32/support.cpp +FILE: ../../../third_party/libcxx/src/support/win32/thread_win32.cpp +FILE: ../../../third_party/libcxx/src/system_error.cpp +FILE: ../../../third_party/libcxx/src/thread.cpp +FILE: ../../../third_party/libcxx/src/typeinfo.cpp +FILE: ../../../third_party/libcxx/src/utility.cpp +FILE: ../../../third_party/libcxx/src/valarray.cpp +FILE: ../../../third_party/libcxx/src/variant.cpp +FILE: ../../../third_party/libcxx/src/vector.cpp +FILE: ../../../third_party/libcxx/www/TS_deprecation.html +FILE: ../../../third_party/libcxx/www/atomic_design.html +FILE: ../../../third_party/libcxx/www/atomic_design_a.html +FILE: ../../../third_party/libcxx/www/atomic_design_b.html +FILE: ../../../third_party/libcxx/www/atomic_design_c.html +FILE: ../../../third_party/libcxx/www/cxx1y_status.html +FILE: ../../../third_party/libcxx/www/cxx1z_status.html +FILE: ../../../third_party/libcxx/www/cxx2a_status.html +FILE: ../../../third_party/libcxx/www/index.html +FILE: ../../../third_party/libcxx/www/ts1z_status.html +FILE: ../../../third_party/libcxx/www/type_traits_design.html +FILE: ../../../third_party/libcxx/www/upcoming_meeting.html +---------------------------------------------------------------------------------------------------- +University of Illinois/NCSA +Open Source License + +Copyright (c) 2009-2017 by the contributors listed in CREDITS.TXT + +All rights reserved. + +Developed by: + + LLVM Team + + University of Illinois at Urbana-Champaign + + http://llvm.org + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal with +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimers. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimers in the + documentation and/or other materials provided with the distribution. + + * Neither the names of the LLVM Team, University of Illinois at + Urbana-Champaign, nor the names of its contributors may be used to + endorse or promote products derived from this Software without specific + prior written permission. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE +SOFTWARE. +==================================================================================================== + +==================================================================================================== +LIBRARY: libcxxabi +ORIGIN: null +TYPE: LicenseType.bsd +FILE: ../../../third_party/libcxxabi/.arcconfig +FILE: ../../../third_party/libcxxabi/fuzz/cxa_demangle_fuzzer.cpp +FILE: ../../../third_party/libcxxabi/src/demangle/Compiler.h +FILE: ../../../third_party/libcxxabi/src/demangle/StringView.h +FILE: ../../../third_party/libcxxabi/src/demangle/Utility.h +FILE: ../../../third_party/libcxxabi/www/index.html +FILE: ../../../third_party/libcxxabi/www/spec.html +---------------------------------------------------------------------------------------------------- +University of Illinois/NCSA +Open Source License + +Copyright (c) 2009-2018 by the contributors listed in CREDITS.TXT + +All rights reserved. + +Developed by: + + LLVM Team + + University of Illinois at Urbana-Champaign + + http://llvm.org + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal with +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimers. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimers in the + documentation and/or other materials provided with the distribution. + + * Neither the names of the LLVM Team, University of Illinois at + Urbana-Champaign, nor the names of its contributors may be used to + endorse or promote products derived from this Software without specific + prior written permission. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE +SOFTWARE. +==================================================================================================== + ==================================================================================================== LIBRARY: libjpeg-turbo ORIGIN: ../../../third_party/libjpeg-turbo/README.ijg @@ -17844,4 +18385,4 @@ freely, subject to the following restrictions: misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. ==================================================================================================== -Total license count: 304 +Total license count: 307 diff --git a/sky/packages/sky_engine/LICENSE b/sky/packages/sky_engine/LICENSE index 9344e042338f0..3aca597912f8d 100644 --- a/sky/packages/sky_engine/LICENSE +++ b/sky/packages/sky_engine/LICENSE @@ -7116,6 +7116,117 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- +libcxx + +University of Illinois/NCSA +Open Source License + +Copyright (c) 2009-2017 by the contributors listed in CREDITS.TXT + +All rights reserved. + +Developed by: + + LLVM Team + + University of Illinois at Urbana-Champaign + + http://llvm.org + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal with +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimers. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimers in the + documentation and/or other materials provided with the distribution. + + * Neither the names of the LLVM Team, University of Illinois at + Urbana-Champaign, nor the names of its contributors may be used to + endorse or promote products derived from this Software without specific + prior written permission. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE +SOFTWARE. +-------------------------------------------------------------------------------- +libcxx +libcxxabi + +Copyright (c) 2009-2014 by the contributors listed in CREDITS.TXT + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +-------------------------------------------------------------------------------- +libcxxabi + +University of Illinois/NCSA +Open Source License + +Copyright (c) 2009-2018 by the contributors listed in CREDITS.TXT + +All rights reserved. + +Developed by: + + LLVM Team + + University of Illinois at Urbana-Champaign + + http://llvm.org + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal with +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimers. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimers in the + documentation and/or other materials provided with the distribution. + + * Neither the names of the LLVM Team, University of Illinois at + Urbana-Champaign, nor the names of its contributors may be used to + endorse or promote products derived from this Software without specific + prior written permission. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE +SOFTWARE. +-------------------------------------------------------------------------------- libjpeg-turbo Copyright (C) 1999-2006, MIYASAKA Masaru. diff --git a/tools/licenses/lib/main.dart b/tools/licenses/lib/main.dart index 39aff8a821c0e..a2ab8e2057003 100644 --- a/tools/licenses/lib/main.dart +++ b/tools/licenses/lib/main.dart @@ -809,8 +809,7 @@ class _RepositoryMultiLicenseNoticesForFilesFile extends _RepositoryLicenseFile Iterable get licenses => _licenses.values; } -// TODO(goderbauer): use this in https://github.com/flutter/engine/pull/6886. -class _RepositoryCxxStlDualLicenseFile extends _RepositoryLicenseFile { // ignore: unused_element +class _RepositoryCxxStlDualLicenseFile extends _RepositoryLicenseFile { _RepositoryCxxStlDualLicenseFile(_RepositoryDirectory parent, fs.TextFile io) : _licenses = _parseLicenses(io), super(parent, io); @@ -1488,6 +1487,62 @@ class _RepositoryJSR305SrcDirectory extends _RepositoryDirectory { } } +class _RepositoryLibcxxDirectory extends _RepositoryDirectory { + _RepositoryLibcxxDirectory(_RepositoryDirectory parent, fs.Directory io) : super(parent, io); + + @override + bool shouldRecurse(fs.IoNode entry) { + return entry.name != 'utils' + && super.shouldRecurse(entry); + } + + @override + _RepositoryDirectory createSubdirectory(fs.Directory entry) { + if (entry.name == 'src') + return new _RepositoryLibcxxSrcDirectory(this, entry); + return super.createSubdirectory(entry); + } + + @override + _RepositoryFile createFile(fs.IoNode entry) { + if (entry.name == 'LICENSE.TXT') + return new _RepositoryCxxStlDualLicenseFile(this, entry); + return super.createFile(entry); + } +} + +class _RepositoryLibcxxSrcDirectory extends _RepositoryDirectory { + _RepositoryLibcxxSrcDirectory(_RepositoryDirectory parent, fs.Directory io) : super(parent, io); + + @override + _RepositoryDirectory createSubdirectory(fs.Directory entry) { + if (entry.name == 'support') + return new _RepositoryLibcxxSrcSupportDirectory(this, entry); + return super.createSubdirectory(entry); + } +} + +class _RepositoryLibcxxSrcSupportDirectory extends _RepositoryDirectory { + _RepositoryLibcxxSrcSupportDirectory(_RepositoryDirectory parent, fs.Directory io) : super(parent, io); + + @override + bool shouldRecurse(fs.IoNode entry) { + return entry.name != 'solaris' + && super.shouldRecurse(entry); + } +} + +class _RepositoryLibcxxabiDirectory extends _RepositoryDirectory { + _RepositoryLibcxxabiDirectory(_RepositoryDirectory parent, fs.Directory io) : super(parent, io); + + @override + _RepositoryFile createFile(fs.IoNode entry) { + if (entry.name == 'LICENSE.TXT') + return new _RepositoryCxxStlDualLicenseFile(this, entry); + return super.createFile(entry); + } +} + class _RepositoryLibJpegDirectory extends _RepositoryDirectory { _RepositoryLibJpegDirectory(_RepositoryDirectory parent, fs.Directory io) : super(parent, io); @@ -1699,6 +1754,10 @@ class _RepositoryRootThirdPartyDirectory extends _RepositoryGenericThirdPartyDir return new _RepositoryIcuDirectory(this, entry); if (entry.name == 'jsr-305') return new _RepositoryJSR305Directory(this, entry); + if (entry.name == 'libcxx') + return new _RepositoryLibcxxDirectory(this, entry); + if (entry.name == 'libcxxabi') + return new _RepositoryLibcxxabiDirectory(this, entry); if (entry.name == 'libjpeg') return new _RepositoryLibJpegDirectory(this, entry); if (entry.name == 'libjpeg_turbo' || entry.name == 'libjpeg-turbo') From 648b844b78c6d5cf919d71701637fb66c890c805 Mon Sep 17 00:00:00 2001 From: Michael Goderbauer Date: Tue, 11 Dec 2018 21:35:12 -0800 Subject: [PATCH 0527/1537] Roll buildroot to 4cb5a74c9612b71b917997f46e97da6d1051eab4 (#7194) --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index e0da8f4d3ac47..09dac5fff6ab1 100644 --- a/DEPS +++ b/DEPS @@ -117,7 +117,7 @@ allowed_hosts = [ ] deps = { - 'src': 'https://github.com/flutter/buildroot.git' + '@' + '466a8d1bf8403c35cd5a2dffe958087ba31504f7', + 'src': 'https://github.com/flutter/buildroot.git' + '@' + '4cb5a74c9612b71b917997f46e97da6d1051eab4', # Fuchsia compatibility # From abb1d3a6c0b237e77a0ace600b6478ccf6af6ea1 Mon Sep 17 00:00:00 2001 From: Michael Goderbauer Date: Tue, 11 Dec 2018 22:17:32 -0800 Subject: [PATCH 0528/1537] Roll buildroot to 8e538639660413490ea9261eee84864005e240f4 (#7195) --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index 09dac5fff6ab1..439f250d98509 100644 --- a/DEPS +++ b/DEPS @@ -117,7 +117,7 @@ allowed_hosts = [ ] deps = { - 'src': 'https://github.com/flutter/buildroot.git' + '@' + '4cb5a74c9612b71b917997f46e97da6d1051eab4', + 'src': 'https://github.com/flutter/buildroot.git' + '@' + '8e538639660413490ea9261eee84864005e240f4', # Fuchsia compatibility # From e5195ee479c44d764d97de6d3f850a1114a87966 Mon Sep 17 00:00:00 2001 From: Brian Salomon Date: Wed, 12 Dec 2018 10:58:14 -0500 Subject: [PATCH 0529/1537] Remove unnecessary includes of Ganesh headers (#7189) --- flow/layers/platform_view_layer.h | 7 ++----- flow/layers/texture_layer.h | 7 ++----- shell/platform/android/android_external_texture_gl.cc | 2 +- shell/platform/darwin/ios/ios_external_texture_gl.mm | 2 -- 4 files changed, 5 insertions(+), 13 deletions(-) diff --git a/flow/layers/platform_view_layer.h b/flow/layers/platform_view_layer.h index b5fd2b4809909..f3e0c48449caf 100644 --- a/flow/layers/platform_view_layer.h +++ b/flow/layers/platform_view_layer.h @@ -6,11 +6,8 @@ #define FLUTTER_FLOW_LAYERS_PLATFORM_VIEW_LAYER_H_ #include "flutter/flow/layers/layer.h" -#include "third_party/skia/include/core/SkSurface.h" -#include "third_party/skia/include/gpu/GrBackendSurface.h" -#include "third_party/skia/include/gpu/GrContext.h" -#include "third_party/skia/include/gpu/GrTexture.h" -#include "third_party/skia/include/gpu/GrTypes.h" +#include "third_party/skia/include/core/SkPoint.h" +#include "third_party/skia/include/core/SkSize.h" namespace flow { diff --git a/flow/layers/texture_layer.h b/flow/layers/texture_layer.h index 1563745e652b7..f761b5d02d053 100644 --- a/flow/layers/texture_layer.h +++ b/flow/layers/texture_layer.h @@ -6,11 +6,8 @@ #define FLUTTER_FLOW_LAYERS_TEXTURE_LAYER_H_ #include "flutter/flow/layers/layer.h" -#include "third_party/skia/include/core/SkSurface.h" -#include "third_party/skia/include/gpu/GrBackendSurface.h" -#include "third_party/skia/include/gpu/GrContext.h" -#include "third_party/skia/include/gpu/GrTexture.h" -#include "third_party/skia/include/gpu/GrTypes.h" +#include "third_party/skia/include/core/SkPoint.h" +#include "third_party/skia/include/core/SkSize.h" namespace flow { diff --git a/shell/platform/android/android_external_texture_gl.cc b/shell/platform/android/android_external_texture_gl.cc index c587becd60406..ead73ccddef79 100644 --- a/shell/platform/android/android_external_texture_gl.cc +++ b/shell/platform/android/android_external_texture_gl.cc @@ -7,7 +7,7 @@ #include #include "flutter/shell/platform/android/platform_view_android_jni.h" -#include "third_party/skia/include/gpu/GrTexture.h" +#include "third_party/skia/include/gpu/GrBackendSurface.h" namespace shell { diff --git a/shell/platform/darwin/ios/ios_external_texture_gl.mm b/shell/platform/darwin/ios/ios_external_texture_gl.mm index e77970697d079..543d2582e6310 100644 --- a/shell/platform/darwin/ios/ios_external_texture_gl.mm +++ b/shell/platform/darwin/ios/ios_external_texture_gl.mm @@ -11,8 +11,6 @@ #include "flutter/shell/platform/darwin/ios/framework/Source/vsync_waiter_ios.h" #include "third_party/skia/include/core/SkSurface.h" #include "third_party/skia/include/gpu/GrBackendSurface.h" -#include "third_party/skia/include/gpu/GrTexture.h" -#include "third_party/skia/include/gpu/GrTypes.h" namespace shell { From 2bd75ae8bae541e4d5413f1715ff3a8b99d1dffe Mon Sep 17 00:00:00 2001 From: liyuqian Date: Wed, 12 Dec 2018 10:28:44 -0800 Subject: [PATCH 0530/1537] Support querying display refresh rate in engine (#7002) The current implementation only deals with Android devices and we'll add iOS devices support soon. --- runtime/service_protocol.cc | 3 +++ runtime/service_protocol.h | 1 + shell/common/animator.cc | 4 ++++ shell/common/animator.h | 2 ++ shell/common/engine.cc | 4 ++++ shell/common/engine.h | 2 ++ shell/common/shell.cc | 15 +++++++++++++++ shell/common/shell.h | 5 +++++ shell/common/vsync_waiter.h | 6 ++++++ .../android/io/flutter/view/FlutterView.java | 1 + .../android/io/flutter/view/VsyncWaiter.java | 4 ++++ shell/platform/android/vsync_waiter_android.cc | 16 ++++++++++++++++ shell/platform/android/vsync_waiter_android.h | 2 ++ 13 files changed, 65 insertions(+) diff --git a/runtime/service_protocol.cc b/runtime/service_protocol.cc index ea93a120facc7..42e4eb7528d17 100644 --- a/runtime/service_protocol.cc +++ b/runtime/service_protocol.cc @@ -30,6 +30,8 @@ const fml::StringView ServiceProtocol::kFlushUIThreadTasksExtensionName = "_flutter.flushUIThreadTasks"; const fml::StringView ServiceProtocol::kSetAssetBundlePathExtensionName = "_flutter.setAssetBundlePath"; +const fml::StringView ServiceProtocol::kGetDisplayRefreshRateExtensionName = + "_flutter.getDisplayRefreshRate"; static constexpr fml::StringView kViewIdPrefx = "_flutterView/"; static constexpr fml::StringView kListViewsExtensionName = "_flutter.listViews"; @@ -45,6 +47,7 @@ ServiceProtocol::ServiceProtocol() kRunInViewExtensionName, kFlushUIThreadTasksExtensionName, kSetAssetBundlePathExtensionName, + kGetDisplayRefreshRateExtensionName, }), handlers_mutex_(fml::SharedMutex::Create()) {} diff --git a/runtime/service_protocol.h b/runtime/service_protocol.h index 1ab1f9183d208..b514beaf55fcf 100644 --- a/runtime/service_protocol.h +++ b/runtime/service_protocol.h @@ -27,6 +27,7 @@ class ServiceProtocol { static const fml::StringView kRunInViewExtensionName; static const fml::StringView kFlushUIThreadTasksExtensionName; static const fml::StringView kSetAssetBundlePathExtensionName; + static const fml::StringView kGetDisplayRefreshRateExtensionName; class Handler { public: diff --git a/shell/common/animator.cc b/shell/common/animator.cc index 4c281e1eceba7..19aaad5394f60 100644 --- a/shell/common/animator.cc +++ b/shell/common/animator.cc @@ -39,6 +39,10 @@ Animator::Animator(Delegate& delegate, Animator::~Animator() = default; +float Animator::GetDisplayRefreshRate() const { + return waiter_->GetDisplayRefreshRate(); +} + void Animator::Stop() { paused_ = true; } diff --git a/shell/common/animator.h b/shell/common/animator.h index 2d60475621562..4f75b8fb3cb4d 100644 --- a/shell/common/animator.h +++ b/shell/common/animator.h @@ -36,6 +36,8 @@ class Animator final { ~Animator(); + float GetDisplayRefreshRate() const; + void RequestFrame(bool regenerate_layer_tree = true); void Render(std::unique_ptr layer_tree); diff --git a/shell/common/engine.cc b/shell/common/engine.cc index dbc794dc0a443..56c55310e7f8b 100644 --- a/shell/common/engine.cc +++ b/shell/common/engine.cc @@ -69,6 +69,10 @@ Engine::Engine(Delegate& delegate, Engine::~Engine() = default; +float Engine::GetDisplayRefreshRate() const { + return animator_->GetDisplayRefreshRate(); +} + fml::WeakPtr Engine::GetWeakPtr() const { return weak_factory_.GetWeakPtr(); } diff --git a/shell/common/engine.h b/shell/common/engine.h index fd5671bc36648..2b72592575526 100644 --- a/shell/common/engine.h +++ b/shell/common/engine.h @@ -66,6 +66,8 @@ class Engine final : public blink::RuntimeDelegate { ~Engine() override; + float GetDisplayRefreshRate() const; + fml::WeakPtr GetWeakPtr() const; FML_WARN_UNUSED_RESULT diff --git a/shell/common/shell.cc b/shell/common/shell.cc index 4adf55a3f6c74..1847c115f51bb 100644 --- a/shell/common/shell.cc +++ b/shell/common/shell.cc @@ -293,6 +293,11 @@ Shell::Shell(blink::TaskRunners task_runners, blink::Settings settings) task_runners_.GetUITaskRunner(), std::bind(&Shell::OnServiceProtocolSetAssetBundlePath, this, std::placeholders::_1, std::placeholders::_2)}; + service_protocol_handlers_ + [blink::ServiceProtocol::kGetDisplayRefreshRateExtensionName.ToString()] = + {task_runners_.GetUITaskRunner(), + std::bind(&Shell::OnServiceProtocolGetDisplayRefreshRate, this, + std::placeholders::_1, std::placeholders::_2)}; } Shell::~Shell() { @@ -939,6 +944,16 @@ bool Shell::OnServiceProtocolFlushUIThreadTasks( return true; } +bool Shell::OnServiceProtocolGetDisplayRefreshRate( + const blink::ServiceProtocol::Handler::ServiceProtocolMap& params, + rapidjson::Document& response) { + FML_DCHECK(task_runners_.GetUITaskRunner()->RunsTasksOnCurrentThread()); + response.SetObject(); + response.AddMember("fps", engine_->GetDisplayRefreshRate(), + response.GetAllocator()); + return true; +} + // Service protocol handler bool Shell::OnServiceProtocolSetAssetBundlePath( const blink::ServiceProtocol::Handler::ServiceProtocolMap& params, diff --git a/shell/common/shell.h b/shell/common/shell.h index 241823038c6a5..955d9e86c4c90 100644 --- a/shell/common/shell.h +++ b/shell/common/shell.h @@ -225,6 +225,11 @@ class Shell final : public PlatformView::Delegate, const blink::ServiceProtocol::Handler::ServiceProtocolMap& params, rapidjson::Document& response); + // Service protocol handler + bool OnServiceProtocolGetDisplayRefreshRate( + const blink::ServiceProtocol::Handler::ServiceProtocolMap& params, + rapidjson::Document& response); + FML_DISALLOW_COPY_AND_ASSIGN(Shell); }; diff --git a/shell/common/vsync_waiter.h b/shell/common/vsync_waiter.h index 0e3012c2de95e..8af5b05abfda0 100644 --- a/shell/common/vsync_waiter.h +++ b/shell/common/vsync_waiter.h @@ -14,6 +14,8 @@ namespace shell { +constexpr float kUnknownRefreshRateFPS = 0.0; + class VsyncWaiter : public std::enable_shared_from_this { public: using Callback = std::function { void FireCallback(fml::TimePoint frame_start_time, fml::TimePoint frame_target_time); + // Get the display's maximum refresh rate in the unit of frame per second. + // Return 0.0 if the refresh rate is unkonwn. + virtual float GetDisplayRefreshRate() const { return 0.0; } + protected: const blink::TaskRunners task_runners_; std::mutex callback_mutex_; diff --git a/shell/platform/android/io/flutter/view/FlutterView.java b/shell/platform/android/io/flutter/view/FlutterView.java index 759b2744cdd6a..a8fb3ff483450 100644 --- a/shell/platform/android/io/flutter/view/FlutterView.java +++ b/shell/platform/android/io/flutter/view/FlutterView.java @@ -806,6 +806,7 @@ private void updateViewportMetrics() { WindowManager wm = (WindowManager) getContext().getSystemService(Context.WINDOW_SERVICE); float fps = wm.getDefaultDisplay().getRefreshRate(); VsyncWaiter.refreshPeriodNanos = (long) (1000000000.0 / fps); + VsyncWaiter.refreshRateFPS = fps; } // Called by native to update the semantics/accessibility tree. diff --git a/shell/platform/android/io/flutter/view/VsyncWaiter.java b/shell/platform/android/io/flutter/view/VsyncWaiter.java index 526d836167efd..cce4a96f868da 100644 --- a/shell/platform/android/io/flutter/view/VsyncWaiter.java +++ b/shell/platform/android/io/flutter/view/VsyncWaiter.java @@ -10,6 +10,10 @@ public class VsyncWaiter { // This estimate will be updated by FlutterView when it is attached to a Display. public static long refreshPeriodNanos = 1000000000 / 60; + // This should also be updated by FlutterView when it is attached to a Display. + // The initial value of 0.0 indicates unkonwn refresh rate. + public static float refreshRateFPS = 0.0f; + public static void asyncWaitForVsync(final long cookie) { Choreographer.getInstance().postFrameCallback(new Choreographer.FrameCallback() { @Override diff --git a/shell/platform/android/vsync_waiter_android.cc b/shell/platform/android/vsync_waiter_android.cc index 7d551c71143a8..bd8cea3600cb2 100644 --- a/shell/platform/android/vsync_waiter_android.cc +++ b/shell/platform/android/vsync_waiter_android.cc @@ -81,6 +81,22 @@ bool VsyncWaiterAndroid::Register(JNIEnv* env) { return env->RegisterNatives(clazz, methods, arraysize(methods)) == 0; } +float VsyncWaiterAndroid::GetDisplayRefreshRate() const { + JNIEnv* env = fml::jni::AttachCurrentThread(); + if (g_vsync_waiter_class == nullptr) { + return kUnknownRefreshRateFPS; + } + jclass clazz = g_vsync_waiter_class->obj(); + if (clazz == nullptr) { + return kUnknownRefreshRateFPS; + } + jfieldID fid = env->GetStaticFieldID(clazz, "refreshRateFPS", "F"); + // We can safely read this 32-bit float from Java in any thread because + // 32-bits read and write are guaranteed to be atomic: + // https://stackoverflow.com/questions/11459543/should-getters-and-setters-be-synchronized/11459616#11459616 + return env->GetStaticFloatField(clazz, fid); +} + static void ConsumePendingCallback(jlong java_baton, fml::TimePoint frame_start_time, fml::TimePoint frame_target_time) { diff --git a/shell/platform/android/vsync_waiter_android.h b/shell/platform/android/vsync_waiter_android.h index 46fa28fc48f2e..76cfbd73667f2 100644 --- a/shell/platform/android/vsync_waiter_android.h +++ b/shell/platform/android/vsync_waiter_android.h @@ -21,6 +21,8 @@ class VsyncWaiterAndroid final : public VsyncWaiter { ~VsyncWaiterAndroid() override; + float GetDisplayRefreshRate() const override; + private: // |shell::VsyncWaiter| void AwaitVSync() override; From 793a08bbfdc0e4b0ee1bcd79ceddd770abe2d9d6 Mon Sep 17 00:00:00 2001 From: liyuqian Date: Wed, 12 Dec 2018 10:29:02 -0800 Subject: [PATCH 0531/1537] Add .woff file to binary format (#7202) Fixes https://github.com/flutter/flutter/issues/25285 --- tools/licenses/lib/filesystem.dart | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/licenses/lib/filesystem.dart b/tools/licenses/lib/filesystem.dart index 49d4978e88b3b..81f741d97dd8b 100644 --- a/tools/licenses/lib/filesystem.dart +++ b/tools/licenses/lib/filesystem.dart @@ -186,6 +186,7 @@ FileType identifyFile(String name, Reader reader) { case '.ttf': return FileType.binary; // TrueType Font case '.ttcf': // (mac) case '.ttc': return FileType.binary; // TrueType Collection (windows) + case '.woff': return FileType.binary; // Web Open Font Format case '.otf': return FileType.binary; // OpenType Font // Graphics formats case '.gif': return FileType.binary; // GIF From daf0ededbd467670696142d6086aaff8db38a3f5 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Wed, 12 Dec 2018 16:01:15 -0500 Subject: [PATCH 0532/1537] Roll src/third_party/skia 6417060b1c23..340aeda6b3ba (41 commits) (#7205) https://skia.googlesource.com/skia.git/+log/6417060b1c23..340aeda6b3ba Created with: gclient setdep -r src/third_party/skia@340aeda6b3ba The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 37 ++++++++++++++++++-------------- 2 files changed, 22 insertions(+), 17 deletions(-) diff --git a/DEPS b/DEPS index 439f250d98509..935b4e4f20031 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '6417060b1c2330919c6af1a63570752a4c473674', + 'skia_revision': '340aeda6b3ba50d145413685661b13edea0d52ad', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 796a9b412a24a..47f274deb9ba4 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 13fc10881fe243f710665ac16224bbb5 +Signature: 904762efaee11ecdcf1b3308f5d174b4 UNUSED LICENSES: @@ -1312,6 +1312,7 @@ FILE: ../../../third_party/skia/gm/crbug_887103.cpp FILE: ../../../third_party/skia/gm/crbug_892988.cpp FILE: ../../../third_party/skia/gm/crbug_899512.cpp FILE: ../../../third_party/skia/gm/crbug_905548.cpp +FILE: ../../../third_party/skia/gm/daa.cpp FILE: ../../../third_party/skia/gm/drawimageset.cpp FILE: ../../../third_party/skia/gm/drawquadset.cpp FILE: ../../../third_party/skia/gm/fwidth_squircle.cpp @@ -1398,6 +1399,7 @@ FILE: ../../../third_party/skia/modules/sksg/src/SkSGPlane.cpp FILE: ../../../third_party/skia/modules/sksg/src/SkSGRoundEffect.cpp FILE: ../../../third_party/skia/modules/sksg/src/SkSGScene.cpp FILE: ../../../third_party/skia/modules/sksg/src/SkSGText.cpp +FILE: ../../../third_party/skia/modules/skshaper/src/SkShaper.cpp FILE: ../../../third_party/skia/samplecode/SampleAnimatedImage.cpp FILE: ../../../third_party/skia/samplecode/SampleCusp.cpp FILE: ../../../third_party/skia/samplecode/SampleFlutterAnimate.cpp @@ -1691,7 +1693,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ==================================================================================================== LIBRARY: skcms -ORIGIN: ../../../third_party/skia/third_party/skcms/LICENSE +ORIGIN: ../../../third_party/skia/include/third_party/vulkan/LICENSE TYPE: LicenseType.bsd FILE: ../../../third_party/skia/third_party/skcms/version.sha1 ---------------------------------------------------------------------------------------------------- @@ -1729,19 +1731,19 @@ LIBRARY: skia LIBRARY: vulkan ORIGIN: ../../../flutter/third_party/txt/LICENSE TYPE: LicenseType.apache +FILE: ../../../third_party/skia/include/third_party/vulkan/vulkan/vk_platform.h +FILE: ../../../third_party/skia/include/third_party/vulkan/vulkan/vulkan.h +FILE: ../../../third_party/skia/include/third_party/vulkan/vulkan/vulkan_android.h +FILE: ../../../third_party/skia/include/third_party/vulkan/vulkan/vulkan_core.h +FILE: ../../../third_party/skia/include/third_party/vulkan/vulkan/vulkan_ios.h +FILE: ../../../third_party/skia/include/third_party/vulkan/vulkan/vulkan_macos.h +FILE: ../../../third_party/skia/include/third_party/vulkan/vulkan/vulkan_win32.h +FILE: ../../../third_party/skia/include/third_party/vulkan/vulkan/vulkan_xcb.h FILE: ../../../third_party/skia/modules/pathkit/npm-asmjs/example.html FILE: ../../../third_party/skia/modules/pathkit/npm-asmjs/package.json FILE: ../../../third_party/skia/modules/pathkit/npm-wasm/example.html FILE: ../../../third_party/skia/modules/pathkit/npm-wasm/package.json FILE: ../../../third_party/skia/src/images/SkWebpEncoder.cpp -FILE: ../../../third_party/skia/third_party/vulkan/vulkan/vk_platform.h -FILE: ../../../third_party/skia/third_party/vulkan/vulkan/vulkan.h -FILE: ../../../third_party/skia/third_party/vulkan/vulkan/vulkan_android.h -FILE: ../../../third_party/skia/third_party/vulkan/vulkan/vulkan_core.h -FILE: ../../../third_party/skia/third_party/vulkan/vulkan/vulkan_ios.h -FILE: ../../../third_party/skia/third_party/vulkan/vulkan/vulkan_macos.h -FILE: ../../../third_party/skia/third_party/vulkan/vulkan/vulkan_win32.h -FILE: ../../../third_party/skia/third_party/vulkan/vulkan/vulkan_xcb.h ---------------------------------------------------------------------------------------------------- Apache License Version 2.0, January 2004 @@ -2042,6 +2044,8 @@ FILE: ../../../third_party/skia/docs/overview.bmh FILE: ../../../third_party/skia/docs/status.json FILE: ../../../third_party/skia/docs/undocumented.bmh FILE: ../../../third_party/skia/docs/usingBookmaker.bmh +FILE: ../../../third_party/skia/experimental/canvaskit/canvaskit/Roboto-Regular.ttf +FILE: ../../../third_party/skia/experimental/canvaskit/canvaskit/Roboto-Regular.woff FILE: ../../../third_party/skia/experimental/canvaskit/canvaskit/example.html FILE: ../../../third_party/skia/experimental/canvaskit/canvaskit/node.example.js FILE: ../../../third_party/skia/experimental/canvaskit/canvaskit/package.json @@ -2049,6 +2053,7 @@ FILE: ../../../third_party/skia/experimental/canvaskit/canvaskit/test.png FILE: ../../../third_party/skia/experimental/canvaskit/cpu.js FILE: ../../../third_party/skia/experimental/canvaskit/debug.js FILE: ../../../third_party/skia/experimental/canvaskit/externs.js +FILE: ../../../third_party/skia/experimental/canvaskit/fonts/NotoMono-Regular.ttf FILE: ../../../third_party/skia/experimental/canvaskit/gpu.js FILE: ../../../third_party/skia/experimental/canvaskit/helper.js FILE: ../../../third_party/skia/experimental/canvaskit/htmlcanvas/_namedcolors.js @@ -2140,6 +2145,7 @@ FILE: ../../../third_party/skia/infra/bots/recipe_modules/build/examples/full.ex FILE: ../../../third_party/skia/infra/bots/recipe_modules/build/examples/full.expected/Build-Debian9-Clang-x86_64-Debug-OpenCL.json FILE: ../../../third_party/skia/infra/bots/recipe_modules/build/examples/full.expected/Build-Debian9-Clang-x86_64-Debug-SK_CPU_LIMIT_SSE41.json FILE: ../../../third_party/skia/infra/bots/recipe_modules/build/examples/full.expected/Build-Debian9-Clang-x86_64-Debug-SafeStack.json +FILE: ../../../third_party/skia/infra/bots/recipe_modules/build/examples/full.expected/Build-Debian9-Clang-x86_64-Debug-Tidy.json FILE: ../../../third_party/skia/infra/bots/recipe_modules/build/examples/full.expected/Build-Debian9-Clang-x86_64-Release-ASAN.json FILE: ../../../third_party/skia/infra/bots/recipe_modules/build/examples/full.expected/Build-Debian9-Clang-x86_64-Release-Fast.json FILE: ../../../third_party/skia/infra/bots/recipe_modules/build/examples/full.expected/Build-Debian9-Clang-x86_64-Release-NoDEPS.json @@ -2330,7 +2336,6 @@ FILE: ../../../third_party/skia/infra/bots/recipes/test.expected/failed_get_hash FILE: ../../../third_party/skia/infra/bots/recipes/test.expected/failed_pull.json FILE: ../../../third_party/skia/infra/bots/recipes/test.expected/failed_push.json FILE: ../../../third_party/skia/infra/bots/recipes/test.expected/internal_bot_2.json -FILE: ../../../third_party/skia/infra/bots/recipes/test.expected/internal_bot_5.json FILE: ../../../third_party/skia/infra/bots/recipes/test.expected/trybot.json FILE: ../../../third_party/skia/infra/bots/recipes/test_canvaskit.expected/Test-Debian9-EMCC-GCE-GPU-WEBGL1-wasm-Debug-All-CanvasKit.json FILE: ../../../third_party/skia/infra/bots/recipes/test_canvaskit.expected/canvaskit_trybot.json @@ -2802,6 +2807,7 @@ FILE: ../../../third_party/skia/include/core/SkMatrix44.h FILE: ../../../third_party/skia/include/core/SkSize.h FILE: ../../../third_party/skia/include/core/SkTLazy.h FILE: ../../../third_party/skia/include/effects/SkLayerDrawLooper.h +FILE: ../../../third_party/skia/include/gpu/GrRenderTarget.h FILE: ../../../third_party/skia/include/gpu/GrTexture.h FILE: ../../../third_party/skia/include/gpu/gl/GrGLConfig.h FILE: ../../../third_party/skia/include/gpu/gl/GrGLConfig_chrome.h @@ -2920,7 +2926,6 @@ FILE: ../../../third_party/skia/src/gpu/GrPathRendererChain.h FILE: ../../../third_party/skia/src/gpu/GrPathUtils.cpp FILE: ../../../third_party/skia/src/gpu/GrPathUtils.h FILE: ../../../third_party/skia/src/gpu/GrRenderTarget.cpp -FILE: ../../../third_party/skia/src/gpu/GrRenderTarget.h FILE: ../../../third_party/skia/src/gpu/GrStencilAttachment.cpp FILE: ../../../third_party/skia/src/gpu/GrStencilAttachment.h FILE: ../../../third_party/skia/src/gpu/GrStencilSettings.cpp @@ -3101,11 +3106,11 @@ FILE: ../../../third_party/skia/include/core/SkMultiPictureDraw.h FILE: ../../../third_party/skia/include/core/SkPictureRecorder.h FILE: ../../../third_party/skia/include/core/SkSurfaceProps.h FILE: ../../../third_party/skia/include/core/SkTextBlob.h +FILE: ../../../third_party/skia/include/gpu/GrGpuResource.h +FILE: ../../../third_party/skia/include/gpu/GrResourceKey.h FILE: ../../../third_party/skia/include/gpu/gl/GrGLAssembleInterface.h FILE: ../../../third_party/skia/include/ports/SkFontMgr_indirect.h FILE: ../../../third_party/skia/include/ports/SkRemotableFontMgr.h -FILE: ../../../third_party/skia/include/private/GrGpuResource.h -FILE: ../../../third_party/skia/include/private/GrResourceKey.h FILE: ../../../third_party/skia/include/private/SkHalf.h FILE: ../../../third_party/skia/samplecode/SampleHT.cpp FILE: ../../../third_party/skia/samplecode/SampleIdentityScale.cpp @@ -3315,9 +3320,9 @@ FILE: ../../../third_party/skia/include/core/SkImage.h FILE: ../../../third_party/skia/include/core/SkRRect.h FILE: ../../../third_party/skia/include/core/SkStrokeRec.h FILE: ../../../third_party/skia/include/core/SkSurface.h +FILE: ../../../third_party/skia/include/gpu/GrSurface.h FILE: ../../../third_party/skia/include/gpu/gl/GrGLFunctions.h FILE: ../../../third_party/skia/include/pathops/SkPathOps.h -FILE: ../../../third_party/skia/include/private/GrSurface.h FILE: ../../../third_party/skia/include/private/SkChecksum.h FILE: ../../../third_party/skia/include/private/SkPathRef.h FILE: ../../../third_party/skia/include/private/SkTInternalLList.h @@ -3597,12 +3602,12 @@ FILE: ../../../third_party/skia/include/core/SkTraceMemoryDump.h FILE: ../../../third_party/skia/include/effects/SkImageSource.h FILE: ../../../third_party/skia/include/effects/SkTableColorFilter.h FILE: ../../../third_party/skia/include/gpu/GrContextOptions.h +FILE: ../../../third_party/skia/include/gpu/GrSamplerState.h FILE: ../../../third_party/skia/include/gpu/gl/GrGLTypes.h FILE: ../../../third_party/skia/include/ports/SkFontMgr_android.h FILE: ../../../third_party/skia/include/ports/SkFontMgr_directory.h FILE: ../../../third_party/skia/include/ports/SkFontMgr_empty.h FILE: ../../../third_party/skia/include/ports/SkFontMgr_fontconfig.h -FILE: ../../../third_party/skia/include/private/GrSamplerState.h FILE: ../../../third_party/skia/include/private/SkMutex.h FILE: ../../../third_party/skia/include/private/SkNx.h FILE: ../../../third_party/skia/include/private/SkNx_neon.h From 571f47457c0e519f4d221449cf2ae3444ae3aed7 Mon Sep 17 00:00:00 2001 From: Justin McCandless Date: Wed, 12 Dec 2018 15:32:36 -0800 Subject: [PATCH 0533/1537] Update marked text before selection so textInRange is never called with (#6989) invalid input --- .../framework/Source/FlutterTextInputPlugin.mm | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/shell/platform/darwin/ios/framework/Source/FlutterTextInputPlugin.mm b/shell/platform/darwin/ios/framework/Source/FlutterTextInputPlugin.mm index 1e0bead42e5eb..0f7dc0a0d6812 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterTextInputPlugin.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterTextInputPlugin.mm @@ -216,6 +216,14 @@ - (void)setTextInputState:(NSDictionary*)state { [self.text setString:newText]; } + NSInteger composingBase = [state[@"composingBase"] intValue]; + NSInteger composingExtent = [state[@"composingExtent"] intValue]; + NSRange composingRange = [self clampSelection:NSMakeRange(MIN(composingBase, composingExtent), + ABS(composingBase - composingExtent)) + forText:self.text]; + self.markedTextRange = + composingRange.length > 0 ? [FlutterTextRange rangeWithNSRange:composingRange] : nil; + NSInteger selectionBase = [state[@"selectionBase"] intValue]; NSInteger selectionExtent = [state[@"selectionExtent"] intValue]; NSRange selectedRange = [self clampSelection:NSMakeRange(MIN(selectionBase, selectionExtent), @@ -233,14 +241,6 @@ - (void)setTextInputState:(NSDictionary*)state { [self.inputDelegate selectionDidChange:self]; } - NSInteger composingBase = [state[@"composingBase"] intValue]; - NSInteger composingExtent = [state[@"composingExtent"] intValue]; - NSRange composingRange = [self clampSelection:NSMakeRange(MIN(composingBase, composingExtent), - ABS(composingBase - composingExtent)) - forText:self.text]; - self.markedTextRange = - composingRange.length > 0 ? [FlutterTextRange rangeWithNSRange:composingRange] : nil; - if (textChanged) { [self.inputDelegate textDidChange:self]; From 41dc628d6d6beb1d0653dc669b5fe1802fedd48b Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Wed, 12 Dec 2018 19:45:05 -0500 Subject: [PATCH 0534/1537] Roll src/third_party/skia 340aeda6b3ba..17c574a193ad (8 commits) (#7206) https://skia.googlesource.com/skia.git/+log/340aeda6b3ba..17c574a193ad Created with: gclient setdep -r src/third_party/skia@17c574a193ad The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 935b4e4f20031..540010317d2c0 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '340aeda6b3ba50d145413685661b13edea0d52ad', + 'skia_revision': '17c574a193ada6ab4f2763b62d2c08186388f0af', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 47f274deb9ba4..bcc4d1af806e1 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 904762efaee11ecdcf1b3308f5d174b4 +Signature: b8e7ff1f7abef56912edfa31751b8585 UNUSED LICENSES: @@ -2336,6 +2336,7 @@ FILE: ../../../third_party/skia/infra/bots/recipes/test.expected/failed_get_hash FILE: ../../../third_party/skia/infra/bots/recipes/test.expected/failed_pull.json FILE: ../../../third_party/skia/infra/bots/recipes/test.expected/failed_push.json FILE: ../../../third_party/skia/infra/bots/recipes/test.expected/internal_bot_2.json +FILE: ../../../third_party/skia/infra/bots/recipes/test.expected/internal_bot_5.json FILE: ../../../third_party/skia/infra/bots/recipes/test.expected/trybot.json FILE: ../../../third_party/skia/infra/bots/recipes/test_canvaskit.expected/Test-Debian9-EMCC-GCE-GPU-WEBGL1-wasm-Debug-All-CanvasKit.json FILE: ../../../third_party/skia/infra/bots/recipes/test_canvaskit.expected/canvaskit_trybot.json From 0ea994a649d92500b2c8ebadb8d10a22c3a0f014 Mon Sep 17 00:00:00 2001 From: Gary Qian Date: Wed, 12 Dec 2018 17:25:56 -0800 Subject: [PATCH 0535/1537] Minor Docs to runtime controller WindowData (#6991) --- runtime/runtime_controller.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/runtime/runtime_controller.h b/runtime/runtime_controller.h index 34f3236c3c778..05278740735de 100644 --- a/runtime/runtime_controller.h +++ b/runtime/runtime_controller.h @@ -93,6 +93,9 @@ class RuntimeController final : public WindowClient { std::string variant_code; }; + // Stores data about the window to be used at startup + // as well as on hot restarts. Data kept here will persist + // after hot restart. struct WindowData { WindowData(); From 37bf807a58bb8c5796e9b849afb2c2b55c52a3c5 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Wed, 12 Dec 2018 23:32:21 -0500 Subject: [PATCH 0536/1537] Roll src/third_party/skia 17c574a193ad..58fc5d19ad1b (1 commits) (#7209) https://skia.googlesource.com/skia.git/+log/17c574a193ad..58fc5d19ad1b Created with: gclient setdep -r src/third_party/skia@58fc5d19ad1b The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 540010317d2c0..b1e42a042fffc 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '17c574a193ada6ab4f2763b62d2c08186388f0af', + 'skia_revision': '58fc5d19ad1b42013ac6d30064b50f05d1ac4604', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index bcc4d1af806e1..6f1e95094fe4a 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: b8e7ff1f7abef56912edfa31751b8585 +Signature: e44db2e63dbb43d727b3d59215c44125 UNUSED LICENSES: From 921b1ccebb8f791e6f4cd524ea28f94385ad5bd6 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Thu, 13 Dec 2018 03:16:25 -0500 Subject: [PATCH 0537/1537] Roll src/third_party/skia 58fc5d19ad1b..a69b10312977 (3 commits) (#7210) https://skia.googlesource.com/skia.git/+log/58fc5d19ad1b..a69b10312977 Created with: gclient setdep -r src/third_party/skia@a69b10312977 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index b1e42a042fffc..98102a6ac601f 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '58fc5d19ad1b42013ac6d30064b50f05d1ac4604', + 'skia_revision': 'a69b103129779d42f31cd2dad0ca127780a08877', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 6f1e95094fe4a..592878615a927 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: e44db2e63dbb43d727b3d59215c44125 +Signature: 88cf195ecc6878f4dbc40333fe51203b UNUSED LICENSES: From a549981da70667b3bd4f9f9c9d3e7771c955e603 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Thu, 13 Dec 2018 07:51:56 -0500 Subject: [PATCH 0538/1537] Roll src/third_party/skia a69b10312977..5eb29448dfbd (1 commits) (#7211) https://skia.googlesource.com/skia.git/+log/a69b10312977..5eb29448dfbd Created with: gclient setdep -r src/third_party/skia@5eb29448dfbd The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 98102a6ac601f..b09703e4d5e07 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'a69b103129779d42f31cd2dad0ca127780a08877', + 'skia_revision': '5eb29448dfbdf832d36d9e3c3151c229dfb59cb9', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 592878615a927..9bea43e435264 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 88cf195ecc6878f4dbc40333fe51203b +Signature: da5de2708281a308734a16d7cdb457da UNUSED LICENSES: From 8e56b549af2a37f4c26677db31cf76eb61f275f8 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Thu, 13 Dec 2018 11:46:05 -0500 Subject: [PATCH 0539/1537] Roll src/third_party/skia 5eb29448dfbd..f9e824b8e749 (10 commits) (#7212) https://skia.googlesource.com/skia.git/+log/5eb29448dfbd..f9e824b8e749 Created with: gclient setdep -r src/third_party/skia@f9e824b8e749 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index b09703e4d5e07..d738a8282fad0 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '5eb29448dfbdf832d36d9e3c3151c229dfb59cb9', + 'skia_revision': 'f9e824b8e749dd6111ed0f04b8e50b411f3f356e', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 9bea43e435264..cf3c38e117957 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: da5de2708281a308734a16d7cdb457da +Signature: 544c745a7da9270377b6b5f306172de5 UNUSED LICENSES: From 18a4e33c2a7cf1308588b159eee6b53c5615fda5 Mon Sep 17 00:00:00 2001 From: Stanislav Baranov Date: Thu, 13 Dec 2018 10:17:37 -0800 Subject: [PATCH 0540/1537] Downloading and installation of dynamic updates on Android (#7207) --- ci/licenses_golden/licenses_flutter | 1 + shell/platform/android/BUILD.gn | 1 + .../flutter/app/FlutterActivityDelegate.java | 15 +- .../android/io/flutter/view/FlutterMain.java | 20 ++ .../io/flutter/view/ResourceExtractor.java | 229 +++++++++++++++++- .../io/flutter/view/ResourceUpdater.java | 165 +++++++++++++ 6 files changed, 417 insertions(+), 14 deletions(-) create mode 100644 shell/platform/android/io/flutter/view/ResourceUpdater.java diff --git a/ci/licenses_golden/licenses_flutter b/ci/licenses_golden/licenses_flutter index 5442f3c564cad..fdbdef51b797e 100644 --- a/ci/licenses_golden/licenses_flutter +++ b/ci/licenses_golden/licenses_flutter @@ -454,6 +454,7 @@ FILE: ../../../flutter/shell/platform/android/io/flutter/view/FlutterView.java FILE: ../../../flutter/shell/platform/android/io/flutter/view/ResourceCleaner.java FILE: ../../../flutter/shell/platform/android/io/flutter/view/ResourceExtractor.java FILE: ../../../flutter/shell/platform/android/io/flutter/view/ResourcePaths.java +FILE: ../../../flutter/shell/platform/android/io/flutter/view/ResourceUpdater.java FILE: ../../../flutter/shell/platform/android/io/flutter/view/TextureRegistry.java FILE: ../../../flutter/shell/platform/android/io/flutter/view/VsyncWaiter.java FILE: ../../../flutter/shell/platform/android/library_loader.cc diff --git a/shell/platform/android/BUILD.gn b/shell/platform/android/BUILD.gn index aad27b2f9dd37..73e2bac819af3 100644 --- a/shell/platform/android/BUILD.gn +++ b/shell/platform/android/BUILD.gn @@ -140,6 +140,7 @@ java_library("flutter_shell_java") { "io/flutter/view/ResourceCleaner.java", "io/flutter/view/ResourceExtractor.java", "io/flutter/view/ResourcePaths.java", + "io/flutter/view/ResourceUpdater.java", "io/flutter/view/TextureRegistry.java", "io/flutter/view/VsyncWaiter.java", ] diff --git a/shell/platform/android/io/flutter/app/FlutterActivityDelegate.java b/shell/platform/android/io/flutter/app/FlutterActivityDelegate.java index dad63b9e1a8e5..a78a805797de6 100644 --- a/shell/platform/android/io/flutter/app/FlutterActivityDelegate.java +++ b/shell/platform/android/io/flutter/app/FlutterActivityDelegate.java @@ -166,11 +166,17 @@ public void onCreate(Bundle savedInstanceState) { if (loadIntent(activity.getIntent())) { return; } + if (!flutterView.getFlutterNativeView().isApplicationRunning()) { String appBundlePath = FlutterMain.findAppBundlePath(activity.getApplicationContext()); if (appBundlePath != null) { FlutterRunArguments arguments = new FlutterRunArguments(); - arguments.bundlePath = appBundlePath; + ArrayList bundlePaths = new ArrayList(); + if (FlutterMain.getUpdateInstallationPath() != null) { + bundlePaths.add(FlutterMain.getUpdateInstallationPath()); + } + bundlePaths.add(appBundlePath); + arguments.bundlePaths = bundlePaths.toArray(new String[0]); arguments.entrypoint = "main"; flutterView.runFromBundle(arguments); } @@ -337,7 +343,12 @@ private boolean loadIntent(Intent intent) { } if (!flutterView.getFlutterNativeView().isApplicationRunning()) { FlutterRunArguments args = new FlutterRunArguments(); - args.bundlePath = appBundlePath; + ArrayList bundlePaths = new ArrayList(); + if (FlutterMain.getUpdateInstallationPath() != null) { + bundlePaths.add(FlutterMain.getUpdateInstallationPath()); + } + bundlePaths.add(appBundlePath); + args.bundlePaths = bundlePaths.toArray(new String[0]); args.entrypoint = "main"; flutterView.runFromBundle(args); } diff --git a/shell/platform/android/io/flutter/view/FlutterMain.java b/shell/platform/android/io/flutter/view/FlutterMain.java index 8223f3c4c36f2..d59adb4cc92cb 100644 --- a/shell/platform/android/io/flutter/view/FlutterMain.java +++ b/shell/platform/android/io/flutter/view/FlutterMain.java @@ -77,6 +77,7 @@ private static String fromFlutterAssets(String filePath) { private static String sFlutterAssetsDir = DEFAULT_FLUTTER_ASSETS_DIR; private static boolean sInitialized = false; + private static ResourceUpdater sResourceUpdater; private static ResourceExtractor sResourceExtractor; private static boolean sIsPrecompiledAsBlobs; private static boolean sIsPrecompiledAsSharedLibrary; @@ -254,6 +255,21 @@ private static void initResources(Context applicationContext) { Context context = applicationContext; new ResourceCleaner(context).start(); + Bundle metaData = null; + try { + metaData = context.getPackageManager().getApplicationInfo( + context.getPackageName(), PackageManager.GET_META_DATA).metaData; + + } catch (PackageManager.NameNotFoundException e) { + Log.e(TAG, "Unable to read application info", e); + } + + if (metaData != null && metaData.getBoolean("DynamicUpdates")) { + sResourceUpdater = new ResourceUpdater(context); + sResourceUpdater.startUpdateDownloadOnce(); + sResourceUpdater.waitForDownloadCompletion(); + } + sResourceExtractor = new ResourceExtractor(context); String icuAssetPath = SHARED_ASSET_DIR + File.separator + SHARED_ASSET_ICU_DATA; @@ -321,6 +337,10 @@ public static String findAppBundlePath(Context applicationContext) { return appBundle.exists() ? appBundle.getPath() : null; } + public static String getUpdateInstallationPath() { + return sResourceUpdater == null ? null : sResourceUpdater.getUpdateInstallationPath(); + } + /** * Returns the file name for the given asset. * The returned file name can be used to access the asset in the APK diff --git a/shell/platform/android/io/flutter/view/ResourceExtractor.java b/shell/platform/android/io/flutter/view/ResourceExtractor.java index 840977f3eaf54..67fc1aa19e81f 100644 --- a/shell/platform/android/io/flutter/view/ResourceExtractor.java +++ b/shell/platform/android/io/flutter/view/ResourceExtractor.java @@ -11,15 +11,22 @@ import android.os.AsyncTask; import android.util.Log; import io.flutter.util.PathUtils; +import org.json.JSONException; +import org.json.JSONObject; import java.io.*; import java.util.Collection; import java.util.HashSet; +import java.util.Scanner; import java.util.concurrent.CancellationException; import java.util.concurrent.ExecutionException; +import java.util.zip.CRC32; +import java.util.zip.ZipEntry; +import java.util.zip.ZipException; +import java.util.zip.ZipFile; /** - * A class to intialize the native code. + * A class to initialize the native code. **/ class ResourceExtractor { private static final String TAG = "ResourceExtractor"; @@ -33,18 +40,46 @@ private class ExtractTask extends AsyncTask { private void extractResources() { final File dataDir = new File(PathUtils.getDataDirectory(mContext)); - final String timestamp = checkTimestamp(dataDir); + JSONObject updateManifest = readUpdateManifest(); + if (!validateUpdateManifest(updateManifest)) { + updateManifest = null; + } + + final String timestamp = checkTimestamp(dataDir, updateManifest); + if (timestamp == null) { + return; + } + + deleteFiles(); + + if (updateManifest != null) { + if (!extractUpdate(dataDir)) { + return; + } + } + + if (!extractAPK(dataDir)) { + return; + } + if (timestamp != null) { - deleteFiles(); + try { + new File(dataDir, timestamp).createNewFile(); + } catch (IOException e) { + Log.w(TAG, "Failed to write resource timestamp"); + } } + } + /// Returns true if successfully unpacked APK resources, + /// otherwise deletes all resources and returns false. + private boolean extractAPK(File dataDir) { final AssetManager manager = mContext.getResources().getAssets(); byte[] buffer = null; for (String asset : mResources) { try { final File output = new File(dataDir, asset); - if (output.exists()) { continue; } @@ -62,28 +97,99 @@ private void extractResources() { while ((count = is.read(buffer, 0, BUFFER_SIZE)) != -1) { os.write(buffer, 0, count); } + os.flush(); + Log.i(TAG, "Extracted baseline resource " + asset); } } + } catch (FileNotFoundException fnfe) { continue; + } catch (IOException ioe) { Log.w(TAG, "Exception unpacking resources: " + ioe.getMessage()); deleteFiles(); - return; + return false; } } - if (timestamp != null) { - try { - new File(dataDir, timestamp).createNewFile(); - } catch (IOException e) { - Log.w(TAG, "Failed to write resource timestamp"); + return true; + } + + /// Returns true if successfully unpacked update resources or if there is no update, + /// otherwise deletes all resources and returns false. + private boolean extractUpdate(File dataDir) { + if (FlutterMain.getUpdateInstallationPath() == null) { + return true; + } + + final File updateFile = new File(FlutterMain.getUpdateInstallationPath()); + if (!updateFile.exists()) { + return true; + } + + ZipFile zipFile; + try { + zipFile = new ZipFile(updateFile); + + } catch (ZipException e) { + Log.w(TAG, "Exception unpacking resources: " + e.getMessage()); + deleteFiles(); + return false; + + } catch (IOException e) { + Log.w(TAG, "Exception unpacking resources: " + e.getMessage()); + deleteFiles(); + return false; + } + + byte[] buffer = null; + for (String asset : mResources) { + ZipEntry entry = zipFile.getEntry(asset); + if (entry == null) { + continue; + } + + final File output = new File(dataDir, asset); + if (output.exists()) { + continue; + } + if (output.getParentFile() != null) { + output.getParentFile().mkdirs(); + } + + try (InputStream is = zipFile.getInputStream(entry)) { + try (OutputStream os = new FileOutputStream(output)) { + if (buffer == null) { + buffer = new byte[BUFFER_SIZE]; + } + + int count = 0; + while ((count = is.read(buffer, 0, BUFFER_SIZE)) != -1) { + os.write(buffer, 0, count); + } + + os.flush(); + Log.i(TAG, "Extracted override resource " + asset); + } + + } catch (FileNotFoundException fnfe) { + continue; + + } catch (IOException ioe) { + Log.w(TAG, "Exception unpacking resources: " + ioe.getMessage()); + deleteFiles(); + return false; } } + + return true; } - private String checkTimestamp(File dataDir) { + // Returns null if extracted resources are found and match the current APK version + // and update version if any, otherwise returns the current APK and update version. + private String checkTimestamp(File dataDir, JSONObject updateManifest) { + PackageManager packageManager = mContext.getPackageManager(); PackageInfo packageInfo = null; @@ -100,20 +206,119 @@ private String checkTimestamp(File dataDir) { String expectedTimestamp = TIMESTAMP_PREFIX + packageInfo.versionCode + "-" + packageInfo.lastUpdateTime; + if (updateManifest != null) { + String baselineVersion = updateManifest.optString("baselineVersion", null); + if (baselineVersion == null) { + Log.w(TAG, "Invalid update manifest: baselineVersion"); + } + + String updateVersion = updateManifest.optString("updateVersion", null); + if (updateVersion == null) { + Log.w(TAG, "Invalid update manifest: updateVersion"); + } + + if (baselineVersion != null && updateVersion != null) { + if (!baselineVersion.equals(Integer.toString(packageInfo.versionCode))) { + Log.w(TAG, "Outdated update file for " + packageInfo.versionCode); + } else { + final File updateFile = new File(FlutterMain.getUpdateInstallationPath()); + expectedTimestamp += "-" + updateVersion + "-" + updateFile.lastModified(); + } + } + } + final String[] existingTimestamps = getExistingTimestamps(dataDir); if (existingTimestamps == null) { - return null; + Log.i(TAG, "No extracted resources found"); + return expectedTimestamp; + } + + if (existingTimestamps.length == 1) { + Log.i(TAG, "Found extracted resources " + existingTimestamps[0]); } if (existingTimestamps.length != 1 || !expectedTimestamp.equals(existingTimestamps[0])) { + Log.i(TAG, "Resource version mismatch " + expectedTimestamp); return expectedTimestamp; } return null; } + /// Returns true if the downloaded update file was indeed built for this APK. + private boolean validateUpdateManifest(JSONObject updateManifest) { + if (updateManifest == null) { + return false; + } + + String baselineChecksum = updateManifest.optString("baselineChecksum", null); + if (baselineChecksum == null) { + Log.w(TAG, "Invalid update manifest: baselineChecksum"); + return false; + } + + final AssetManager manager = mContext.getResources().getAssets(); + try (InputStream is = manager.open("flutter_assets/isolate_snapshot_data")) { + CRC32 checksum = new CRC32(); + + int count = 0; + byte[] buffer = new byte[BUFFER_SIZE]; + while ((count = is.read(buffer, 0, BUFFER_SIZE)) != -1) { + checksum.update(buffer, 0, count); + } + + if (!baselineChecksum.equals(String.valueOf(checksum.getValue()))) { + Log.w(TAG, "Mismatched update file for APK"); + return false; + } + + return true; + + } catch (IOException e) { + Log.w(TAG, "Could not read APK: " + e); + return false; + } + } + + /// Returns null if no update manifest is found. + private JSONObject readUpdateManifest() { + if (FlutterMain.getUpdateInstallationPath() == null) { + return null; + } + + File updateFile = new File(FlutterMain.getUpdateInstallationPath()); + if (!updateFile.exists()) { + return null; + } + + try { + ZipFile zipFile = new ZipFile(updateFile); + ZipEntry entry = zipFile.getEntry("manifest.json"); + if (entry == null) { + Log.w(TAG, "Invalid update file: " + updateFile); + return null; + } + + // Read and parse the entire JSON file as single operation. + Scanner scanner = new Scanner(zipFile.getInputStream(entry)); + return new JSONObject(scanner.useDelimiter("\\A").next()); + + } catch (ZipException e) { + Log.w(TAG, "Invalid update file: " + e); + return null; + + } catch (IOException e) { + Log.w(TAG, "Invalid update file: " + e); + return null; + + } catch (JSONException e) { + Log.w(TAG, "Invalid update file: " + e); + return null; + } + } + @Override protected Void doInBackground(Void... unused) { extractResources(); diff --git a/shell/platform/android/io/flutter/view/ResourceUpdater.java b/shell/platform/android/io/flutter/view/ResourceUpdater.java new file mode 100644 index 0000000000000..d627ad0524aad --- /dev/null +++ b/shell/platform/android/io/flutter/view/ResourceUpdater.java @@ -0,0 +1,165 @@ +// 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. + +package io.flutter.view; + +import android.content.Context; +import android.content.pm.PackageInfo; +import android.content.pm.PackageManager; +import android.os.AsyncTask; +import android.os.Bundle; +import android.os.Handler; +import android.util.Log; +import android.widget.Toast; +import java.io.BufferedInputStream; +import java.io.File; +import java.io.FileOutputStream; +import java.io.InputStream; +import java.io.IOException; +import java.io.OutputStream; +import java.net.HttpURLConnection; +import java.net.URI; +import java.net.URISyntaxException; +import java.net.URL; +import java.net.URLConnection; +import java.util.Date; +import java.util.concurrent.CancellationException; +import java.util.concurrent.ExecutionException; + +public final class ResourceUpdater { + private static final String TAG = "ResourceUpdater"; + + private class DownloadTask extends AsyncTask { + @Override + protected Void doInBackground(String... args) { + try { + URL unresolvedURL = new URL(args[0]); + File localFile = new File(args[1]); + + long startMillis = new Date().getTime(); + Log.i(TAG, "Checking for updates at " + unresolvedURL); + + HttpURLConnection connection = + (HttpURLConnection)unresolvedURL.openConnection(); + + long lastModified = localFile.lastModified(); + if (lastModified != 0) { + Log.i(TAG, "Active update timestamp " + lastModified); + connection.setIfModifiedSince(lastModified); + } + + try (InputStream input = connection.getInputStream()) { + URL resolvedURL = connection.getURL(); + Log.i(TAG, "Resolved update URL " + resolvedURL); + + if (connection.getResponseCode() == HttpURLConnection.HTTP_NOT_FOUND) { + if (resolvedURL.equals(unresolvedURL)) { + Log.i(TAG, "Rolled back all updates"); + localFile.delete(); + return null; + } else { + Log.i(TAG, "Latest update not found"); + return null; + } + } + + if (connection.getResponseCode() == HttpURLConnection.HTTP_NOT_MODIFIED) { + Log.i(TAG, "Already have latest update"); + return null; + } + + Log.i(TAG, "Downloading update " + unresolvedURL); + try (OutputStream output = new FileOutputStream(localFile)) { + int count; + byte data[] = new byte[1024]; + while ((count = input.read(data)) != -1) { + output.write(data, 0, count); + } + + long totalMillis = new Date().getTime() - startMillis; + Log.i(TAG, "Update downloaded in " + totalMillis / 100 / 10. + "s"); + + output.flush(); + return null; + } + } + + } catch (IOException e) { + Log.w(TAG, "Could not download update " + e.getMessage()); + return null; + } + } + } + + private final Context context; + private DownloadTask downloadTask; + + public ResourceUpdater(Context context) { + this.context = context; + } + + public String getAPKVersion() { + try { + PackageManager packageManager = context.getPackageManager(); + PackageInfo packageInfo = packageManager.getPackageInfo(context.getPackageName(), 0); + return packageInfo == null ? null : Integer.toString(packageInfo.versionCode); + + } catch (PackageManager.NameNotFoundException e) { + return null; + } + } + + public String getUpdateInstallationPath() { + return context.getFilesDir().toString() + "/update.zip"; + } + + public String buildUpdateDownloadURL() { + Bundle metaData; + try { + metaData = context.getPackageManager().getApplicationInfo( + context.getPackageName(), PackageManager.GET_META_DATA).metaData; + + } catch (PackageManager.NameNotFoundException e) { + throw new RuntimeException(e); + } + + if (metaData == null || metaData.getString("UpdateServerURL") == null) { + return null; + } + + URI uri; + try { + uri = new URI(metaData.getString("UpdateServerURL") + "/" + getAPKVersion()); + + } catch (URISyntaxException e) { + Log.w(TAG, "Invalid AndroidManifest.xml UpdateServerURL: " + e.getMessage()); + return null; + } + + return uri.normalize().toString(); + } + + public void startUpdateDownloadOnce() { + assert downloadTask == null; + downloadTask = new DownloadTask(); + downloadTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, + buildUpdateDownloadURL(), getUpdateInstallationPath()); + } + + public void waitForDownloadCompletion() { + assert downloadTask != null; + try { + downloadTask.get(); + } catch (CancellationException e) { + Log.w(TAG, "Download cancelled: " + e.getMessage()); + return; + } catch (ExecutionException e) { + Log.w(TAG, "Download exception: " + e.getMessage()); + return; + } catch (InterruptedException e) { + Log.w(TAG, "Download interrupted: " + e.getMessage()); + return; + } + } +} From eff5e67356acbee22375de68007f6cdc294837f7 Mon Sep 17 00:00:00 2001 From: Gary Qian Date: Thu, 13 Dec 2018 10:39:09 -0800 Subject: [PATCH 0541/1537] Fallback font match caching to fix emoji lag. (#7208) --- third_party/txt/src/txt/font_collection.cc | 17 ++++++++++++++++- third_party/txt/src/txt/font_collection.h | 12 ++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/third_party/txt/src/txt/font_collection.cc b/third_party/txt/src/txt/font_collection.cc index 5503e54e03ff2..71e6a5178e6ff 100644 --- a/third_party/txt/src/txt/font_collection.cc +++ b/third_party/txt/src/txt/font_collection.cc @@ -202,6 +202,22 @@ std::shared_ptr FontCollection::CreateMinikinFontFamily( const std::shared_ptr& FontCollection::MatchFallbackFont( uint32_t ch, std::string locale) { + // Check if the ch's matched font has been cached. We cache the results of + // this method as repeated matchFamilyStyleCharacter calls can become + // extremely laggy when typing a large number of complex emojis. + auto lookup = fallback_match_cache_.find(ch); + if (lookup != fallback_match_cache_.end()) { + return *lookup->second; + } + const std::shared_ptr* match = + &DoMatchFallbackFont(ch, locale); + fallback_match_cache_.insert(std::make_pair(ch, match)); + return *match; +} + +const std::shared_ptr& FontCollection::DoMatchFallbackFont( + uint32_t ch, + std::string locale) { for (const sk_sp& manager : GetFontManagerOrder()) { std::vector bcp47; if (!locale.empty()) @@ -219,7 +235,6 @@ const std::shared_ptr& FontCollection::MatchFallbackFont( return GetFallbackFontFamily(manager, family_name); } - return g_null_family; } diff --git a/third_party/txt/src/txt/font_collection.h b/third_party/txt/src/txt/font_collection.h index d512a6dd3ae26..e3dfaa8d007b8 100644 --- a/third_party/txt/src/txt/font_collection.h +++ b/third_party/txt/src/txt/font_collection.h @@ -49,6 +49,8 @@ class FontCollection : public std::enable_shared_from_this { const std::string& family, const std::string& locale); + // Provides a FontFamily that contains glyphs for ch. This caches previously + // matched fonts. Also see FontCollection::DoMatchFallbackFont. const std::shared_ptr& MatchFallbackFont( uint32_t ch, std::string locale); @@ -80,12 +82,22 @@ class FontCollection : public std::enable_shared_from_this { std::shared_ptr, FamilyKey::Hasher> font_collections_cache_; + // Cache that stores the results of MatchFallbackFont to ensure lag-free emoji + // font fallback matching. + std::unordered_map*> + fallback_match_cache_; std::unordered_map> fallback_fonts_; std::unordered_map> fallback_fonts_for_locale_; bool enable_font_fallback_; + // Performs the actual work of MatchFallbackFont. The result is cached in + // fallback_match_cache_. + const std::shared_ptr& DoMatchFallbackFont( + uint32_t ch, + std::string locale); + std::vector> GetFontManagerOrder() const; std::shared_ptr CreateMinikinFontFamily( From 101b27da7a1b9906d370fdf0612bf3ff31bd860b Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Thu, 13 Dec 2018 15:36:23 -0500 Subject: [PATCH 0542/1537] Roll src/third_party/skia f9e824b8e749..cb6b4bde0c2e (7 commits) (#7215) https://skia.googlesource.com/skia.git/+log/f9e824b8e749..cb6b4bde0c2e Created with: gclient setdep -r src/third_party/skia@cb6b4bde0c2e The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index d738a8282fad0..a78762c40cf61 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'f9e824b8e749dd6111ed0f04b8e50b411f3f356e', + 'skia_revision': 'cb6b4bde0c2e02bfdbd63883cb08995a6fe823d4', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index cf3c38e117957..01860ba6c43bf 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 544c745a7da9270377b6b5f306172de5 +Signature: 029028f23d38d6a4a619879f7f12bde4 UNUSED LICENSES: From 826f3426411f017686d19513d3eaf7334a81f151 Mon Sep 17 00:00:00 2001 From: Chris Bracken Date: Thu, 13 Dec 2018 13:13:38 -0800 Subject: [PATCH 0543/1537] [Fuchsia] Depend on libtrace when that is what's really meant (#7214) libtrace-provider has libtrace listed as a dependency when really it does not have any such dependency. This lets trace clients use libtrace-provider as a dependency when what they really mean is libtrace. This errant dependency in trace-provider is being fixed, which means we need to fix these clients. --- fml/BUILD.gn | 2 +- shell/testing/BUILD.gn | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/fml/BUILD.gn b/fml/BUILD.gn index 0f1a34dec369d..3a7d76df80762 100644 --- a/fml/BUILD.gn +++ b/fml/BUILD.gn @@ -149,7 +149,7 @@ source_set("fml") { if (is_fuchsia) { sources += [ "platform/fuchsia/paths_fuchsia.cc" ] - public_deps += [ "//zircon/public/lib/trace-provider" ] + public_deps += [ "//zircon/public/lib/trace" ] } if (is_win) { diff --git a/shell/testing/BUILD.gn b/shell/testing/BUILD.gn index 29b5c5c13e89a..f10d36b9808e8 100644 --- a/shell/testing/BUILD.gn +++ b/shell/testing/BUILD.gn @@ -28,6 +28,7 @@ executable("testing") { if (is_fuchsia) { deps += [ "//garnet/public/lib/ui/scenic:client", + "//zircon/public/lib/trace", "//zircon/public/lib/trace-provider", ] } From b50e3491cc62b8f7fb26fbc11ce616d71afd62d1 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Thu, 13 Dec 2018 19:17:56 -0500 Subject: [PATCH 0544/1537] Roll src/third_party/skia cb6b4bde0c2e..21a7be0741ac (3 commits) (#7216) https://skia.googlesource.com/skia.git/+log/cb6b4bde0c2e..21a7be0741ac Created with: gclient setdep -r src/third_party/skia@21a7be0741ac The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index a78762c40cf61..e73c896aab730 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'cb6b4bde0c2e02bfdbd63883cb08995a6fe823d4', + 'skia_revision': '21a7be0741ac3db30dcae0ccfe40ff55920b158f', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 01860ba6c43bf..809fedcaa1ff1 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 029028f23d38d6a4a619879f7f12bde4 +Signature: d30056bf8c94442becdd1fc941fed8cd UNUSED LICENSES: @@ -1615,6 +1615,8 @@ FILE: ../../../third_party/skia/src/gpu/text/GrSDFMaskFilter.cpp FILE: ../../../third_party/skia/src/gpu/text/GrSDFMaskFilter.h FILE: ../../../third_party/skia/src/gpu/vk/GrVkAMDMemoryAllocator.cpp FILE: ../../../third_party/skia/src/gpu/vk/GrVkAMDMemoryAllocator.h +FILE: ../../../third_party/skia/src/gpu/vk/GrVkCommandPool.cpp +FILE: ../../../third_party/skia/src/gpu/vk/GrVkCommandPool.h FILE: ../../../third_party/skia/src/gpu/vk/GrVkImageLayout.h FILE: ../../../third_party/skia/src/gpu/vk/GrVkPipelineLayout.cpp FILE: ../../../third_party/skia/src/gpu/vk/GrVkPipelineLayout.h From 1a2714bbefd3c7665258c20cbef7fe2f2a5805d9 Mon Sep 17 00:00:00 2001 From: jslavitz Date: Thu, 13 Dec 2018 18:45:38 -0800 Subject: [PATCH 0545/1537] Adds force cursor support (#6945) * engine force cursor support --- .../ios/framework/Source/FlutterEngine.mm | 19 +++++++++++++++++++ .../Source/FlutterTextInputDelegate.h | 9 +++++++++ .../Source/FlutterTextInputPlugin.mm | 18 ++++++++++++++++++ 3 files changed, 46 insertions(+) diff --git a/shell/platform/darwin/ios/framework/Source/FlutterEngine.mm b/shell/platform/darwin/ios/framework/Source/FlutterEngine.mm index c5f3b8d9accf0..09a7dd02774ba 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterEngine.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterEngine.mm @@ -373,6 +373,25 @@ - (void)updateEditingClient:(int)client withState:(NSDictionary*)state { arguments:@[ @(client), state ]]; } +- (void)updateFloatingCursor:(FlutterFloatingCursorDragState)state + withClient:(int)client + withPosition:(NSDictionary*)position { + NSString* stateString; + switch (state) { + case FlutterFloatingCursorDragStateStart: + stateString = @"FloatingCursorDragState.start"; + break; + case FlutterFloatingCursorDragStateUpdate: + stateString = @"FloatingCursorDragState.update"; + break; + case FlutterFloatingCursorDragStateEnd: + stateString = @"FloatingCursorDragState.end"; + break; + } + [_textInputChannel.get() invokeMethod:@"TextInputClient.updateFloatingCursor" + arguments:@[ @(client), stateString, position ]]; +} + - (void)performAction:(FlutterTextInputAction)action withClient:(int)client { NSString* actionString; switch (action) { diff --git a/shell/platform/darwin/ios/framework/Source/FlutterTextInputDelegate.h b/shell/platform/darwin/ios/framework/Source/FlutterTextInputDelegate.h index 11e9f5bd5f86c..d3451b5bd4cd4 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterTextInputDelegate.h +++ b/shell/platform/darwin/ios/framework/Source/FlutterTextInputDelegate.h @@ -21,10 +21,19 @@ typedef NS_ENUM(NSInteger, FlutterTextInputAction) { FlutterTextInputActionNewline, }; +typedef NS_ENUM(NSInteger, FlutterFloatingCursorDragState) { + FlutterFloatingCursorDragStateStart, + FlutterFloatingCursorDragStateUpdate, + FlutterFloatingCursorDragStateEnd, +}; + @protocol FlutterTextInputDelegate - (void)updateEditingClient:(int)client withState:(NSDictionary*)state; - (void)performAction:(FlutterTextInputAction)action withClient:(int)client; +- (void)updateFloatingCursor:(FlutterFloatingCursorDragState)state + withClient:(int)client + withPosition:(NSDictionary*)point; @end diff --git a/shell/platform/darwin/ios/framework/Source/FlutterTextInputPlugin.mm b/shell/platform/darwin/ios/framework/Source/FlutterTextInputPlugin.mm index 0f7dc0a0d6812..a50d7b4e5157a 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterTextInputPlugin.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterTextInputPlugin.mm @@ -566,6 +566,24 @@ - (UITextRange*)characterRangeAtPoint:(CGPoint)point { return [FlutterTextRange rangeWithNSRange:[self rangeForCharacterAtIndex:currentIndex]]; } +- (void)beginFloatingCursorAtPoint:(CGPoint)point { + [_textInputDelegate updateFloatingCursor:FlutterFloatingCursorDragStateStart + withClient:_textInputClient + withPosition:@{@"X" : @(point.x), @"Y" : @(point.y)}]; +} + +- (void)updateFloatingCursorAtPoint:(CGPoint)point { + [_textInputDelegate updateFloatingCursor:FlutterFloatingCursorDragStateUpdate + withClient:_textInputClient + withPosition:@{@"X" : @(point.x), @"Y" : @(point.y)}]; +} + +- (void)endFloatingCursor { + [_textInputDelegate updateFloatingCursor:FlutterFloatingCursorDragStateEnd + withClient:_textInputClient + withPosition:@{@"X" : @(0), @"Y" : @(0)}]; +} + #pragma mark - UIKeyInput Overrides - (void)updateEditingState { From 167642182434bd205729206462b4ec5be0a75bb2 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Thu, 13 Dec 2018 23:05:49 -0500 Subject: [PATCH 0546/1537] Roll src/third_party/skia 21a7be0741ac..42e7a7ed6511 (1 commits) (#7217) https://skia.googlesource.com/skia.git/+log/21a7be0741ac..42e7a7ed6511 Created with: gclient setdep -r src/third_party/skia@42e7a7ed6511 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index e73c896aab730..75a6e9deaf544 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '21a7be0741ac3db30dcae0ccfe40ff55920b158f', + 'skia_revision': '42e7a7ed65111773b6e9c99e94a1889036deb784', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 809fedcaa1ff1..13d099aeb85bd 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: d30056bf8c94442becdd1fc941fed8cd +Signature: 56072859a433bff4420949459562122d UNUSED LICENSES: From 0f10d3f992410a712af77a1d82ebe32aeeb4ef1c Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Fri, 14 Dec 2018 03:04:13 -0500 Subject: [PATCH 0547/1537] Roll src/third_party/skia 42e7a7ed6511..59c9f1595ecd (3 commits) (#7218) https://skia.googlesource.com/skia.git/+log/42e7a7ed6511..59c9f1595ecd Created with: gclient setdep -r src/third_party/skia@59c9f1595ecd The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 75a6e9deaf544..021f935aa6cf6 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '42e7a7ed65111773b6e9c99e94a1889036deb784', + 'skia_revision': '59c9f1595ecdfffb615d6ae5cbd244d4e3f9bcd0', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 13d099aeb85bd..56fb2b9210095 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 56072859a433bff4420949459562122d +Signature: ed70c891aa313846e4c2da8fa15335f5 UNUSED LICENSES: From 5244cf4299320e36b26b2b1a983f96f60101c170 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Fri, 14 Dec 2018 09:47:00 -0500 Subject: [PATCH 0548/1537] Roll src/third_party/skia 59c9f1595ecd..f6206f91b3c1 (1 commits) (#7219) https://skia.googlesource.com/skia.git/+log/59c9f1595ecd..f6206f91b3c1 Created with: gclient setdep -r src/third_party/skia@f6206f91b3c1 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 021f935aa6cf6..bf993e07cf46a 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '59c9f1595ecdfffb615d6ae5cbd244d4e3f9bcd0', + 'skia_revision': 'f6206f91b3c13de83865bfda464e147c5e39fd6e', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 56fb2b9210095..1e90ebc74cd47 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: ed70c891aa313846e4c2da8fa15335f5 +Signature: 92e718d7f08ffefbf617736c0ced1c48 UNUSED LICENSES: From 1bc7ccf6057d3bf22e0a27360cd52fa76f2f0613 Mon Sep 17 00:00:00 2001 From: Anthony Bullard <1380687+gamebox@users.noreply.github.com> Date: Fri, 14 Dec 2018 10:05:41 -0800 Subject: [PATCH 0549/1537] Support real fonts in 'flutter test' (#6913) * Support real fonts in 'flutter test' Change the order of font_managers to query in font_collection so that dynamic_font_manager fonts will be resolved. Tested with test case in `flutter/flutter` repo: `packages/flutter/test/rendering/localized_fonts_test.dart` Ensured: - A font loaded with FontLoader will be used - The default 'Ahem' font is still loaded by default The test above still cannot be fixed because FontLoader and the underlying mechanisms don't cover Locale-specific font loading and therefore a CJK font-family won't be able to be loaded as needed for that test. Fixes #17700 * Format fixup --- shell/common/engine.cc | 4 ++-- third_party/txt/src/txt/font_collection.cc | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/shell/common/engine.cc b/shell/common/engine.cc index 56c55310e7f8b..ef3369347e055 100644 --- a/shell/common/engine.cc +++ b/shell/common/engine.cc @@ -90,10 +90,10 @@ bool Engine::UpdateAssetManager( } // Using libTXT as the text engine. + font_collection_.RegisterFonts(asset_manager_); + if (settings_.use_test_fonts) { font_collection_.RegisterTestFonts(); - } else { - font_collection_.RegisterFonts(asset_manager_); } return true; diff --git a/third_party/txt/src/txt/font_collection.cc b/third_party/txt/src/txt/font_collection.cc index 71e6a5178e6ff..2be51f6312f84 100644 --- a/third_party/txt/src/txt/font_collection.cc +++ b/third_party/txt/src/txt/font_collection.cc @@ -95,12 +95,12 @@ void FontCollection::SetTestFontManager(sk_sp font_manager) { // Return the available font managers in the order they should be queried. std::vector> FontCollection::GetFontManagerOrder() const { std::vector> order; - if (test_font_manager_) - order.push_back(test_font_manager_); if (dynamic_font_manager_) order.push_back(dynamic_font_manager_); if (asset_font_manager_) order.push_back(asset_font_manager_); + if (test_font_manager_) + order.push_back(test_font_manager_); if (default_font_manager_) order.push_back(default_font_manager_); return order; From 4f148edf0e42cea07669948ca6314b25142eeb67 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Fri, 14 Dec 2018 13:46:13 -0500 Subject: [PATCH 0550/1537] Roll src/third_party/skia f6206f91b3c1..f391d0f771c6 (4 commits) (#7220) https://skia.googlesource.com/skia.git/+log/f6206f91b3c1..f391d0f771c6 Created with: gclient setdep -r src/third_party/skia@f391d0f771c6 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index bf993e07cf46a..5d7186e39c55b 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'f6206f91b3c13de83865bfda464e147c5e39fd6e', + 'skia_revision': 'f391d0f771c6b7f7c9ba13c24248a53babfdce0f', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 1e90ebc74cd47..321270ade9726 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 92e718d7f08ffefbf617736c0ced1c48 +Signature: 5b4273a3a37602c42b9d47c2476229fe UNUSED LICENSES: @@ -1577,6 +1577,7 @@ FILE: ../../../third_party/skia/src/gpu/mtl/GrMtlCopyManager.h FILE: ../../../third_party/skia/src/gpu/mtl/GrMtlCopyManager.mm FILE: ../../../third_party/skia/src/gpu/mtl/GrMtlCopyPipelineState.h FILE: ../../../third_party/skia/src/gpu/mtl/GrMtlCopyPipelineState.mm +FILE: ../../../third_party/skia/src/gpu/mtl/GrMtlCppUtil.h FILE: ../../../third_party/skia/src/gpu/mtl/GrMtlGpuCommandBuffer.h FILE: ../../../third_party/skia/src/gpu/mtl/GrMtlGpuCommandBuffer.mm FILE: ../../../third_party/skia/src/gpu/mtl/GrMtlPipelineState.h From 6c40f84a5bfff1c53e30c7adecc5e408c55a7a53 Mon Sep 17 00:00:00 2001 From: Craig Stout Date: Fri, 14 Dec 2018 13:17:37 -0800 Subject: [PATCH 0551/1537] [vulkan] Fix Fuchsia build Stub out VulkanSwapchain. Test:Fuchsia release *and* debug builds --- ci/licenses_golden/licenses_flutter | 1 + vulkan/BUILD.gn | 5 ++++- vulkan/vulkan_swapchain.h | 2 ++ vulkan/vulkan_swapchain_stub.cc | 34 +++++++++++++++++++++++++++++ 4 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 vulkan/vulkan_swapchain_stub.cc diff --git a/ci/licenses_golden/licenses_flutter b/ci/licenses_golden/licenses_flutter index fdbdef51b797e..dce9a455e9a7a 100644 --- a/ci/licenses_golden/licenses_flutter +++ b/ci/licenses_golden/licenses_flutter @@ -603,6 +603,7 @@ FILE: ../../../flutter/vulkan/vulkan_surface.cc FILE: ../../../flutter/vulkan/vulkan_surface.h FILE: ../../../flutter/vulkan/vulkan_swapchain.cc FILE: ../../../flutter/vulkan/vulkan_swapchain.h +FILE: ../../../flutter/vulkan/vulkan_swapchain_stub.cc FILE: ../../../flutter/vulkan/vulkan_utilities.cc FILE: ../../../flutter/vulkan/vulkan_utilities.h FILE: ../../../flutter/vulkan/vulkan_window.cc diff --git a/vulkan/BUILD.gn b/vulkan/BUILD.gn index d6e3767af9518..199dc9da7a90f 100644 --- a/vulkan/BUILD.gn +++ b/vulkan/BUILD.gn @@ -35,6 +35,7 @@ source_set("vulkan") { "vulkan_proc_table.h", "vulkan_surface.cc", "vulkan_surface.h", + "vulkan_swapchain.h", "vulkan_utilities.cc", "vulkan_utilities.h", "vulkan_window.cc", @@ -46,9 +47,11 @@ source_set("vulkan") { "vulkan_native_surface_android.cc", "vulkan_native_surface_android.h", "vulkan_swapchain.cc", - "vulkan_swapchain.h", ] } + if (is_fuchsia) { + sources += [ "vulkan_swapchain_stub.cc" ] + } deps = [ "$flutter_root/fml", diff --git a/vulkan/vulkan_swapchain.h b/vulkan/vulkan_swapchain.h index e85eede05fc97..047b27ca6b157 100644 --- a/vulkan/vulkan_swapchain.h +++ b/vulkan/vulkan_swapchain.h @@ -61,6 +61,7 @@ class VulkanSwapchain { SkISize GetSize() const; +#if OS_ANDROID private: const VulkanProcTable& vk; const VulkanDevice& device_; @@ -88,6 +89,7 @@ class VulkanSwapchain { sk_sp color_space) const; VulkanBackbuffer* GetNextBackbuffer(); +#endif // OS_ANDROID FML_DISALLOW_COPY_AND_ASSIGN(VulkanSwapchain); }; diff --git a/vulkan/vulkan_swapchain_stub.cc b/vulkan/vulkan_swapchain_stub.cc new file mode 100644 index 0000000000000..bdd96ad729858 --- /dev/null +++ b/vulkan/vulkan_swapchain_stub.cc @@ -0,0 +1,34 @@ +// 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/vulkan/vulkan_swapchain.h" + +namespace vulkan { + +VulkanSwapchain::VulkanSwapchain(const VulkanProcTable& p_vk, + const VulkanDevice& device, + const VulkanSurface& surface, + GrContext* skia_context, + std::unique_ptr old_swapchain, + uint32_t queue_family_index) {} + +VulkanSwapchain::~VulkanSwapchain() = default; + +bool VulkanSwapchain::IsValid() const { + return false; +} + +VulkanSwapchain::AcquireResult VulkanSwapchain::AcquireSurface() { + return {AcquireStatus::ErrorSurfaceLost, nullptr}; +} + +bool VulkanSwapchain::Submit() { + return false; +} + +SkISize VulkanSwapchain::GetSize() const { + return SkISize::Make(0, 0); +} + +} // namespace vulkan From 91bb1f8f4087554e4b5230bc0489785f3791a39e Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Fri, 14 Dec 2018 17:37:25 -0500 Subject: [PATCH 0552/1537] Roll src/third_party/skia f391d0f771c6..16d00eeef7d1 (4 commits) (#7222) https://skia.googlesource.com/skia.git/+log/f391d0f771c6..16d00eeef7d1 Created with: gclient setdep -r src/third_party/skia@16d00eeef7d1 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 5d7186e39c55b..e9b32a56840d6 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'f391d0f771c6b7f7c9ba13c24248a53babfdce0f', + 'skia_revision': '16d00eeef7d18dcfd28725bcb4c15dad633ab7eb', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 321270ade9726..92073a700fd35 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 5b4273a3a37602c42b9d47c2476229fe +Signature: d1d0c6f4959debcac01d71e193990a02 UNUSED LICENSES: From ac0599357f4c26e9e147a9d1eac7fa62fda0b9db Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Fri, 14 Dec 2018 21:23:01 -0500 Subject: [PATCH 0553/1537] Roll src/third_party/skia 16d00eeef7d1..a1bded9a4f28 (2 commits) (#7223) https://skia.googlesource.com/skia.git/+log/16d00eeef7d1..a1bded9a4f28 Created with: gclient setdep -r src/third_party/skia@a1bded9a4f28 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index e9b32a56840d6..9c87233fec1d9 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '16d00eeef7d18dcfd28725bcb4c15dad633ab7eb', + 'skia_revision': 'a1bded9a4f284069771f1cdf7322cee6a505924d', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 92073a700fd35..e7e5b3b0382de 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: d1d0c6f4959debcac01d71e193990a02 +Signature: cd2e519d1448fb84a51765e78da86fcf UNUSED LICENSES: @@ -1305,6 +1305,7 @@ FILE: ../../../third_party/skia/fuzz/oss_fuzz/FuzzRegionSetPath.cpp FILE: ../../../third_party/skia/gm/3dgm.cpp FILE: ../../../third_party/skia/gm/analytic_gradients.cpp FILE: ../../../third_party/skia/gm/androidblendmodes.cpp +FILE: ../../../third_party/skia/gm/b_119394958.cpp FILE: ../../../third_party/skia/gm/clockwise.cpp FILE: ../../../third_party/skia/gm/crbug_847759.cpp FILE: ../../../third_party/skia/gm/crbug_884166.cpp From a987b1700b8e83fda24a0cb7039be243c9b1927d Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Sat, 15 Dec 2018 01:37:22 -0500 Subject: [PATCH 0554/1537] Roll src/third_party/skia a1bded9a4f28..8b78d70b9a10 (1 commits) (#7224) https://skia.googlesource.com/skia.git/+log/a1bded9a4f28..8b78d70b9a10 Created with: gclient setdep -r src/third_party/skia@8b78d70b9a10 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 9c87233fec1d9..76caf369b626d 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'a1bded9a4f284069771f1cdf7322cee6a505924d', + 'skia_revision': '8b78d70b9a10489fac1cbd3267c1b76c9b17554f', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index e7e5b3b0382de..803c6a921dd3c 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: cd2e519d1448fb84a51765e78da86fcf +Signature: 0b702a4b99008a9225dd68e648213558 UNUSED LICENSES: From 9ae82173a09b417be397f4ff8afb57812276e045 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Sat, 15 Dec 2018 05:24:07 -0500 Subject: [PATCH 0555/1537] Roll src/third_party/skia 8b78d70b9a10..d4962e7e07c0 (1 commits) (#7225) https://skia.googlesource.com/skia.git/+log/8b78d70b9a10..d4962e7e07c0 Created with: gclient setdep -r src/third_party/skia@d4962e7e07c0 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 76caf369b626d..22cb61aff535b 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '8b78d70b9a10489fac1cbd3267c1b76c9b17554f', + 'skia_revision': 'd4962e7e07c0cb1d187a303816e1619c3b6af179', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 803c6a921dd3c..492158058bc6a 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 0b702a4b99008a9225dd68e648213558 +Signature: 336de4e211b0fd9142060145f20a04f5 UNUSED LICENSES: From 17789249d78ac301ef17997f0eeb25805fb7d83a Mon Sep 17 00:00:00 2001 From: Ian Hickson Date: Sat, 15 Dec 2018 08:31:59 -0800 Subject: [PATCH 0556/1537] Offset.fromDirection and Size.aspectRatio (#6805) --- lib/ui/geometry.dart | 43 +++++++++++++++++++++++++++++---- testing/dart/geometry_test.dart | 39 +++++++++++++++++++++++++++++- 2 files changed, 76 insertions(+), 6 deletions(-) diff --git a/lib/ui/geometry.dart b/lib/ui/geometry.dart index e46cf63109cdd..4c37708656fbd 100644 --- a/lib/ui/geometry.dart +++ b/lib/ui/geometry.dart @@ -121,6 +121,15 @@ class Offset extends OffsetBase { /// and the second sets [dy], the vertical component. const Offset(double dx, double dy) : super(dx, dy); + /// Creates an offset from its [direction] and [distance]. + /// + /// The direction is in radians clockwise from the positive x-axis. + /// + /// The distance can be omitted, to create a unit vector (distance = 1.0). + factory Offset.fromDirection(double direction, [ double distance = 1.0 ]) { + return new Offset(distance * math.cos(direction), distance * math.sin(direction)); + } + /// The x component of the offset. /// /// The y component is given by [dy]. @@ -135,12 +144,12 @@ class Offset extends OffsetBase { /// /// If you need this value to compare it to another [Offset]'s distance, /// consider using [distanceSquared] instead, since it is cheaper to compute. - double get distance => math.sqrt(_dx * _dx + _dy * _dy); + double get distance => math.sqrt(dx * dx + dy * dy); /// The square of the magnitude of the offset. /// /// This is cheaper than computing the [distance] itself. - double get distanceSquared => _dx * _dx + _dy * _dy; + double get distanceSquared => dx * dx + dy * dy; /// The angle of this offset as radians clockwise from the positive x-axis, in /// the range -[pi] to [pi], assuming positive values of the x-axis go to the @@ -321,12 +330,12 @@ class Offset extends OffsetBase { if (other is! Offset) return false; final Offset typedOther = other; - return _dx == typedOther._dx && - _dy == typedOther._dy; + return dx == typedOther.dx && + dy == typedOther.dy; } @override - int get hashCode => hashValues(_dx, _dy); + int get hashCode => hashValues(dx, dy); @override String toString() => 'Offset(${dx?.toStringAsFixed(1)}, ${dy?.toStringAsFixed(1)})'; @@ -373,6 +382,30 @@ class Size extends OffsetBase { /// The vertical extent of this size. double get height => _dy; + /// The aspect ratio of this size. + /// + /// This returns the [width] divided by the [height]. + /// + /// If the [width] is zero, the result will be zero. If the [height] is zero + /// (and the [width] is not), the result will be [double.infinity] or + /// [double.negativeInfinity] as determined by the sign of [width]. + /// + /// See also: + /// + /// * [AspectRatio], a widget for giving a child widget a specific aspect + /// ratio. + /// * [FittedBox], a widget that (in most modes) attempts to maintain a + /// child widget's aspect ratio while changing its size. + double get aspectRatio { + if (height != 0.0) + return width / height; + if (width > 0.0) + return double.infinity; + if (width < 0.0) + return double.negativeInfinity; + return 0.0; + } + /// An empty size, one with a zero width and a zero height. static const Size zero = const Size(0.0, 0.0); diff --git a/testing/dart/geometry_test.dart b/testing/dart/geometry_test.dart index 4da3e6e825471..9d14a5c25a700 100644 --- a/testing/dart/geometry_test.dart +++ b/testing/dart/geometry_test.dart @@ -2,8 +2,9 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -import 'dart:ui'; +import 'dart:math' as math show sqrt; import 'dart:math' show pi; +import 'dart:ui'; import 'package:test/test.dart'; @@ -19,4 +20,40 @@ void main() { expect(const Offset(-1.0, 1.0).direction, pi * 3.0 / 4.0); expect(const Offset(-1.0, -1.0).direction, -pi * 3.0 / 4.0); }); + test('Offset.fromDirection', () { + expect(Offset.fromDirection(0.0, 0.0), const Offset(0.0, 0.0)); + expect(Offset.fromDirection(pi / 2.0).dx, closeTo(0.0, 1e-12)); // aah, floating point math. i love you so. + expect(Offset.fromDirection(pi / 2.0).dy, 1.0); + expect(Offset.fromDirection(-pi / 2.0).dx, closeTo(0.0, 1e-12)); + expect(Offset.fromDirection(-pi / 2.0).dy, -1.0); + expect(Offset.fromDirection(0.0), const Offset(1.0, 0.0)); + expect(Offset.fromDirection(pi / 4.0).dx, closeTo(1.0 / math.sqrt(2.0), 1e-12)); + expect(Offset.fromDirection(pi / 4.0).dy, closeTo(1.0 / math.sqrt(2.0), 1e-12)); + expect(Offset.fromDirection(-pi / 4.0).dx, closeTo(1.0 / math.sqrt(2.0), 1e-12)); + expect(Offset.fromDirection(-pi / 4.0).dy, closeTo(-1.0 / math.sqrt(2.0), 1e-12)); + expect(Offset.fromDirection(pi).dx, -1.0); + expect(Offset.fromDirection(pi).dy, closeTo(0.0, 1e-12)); + expect(Offset.fromDirection(pi * 3.0 / 4.0).dx, closeTo(-1.0 / math.sqrt(2.0), 1e-12)); + expect(Offset.fromDirection(pi * 3.0 / 4.0).dy, closeTo(1.0 / math.sqrt(2.0), 1e-12)); + expect(Offset.fromDirection(-pi * 3.0 / 4.0).dx, closeTo(-1.0 / math.sqrt(2.0), 1e-12)); + expect(Offset.fromDirection(-pi * 3.0 / 4.0).dy, closeTo(-1.0 / math.sqrt(2.0), 1e-12)); + expect(Offset.fromDirection(0.0, 2.0), const Offset(2.0, 0.0)); + expect(Offset.fromDirection(pi / 6, 2.0).dx, closeTo(math.sqrt(3.0), 1e-12)); + expect(Offset.fromDirection(pi / 6, 2.0).dy, closeTo(1.0, 1e-12)); + }); + test('Size.aspectRatio', () { + expect(const Size(0.0, 0.0).aspectRatio, 0.0); + expect(const Size(-0.0, 0.0).aspectRatio, 0.0); + expect(const Size(0.0, -0.0).aspectRatio, 0.0); + expect(const Size(-0.0, -0.0).aspectRatio, 0.0); + expect(const Size(0.0, 1.0).aspectRatio, 0.0); + expect(const Size(0.0, -1.0).aspectRatio, -0.0); + expect(const Size(1.0, 0.0).aspectRatio, double.infinity); + expect(const Size(1.0, 1.0).aspectRatio, 1.0); + expect(const Size(1.0, -1.0).aspectRatio, -1.0); + expect(const Size(-1.0, 0.0).aspectRatio, -double.infinity); + expect(const Size(-1.0, 1.0).aspectRatio, -1.0); + expect(const Size(-1.0, -1.0).aspectRatio, 1.0); + expect(const Size(3.0, 4.0).aspectRatio, 3.0 / 4.0); + }); } From 8a7ae957ff77d1988e84ae94a591fe534cbc6b63 Mon Sep 17 00:00:00 2001 From: Ian Hickson Date: Sat, 15 Dec 2018 08:32:20 -0800 Subject: [PATCH 0557/1537] Undeprecated BigInteger support, but document what it actually does. (#6903) --- .../flutter/plugin/common/StandardMessageCodec.java | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/shell/platform/android/io/flutter/plugin/common/StandardMessageCodec.java b/shell/platform/android/io/flutter/plugin/common/StandardMessageCodec.java index 63d63b2a2e236..c22ea07a9aa87 100644 --- a/shell/platform/android/io/flutter/plugin/common/StandardMessageCodec.java +++ b/shell/platform/android/io/flutter/plugin/common/StandardMessageCodec.java @@ -30,6 +30,7 @@ *
  • null
  • *
  • Booleans
  • *
  • Bytes, Shorts, Integers, Longs
  • + *
  • BigIntegers (see below)
  • *
  • Floats, Doubles
  • *
  • Strings
  • *
  • byte[], int[], long[], double[]
  • @@ -53,11 +54,8 @@ *
  • Map: Map
  • * * - *

    Direct support for BigIntegers has been deprecated on 2018-01-09 to be made - * unavailable four weeks after this change is available on the Flutter alpha - * branch. BigIntegers were needed because the Dart 1.0 int type had no size - * limit. With Dart 2.0, the int type is a fixed-size, 64-bit signed integer. - * If you need to communicate larger integers, use String encoding instead.

    + *

    BigIntegers are represented in Dart as strings with the + * hexadecimal representation of the integer's value.

    * *

    To extend the codec, overwrite the writeValue and readValueOfType methods.

    */ @@ -96,7 +94,6 @@ public Object decodeMessage(ByteBuffer message) { private static final byte FALSE = 2; private static final byte INT = 3; private static final byte LONG = 4; - @Deprecated private static final byte BIGINT = 5; private static final byte DOUBLE = 6; private static final byte STRING = 7; @@ -237,7 +234,6 @@ protected void writeValue(ByteArrayOutputStream stream, Object value) { writeAlignment(stream, 8); writeDouble(stream, ((Number) value).doubleValue()); } else if (value instanceof BigInteger) { - Log.w("Flutter", "Support for BigIntegers has been deprecated. Use String encoding instead."); stream.write(BIGINT); writeBytes(stream, ((BigInteger) value).toString(16).getBytes(UTF8)); @@ -367,7 +363,6 @@ protected Object readValueOfType(byte type, ByteBuffer buffer) { result = buffer.getLong(); break; case BIGINT: { - Log.w("Flutter", "Support for BigIntegers has been deprecated. Use String encoding instead."); final byte[] hex = readBytes(buffer); result = new BigInteger(new String(hex, UTF8), 16); break; From 828acc7395cc3d22d9287e5596923e5027c7d985 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Sat, 15 Dec 2018 13:21:32 -0500 Subject: [PATCH 0558/1537] Roll src/third_party/skia d4962e7e07c0..282ec5dc6ca7 (1 commits) (#7226) https://skia.googlesource.com/skia.git/+log/d4962e7e07c0..282ec5dc6ca7 Created with: gclient setdep -r src/third_party/skia@282ec5dc6ca7 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 22cb61aff535b..6edf7ea154715 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'd4962e7e07c0cb1d187a303816e1619c3b6af179', + 'skia_revision': '282ec5dc6ca7acc49cd4c43ce85a73f0d487ffc9', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 492158058bc6a..18fff6070ee14 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 336de4e211b0fd9142060145f20a04f5 +Signature: 6287f51087b91a57edd54e012c45241d UNUSED LICENSES: From ac9e521a1ddbb99816a93d92ce9fb70e950b3763 Mon Sep 17 00:00:00 2001 From: Chris Bracken Date: Sat, 15 Dec 2018 13:59:58 -0800 Subject: [PATCH 0559/1537] Compile embedder unit test Dart to kernel (#7227) Compile embedder unit test Dart to kernel As of the migration to Dart 2, it has been necessary to compile Dart to kernel prior to execution. The embedder currently requires that the resulting kernel file be named `kernel_blob.bin` and be located at the root of the assets directory passed to the embedder API. This patch updates the test_fixtures build rule to perform a kernel compile using frontend_server, outputting `kernel_blob.bin` to `fixtures/test_target_name` directory, and updates the embedder unittests to specify the kernel file rather than the Dart source file. Since the kernel compiler requires a `main()` function to be defined, it also updates `simple_main.dart` from runtime_unittests to define `main()` rather than `simple_main()`. This also updates all existing sub-targets to be testonly. --- runtime/fixtures/simple_main.dart | 2 +- .../embedder/fixtures/simple_main.dart | 2 +- .../embedder/tests/embedder_unittests.cc | 7 +-- testing/testing.gni | 44 ++++++++++++++----- 4 files changed, 37 insertions(+), 18 deletions(-) diff --git a/runtime/fixtures/simple_main.dart b/runtime/fixtures/simple_main.dart index dc744d2777e3b..55187d8642bfa 100644 --- a/runtime/fixtures/simple_main.dart +++ b/runtime/fixtures/simple_main.dart @@ -2,6 +2,6 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -void simple_main() { +void main() { print("Hello"); } diff --git a/shell/platform/embedder/fixtures/simple_main.dart b/shell/platform/embedder/fixtures/simple_main.dart index 05a37e98348ad..ab73b3a234abf 100644 --- a/shell/platform/embedder/fixtures/simple_main.dart +++ b/shell/platform/embedder/fixtures/simple_main.dart @@ -1 +1 @@ -void main() {} \ No newline at end of file +void main() {} diff --git a/shell/platform/embedder/tests/embedder_unittests.cc b/shell/platform/embedder/tests/embedder_unittests.cc index 6cd3f4d330a65..266cf92e55a44 100644 --- a/shell/platform/embedder/tests/embedder_unittests.cc +++ b/shell/platform/embedder/tests/embedder_unittests.cc @@ -22,17 +22,14 @@ TEST(EmbedderTest, CanLaunchAndShutdownWithValidProjectArgs) { return false; }; - std::string main = - std::string(testing::GetFixturesPath()) + "/simple_main.dart"; - FlutterRendererConfig config = {}; config.type = FlutterRendererType::kSoftware; config.software = renderer; FlutterProjectArgs args = {}; args.struct_size = sizeof(FlutterProjectArgs); - args.assets_path = ""; - args.main_path = main.c_str(); + args.assets_path = testing::GetFixturesPath(); + args.main_path = ""; args.packages_path = ""; FlutterEngine engine = nullptr; diff --git a/testing/testing.gni b/testing/testing.gni index ad5badfe922fe..b0b49f02d640f 100644 --- a/testing/testing.gni +++ b/testing/testing.gni @@ -2,18 +2,21 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. +import("//third_party/dart/build/dart/dart_action.gni") + +# Builds test fixtures for a unit test. +# +# Generates a directory structure containing an assets directory and the Dart +# code to execute compiled to kernel, emitted to assets/kernel_blob.bin. template("test_fixtures") { testonly = true assert(defined(invoker.fixtures), "Test fixtures must be specified.") - fixtures_name_target_name = target_name + "_gen_fixtures_name" - fixtures_source_set_target_name = target_name + "_gen_fixtures_source_set" - fixtures_copy_target_name = target_name + "_copy_fixtures" - - fixtures_location = "$target_gen_dir/fixtures" - fixtures_location_file = "$target_gen_dir/test_fixtures_location.cc" + fixtures_location = "$target_gen_dir/$target_name/assets" + fixtures_location_file = "$target_gen_dir/$target_name/test_fixtures_location.cc" + fixtures_name_target_name = target_name + "_gen_fixtures_name" action(fixtures_name_target_name) { script = "$flutter_root/testing/build/gen_fixtures_location_symbol.py" @@ -29,7 +32,9 @@ template("test_fixtures") { ] } + fixtures_source_set_target_name = target_name + "_gen_fixtures_source_set" source_set(fixtures_source_set_target_name) { + testonly = true sources = [ fixtures_location_file, ] @@ -39,16 +44,33 @@ template("test_fixtures") { ] } - copy(fixtures_copy_target_name) { - sources = invoker.fixtures - outputs = [ - "$fixtures_location/{{source_file_part}}", + fixtures_kernel_target_name = target_name + "_kernel" + prebuilt_dart_action(fixtures_kernel_target_name) { + testonly = true + script = "$root_out_dir/frontend_server.dart.snapshot" + + fixture_paths = [] + foreach(fixture, invoker.fixtures) { + fixture_paths += [ rebase_path(fixture) ] + } + inputs = fixture_paths + outputs = ["$fixtures_location/kernel_blob.bin"] + + args = [ + "--sdk-root", rebase_path("$root_out_dir/flutter_patched_sdk"), + "--strong", + "--target", "flutter", + "--output-dill", rebase_path("$fixtures_location/kernel_blob.bin"), + ] + fixture_paths + deps = [ + "//third_party/dart/utils/kernel-service:frontend_server" ] } group(target_name) { + testonly = true deps = [ - ":$fixtures_copy_target_name", + ":$fixtures_kernel_target_name", ":$fixtures_source_set_target_name", ] } From f7d91d6fad927aa29ba2021b238c3ed1be81b217 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Sat, 15 Dec 2018 17:13:05 -0500 Subject: [PATCH 0560/1537] Roll src/third_party/skia 282ec5dc6ca7..2e6db18c4309 (1 commits) (#7228) https://skia.googlesource.com/skia.git/+log/282ec5dc6ca7..2e6db18c4309 Created with: gclient setdep -r src/third_party/skia@2e6db18c4309 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 6edf7ea154715..43ae090bca4ba 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '282ec5dc6ca7acc49cd4c43ce85a73f0d487ffc9', + 'skia_revision': '2e6db18c4309f7f2036e40abf77804086132c237', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 18fff6070ee14..6b567b7cd9b9c 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 6287f51087b91a57edd54e012c45241d +Signature: 242b52676b25f8bd9640182b3dd9e019 UNUSED LICENSES: From 494112582932af98b282617d7a34b1fbb8c90307 Mon Sep 17 00:00:00 2001 From: Chris Bracken Date: Sat, 15 Dec 2018 14:43:26 -0800 Subject: [PATCH 0561/1537] Revert "Compile embedder unit test Dart to kernel (#7227)" (#7230) This reverts commit ac9e521a1ddbb99816a93d92ce9fb70e950b3763. This broke dynamic release mode builds of //flutter/runtime:runtime_fixtures_kernel (likely all product-mode builds). --- runtime/fixtures/simple_main.dart | 2 +- .../embedder/fixtures/simple_main.dart | 2 +- .../embedder/tests/embedder_unittests.cc | 7 ++- testing/testing.gni | 44 +++++-------------- 4 files changed, 18 insertions(+), 37 deletions(-) diff --git a/runtime/fixtures/simple_main.dart b/runtime/fixtures/simple_main.dart index 55187d8642bfa..dc744d2777e3b 100644 --- a/runtime/fixtures/simple_main.dart +++ b/runtime/fixtures/simple_main.dart @@ -2,6 +2,6 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -void main() { +void simple_main() { print("Hello"); } diff --git a/shell/platform/embedder/fixtures/simple_main.dart b/shell/platform/embedder/fixtures/simple_main.dart index ab73b3a234abf..05a37e98348ad 100644 --- a/shell/platform/embedder/fixtures/simple_main.dart +++ b/shell/platform/embedder/fixtures/simple_main.dart @@ -1 +1 @@ -void main() {} +void main() {} \ No newline at end of file diff --git a/shell/platform/embedder/tests/embedder_unittests.cc b/shell/platform/embedder/tests/embedder_unittests.cc index 266cf92e55a44..6cd3f4d330a65 100644 --- a/shell/platform/embedder/tests/embedder_unittests.cc +++ b/shell/platform/embedder/tests/embedder_unittests.cc @@ -22,14 +22,17 @@ TEST(EmbedderTest, CanLaunchAndShutdownWithValidProjectArgs) { return false; }; + std::string main = + std::string(testing::GetFixturesPath()) + "/simple_main.dart"; + FlutterRendererConfig config = {}; config.type = FlutterRendererType::kSoftware; config.software = renderer; FlutterProjectArgs args = {}; args.struct_size = sizeof(FlutterProjectArgs); - args.assets_path = testing::GetFixturesPath(); - args.main_path = ""; + args.assets_path = ""; + args.main_path = main.c_str(); args.packages_path = ""; FlutterEngine engine = nullptr; diff --git a/testing/testing.gni b/testing/testing.gni index b0b49f02d640f..ad5badfe922fe 100644 --- a/testing/testing.gni +++ b/testing/testing.gni @@ -2,21 +2,18 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. -import("//third_party/dart/build/dart/dart_action.gni") - -# Builds test fixtures for a unit test. -# -# Generates a directory structure containing an assets directory and the Dart -# code to execute compiled to kernel, emitted to assets/kernel_blob.bin. template("test_fixtures") { testonly = true assert(defined(invoker.fixtures), "Test fixtures must be specified.") - fixtures_location = "$target_gen_dir/$target_name/assets" - fixtures_location_file = "$target_gen_dir/$target_name/test_fixtures_location.cc" - fixtures_name_target_name = target_name + "_gen_fixtures_name" + fixtures_source_set_target_name = target_name + "_gen_fixtures_source_set" + fixtures_copy_target_name = target_name + "_copy_fixtures" + + fixtures_location = "$target_gen_dir/fixtures" + fixtures_location_file = "$target_gen_dir/test_fixtures_location.cc" + action(fixtures_name_target_name) { script = "$flutter_root/testing/build/gen_fixtures_location_symbol.py" @@ -32,9 +29,7 @@ template("test_fixtures") { ] } - fixtures_source_set_target_name = target_name + "_gen_fixtures_source_set" source_set(fixtures_source_set_target_name) { - testonly = true sources = [ fixtures_location_file, ] @@ -44,33 +39,16 @@ template("test_fixtures") { ] } - fixtures_kernel_target_name = target_name + "_kernel" - prebuilt_dart_action(fixtures_kernel_target_name) { - testonly = true - script = "$root_out_dir/frontend_server.dart.snapshot" - - fixture_paths = [] - foreach(fixture, invoker.fixtures) { - fixture_paths += [ rebase_path(fixture) ] - } - inputs = fixture_paths - outputs = ["$fixtures_location/kernel_blob.bin"] - - args = [ - "--sdk-root", rebase_path("$root_out_dir/flutter_patched_sdk"), - "--strong", - "--target", "flutter", - "--output-dill", rebase_path("$fixtures_location/kernel_blob.bin"), - ] + fixture_paths - deps = [ - "//third_party/dart/utils/kernel-service:frontend_server" + copy(fixtures_copy_target_name) { + sources = invoker.fixtures + outputs = [ + "$fixtures_location/{{source_file_part}}", ] } group(target_name) { - testonly = true deps = [ - ":$fixtures_kernel_target_name", + ":$fixtures_copy_target_name", ":$fixtures_source_set_target_name", ] } From 6c4e90731033dc21e865ac8007b118e31f244cd0 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Sun, 16 Dec 2018 01:56:15 -0500 Subject: [PATCH 0562/1537] Roll src/third_party/skia 2e6db18c4309..cb8157e6266c (1 commits) (#7232) https://skia.googlesource.com/skia.git/+log/2e6db18c4309..cb8157e6266c Created with: gclient setdep -r src/third_party/skia@cb8157e6266c The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 43ae090bca4ba..6673c20ce0302 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '2e6db18c4309f7f2036e40abf77804086132c237', + 'skia_revision': 'cb8157e6266c25fdd9e602c53c8f6b5f5fa4365b', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 6b567b7cd9b9c..1b6621972d6dc 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 242b52676b25f8bd9640182b3dd9e019 +Signature: 587922906ab4ae440dc70c6159ba71aa UNUSED LICENSES: From 5af435098d340237c5e3a69bce6aaffd4e3bfe84 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Sun, 16 Dec 2018 05:57:53 -0500 Subject: [PATCH 0563/1537] Roll src/third_party/skia cb8157e6266c..e6f635476da3 (1 commits) (#7233) https://skia.googlesource.com/skia.git/+log/cb8157e6266c..e6f635476da3 Created with: gclient setdep -r src/third_party/skia@e6f635476da3 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 6673c20ce0302..d4233fe50da70 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'cb8157e6266c25fdd9e602c53c8f6b5f5fa4365b', + 'skia_revision': 'e6f635476da3f0d1e6532a735418af93beb15626', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 1b6621972d6dc..aedc657135bbc 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 587922906ab4ae440dc70c6159ba71aa +Signature: 47c6b0c813ad1f45e10f70405474e782 UNUSED LICENSES: From 67cd7d4d3b0f343cb2730f39c38602c2910c8b06 Mon Sep 17 00:00:00 2001 From: Chris Bracken Date: Sun, 16 Dec 2018 12:23:18 -0800 Subject: [PATCH 0564/1537] Compile embedder unit test Dart to kernel (#7231) As of the migration to Dart 2, it has been necessary to compile Dart to kernel prior to execution. The embedder currently requires that the resulting kernel file be named `kernel_blob.bin` and be located at the root of the assets directory passed to the embedder API. This patch updates the test_fixtures build rule to perform a kernel compile using frontend_server, outputting `kernel_blob.bin` to `fixtures/test_target_name` directory, and updates the embedder unittests to specify the kernel file rather than the Dart source file. Since the kernel compiler requires a `main()` function to be defined, it also updates `simple_main.dart` from runtime_unittests to define `main()` rather than `simple_main()`. This also updates all existing sub-targets to be testonly. This relands commit ac9e521a1ddbb99816a93d92ce9fb70e950b3763, which was reverted in commit 494112582932af98b282617d7a34b1fbb8c90307. Rather than running as prebuilt_dart_action, we use dart_action to ensure the frontend snapshot it compatible with the VM on which it's executed. --- runtime/fixtures/simple_main.dart | 2 +- .../embedder/fixtures/simple_main.dart | 2 +- .../embedder/tests/embedder_unittests.cc | 7 +-- testing/testing.gni | 43 ++++++++++++++----- 4 files changed, 36 insertions(+), 18 deletions(-) diff --git a/runtime/fixtures/simple_main.dart b/runtime/fixtures/simple_main.dart index dc744d2777e3b..55187d8642bfa 100644 --- a/runtime/fixtures/simple_main.dart +++ b/runtime/fixtures/simple_main.dart @@ -2,6 +2,6 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -void simple_main() { +void main() { print("Hello"); } diff --git a/shell/platform/embedder/fixtures/simple_main.dart b/shell/platform/embedder/fixtures/simple_main.dart index 05a37e98348ad..ab73b3a234abf 100644 --- a/shell/platform/embedder/fixtures/simple_main.dart +++ b/shell/platform/embedder/fixtures/simple_main.dart @@ -1 +1 @@ -void main() {} \ No newline at end of file +void main() {} diff --git a/shell/platform/embedder/tests/embedder_unittests.cc b/shell/platform/embedder/tests/embedder_unittests.cc index 6cd3f4d330a65..266cf92e55a44 100644 --- a/shell/platform/embedder/tests/embedder_unittests.cc +++ b/shell/platform/embedder/tests/embedder_unittests.cc @@ -22,17 +22,14 @@ TEST(EmbedderTest, CanLaunchAndShutdownWithValidProjectArgs) { return false; }; - std::string main = - std::string(testing::GetFixturesPath()) + "/simple_main.dart"; - FlutterRendererConfig config = {}; config.type = FlutterRendererType::kSoftware; config.software = renderer; FlutterProjectArgs args = {}; args.struct_size = sizeof(FlutterProjectArgs); - args.assets_path = ""; - args.main_path = main.c_str(); + args.assets_path = testing::GetFixturesPath(); + args.main_path = ""; args.packages_path = ""; FlutterEngine engine = nullptr; diff --git a/testing/testing.gni b/testing/testing.gni index ad5badfe922fe..e653933b62a84 100644 --- a/testing/testing.gni +++ b/testing/testing.gni @@ -2,18 +2,21 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. +import("//third_party/dart/build/dart/dart_action.gni") + +# Builds test fixtures for a unit test. +# +# Generates a directory structure containing an assets directory and the Dart +# code to execute compiled to kernel, emitted to assets/kernel_blob.bin. template("test_fixtures") { testonly = true assert(defined(invoker.fixtures), "Test fixtures must be specified.") - fixtures_name_target_name = target_name + "_gen_fixtures_name" - fixtures_source_set_target_name = target_name + "_gen_fixtures_source_set" - fixtures_copy_target_name = target_name + "_copy_fixtures" - - fixtures_location = "$target_gen_dir/fixtures" - fixtures_location_file = "$target_gen_dir/test_fixtures_location.cc" + fixtures_location = "$target_gen_dir/$target_name/assets" + fixtures_location_file = "$target_gen_dir/$target_name/test_fixtures_location.cc" + fixtures_name_target_name = target_name + "_gen_fixtures_name" action(fixtures_name_target_name) { script = "$flutter_root/testing/build/gen_fixtures_location_symbol.py" @@ -29,7 +32,9 @@ template("test_fixtures") { ] } + fixtures_source_set_target_name = target_name + "_gen_fixtures_source_set" source_set(fixtures_source_set_target_name) { + testonly = true sources = [ fixtures_location_file, ] @@ -39,16 +44,32 @@ template("test_fixtures") { ] } - copy(fixtures_copy_target_name) { - sources = invoker.fixtures - outputs = [ - "$fixtures_location/{{source_file_part}}", + fixtures_kernel_target_name = target_name + "_kernel" + dart_action(fixtures_kernel_target_name) { + testonly = true + script = "$root_out_dir/frontend_server.dart.snapshot" + + fixture_paths = [] + foreach(fixture, invoker.fixtures) { + fixture_paths += [ rebase_path(fixture) ] + } + inputs = fixture_paths + outputs = ["$fixtures_location/kernel_blob.bin"] + + args = [ + "--sdk-root", rebase_path("$root_out_dir/flutter_patched_sdk"), + "--target", "flutter", + "--output-dill", rebase_path("$fixtures_location/kernel_blob.bin"), + ] + fixture_paths + deps = [ + "//third_party/dart/utils/kernel-service:frontend_server" ] } group(target_name) { + testonly = true deps = [ - ":$fixtures_copy_target_name", + ":$fixtures_kernel_target_name", ":$fixtures_source_set_target_name", ] } From f986a12e20b874317c690f7efe71a452c7a66a61 Mon Sep 17 00:00:00 2001 From: Jimmy Casey Date: Sun, 16 Dec 2018 20:51:00 +0000 Subject: [PATCH 0565/1537] Correct spelling in doc comments (#7179) Applies spelling corrections to accessibility-related doc comments and in the license tool. --- lib/ui/semantics.dart | 2 +- shell/platform/android/io/flutter/view/AccessibilityBridge.java | 2 +- tools/licenses/lib/patterns.dart | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/ui/semantics.dart b/lib/ui/semantics.dart index 9b69b2834f9d4..8ebce7de15abf 100644 --- a/lib/ui/semantics.dart +++ b/lib/ui/semantics.dart @@ -404,7 +404,7 @@ class SemanticsFlag { /// that the node's semantic label can be used to announce an edge triggered /// semantics update. /// - /// Semantic nodes annotated with this flag will still recieve a11y focus. + /// Semantic nodes annotated with this flag will still receive a11y focus. /// /// Updating this label within the same active route subtree will not cause /// additional announcements. diff --git a/shell/platform/android/io/flutter/view/AccessibilityBridge.java b/shell/platform/android/io/flutter/view/AccessibilityBridge.java index 4fc808e9eea5f..dfa9662f2ae1a 100644 --- a/shell/platform/android/io/flutter/view/AccessibilityBridge.java +++ b/shell/platform/android/io/flutter/view/AccessibilityBridge.java @@ -1153,7 +1153,7 @@ void updateWith(ByteBuffer buffer, String[] strings) { } else if (action.overrideId == Action.LONG_PRESS.value) { onLongPressOverride = action; } else { - // If we recieve a different overrideId it means that we were passed + // If we receive a different overrideId it means that we were passed // a standard action to override that we don't yet support. assert action.overrideId == -1; customAccessibilityActions.add(action); diff --git a/tools/licenses/lib/patterns.dart b/tools/licenses/lib/patterns.dart index dde04c5438e7f..dec6cabe1298e 100644 --- a/tools/licenses/lib/patterns.dart +++ b/tools/licenses/lib/patterns.dart @@ -1209,7 +1209,7 @@ final List csLicenses = [ r'^\1\2OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF *\n' r'^\1\2SUCH DAMAGE\. *\n' r'^(?:(?:\1\2?g? *)? *\n)*' - r'^\1\2The licence and distribution terms for any publically available version or *\n' + r'^\1\2The licence and distribution terms for any publicly available version or *\n' r'^\1\2derivative of this code cannot be changed\. +i\.e\. +this code cannot simply be *\n' r'^\1\2copied and put under another distribution licence *\n' r'^\1\2\[including the GNU Public Licence\.\]', From 08465e8000358f3c5f5144f3e745267a97506053 Mon Sep 17 00:00:00 2001 From: Chris Bracken Date: Sun, 16 Dec 2018 14:07:42 -0800 Subject: [PATCH 0566/1537] Verify RunConfiguration is valid before running (#6922) In cases where a valid IsolateConfiguration cannot be inferred, (e.g., settings.kernel_list_asset is missing) RunConfiguration can be created with a null IsolateConfiguration. In such cases, bail out early with kInvalidSettings. Also adds a redundant paranoid check to EmbedderEngine::Run. --- shell/platform/embedder/embedder.cc | 3 +++ shell/platform/embedder/embedder_engine.cc | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/shell/platform/embedder/embedder.cc b/shell/platform/embedder/embedder.cc index d5d5ea51d9bff..516f5919d500d 100644 --- a/shell/platform/embedder/embedder.cc +++ b/shell/platform/embedder/embedder.cc @@ -384,6 +384,9 @@ FlutterResult FlutterEngineRun(size_t version, run_configuration.AddAssetResolver( std::make_unique(fml::OpenDirectory( settings.assets_path.c_str(), false, fml::FilePermission::kRead))); + if (!run_configuration.IsValid()) { + return kInvalidArguments; + } if (!embedder_engine->Run(std::move(run_configuration))) { return kInvalidArguments; diff --git a/shell/platform/embedder/embedder_engine.cc b/shell/platform/embedder/embedder_engine.cc index 7299e38e37e93..ef4078cade8f9 100644 --- a/shell/platform/embedder/embedder_engine.cc +++ b/shell/platform/embedder/embedder_engine.cc @@ -47,7 +47,7 @@ bool EmbedderEngine::NotifyDestroyed() { } bool EmbedderEngine::Run(RunConfiguration run_configuration) { - if (!IsValid()) { + if (!IsValid() || !run_configuration.IsValid()) { return false; } From 8190e939f5824b4ad52bc49e24473203ee479532 Mon Sep 17 00:00:00 2001 From: Jason Simmons Date: Mon, 17 Dec 2018 15:54:57 -0800 Subject: [PATCH 0567/1537] Simplify conversion of numeric types in the message codec on iOS (#7097) Consistently handle Int32/Int64 types on both 32-bit and 64-bit versions of iOS. Drop usage of the obsolete hex string encoding for BigInt types. Fixes https://github.com/flutter/flutter/issues/21313 --- .../framework/Source/FlutterStandardCodec.mm | 68 +++++++++---------- 1 file changed, 32 insertions(+), 36 deletions(-) diff --git a/shell/platform/darwin/ios/framework/Source/FlutterStandardCodec.mm b/shell/platform/darwin/ios/framework/Source/FlutterStandardCodec.mm index c96887feb7b2c..d7c151bfa7562 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterStandardCodec.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterStandardCodec.mm @@ -265,36 +265,37 @@ - (void)writeValue:(id)value { if (value == nil || value == [NSNull null]) { [self writeByte:FlutterStandardFieldNil]; } else if ([value isKindOfClass:[NSNumber class]]) { - NSNumber* number = value; - const char* type = [number objCType]; - if ([self isBool:number type:type]) { - BOOL b = number.boolValue; + CFNumberRef number = (CFNumberRef)value; + BOOL success = NO; + if (CFGetTypeID(number) == CFBooleanGetTypeID()) { + BOOL b = CFBooleanGetValue((CFBooleanRef)number); [self writeByte:(b ? FlutterStandardFieldTrue : FlutterStandardFieldFalse)]; - } else if (strcmp(type, @encode(signed int)) == 0 || strcmp(type, @encode(signed short)) == 0 || - strcmp(type, @encode(unsigned short)) == 0 || - strcmp(type, @encode(signed char)) == 0 || - strcmp(type, @encode(unsigned char)) == 0) { - SInt32 n = number.intValue; - [self writeByte:FlutterStandardFieldInt32]; - [self writeBytes:(UInt8*)&n length:4]; - } else if (strcmp(type, @encode(signed long)) == 0 || - strcmp(type, @encode(unsigned int)) == 0) { - SInt64 n = number.longValue; - [self writeByte:FlutterStandardFieldInt64]; - [self writeBytes:(UInt8*)&n length:8]; - } else if (strcmp(type, @encode(double)) == 0 || strcmp(type, @encode(float)) == 0) { - Float64 f = number.doubleValue; - [self writeByte:FlutterStandardFieldFloat64]; - [self writeAlignment:8]; - [self writeBytes:(UInt8*)&f length:8]; - } else if (strcmp(type, @encode(unsigned long)) == 0 || - strcmp(type, @encode(signed long long)) == 0 || - strcmp(type, @encode(unsigned long long)) == 0) { - NSString* hex = [NSString stringWithFormat:@"%llx", number.unsignedLongLongValue]; - [self writeByte:FlutterStandardFieldIntHex]; - [self writeUTF8:hex]; - } else { - NSLog(@"Unsupported value: %@ of type %s", value, type); + success = YES; + } else if (CFNumberIsFloatType(number)) { + Float64 f; + success = CFNumberGetValue(number, kCFNumberFloat64Type, &f); + if (success) { + [self writeByte:FlutterStandardFieldFloat64]; + [self writeAlignment:8]; + [self writeBytes:(UInt8*)&f length:8]; + } + } else if (CFNumberGetByteSize(number) <= 4) { + SInt32 n; + success = CFNumberGetValue(number, kCFNumberSInt32Type, &n); + if (success) { + [self writeByte:FlutterStandardFieldInt32]; + [self writeBytes:(UInt8*)&n length:4]; + } + } else if (CFNumberGetByteSize(number) <= 8) { + SInt64 n; + success = CFNumberGetValue(number, kCFNumberSInt64Type, &n); + if (success) { + [self writeByte:FlutterStandardFieldInt64]; + [self writeBytes:(UInt8*)&n length:8]; + } + } + if (!success) { + NSLog(@"Unsupported value: %@ of number type %ld", value, CFNumberGetType(number)); NSAssert(NO, @"Unsupported value for standard codec"); } } else if ([value isKindOfClass:[NSString class]]) { @@ -329,11 +330,6 @@ - (void)writeValue:(id)value { NSAssert(NO, @"Unsupported value for standard codec"); } } - -- (BOOL)isBool:(NSNumber*)number type:(const char*)type { - return strcmp(type, @encode(signed char)) == 0 && - [NSStringFromClass([number class]) isEqual:@"__NSCFBoolean"]; -} @end @implementation FlutterStandardReader { @@ -428,12 +424,12 @@ - (id)readValueOfType:(UInt8)type { case FlutterStandardFieldInt32: { SInt32 value; [self readBytes:&value length:4]; - return [NSNumber numberWithInt:value]; + return @(value); } case FlutterStandardFieldInt64: { SInt64 value; [self readBytes:&value length:8]; - return [NSNumber numberWithLong:value]; + return @(value); } case FlutterStandardFieldFloat64: { Float64 value; From 42c62a944ba77de2589ddda9b3de16f9d020bca9 Mon Sep 17 00:00:00 2001 From: Jason Simmons Date: Mon, 17 Dec 2018 16:05:23 -0800 Subject: [PATCH 0568/1537] Fix destruction of the child object list in the iOS accessibility bridge (#7108) Fixes https://github.com/flutter/flutter/issues/22206 --- .../darwin/ios/framework/Source/accessibility_bridge.mm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/shell/platform/darwin/ios/framework/Source/accessibility_bridge.mm b/shell/platform/darwin/ios/framework/Source/accessibility_bridge.mm index d744e5fc06605..0f7b11d07c6f6 100644 --- a/shell/platform/darwin/ios/framework/Source/accessibility_bridge.mm +++ b/shell/platform/darwin/ios/framework/Source/accessibility_bridge.mm @@ -110,7 +110,7 @@ - (instancetype)initWithBridge:(fml::WeakPtr)bridge if (self) { _bridge = bridge; _uid = uid; - self.children = [[[NSMutableArray alloc] init] autorelease]; + _children = [[NSMutableArray alloc] init]; } return self; @@ -121,7 +121,7 @@ - (void)dealloc { child.parent = nil; } [_children removeAllObjects]; - [_children dealloc]; + [_children release]; _parent = nil; [_container release]; _container = nil; From 951edf3e113c20f975e660433f53ff4daaab6d2c Mon Sep 17 00:00:00 2001 From: Todd Volkert Date: Mon, 17 Dec 2018 16:34:54 -0800 Subject: [PATCH 0569/1537] Simplify nested try-with-resources statements (#7239) --- .../io/flutter/view/ResourceExtractor.java | 48 +++++++++---------- 1 file changed, 23 insertions(+), 25 deletions(-) diff --git a/shell/platform/android/io/flutter/view/ResourceExtractor.java b/shell/platform/android/io/flutter/view/ResourceExtractor.java index 67fc1aa19e81f..fd7d148be99ff 100644 --- a/shell/platform/android/io/flutter/view/ResourceExtractor.java +++ b/shell/platform/android/io/flutter/view/ResourceExtractor.java @@ -87,20 +87,19 @@ private boolean extractAPK(File dataDir) { output.getParentFile().mkdirs(); } - try (InputStream is = manager.open(asset)) { - try (OutputStream os = new FileOutputStream(output)) { - if (buffer == null) { - buffer = new byte[BUFFER_SIZE]; - } - - int count = 0; - while ((count = is.read(buffer, 0, BUFFER_SIZE)) != -1) { - os.write(buffer, 0, count); - } - - os.flush(); - Log.i(TAG, "Extracted baseline resource " + asset); + try (InputStream is = manager.open(asset); + OutputStream os = new FileOutputStream(output)) { + if (buffer == null) { + buffer = new byte[BUFFER_SIZE]; + } + + int count = 0; + while ((count = is.read(buffer, 0, BUFFER_SIZE)) != -1) { + os.write(buffer, 0, count); } + + os.flush(); + Log.i(TAG, "Extracted baseline resource " + asset); } } catch (FileNotFoundException fnfe) { @@ -158,21 +157,20 @@ private boolean extractUpdate(File dataDir) { output.getParentFile().mkdirs(); } - try (InputStream is = zipFile.getInputStream(entry)) { - try (OutputStream os = new FileOutputStream(output)) { - if (buffer == null) { - buffer = new byte[BUFFER_SIZE]; - } - - int count = 0; - while ((count = is.read(buffer, 0, BUFFER_SIZE)) != -1) { - os.write(buffer, 0, count); - } + try (InputStream is = zipFile.getInputStream(entry); + OutputStream os = new FileOutputStream(output)) { + if (buffer == null) { + buffer = new byte[BUFFER_SIZE]; + } - os.flush(); - Log.i(TAG, "Extracted override resource " + asset); + int count = 0; + while ((count = is.read(buffer, 0, BUFFER_SIZE)) != -1) { + os.write(buffer, 0, count); } + os.flush(); + Log.i(TAG, "Extracted override resource " + asset); + } catch (FileNotFoundException fnfe) { continue; From f79f7f6312a1e43adfd71194eaef8b5ef0354b6a Mon Sep 17 00:00:00 2001 From: Todd Volkert Date: Mon, 17 Dec 2018 16:35:10 -0800 Subject: [PATCH 0570/1537] Allow inferred types using diamond syntax (#7237) --- .../io/flutter/app/FlutterActivityDelegate.java | 6 +++--- .../plugin/editing/InputConnectionAdaptor.java | 2 +- .../io/flutter/view/AccessibilityBridge.java | 17 ++++++++--------- .../android/io/flutter/view/FlutterView.java | 2 +- .../io/flutter/view/ResourceExtractor.java | 2 +- 5 files changed, 14 insertions(+), 15 deletions(-) diff --git a/shell/platform/android/io/flutter/app/FlutterActivityDelegate.java b/shell/platform/android/io/flutter/app/FlutterActivityDelegate.java index a78a805797de6..3e15de0cb6187 100644 --- a/shell/platform/android/io/flutter/app/FlutterActivityDelegate.java +++ b/shell/platform/android/io/flutter/app/FlutterActivityDelegate.java @@ -171,7 +171,7 @@ public void onCreate(Bundle savedInstanceState) { String appBundlePath = FlutterMain.findAppBundlePath(activity.getApplicationContext()); if (appBundlePath != null) { FlutterRunArguments arguments = new FlutterRunArguments(); - ArrayList bundlePaths = new ArrayList(); + ArrayList bundlePaths = new ArrayList<>(); if (FlutterMain.getUpdateInstallationPath() != null) { bundlePaths.add(FlutterMain.getUpdateInstallationPath()); } @@ -296,7 +296,7 @@ private static String[] getArgsFromIntent(Intent intent) { // Before adding more entries to this list, consider that arbitrary // Android applications can generate intents with extra data and that // there are many security-sensitive args in the binary. - ArrayList args = new ArrayList(); + ArrayList args = new ArrayList<>(); if (intent.getBooleanExtra("trace-startup", false)) { args.add("--trace-startup"); } @@ -343,7 +343,7 @@ private boolean loadIntent(Intent intent) { } if (!flutterView.getFlutterNativeView().isApplicationRunning()) { FlutterRunArguments args = new FlutterRunArguments(); - ArrayList bundlePaths = new ArrayList(); + ArrayList bundlePaths = new ArrayList<>(); if (FlutterMain.getUpdateInstallationPath() != null) { bundlePaths.add(FlutterMain.getUpdateInstallationPath()); } diff --git a/shell/platform/android/io/flutter/plugin/editing/InputConnectionAdaptor.java b/shell/platform/android/io/flutter/plugin/editing/InputConnectionAdaptor.java index e169d6ff6b080..5b2a95d2327ff 100644 --- a/shell/platform/android/io/flutter/plugin/editing/InputConnectionAdaptor.java +++ b/shell/platform/android/io/flutter/plugin/editing/InputConnectionAdaptor.java @@ -51,7 +51,7 @@ private void updateEditingState() { selectionStart, selectionEnd, composingStart, composingEnd); - HashMap state = new HashMap(); + HashMap state = new HashMap<>(); state.put("text", mEditable.toString()); state.put("selectionBase", selectionStart); state.put("selectionExtent", selectionEnd); diff --git a/shell/platform/android/io/flutter/view/AccessibilityBridge.java b/shell/platform/android/io/flutter/view/AccessibilityBridge.java index dfa9662f2ae1a..712b95761e869 100644 --- a/shell/platform/android/io/flutter/view/AccessibilityBridge.java +++ b/shell/platform/android/io/flutter/view/AccessibilityBridge.java @@ -108,8 +108,8 @@ enum Flag { AccessibilityBridge(FlutterView owner) { assert owner != null; mOwner = owner; - mObjects = new HashMap(); - mCustomAccessibilityActions = new HashMap(); + mObjects = new HashMap<>(); + mCustomAccessibilityActions = new HashMap<>(); previousRoutes = new ArrayList<>(); mFlutterAccessibilityChannel = new BasicMessageChannel<>( owner, "flutter/accessibility", StandardMessageCodec.INSTANCE); @@ -443,7 +443,7 @@ public boolean performAction(int virtualViewId, int action, Bundle arguments) { return true; } case AccessibilityNodeInfo.ACTION_SET_SELECTION: { - final Map selection = new HashMap(); + final Map selection = new HashMap<>(); final boolean hasSelection = arguments != null && arguments.containsKey( AccessibilityNodeInfo.ACTION_ARGUMENT_SELECTION_START_INT) @@ -611,7 +611,7 @@ void updateCustomAccessibilityActions(ByteBuffer buffer, String[] strings) { } void updateSemantics(ByteBuffer buffer, String[] strings) { - ArrayList updated = new ArrayList(); + ArrayList updated = new ArrayList<>(); while (buffer.hasRemaining()) { int id = buffer.getInt(); SemanticsObject object = getOrCreateObject(id); @@ -627,7 +627,7 @@ void updateSemantics(ByteBuffer buffer, String[] strings) { } } - Set visitedObjects = new HashSet(); + Set visitedObjects = new HashSet<>(); SemanticsObject rootObject = getRootObject(); List newRoutes = new ArrayList<>(); if (rootObject != null) { @@ -1115,7 +1115,7 @@ void updateWith(ByteBuffer buffer, String[] strings) { childrenInHitTestOrder = null; } else { if (childrenInTraversalOrder == null) - childrenInTraversalOrder = new ArrayList(childCount); + childrenInTraversalOrder = new ArrayList<>(childCount); else childrenInTraversalOrder.clear(); @@ -1126,7 +1126,7 @@ void updateWith(ByteBuffer buffer, String[] strings) { } if (childrenInHitTestOrder == null) - childrenInHitTestOrder = new ArrayList(childCount); + childrenInHitTestOrder = new ArrayList<>(childCount); else childrenInHitTestOrder.clear(); @@ -1141,8 +1141,7 @@ void updateWith(ByteBuffer buffer, String[] strings) { customAccessibilityActions = null; } else { if (customAccessibilityActions == null) - customAccessibilityActions = - new ArrayList(actionCount); + customAccessibilityActions = new ArrayList<>(actionCount); else customAccessibilityActions.clear(); diff --git a/shell/platform/android/io/flutter/view/FlutterView.java b/shell/platform/android/io/flutter/view/FlutterView.java index a8fb3ff483450..82799421a9e37 100644 --- a/shell/platform/android/io/flutter/view/FlutterView.java +++ b/shell/platform/android/io/flutter/view/FlutterView.java @@ -319,7 +319,7 @@ private void setLocales(Configuration config) { Method localeListGet = localeList.getClass().getDeclaredMethod("get", int.class); Method localeListSize = localeList.getClass().getDeclaredMethod("size"); int localeCount = (int)localeListSize.invoke(localeList); - List data = new ArrayList(); + List data = new ArrayList<>(); for (int index = 0; index < localeCount; ++index) { Locale locale = (Locale)localeListGet.invoke(localeList, index); data.add(locale.getLanguage()); diff --git a/shell/platform/android/io/flutter/view/ResourceExtractor.java b/shell/platform/android/io/flutter/view/ResourceExtractor.java index fd7d148be99ff..25b98bdb42201 100644 --- a/shell/platform/android/io/flutter/view/ResourceExtractor.java +++ b/shell/platform/android/io/flutter/view/ResourceExtractor.java @@ -330,7 +330,7 @@ protected Void doInBackground(Void... unused) { ResourceExtractor(Context context) { mContext = context; - mResources = new HashSet(); + mResources = new HashSet<>(); } ResourceExtractor addResource(String resource) { From 5c63303c2f1dd8f739ae58ecbf21a5af4e3871cb Mon Sep 17 00:00:00 2001 From: Chris Bracken Date: Mon, 17 Dec 2018 18:57:04 -0800 Subject: [PATCH 0571/1537] Revert spelling correction in licence matcher (#7242) In f986a12e20b874317c690f7efe71a452c7a66a61 (#7179), the word 'publically' was altered to 'publicly', causing the licence aggregator to fail to match the licence text included in many BoringSSL source files. The original licence includes several misspellings (e.g. 'rouines' rather than 'routines') which we need to faithfully reproduce in our match regex. The failure this triggered went unnoticed during pre-/post-submit due to the fact that the contents of the third_party directory didn't change, so hash of the list of files used as a signature matched the signature in the golden file, causing the run to be skipped. --- tools/licenses/lib/patterns.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/licenses/lib/patterns.dart b/tools/licenses/lib/patterns.dart index dec6cabe1298e..dde04c5438e7f 100644 --- a/tools/licenses/lib/patterns.dart +++ b/tools/licenses/lib/patterns.dart @@ -1209,7 +1209,7 @@ final List csLicenses = [ r'^\1\2OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF *\n' r'^\1\2SUCH DAMAGE\. *\n' r'^(?:(?:\1\2?g? *)? *\n)*' - r'^\1\2The licence and distribution terms for any publicly available version or *\n' + r'^\1\2The licence and distribution terms for any publically available version or *\n' r'^\1\2derivative of this code cannot be changed\. +i\.e\. +this code cannot simply be *\n' r'^\1\2copied and put under another distribution licence *\n' r'^\1\2\[including the GNU Public Licence\.\]', From fbce2bf14591a8c98ecfcc3a7eb106bf16a259f8 Mon Sep 17 00:00:00 2001 From: Todd Volkert Date: Tue, 18 Dec 2018 07:40:57 -0800 Subject: [PATCH 0572/1537] Fix linter errors in ResourceUpdater (#7240) --- .../platform/android/io/flutter/view/ResourceUpdater.java | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/shell/platform/android/io/flutter/view/ResourceUpdater.java b/shell/platform/android/io/flutter/view/ResourceUpdater.java index d627ad0524aad..66af727f3cdc0 100644 --- a/shell/platform/android/io/flutter/view/ResourceUpdater.java +++ b/shell/platform/android/io/flutter/view/ResourceUpdater.java @@ -9,10 +9,7 @@ import android.content.pm.PackageManager; import android.os.AsyncTask; import android.os.Bundle; -import android.os.Handler; import android.util.Log; -import android.widget.Toast; -import java.io.BufferedInputStream; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; @@ -22,7 +19,6 @@ import java.net.URI; import java.net.URISyntaxException; import java.net.URL; -import java.net.URLConnection; import java.util.Date; import java.util.concurrent.CancellationException; import java.util.concurrent.ExecutionException; @@ -30,7 +26,7 @@ public final class ResourceUpdater { private static final String TAG = "ResourceUpdater"; - private class DownloadTask extends AsyncTask { + private static class DownloadTask extends AsyncTask { @Override protected Void doInBackground(String... args) { try { @@ -72,7 +68,7 @@ protected Void doInBackground(String... args) { Log.i(TAG, "Downloading update " + unresolvedURL); try (OutputStream output = new FileOutputStream(localFile)) { int count; - byte data[] = new byte[1024]; + byte[] data = new byte[1024]; while ((count = input.read(data)) != -1) { output.write(data, 0, count); } From ba117366efac8db8635faf1669bca7055f0915cf Mon Sep 17 00:00:00 2001 From: liyuqian Date: Tue, 18 Dec 2018 09:54:52 -0800 Subject: [PATCH 0573/1537] Compute cull_rect and optimize in Layer::Preroll (#6923) This PR replaces the unused `PrerollContext::child_paint_bounds` with `PrerollContext::cull_rect` so we can prune unnecessary preroll tasks (especially cache) based on clips. This PR fixes https://github.com/flutter/flutter/issues/24712 Performance test has been added (https://github.com/flutter/flutter/pull/25381) to make sure that we won't regress again in the future. Note that the cull_rect here is very similar to those removed in https://github.com/flutter/engine/pull/6352 . We can't compute cull rects in SceneBuilder because of retained layers. But we can still compute and use them to optimize performance in Preroll. --- flow/layers/clip_path_layer.cc | 15 ++++++++++----- flow/layers/clip_rect_layer.cc | 14 +++++++++----- flow/layers/clip_rrect_layer.cc | 13 +++++++++---- flow/layers/layer.h | 4 +++- flow/layers/layer_tree.cc | 4 ++-- flow/layers/opacity_layer.cc | 3 ++- flow/layers/transform_layer.cc | 10 ++++++++++ lib/ui/geometry.dart | 2 +- 8 files changed, 46 insertions(+), 19 deletions(-) diff --git a/flow/layers/clip_path_layer.cc b/flow/layers/clip_path_layer.cc index 17fd4db739acf..c6259de22aa53 100644 --- a/flow/layers/clip_path_layer.cc +++ b/flow/layers/clip_path_layer.cc @@ -18,12 +18,17 @@ ClipPathLayer::ClipPathLayer(Clip clip_behavior) ClipPathLayer::~ClipPathLayer() = default; void ClipPathLayer::Preroll(PrerollContext* context, const SkMatrix& matrix) { - SkRect child_paint_bounds = SkRect::MakeEmpty(); - PrerollChildren(context, matrix, &child_paint_bounds); - - if (child_paint_bounds.intersect(clip_path_.getBounds())) { - set_paint_bounds(child_paint_bounds); + SkRect previous_cull_rect = context->cull_rect; + SkRect clip_path_bounds = clip_path_.getBounds(); + if (context->cull_rect.intersect(clip_path_bounds)) { + SkRect child_paint_bounds = SkRect::MakeEmpty(); + PrerollChildren(context, matrix, &child_paint_bounds); + + if (child_paint_bounds.intersect(clip_path_bounds)) { + set_paint_bounds(child_paint_bounds); + } } + context->cull_rect = previous_cull_rect; } #if defined(OS_FUCHSIA) diff --git a/flow/layers/clip_rect_layer.cc b/flow/layers/clip_rect_layer.cc index cb4ed56daff89..3f39daca244c2 100644 --- a/flow/layers/clip_rect_layer.cc +++ b/flow/layers/clip_rect_layer.cc @@ -12,12 +12,16 @@ ClipRectLayer::ClipRectLayer(Clip clip_behavior) ClipRectLayer::~ClipRectLayer() = default; void ClipRectLayer::Preroll(PrerollContext* context, const SkMatrix& matrix) { - SkRect child_paint_bounds = SkRect::MakeEmpty(); - PrerollChildren(context, matrix, &child_paint_bounds); - - if (child_paint_bounds.intersect(clip_rect_)) { - set_paint_bounds(child_paint_bounds); + SkRect previous_cull_rect = context->cull_rect; + if (context->cull_rect.intersect(clip_rect_)) { + SkRect child_paint_bounds = SkRect::MakeEmpty(); + PrerollChildren(context, matrix, &child_paint_bounds); + + if (child_paint_bounds.intersect(clip_rect_)) { + set_paint_bounds(child_paint_bounds); + } } + context->cull_rect = previous_cull_rect; } #if defined(OS_FUCHSIA) diff --git a/flow/layers/clip_rrect_layer.cc b/flow/layers/clip_rrect_layer.cc index 9016c7f5b7bff..896ec1ae27f10 100644 --- a/flow/layers/clip_rrect_layer.cc +++ b/flow/layers/clip_rrect_layer.cc @@ -12,12 +12,17 @@ ClipRRectLayer::ClipRRectLayer(Clip clip_behavior) ClipRRectLayer::~ClipRRectLayer() = default; void ClipRRectLayer::Preroll(PrerollContext* context, const SkMatrix& matrix) { - SkRect child_paint_bounds = SkRect::MakeEmpty(); - PrerollChildren(context, matrix, &child_paint_bounds); + SkRect previous_cull_rect = context->cull_rect; + SkRect clip_rrect_bounds = clip_rrect_.getBounds(); + if (context->cull_rect.intersect(clip_rrect_bounds)) { + SkRect child_paint_bounds = SkRect::MakeEmpty(); + PrerollChildren(context, matrix, &child_paint_bounds); - if (child_paint_bounds.intersect(clip_rrect_.getBounds())) { - set_paint_bounds(child_paint_bounds); + if (child_paint_bounds.intersect(clip_rrect_bounds)) { + set_paint_bounds(child_paint_bounds); + } } + context->cull_rect = previous_cull_rect; } #if defined(OS_FUCHSIA) diff --git a/flow/layers/layer.h b/flow/layers/layer.h index 0e53e9281c64c..e846d353e52e9 100644 --- a/flow/layers/layer.h +++ b/flow/layers/layer.h @@ -37,6 +37,8 @@ namespace flow { +static constexpr SkRect kGiantRect = SkRect::MakeLTRB(-1E9F, -1E9F, 1E9F, 1E9F); + // This should be an exact copy of the Clip enum in painting.dart. enum Clip { none, hardEdge, antiAlias, antiAliasWithSaveLayer }; @@ -47,7 +49,7 @@ struct PrerollContext { GrContext* gr_context; ExternalViewEmbedder* view_embedder; SkColorSpace* dst_color_space; - SkRect child_paint_bounds; + SkRect cull_rect; // The following allows us to paint in the end of subtree preroll const Stopwatch& frame_time; diff --git a/flow/layers/layer_tree.cc b/flow/layers/layer_tree.cc index 37b9b0a23b9fb..31c448f04490c 100644 --- a/flow/layers/layer_tree.cc +++ b/flow/layers/layer_tree.cc @@ -31,7 +31,7 @@ void LayerTree::Preroll(CompositorContext::ScopedFrame& frame, frame.gr_context(), frame.view_embedder(), color_space, - SkRect::MakeEmpty(), + kGiantRect, frame.context().frame_time(), frame.context().engine_time(), frame.context().texture_registry(), @@ -113,7 +113,7 @@ sk_sp LayerTree::Flatten(const SkRect& bounds) { nullptr, // gr_context (used for the raster cache) nullptr, // external view embedder nullptr, // SkColorSpace* dst_color_space - SkRect::MakeEmpty(), // SkRect child_paint_bounds + kGiantRect, // SkRect cull_rect unused_stopwatch, // frame time (dont care) unused_stopwatch, // engine time (dont care) unused_texture_registry, // texture registry (not supported) diff --git a/flow/layers/opacity_layer.cc b/flow/layers/opacity_layer.cc index 1a2a3e3e1a453..c774ab9fb3d94 100644 --- a/flow/layers/opacity_layer.cc +++ b/flow/layers/opacity_layer.cc @@ -15,7 +15,8 @@ void OpacityLayer::Preroll(PrerollContext* context, const SkMatrix& matrix) { child_matrix.postTranslate(offset_.fX, offset_.fY); ContainerLayer::Preroll(context, child_matrix); set_paint_bounds(paint_bounds().makeOffset(offset_.fX, offset_.fY)); - if (context->raster_cache && layers().size() == 1) { + if (context->raster_cache && layers().size() == 1 && + SkRect::Intersects(context->cull_rect, paint_bounds())) { Layer* child = layers()[0].get(); SkMatrix ctm = child_matrix; #ifndef SUPPORT_FRACTIONAL_TRANSLATION diff --git a/flow/layers/transform_layer.cc b/flow/layers/transform_layer.cc index 410204bed34c3..8abb550b95935 100644 --- a/flow/layers/transform_layer.cc +++ b/flow/layers/transform_layer.cc @@ -14,11 +14,21 @@ void TransformLayer::Preroll(PrerollContext* context, const SkMatrix& matrix) { SkMatrix child_matrix; child_matrix.setConcat(matrix, transform_); + SkRect previous_cull_rect = context->cull_rect; + SkMatrix inverse_transform_; + if (transform_.invert(&inverse_transform_)) { + inverse_transform_.mapRect(&context->cull_rect); + } else { + context->cull_rect = kGiantRect; + } + SkRect child_paint_bounds = SkRect::MakeEmpty(); PrerollChildren(context, child_matrix, &child_paint_bounds); transform_.mapRect(&child_paint_bounds); set_paint_bounds(child_paint_bounds); + + context->cull_rect = previous_cull_rect; } #if defined(OS_FUCHSIA) diff --git a/lib/ui/geometry.dart b/lib/ui/geometry.dart index 4c37708656fbd..56b6e55759cdc 100644 --- a/lib/ui/geometry.dart +++ b/lib/ui/geometry.dart @@ -693,7 +693,7 @@ class Rect { /// A rectangle with left, top, right, and bottom edges all at zero. static final Rect zero = new Rect._(); - static const double _giantScalar = 1.0E+9; // matches kGiantRect from default_layer_builder.cc + static const double _giantScalar = 1.0E+9; // matches kGiantRect from layer.h /// A rectangle that covers the entire coordinate space. /// From e8f4968d644766acf3fd23173129214bc6d52f66 Mon Sep 17 00:00:00 2001 From: Jason Simmons Date: Tue, 18 Dec 2018 11:16:38 -0800 Subject: [PATCH 0574/1537] Update iOS unit test for the removal of hex string encoding of uint64 data (#7246) --- .../ios/framework/Source/flutter_standard_codec_unittest.mm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/shell/platform/darwin/ios/framework/Source/flutter_standard_codec_unittest.mm b/shell/platform/darwin/ios/framework/Source/flutter_standard_codec_unittest.mm index 381b87f96ac20..e254cc6c4ffac 100644 --- a/shell/platform/darwin/ios/framework/Source/flutter_standard_codec_unittest.mm +++ b/shell/platform/darwin/ios/framework/Source/flutter_standard_codec_unittest.mm @@ -66,12 +66,12 @@ void checkEncodeDecode(id value) { checkEncodeDecode(@(value), [NSData dataWithBytes:bytes length:9]); } -TEST(FlutterStandardCodec, CanEncodeAndDecodeUInt64AsHexString) { +TEST(FlutterStandardCodec, CanEncodeUInt64) { FlutterStandardMessageCodec* codec = [FlutterStandardMessageCodec sharedInstance]; UInt64 u64 = 0xfffffffffffffffa; + uint8_t bytes[9] = {0x04, 0xfa, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; NSData* encoded = [codec encode:@(u64)]; - NSString* decoded = [codec decode:encoded]; - ASSERT_TRUE([decoded isEqual:@"fffffffffffffffa"]); + ASSERT_TRUE([encoded isEqual:[NSData dataWithBytes:bytes length:9]]); } TEST(FlutterStandardCodec, CanEncodeAndDecodeSInt8) { From 370cc67d9423c4b1c6ff0d23380ecba0ebec11c9 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Tue, 18 Dec 2018 16:07:27 -0500 Subject: [PATCH 0575/1537] Roll src/third_party/skia e6f635476da3..4b75254560d4 (61 commits) (#7247) https://skia.googlesource.com/skia.git/+log/e6f635476da3..4b75254560d4 Created with: gclient setdep -r src/third_party/skia@4b75254560d4 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 22 +++++++--------------- 2 files changed, 8 insertions(+), 16 deletions(-) diff --git a/DEPS b/DEPS index d4233fe50da70..675524c7fc35d 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'e6f635476da3f0d1e6532a735418af93beb15626', + 'skia_revision': '4b75254560d41c33196da1f25d7c967eef4fdd84', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index aedc657135bbc..0dc0f86525abb 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 47c6b0c813ad1f45e10f70405474e782 +Signature: 1e99025f61268dfb2c44ceadf9bb17d1 UNUSED LICENSES: @@ -1316,6 +1316,7 @@ FILE: ../../../third_party/skia/gm/crbug_905548.cpp FILE: ../../../third_party/skia/gm/daa.cpp FILE: ../../../third_party/skia/gm/drawimageset.cpp FILE: ../../../third_party/skia/gm/drawquadset.cpp +FILE: ../../../third_party/skia/gm/fontregen.cpp FILE: ../../../third_party/skia/gm/fwidth_squircle.cpp FILE: ../../../third_party/skia/gm/gradients_degenerate.cpp FILE: ../../../third_party/skia/gm/hugepath.cpp @@ -1743,10 +1744,6 @@ FILE: ../../../third_party/skia/include/third_party/vulkan/vulkan/vulkan_ios.h FILE: ../../../third_party/skia/include/third_party/vulkan/vulkan/vulkan_macos.h FILE: ../../../third_party/skia/include/third_party/vulkan/vulkan/vulkan_win32.h FILE: ../../../third_party/skia/include/third_party/vulkan/vulkan/vulkan_xcb.h -FILE: ../../../third_party/skia/modules/pathkit/npm-asmjs/example.html -FILE: ../../../third_party/skia/modules/pathkit/npm-asmjs/package.json -FILE: ../../../third_party/skia/modules/pathkit/npm-wasm/example.html -FILE: ../../../third_party/skia/modules/pathkit/npm-wasm/package.json FILE: ../../../third_party/skia/src/images/SkWebpEncoder.cpp ---------------------------------------------------------------------------------------------------- Apache License @@ -2067,6 +2064,7 @@ FILE: ../../../third_party/skia/experimental/canvaskit/htmlcanvas/font.js FILE: ../../../third_party/skia/experimental/canvaskit/htmlcanvas/htmlcanvas.js FILE: ../../../third_party/skia/experimental/canvaskit/htmlcanvas/imagedata.js FILE: ../../../third_party/skia/experimental/canvaskit/htmlcanvas/lineargradient.js +FILE: ../../../third_party/skia/experimental/canvaskit/htmlcanvas/path2d.js FILE: ../../../third_party/skia/experimental/canvaskit/htmlcanvas/pattern.js FILE: ../../../third_party/skia/experimental/canvaskit/htmlcanvas/postamble.js FILE: ../../../third_party/skia/experimental/canvaskit/htmlcanvas/preamble.js @@ -2391,6 +2389,10 @@ FILE: ../../../third_party/skia/modules/pathkit/externs.js FILE: ../../../third_party/skia/modules/pathkit/helper.js FILE: ../../../third_party/skia/modules/pathkit/karma.bench.conf.js FILE: ../../../third_party/skia/modules/pathkit/karma.conf.js +FILE: ../../../third_party/skia/modules/pathkit/npm-asmjs/example.html +FILE: ../../../third_party/skia/modules/pathkit/npm-asmjs/package.json +FILE: ../../../third_party/skia/modules/pathkit/npm-wasm/example.html +FILE: ../../../third_party/skia/modules/pathkit/npm-wasm/package.json FILE: ../../../third_party/skia/modules/pathkit/package.json FILE: ../../../third_party/skia/modules/pathkit/perf/effects.bench.js FILE: ../../../third_party/skia/modules/pathkit/perf/path.bench.js @@ -2453,14 +2455,6 @@ FILE: ../../../third_party/skia/site/user/api/METADATA FILE: ../../../third_party/skia/site/user/api/catalog.htm FILE: ../../../third_party/skia/site/user/modules/METADATA FILE: ../../../third_party/skia/site/user/modules/PathKit_effects.png -FILE: ../../../third_party/skia/site/user/sample/architecture.png -FILE: ../../../third_party/skia/site/user/sample/detail_correct.png -FILE: ../../../third_party/skia/site/user/sample/detail_wrong.png -FILE: ../../../third_party/skia/site/user/sample/gamut_correct.png -FILE: ../../../third_party/skia/site/user/sample/gamut_wrong.png -FILE: ../../../third_party/skia/site/user/sample/gradient_correct.png -FILE: ../../../third_party/skia/site/user/sample/gradient_wrong.png -FILE: ../../../third_party/skia/site/user/sample/transfer_fn.png FILE: ../../../third_party/skia/src/compute/hs/cl/intel/gen8/u32/hs_kernels.bin FILE: ../../../third_party/skia/src/compute/hs/cl/intel/gen8/u32/hs_kernels.bin.len.xxd FILE: ../../../third_party/skia/src/compute/hs/cl/intel/gen8/u32/hs_kernels.bin.xxd @@ -3125,7 +3119,6 @@ FILE: ../../../third_party/skia/src/c/sk_surface.cpp FILE: ../../../third_party/skia/src/core/SkBBHFactory.cpp FILE: ../../../third_party/skia/src/core/SkBitmapCache.cpp FILE: ../../../third_party/skia/src/core/SkBitmapCache.h -FILE: ../../../third_party/skia/src/core/SkBitmapProcState_matrix_neon.h FILE: ../../../third_party/skia/src/core/SkCachedData.cpp FILE: ../../../third_party/skia/src/core/SkCachedData.h FILE: ../../../third_party/skia/src/core/SkCanvasPriv.h @@ -4377,7 +4370,6 @@ FILE: ../../../third_party/skia/src/compute/skc/weakref.c FILE: ../../../third_party/skia/src/compute/skc/weakref.h FILE: ../../../third_party/skia/src/core/SkArenaAllocList.h FILE: ../../../third_party/skia/src/core/SkAutoBlitterChoose.h -FILE: ../../../third_party/skia/src/core/SkBitmapProcState_utils.h FILE: ../../../third_party/skia/src/core/SkBlendMode.cpp FILE: ../../../third_party/skia/src/core/SkBlitter_RGB565.cpp FILE: ../../../third_party/skia/src/core/SkClipStackDevice.cpp From 526e0e3afb2c6879a7924246521813790c4deb48 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Tue, 18 Dec 2018 18:40:26 -0500 Subject: [PATCH 0576/1537] Roll src/third_party/skia 4b75254560d4..67761eb35f97 (6 commits) (#7249) https://skia.googlesource.com/skia.git/+log/4b75254560d4..67761eb35f97 Created with: gclient setdep -r src/third_party/skia@67761eb35f97 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 675524c7fc35d..df649de1cd601 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '4b75254560d41c33196da1f25d7c967eef4fdd84', + 'skia_revision': '67761eb35f977758f491c8b01d2dc86405733ae8', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 0dc0f86525abb..323e04518ce5c 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 1e99025f61268dfb2c44ceadf9bb17d1 +Signature: 61d0d99575b586942634545ea6c01713 UNUSED LICENSES: @@ -5157,6 +5157,7 @@ FILE: ../../../third_party/skia/src/gpu/GrPathRendering_none.cpp FILE: ../../../third_party/skia/src/pdf/SkPDFGlyphUse.h FILE: ../../../third_party/skia/src/pdf/SkPDFSubsetFont.cpp FILE: ../../../third_party/skia/src/pdf/SkPDFSubsetFont.h +FILE: ../../../third_party/skia/src/pdf/SkUUID.h FILE: ../../../third_party/skia/src/utils/SkUTF.cpp FILE: ../../../third_party/skia/src/utils/SkUTF.h ---------------------------------------------------------------------------------------------------- From cfbc94864795fe50d459e21aeb3363c715dfcdfd Mon Sep 17 00:00:00 2001 From: Dan Field Date: Tue, 18 Dec 2018 19:38:28 -0800 Subject: [PATCH 0577/1537] Roll buildroot to support Android SDK 28 (#7245) * Roll to buildroot and support Android SDK 28 * Ubuntu 16 for android build test --- DEPS | 2 +- ci/docker/build/Dockerfile | 2 +- shell/platform/android/BUILD.gn | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/DEPS b/DEPS index df649de1cd601..482e891177a86 100644 --- a/DEPS +++ b/DEPS @@ -117,7 +117,7 @@ allowed_hosts = [ ] deps = { - 'src': 'https://github.com/flutter/buildroot.git' + '@' + '8e538639660413490ea9261eee84864005e240f4', + 'src': 'https://github.com/flutter/buildroot.git' + '@' + '5f54a3e98dea0a79589820527658b49fef7916ea', # Fuchsia compatibility # diff --git a/ci/docker/build/Dockerfile b/ci/docker/build/Dockerfile index 7529ba37d5c7a..bf1a470f0e4aa 100644 --- a/ci/docker/build/Dockerfile +++ b/ci/docker/build/Dockerfile @@ -1,4 +1,4 @@ -FROM ubuntu:14.04 +FROM ubuntu:16.04 ENV DEPOT_TOOLS_PATH $HOME/depot_tools ENV ENGINE_PATH $HOME/engine diff --git a/shell/platform/android/BUILD.gn b/shell/platform/android/BUILD.gn index 73e2bac819af3..493353be20551 100644 --- a/shell/platform/android/BUILD.gn +++ b/shell/platform/android/BUILD.gn @@ -146,16 +146,16 @@ java_library("flutter_shell_java") { ] deps = [ - ":android_support_v4", + ":android_support_v13", ] jar_path = "$root_out_dir/flutter_java.jar" } -java_prebuilt("android_support_v4") { +java_prebuilt("android_support_v13") { supports_android = true - jar_path = "//third_party/android_tools/sdk/extras/android/support/v4/android-support-v4.jar" + jar_path = "//third_party/android_tools/sdk/extras/android/support/v13/android-support-v13.jar" } copy("flutter_shell_assets") { From 9f10b10a0f69e1f638507b16cf7580fff238a39c Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Tue, 18 Dec 2018 22:56:43 -0500 Subject: [PATCH 0578/1537] Roll src/third_party/skia 67761eb35f97..b933285ebb4e (1 commits) (#7251) https://skia.googlesource.com/skia.git/+log/67761eb35f97..b933285ebb4e Created with: gclient setdep -r src/third_party/skia@b933285ebb4e The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 482e891177a86..74197b6b5e260 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '67761eb35f977758f491c8b01d2dc86405733ae8', + 'skia_revision': 'b933285ebb4e7a79f7e40d625f98743f175961a5', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 323e04518ce5c..6b4c710dce9c4 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 61d0d99575b586942634545ea6c01713 +Signature: a16cffc7457b35dbdf53d2e3b11c0522 UNUSED LICENSES: From ada6748d0c940ea86e2ba7c46c5012072985ee32 Mon Sep 17 00:00:00 2001 From: Chris Bracken Date: Tue, 18 Dec 2018 20:08:15 -0800 Subject: [PATCH 0579/1537] Extract function to collect licenses for component (#7250) Extracts _collectLicensesForComponent() from main, which collects the licenses for the specified component (e.g. flutter, third_party, skia). This is pre-factoring related to a fix for flutter/flutter#25519. --- tools/licenses/lib/main.dart | 141 +++++++++++++++++++---------------- 1 file changed, 76 insertions(+), 65 deletions(-) diff --git a/tools/licenses/lib/main.dart b/tools/licenses/lib/main.dart index a2ab8e2057003..466d5705c865b 100644 --- a/tools/licenses/lib/main.dart +++ b/tools/licenses/lib/main.dart @@ -2156,6 +2156,65 @@ class _Progress { } } +Future _collectLicensesForComponent(_RepositoryDirectory componentRoot, { + String inputGolden, + String outputGolden, + bool force, +}) async { + String signature; + if (force) { + signature = null; + } else { + signature = await componentRoot.signature; + } + + // Check whether the golden file matches the signature of the current contents + // of this directory. + try { + system.File goldenFile = new system.File(inputGolden); + String goldenSignature = await goldenFile.openRead() + .transform(utf8.decoder).transform(new LineSplitter()).first; + final RegExp signaturePattern = new RegExp(r'Signature: (\w+)'); + Match goldenMatch = signaturePattern.matchAsPrefix(goldenSignature); + if (goldenMatch != null && goldenMatch.group(1) == signature) { + system.stderr.writeln(' Skipping this component - no change in signature'); + return; + } + } on system.FileSystemException { + system.stderr.writeln(' Failed to read signature file, scanning directory.'); + } + + _Progress progress = new _Progress(componentRoot.fileCount); + + system.File outFile = new system.File(outputGolden); + system.IOSink sink = outFile.openWrite(); + if (signature != null) + sink.writeln('Signature: $signature\n'); + + List licenses = new Set.from(componentRoot.getLicenses(progress).toList()).toList(); + + sink.writeln('UNUSED LICENSES:\n'); + List unusedLicenses = licenses + .where((License license) => !license.isUsed) + .map((License license) => license.toString()) + .toList(); + unusedLicenses.sort(); + sink.writeln(unusedLicenses.join('\n\n')); + sink.writeln('~' * 80); + + sink.writeln('USED LICENSES:\n'); + List usedLicenses = licenses.where((License license) => license.isUsed).toList(); + List output = usedLicenses.map((License license) => license.toString()).toList(); + output.sort(); + sink.writeln(output.join('\n\n')); + sink.writeln('Total license count: ${licenses.length}'); + + await sink.close(); + progress.label = 'Done.'; + progress.flush(); + system.stderr.writeln(''); +} + // MAIN @@ -2213,86 +2272,38 @@ Future main(List arguments) async { progress.flush(); system.stderr.writeln(''); } else { - RegExp signaturePattern = new RegExp(r'Signature: (\w+)'); final List usedGoldens = []; bool isFirstComponent = true; for (_RepositoryDirectory component in root.subdirectories) { system.stderr.writeln('Collecting licenses for ${component.io.name}'); - String signature; - if (component.io.name == 'flutter') { - // Always run the full license check on the flutter tree. This tree is - // relatively small but changes frequently in ways that do not affect - // the license output, and we don't want to require updates to the golden - // signature for those changes. - signature = null; - } else { - signature = await component.signature; - } - - // Check whether the golden file matches the signature of the current contents - // of this directory. - try { - final String goldenFileName = 'licenses_${component.io.name}'; - system.File goldenFile = new system.File(path.join(argResults['golden'], goldenFileName)); - String goldenSignature = await goldenFile.openRead() - .transform(utf8.decoder).transform(new LineSplitter()).first; - usedGoldens.add(goldenFileName); - Match goldenMatch = signaturePattern.matchAsPrefix(goldenSignature); - if (goldenMatch != null && goldenMatch.group(1) == signature) { - system.stderr.writeln(' Skipping this component - no change in signature'); - continue; - } - } on system.FileSystemException { - system.stderr.writeln(' Failed to read signature file, scanning directory.'); - } - - _Progress progress = new _Progress(component.fileCount); - - system.File outFile = new system.File( - path.join(argResults['out'], 'licenses_${component.name}')); - system.IOSink sink = outFile.openWrite(); - if (signature != null) - sink.writeln('Signature: $signature\n'); - _RepositoryDirectory componentRoot; if (isFirstComponent) { - // For the first component, we can use the results of the initial - // repository crawl. + // For the first component, we can use the results of the initial repository crawl. isFirstComponent = false; componentRoot = component; } else { // For other components, we need a clean repository that does not // contain any state left over from previous components. clearLicenseRegistry(); - componentRoot = new _RepositoryRoot(rootDirectory).subdirectories.firstWhere( - (_RepositoryDirectory dir) => dir.name == component.name - ); + componentRoot = new _RepositoryRoot(rootDirectory).subdirectories + .firstWhere((_RepositoryDirectory dir) => dir.name == component.name); } - List licenses = new Set.from( - componentRoot.getLicenses(progress).toList()).toList(); - - sink.writeln('UNUSED LICENSES:\n'); - List unusedLicenses = licenses - .where((License license) => !license.isUsed) - .map((License license) => license.toString()) - .toList(); - unusedLicenses.sort(); - sink.writeln(unusedLicenses.join('\n\n')); - sink.writeln('~' * 80); - - sink.writeln('USED LICENSES:\n'); - List usedLicenses = licenses.where((License license) => license.isUsed).toList(); - List output = usedLicenses.map((License license) => license.toString()).toList(); - output.sort(); - sink.writeln(output.join('\n\n')); - sink.writeln('Total license count: ${licenses.length}'); - - await sink.close(); - progress.label = 'Done.'; - progress.flush(); - system.stderr.writeln(''); + + // Always run the full license check on the flutter tree. This tree is + // relatively small but changes frequently in ways that do not affect + // the license output, and we don't want to require updates to the golden + // signature for those changes. + final bool force = component.io.name == 'flutter'; + final String goldenFileName = 'licenses_${component.io.name}'; + await _collectLicensesForComponent( + componentRoot, + inputGolden: path.join(argResults['golden'], goldenFileName), + outputGolden: path.join(argResults['out'], goldenFileName), + force: force, + ); + usedGoldens.add(goldenFileName); } final Set unusedGoldens = system.Directory(argResults['golden']).listSync().map((system.FileSystemEntity file) => path.basename(file.path)).toSet() From 8939e2abeb05883ac04c949e7c1d4ef4e2a4f9ba Mon Sep 17 00:00:00 2001 From: Chris Bracken Date: Tue, 18 Dec 2018 20:08:46 -0800 Subject: [PATCH 0580/1537] Fix a misspelling (#7234) Change funciton to function in a doc comment. --- lib/ui/window.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/ui/window.dart b/lib/ui/window.dart index 76ef10a932b18..b9c8298c2c76c 100644 --- a/lib/ui/window.dart +++ b/lib/ui/window.dart @@ -778,7 +778,7 @@ class Window { /// Change the retained semantics data about this window. /// - /// If [semanticsEnabled] is true, the user has requested that this funciton + /// If [semanticsEnabled] is true, the user has requested that this function /// be called whenever the semantic content of this window changes. /// /// In either case, this function disposes the given update, which means the From ccaac1af3584051ec4a662a19a04ccb6f06413ff Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Wed, 19 Dec 2018 03:05:23 -0500 Subject: [PATCH 0581/1537] Roll src/third_party/skia b933285ebb4e..192d66440910 (3 commits) (#7252) https://skia.googlesource.com/skia.git/+log/b933285ebb4e..192d66440910 Created with: gclient setdep -r src/third_party/skia@192d66440910 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 74197b6b5e260..c0b7fd42ee6bd 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'b933285ebb4e7a79f7e40d625f98743f175961a5', + 'skia_revision': '192d66440910eb2f1a8ae48c5d34bfa1db3951d8', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 6b4c710dce9c4..e3664a1c91c10 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: a16cffc7457b35dbdf53d2e3b11c0522 +Signature: 46cc1581cee7c269169bb5a2a74e4d74 UNUSED LICENSES: @@ -5157,6 +5157,7 @@ FILE: ../../../third_party/skia/src/gpu/GrPathRendering_none.cpp FILE: ../../../third_party/skia/src/pdf/SkPDFGlyphUse.h FILE: ../../../third_party/skia/src/pdf/SkPDFSubsetFont.cpp FILE: ../../../third_party/skia/src/pdf/SkPDFSubsetFont.h +FILE: ../../../third_party/skia/src/pdf/SkPDFUnion.h FILE: ../../../third_party/skia/src/pdf/SkUUID.h FILE: ../../../third_party/skia/src/utils/SkUTF.cpp FILE: ../../../third_party/skia/src/utils/SkUTF.h From 2e4a02719d5f10897ab465ae895027317a076dec Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Wed, 19 Dec 2018 08:29:05 -0500 Subject: [PATCH 0582/1537] Roll src/third_party/skia 192d66440910..1a237195b527 (1 commits) (#7253) https://skia.googlesource.com/skia.git/+log/192d66440910..1a237195b527 Created with: gclient setdep -r src/third_party/skia@1a237195b527 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index c0b7fd42ee6bd..08f83bbd0153e 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '192d66440910eb2f1a8ae48c5d34bfa1db3951d8', + 'skia_revision': '1a237195b527640c6a365affa7d9941d71321c98', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index e3664a1c91c10..4d51e4c4c2124 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 46cc1581cee7c269169bb5a2a74e4d74 +Signature: 7ef78e46c81808cb45314dbb00832732 UNUSED LICENSES: @@ -2265,6 +2265,7 @@ FILE: ../../../third_party/skia/infra/bots/recipes/perf.expected/Perf-Debian9-Cl FILE: ../../../third_party/skia/infra/bots/recipes/perf.expected/Perf-Debian9-Clang-GCE-CPU-AVX2-x86_64-Release-All-BonusConfigs.json FILE: ../../../third_party/skia/infra/bots/recipes/perf.expected/Perf-Debian9-Clang-NUC5PPYH-GPU-IntelHD405-x86_64-Debug-All-Vulkan.json FILE: ../../../third_party/skia/infra/bots/recipes/perf.expected/Perf-Debian9-Clang-NUC7i5BNK-GPU-IntelIris640-x86_64-Release-All.json +FILE: ../../../third_party/skia/infra/bots/recipes/perf.expected/Perf-Mac-Clang-MacBook10.1-GPU-IntelHD615-x86_64-Release-All-CommandBuffer.json FILE: ../../../third_party/skia/infra/bots/recipes/perf.expected/Perf-Mac-Clang-MacBookPro11.5-GPU-RadeonHD8870M-x86_64-Release-All-MoltenVK_Vulkan.json FILE: ../../../third_party/skia/infra/bots/recipes/perf.expected/Perf-Mac-Clang-MacMini7.1-GPU-IntelIris5100-x86_64-Release-All-CommandBuffer.json FILE: ../../../third_party/skia/infra/bots/recipes/perf.expected/Perf-Ubuntu17-GCC-Golo-GPU-QuadroP400-x86_64-Release-All-Valgrind_AbandonGpuContext_SK_CPU_LIMIT_SSE41.json From 8b73b9d42c88eb68ff4d3fbd0287381613ac0f17 Mon Sep 17 00:00:00 2001 From: Dan Field Date: Wed, 19 Dec 2018 09:24:02 -0800 Subject: [PATCH 0583/1537] Fix javadoc for Android-28 (#7254) * Fix javadoc for Android-28 * build javadoc as part of pre-submit --- .cirrus.yml | 2 ++ .../android/io/flutter/plugin/common/PluginRegistry.java | 8 ++++---- shell/platform/android/io/flutter/view/FlutterMain.java | 8 ++++---- tools/gen_javadoc.py | 4 ++-- 4 files changed, 12 insertions(+), 10 deletions(-) diff --git a/.cirrus.yml b/.cirrus.yml index 585c265c3e5e5..9dde213d2698d 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -30,6 +30,8 @@ task: cd $ENGINE_PATH/src ./flutter/tools/gn --android --unoptimized ninja -C out/android_debug_unopt + mkdir javadoc_tmp + ./flutter/tools/gen_javadoc.py --out-dir javadoc_tmp format_and_dart_test_task: container: diff --git a/shell/platform/android/io/flutter/plugin/common/PluginRegistry.java b/shell/platform/android/io/flutter/plugin/common/PluginRegistry.java index 33f30b300a8c8..7853982e87928 100644 --- a/shell/platform/android/io/flutter/plugin/common/PluginRegistry.java +++ b/shell/platform/android/io/flutter/plugin/common/PluginRegistry.java @@ -117,21 +117,21 @@ interface Registrar { /** * Returns the file name for the given asset. * The returned file name can be used to access the asset in the APK - * through the {@link AssetManager} API. + * through the {@link android.content.res.AssetManager} API. * * @param asset the name of the asset. The name can be hierarchical - * @return the filename to be used with {@link AssetManager} + * @return the filename to be used with {@link android.content.res.AssetManager} */ String lookupKeyForAsset(String asset); /** * Returns the file name for the given asset which originates from the * specified packageName. The returned file name can be used to access - * the asset in the APK through the {@link AssetManager} API. + * the asset in the APK through the {@link android.content.res.AssetManager} API. * * @param asset the name of the asset. The name can be hierarchical * @param packageName the name of the package from which the asset originates - * @return the file name to be used with {@link AssetManager} + * @return the file name to be used with {@link android.content.res.AssetManager} */ String lookupKeyForAsset(String asset, String packageName); diff --git a/shell/platform/android/io/flutter/view/FlutterMain.java b/shell/platform/android/io/flutter/view/FlutterMain.java index d59adb4cc92cb..7594edb33c99a 100644 --- a/shell/platform/android/io/flutter/view/FlutterMain.java +++ b/shell/platform/android/io/flutter/view/FlutterMain.java @@ -344,10 +344,10 @@ public static String getUpdateInstallationPath() { /** * Returns the file name for the given asset. * The returned file name can be used to access the asset in the APK - * through the {@link AssetManager} API. + * through the {@link android.content.res.AssetManager} API. * * @param asset the name of the asset. The name can be hierarchical - * @return the filename to be used with {@link AssetManager} + * @return the filename to be used with {@link android.content.res.AssetManager} */ public static String getLookupKeyForAsset(String asset) { return fromFlutterAssets(asset); @@ -356,11 +356,11 @@ public static String getLookupKeyForAsset(String asset) { /** * Returns the file name for the given asset which originates from the * specified packageName. The returned file name can be used to access - * the asset in the APK through the {@link AssetManager} API. + * the asset in the APK through the {@link android.content.res.AssetManager} API. * * @param asset the name of the asset. The name can be hierarchical * @param packageName the name of the package from which the asset originates - * @return the file name to be used with {@link AssetManager} + * @return the file name to be used with {@link android.content.res.AssetManager} */ public static String getLookupKeyForAsset(String asset, String packageName) { return getLookupKeyForAsset( diff --git a/tools/gen_javadoc.py b/tools/gen_javadoc.py index 02a0732810b11..ef02fa98313d4 100755 --- a/tools/gen_javadoc.py +++ b/tools/gen_javadoc.py @@ -25,8 +25,8 @@ def main(): classpath = [ ANDROID_SRC_ROOT, - 'third_party/android_tools/sdk/extras/android/support/v4/android-support-v4.jar', - 'third_party/android_tools/sdk/platforms/android-22/android.jar', + 'third_party/android_tools/sdk/extras/android/support/v13/android-support-v13.jar', + 'third_party/android_tools/sdk/platforms/android-28/android.jar', 'base/android/java/src', 'third_party/jsr-305/src/ri/src/main/java', ] From 2c9fc872db089cf297a1ea556f3df8e1a52d2784 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Wed, 19 Dec 2018 13:31:02 -0500 Subject: [PATCH 0584/1537] Roll src/third_party/skia 1a237195b527..8d23a584fc43 (8 commits) (#7255) https://skia.googlesource.com/skia.git/+log/1a237195b527..8d23a584fc43 Created with: gclient setdep -r src/third_party/skia@8d23a584fc43 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 08f83bbd0153e..8ef182557debc 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '1a237195b527640c6a365affa7d9941d71321c98', + 'skia_revision': '8d23a584fc43ce608ef47d2dc3cf59c42f7f7dae', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 4d51e4c4c2124..ffb5ac350c46a 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 7ef78e46c81808cb45314dbb00832732 +Signature: 216d5f372795405da63f0c8dff732419 UNUSED LICENSES: From 9edb4f72b914ea0226b27dca8ce201feaa3d9617 Mon Sep 17 00:00:00 2001 From: Stanislav Baranov Date: Wed, 19 Dec 2018 10:31:54 -0800 Subject: [PATCH 0585/1537] Update dynamic patching terminilogy to match that of the flutter tool (#7248) --- .../io/flutter/view/ResourceExtractor.java | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/shell/platform/android/io/flutter/view/ResourceExtractor.java b/shell/platform/android/io/flutter/view/ResourceExtractor.java index 25b98bdb42201..a5fd6dd1021dc 100644 --- a/shell/platform/android/io/flutter/view/ResourceExtractor.java +++ b/shell/platform/android/io/flutter/view/ResourceExtractor.java @@ -205,22 +205,22 @@ private String checkTimestamp(File dataDir, JSONObject updateManifest) { TIMESTAMP_PREFIX + packageInfo.versionCode + "-" + packageInfo.lastUpdateTime; if (updateManifest != null) { - String baselineVersion = updateManifest.optString("baselineVersion", null); - if (baselineVersion == null) { - Log.w(TAG, "Invalid update manifest: baselineVersion"); + String buildNumber = updateManifest.optString("buildNumber", null); + if (buildNumber == null) { + Log.w(TAG, "Invalid update manifest: buildNumber"); } - String updateVersion = updateManifest.optString("updateVersion", null); - if (updateVersion == null) { - Log.w(TAG, "Invalid update manifest: updateVersion"); + String patchNumber = updateManifest.optString("patchNumber", null); + if (patchNumber == null) { + Log.w(TAG, "Invalid update manifest: patchNumber"); } - if (baselineVersion != null && updateVersion != null) { - if (!baselineVersion.equals(Integer.toString(packageInfo.versionCode))) { + if (buildNumber != null && patchNumber != null) { + if (!buildNumber.equals(Integer.toString(packageInfo.versionCode))) { Log.w(TAG, "Outdated update file for " + packageInfo.versionCode); } else { final File updateFile = new File(FlutterMain.getUpdateInstallationPath()); - expectedTimestamp += "-" + updateVersion + "-" + updateFile.lastModified(); + expectedTimestamp += "-" + patchNumber + "-" + updateFile.lastModified(); } } } From c08a80ada637277a4cf6525dcbbb2b1e1e64caaf Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Wed, 19 Dec 2018 17:24:44 -0500 Subject: [PATCH 0586/1537] Roll src/third_party/skia 8d23a584fc43..ce9a901a76eb (10 commits) (#7259) https://skia.googlesource.com/skia.git/+log/8d23a584fc43..ce9a901a76eb Created with: gclient setdep -r src/third_party/skia@ce9a901a76eb The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 8ef182557debc..8a3edc4afcf46 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '8d23a584fc43ce608ef47d2dc3cf59c42f7f7dae', + 'skia_revision': 'ce9a901a76ebd8b83740bf907a40fc2e573c0544', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index ffb5ac350c46a..39a3132e7b128 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 216d5f372795405da63f0c8dff732419 +Signature: dda3116820df297b05fdd28b209af7f5 UNUSED LICENSES: From 5ec8ef85093475d0875cdf28cb2e9bc638a7fa2a Mon Sep 17 00:00:00 2001 From: Jason Simmons Date: Wed, 19 Dec 2018 15:06:58 -0800 Subject: [PATCH 0587/1537] Remove unused GrContext in AndroidSurfaceGL (#7258) --- shell/platform/android/android_surface_gl.h | 1 - 1 file changed, 1 deletion(-) diff --git a/shell/platform/android/android_surface_gl.h b/shell/platform/android/android_surface_gl.h index 11badede13e6c..5c6f4aa65eb73 100644 --- a/shell/platform/android/android_surface_gl.h +++ b/shell/platform/android/android_surface_gl.h @@ -61,7 +61,6 @@ class AndroidSurfaceGL final : public GPUSurfaceGLDelegate, private: fml::RefPtr onscreen_context_; fml::RefPtr offscreen_context_; - sk_sp gr_context_; FML_DISALLOW_COPY_AND_ASSIGN(AndroidSurfaceGL); }; From 41222d055552b0ce0234a9dce03b933f888b09de Mon Sep 17 00:00:00 2001 From: Jason Simmons Date: Wed, 19 Dec 2018 17:39:53 -0800 Subject: [PATCH 0588/1537] Update usage of some Android APIs that are deprecated in API level 28 (#7261) --- .../flutter/plugin/platform/PlatformPlugin.java | 16 +++++++++------- .../android/io/flutter/view/FlutterView.java | 1 + .../io/flutter/view/ResourceExtractor.java | 16 +++++++++++++--- .../android/io/flutter/view/ResourceUpdater.java | 2 +- 4 files changed, 24 insertions(+), 11 deletions(-) diff --git a/shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java b/shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java index 0722406645d5c..b6f53d45741f1 100644 --- a/shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java +++ b/shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java @@ -5,6 +5,7 @@ package io.flutter.plugin.platform; import android.app.Activity; +import android.app.ActivityManager.TaskDescription; import android.content.ClipData; import android.content.ClipboardManager; import android.content.Context; @@ -185,13 +186,14 @@ private void setSystemChromeApplicationSwitcherDescription(JSONObject descriptio color = color | 0xFF000000; // color must be opaque if set } - mActivity.setTaskDescription( - new android.app.ActivityManager.TaskDescription( - description.getString("label"), - null, - color - ) - ); + String label = description.getString("label"); + + @SuppressWarnings("deprecation") + TaskDescription taskDescription = (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) + ? new TaskDescription(label, 0, color) + : new TaskDescription(label, null, color); + + mActivity.setTaskDescription(taskDescription); } private int mEnabledOverlays; diff --git a/shell/platform/android/io/flutter/view/FlutterView.java b/shell/platform/android/io/flutter/view/FlutterView.java index 82799421a9e37..43a6a611fdaeb 100644 --- a/shell/platform/android/io/flutter/view/FlutterView.java +++ b/shell/platform/android/io/flutter/view/FlutterView.java @@ -334,6 +334,7 @@ private void setLocales(Configuration config) { } } // Fallback single locale passing for android API < 24. Should work always. + @SuppressWarnings("deprecation") Locale locale = config.locale; // getScript() is gated because it is added in API 21. mFlutterLocalizationChannel.invokeMethod("setLocale", Arrays.asList(locale.getLanguage(), locale.getCountry(), Build.VERSION.SDK_INT >= 21 ? locale.getScript() : "", locale.getVariant())); diff --git a/shell/platform/android/io/flutter/view/ResourceExtractor.java b/shell/platform/android/io/flutter/view/ResourceExtractor.java index a5fd6dd1021dc..ae8376b8a8221 100644 --- a/shell/platform/android/io/flutter/view/ResourceExtractor.java +++ b/shell/platform/android/io/flutter/view/ResourceExtractor.java @@ -9,6 +9,7 @@ import android.content.pm.PackageManager; import android.content.res.AssetManager; import android.os.AsyncTask; +import android.os.Build; import android.util.Log; import io.flutter.util.PathUtils; import org.json.JSONException; @@ -32,6 +33,15 @@ class ResourceExtractor { private static final String TAG = "ResourceExtractor"; private static final String TIMESTAMP_PREFIX = "res_timestamp-"; + @SuppressWarnings("deprecation") + static long getVersionCode(PackageInfo packageInfo) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { + return packageInfo.getLongVersionCode(); + } else { + return packageInfo.versionCode; + } + } + private class ExtractTask extends AsyncTask { private static final int BUFFER_SIZE = 16 * 1024; @@ -202,7 +212,7 @@ private String checkTimestamp(File dataDir, JSONObject updateManifest) { } String expectedTimestamp = - TIMESTAMP_PREFIX + packageInfo.versionCode + "-" + packageInfo.lastUpdateTime; + TIMESTAMP_PREFIX + getVersionCode(packageInfo) + "-" + packageInfo.lastUpdateTime; if (updateManifest != null) { String buildNumber = updateManifest.optString("buildNumber", null); @@ -216,8 +226,8 @@ private String checkTimestamp(File dataDir, JSONObject updateManifest) { } if (buildNumber != null && patchNumber != null) { - if (!buildNumber.equals(Integer.toString(packageInfo.versionCode))) { - Log.w(TAG, "Outdated update file for " + packageInfo.versionCode); + if (!buildNumber.equals(Long.toString(getVersionCode(packageInfo)))) { + Log.w(TAG, "Outdated update file for " + getVersionCode(packageInfo)); } else { final File updateFile = new File(FlutterMain.getUpdateInstallationPath()); expectedTimestamp += "-" + patchNumber + "-" + updateFile.lastModified(); diff --git a/shell/platform/android/io/flutter/view/ResourceUpdater.java b/shell/platform/android/io/flutter/view/ResourceUpdater.java index 66af727f3cdc0..3a80a07d7455b 100644 --- a/shell/platform/android/io/flutter/view/ResourceUpdater.java +++ b/shell/platform/android/io/flutter/view/ResourceUpdater.java @@ -99,7 +99,7 @@ public String getAPKVersion() { try { PackageManager packageManager = context.getPackageManager(); PackageInfo packageInfo = packageManager.getPackageInfo(context.getPackageName(), 0); - return packageInfo == null ? null : Integer.toString(packageInfo.versionCode); + return packageInfo == null ? null : Long.toString(ResourceExtractor.getVersionCode(packageInfo)); } catch (PackageManager.NameNotFoundException e) { return null; From 079d604523099743b82d01e58c3eb36bcadd89a4 Mon Sep 17 00:00:00 2001 From: Jason Simmons Date: Wed, 19 Dec 2018 17:40:16 -0800 Subject: [PATCH 0589/1537] Add a system message channel for controlling the Skia resource cache size (#7257) See https://github.com/flutter/flutter/issues/25244 --- shell/common/rasterizer.cc | 9 +++++++++ shell/common/rasterizer.h | 2 ++ shell/common/shell.cc | 32 ++++++++++++++++++++++++++++++++ shell/common/shell.h | 2 ++ 4 files changed, 45 insertions(+) diff --git a/shell/common/rasterizer.cc b/shell/common/rasterizer.cc index e4d81df17ae8d..a7c199f70efe6 100644 --- a/shell/common/rasterizer.cc +++ b/shell/common/rasterizer.cc @@ -360,6 +360,15 @@ void Rasterizer::FireNextFrameCallbackIfPresent() { callback(); } +void Rasterizer::SetResourceCacheMaxBytes(int max_bytes) { + GrContext* context = surface_->GetContext(); + if (context) { + int max_resources; + context->getResourceCacheLimits(&max_resources, nullptr); + context->setResourceCacheLimits(max_resources, max_bytes); + } +} + Rasterizer::Screenshot::Screenshot() {} Rasterizer::Screenshot::Screenshot(sk_sp p_data, SkISize p_size) diff --git a/shell/common/rasterizer.h b/shell/common/rasterizer.h index cf02e795b15eb..17e429f54b4d6 100644 --- a/shell/common/rasterizer.h +++ b/shell/common/rasterizer.h @@ -73,6 +73,8 @@ class Rasterizer final : public blink::SnapshotDelegate { return compositor_context_.get(); } + void SetResourceCacheMaxBytes(int max_bytes); + private: blink::TaskRunners task_runners_; std::unique_ptr surface_; diff --git a/shell/common/shell.cc b/shell/common/shell.cc index 1847c115f51bb..5c1429a477ff3 100644 --- a/shell/common/shell.cc +++ b/shell/common/shell.cc @@ -33,6 +33,8 @@ namespace shell { +constexpr char kSkiaChannel[] = "flutter/skia"; + std::unique_ptr Shell::CreateShellOnPlatformThread( blink::TaskRunners task_runners, blink::Settings settings, @@ -727,6 +729,11 @@ void Shell::OnEngineHandlePlatformMessage( FML_DCHECK(is_setup_); FML_DCHECK(task_runners_.GetUITaskRunner()->RunsTasksOnCurrentThread()); + if (message->channel() == kSkiaChannel) { + HandleEngineSkiaMessage(std::move(message)); + return; + } + task_runners_.GetPlatformTaskRunner()->PostTask( [view = platform_view_->GetWeakPtr(), message = std::move(message)]() { if (view) { @@ -735,6 +742,31 @@ void Shell::OnEngineHandlePlatformMessage( }); } +void Shell::HandleEngineSkiaMessage( + fml::RefPtr message) { + const auto& data = message->data(); + + rapidjson::Document document; + document.Parse(reinterpret_cast(data.data()), data.size()); + if (document.HasParseError() || !document.IsObject()) + return; + auto root = document.GetObject(); + auto method = root.FindMember("method"); + if (method->value != "Skia.setResourceCacheMaxBytes") + return; + auto args = root.FindMember("args"); + if (args == root.MemberEnd() || !args->value.IsInt()) + return; + + task_runners_.GetGPUTaskRunner()->PostTask( + [rasterizer = rasterizer_->GetWeakPtr(), + max_bytes = args->value.GetInt()] { + if (rasterizer) { + rasterizer->SetResourceCacheMaxBytes(max_bytes); + } + }); +} + // |shell::Engine::Delegate| void Shell::OnPreEngineRestart() { FML_DCHECK(is_setup_); diff --git a/shell/common/shell.h b/shell/common/shell.h index 955d9e86c4c90..2222fa45367c9 100644 --- a/shell/common/shell.h +++ b/shell/common/shell.h @@ -179,6 +179,8 @@ class Shell final : public PlatformView::Delegate, void OnEngineHandlePlatformMessage( fml::RefPtr message) override; + void HandleEngineSkiaMessage(fml::RefPtr message); + // |shell::Engine::Delegate| void OnPreEngineRestart() override; From 6a1f01724cbedf8eea3993e18d763aae5abbdb35 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Wed, 19 Dec 2018 21:31:15 -0500 Subject: [PATCH 0590/1537] Roll src/third_party/skia ce9a901a76eb..7757bba636d8 (4 commits) (#7262) https://skia.googlesource.com/skia.git/+log/ce9a901a76eb..7757bba636d8 Created with: gclient setdep -r src/third_party/skia@7757bba636d8 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 8a3edc4afcf46..c764a0c7e2b03 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'ce9a901a76ebd8b83740bf907a40fc2e573c0544', + 'skia_revision': '7757bba636d89057c0df94fb58491563cb808d15', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 39a3132e7b128..fd34978f5f0c6 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: dda3116820df297b05fdd28b209af7f5 +Signature: dbd202b8b79f41099d4497bf083c139e UNUSED LICENSES: From 5fa1d5980964bc67948674e1885eb70a52742873 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Thu, 20 Dec 2018 01:35:24 -0500 Subject: [PATCH 0591/1537] Roll src/third_party/skia 7757bba636d8..21ee517391bc (1 commits) (#7263) https://skia.googlesource.com/skia.git/+log/7757bba636d8..21ee517391bc Created with: gclient setdep -r src/third_party/skia@21ee517391bc The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index c764a0c7e2b03..354fab62a5bb0 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '7757bba636d89057c0df94fb58491563cb808d15', + 'skia_revision': '21ee517391bc0d64b6f00c4f27f4d72afb71105d', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index fd34978f5f0c6..0bb2ed85852a9 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: dbd202b8b79f41099d4497bf083c139e +Signature: 55cc6cc52931f540a2c65a9c3e80787d UNUSED LICENSES: From 2d2b9d753c726e04e005ddfa1efa83d1fbd6a034 Mon Sep 17 00:00:00 2001 From: Chris Bracken Date: Wed, 19 Dec 2018 23:15:44 -0800 Subject: [PATCH 0592/1537] Re-run license tool on all source when it changes (#7260) The license tool includes an optimization whereby it skips re-running on components (flutter, third_party, skia, currently) when it detects that no changes have occurred to the sources in that component. When the license script itself changes, we now force re-run it on all components in order to verify the tool still works and output is as expected. --- ci/licenses.sh | 18 +++++ ci/licenses_golden/tool_signature | 2 + tools/licenses/lib/main.dart | 128 ++++++++++++++++++++++-------- 3 files changed, 115 insertions(+), 33 deletions(-) create mode 100644 ci/licenses_golden/tool_signature diff --git a/ci/licenses.sh b/ci/licenses.sh index fe9341cdb5ef4..a8452f36edcc5 100755 --- a/ci/licenses.sh +++ b/ci/licenses.sh @@ -22,6 +22,24 @@ for f in out/license_script_output/licenses_*; do fi done +echo "Verifying license tool signature..." +if ! cmp -s flutter/ci/licenses_golden/tool_signature out/license_script_output/tool_signature +then + echo "============================= ERROR =============================" + echo "The license tool signature has changed. This is expected when" + echo "there have been changes to the license tool itself. Licenses have" + echo "been re-computed for all components. If only the license script has" + echo "changed, no diffs are typically expected in the output of the" + echo "script. Verify the output, and if it looks correct, update the" + echo "license tool signature golden file:" + echo " ci/licences_golden/tool_signature" + echo "For more information, see the script in:" + echo " https://github.com/flutter/engine/tree/master/tools/licenses" + echo "" + diff -U 6 flutter/ci/licenses_golden/tool_signature out/license_script_output/tool_signature + exit 1 +fi + echo "Checking license count in licenses_flutter..." actualLicenseCount=`tail -n 1 flutter/ci/licenses_golden/licenses_flutter | tr -dc '0-9'` expectedLicenseCount=2 # When changing this number: Update the error message below as well describing all expected license types. diff --git a/ci/licenses_golden/tool_signature b/ci/licenses_golden/tool_signature new file mode 100644 index 0000000000000..d0448b285a612 --- /dev/null +++ b/ci/licenses_golden/tool_signature @@ -0,0 +1,2 @@ +Signature: d2c90af3896928c85f00e941ad07ce23 + diff --git a/tools/licenses/lib/main.dart b/tools/licenses/lib/main.dart index 466d5705c865b..e70e2cb6cbb1c 100644 --- a/tools/licenses/lib/main.dart +++ b/tools/licenses/lib/main.dart @@ -2055,6 +2055,23 @@ class _RepositoryFlutterTxtThirdPartyDirectory extends _RepositoryDirectory { } } +/// The license tool directory. +/// +/// This is a special-case root node that is not used for license aggregation, +/// but simply to compute a signature for the license tool itself. When this +/// signature changes, we force re-run license collection for all components in +/// order to verify the tool itself still produces the same output. +class _RepositoryFlutterLicenseToolDirectory extends _RepositoryDirectory { + _RepositoryFlutterLicenseToolDirectory(fs.Directory io) : super(null, io); + + @override + bool shouldRecurse(fs.IoNode entry) { + return entry.name != '.dart_tool' + && entry.name != 'data' + && super.shouldRecurse(entry); + } +} + class _RepositoryRoot extends _RepositoryDirectory { _RepositoryRoot(fs.Directory io) : super(null, io); @@ -2156,40 +2173,72 @@ class _Progress { } } -Future _collectLicensesForComponent(_RepositoryDirectory componentRoot, { - String inputGolden, - String outputGolden, - bool force, -}) async { - String signature; - if (force) { - signature = null; - } else { - signature = await componentRoot.signature; - } - - // Check whether the golden file matches the signature of the current contents - // of this directory. +/// Reads the signature from a golden file. +Future _readSignature(String goldenPath) async { try { - system.File goldenFile = new system.File(inputGolden); + system.File goldenFile = new system.File(goldenPath); String goldenSignature = await goldenFile.openRead() .transform(utf8.decoder).transform(new LineSplitter()).first; final RegExp signaturePattern = new RegExp(r'Signature: (\w+)'); Match goldenMatch = signaturePattern.matchAsPrefix(goldenSignature); - if (goldenMatch != null && goldenMatch.group(1) == signature) { - system.stderr.writeln(' Skipping this component - no change in signature'); - return; - } + if (goldenMatch != null) + return goldenMatch.group(1); } on system.FileSystemException { - system.stderr.writeln(' Failed to read signature file, scanning directory.'); + system.stderr.writeln(' Failed to read signature file.'); + return null; + } + return null; +} + +/// Writes a signature to an [system.IOSink] in the expected format. +void _writeSignature(String signature, system.IOSink sink) { + if (signature != null) + sink.writeln('Signature: $signature\n'); +} + +// Checks for changes to the license tool itself. +// +// Returns true if changes are detected. +Future _computeLicenseToolChanges(_RepositoryDirectory root, {String goldenSignaturePath, String outputSignaturePath}) async { + system.stderr.writeln('Computing signature for license tool'); + final fs.Directory flutterNode = root.io.walk.firstWhere((fs.IoNode node) => node.name == 'flutter'); + final fs.Directory toolsNode = flutterNode.walk.firstWhere((fs.IoNode node) => node.name == 'tools'); + final fs.Directory licenseNode = toolsNode.walk.firstWhere((fs.IoNode node) => node.name == 'licenses'); + final _RepositoryFlutterLicenseToolDirectory licenseToolDirectory = new _RepositoryFlutterLicenseToolDirectory(licenseNode); + + final String toolSignature = await licenseToolDirectory.signature; + system.IOSink sink = new system.File(outputSignaturePath).openWrite(); + _writeSignature(toolSignature, sink); + await sink.close(); + + final String goldenSignature = await _readSignature(goldenSignaturePath); + return toolSignature != goldenSignature; +} + +/// Collects licenses for the specified component. +/// +/// If [writeSignature] is set, the signature is written to the output file. +/// If [force] is set, collection is run regardless of whether or not the signature matches. +Future _collectLicensesForComponent(_RepositoryDirectory componentRoot, { + String inputGoldenPath, + String outputGoldenPath, + bool writeSignature, + bool force, +}) async { + // Check whether the golden file matches the signature of the current contents of this directory. + final String goldenSignature = await _readSignature(inputGoldenPath); + final String signature = await componentRoot.signature; + if (!force && goldenSignature == signature) { + system.stderr.writeln(' Skipping this component - no change in signature'); + return; } _Progress progress = new _Progress(componentRoot.fileCount); - system.File outFile = new system.File(outputGolden); + system.File outFile = new system.File(outputGoldenPath); system.IOSink sink = outFile.openWrite(); - if (signature != null) - sink.writeln('Signature: $signature\n'); + if (writeSignature) + _writeSignature(signature, sink); List licenses = new Set.from(componentRoot.getLicenses(progress).toList()).toList(); @@ -2272,6 +2321,17 @@ Future main(List arguments) async { progress.flush(); system.stderr.writeln(''); } else { + // If changes are detected to the license tool itself, force collection + // for all components in order to check we're still generating correct + // output. + const String toolSignatureFilename = 'tool_signature'; + final bool forceRunAll = await _computeLicenseToolChanges( + root, + goldenSignaturePath: path.join(argResults['golden'], toolSignatureFilename), + outputSignaturePath: path.join(argResults['out'], toolSignatureFilename), + ); + if (forceRunAll) + system.stderr.writeln(' Detected changes to license tool. Forcing license collection for all components.'); final List usedGoldens = []; bool isFirstComponent = true; @@ -2291,23 +2351,25 @@ Future main(List arguments) async { .firstWhere((_RepositoryDirectory dir) => dir.name == component.name); } - // Always run the full license check on the flutter tree. This tree is - // relatively small but changes frequently in ways that do not affect - // the license output, and we don't want to require updates to the golden - // signature for those changes. - final bool force = component.io.name == 'flutter'; + // Always run the full license check on the flutter tree. The flutter + // tree is relatively small and changes frequently in ways that do not + // affect the license output, and we don't want to require updates to + // the golden signature for those changes. final String goldenFileName = 'licenses_${component.io.name}'; await _collectLicensesForComponent( componentRoot, - inputGolden: path.join(argResults['golden'], goldenFileName), - outputGolden: path.join(argResults['out'], goldenFileName), - force: force, + inputGoldenPath: path.join(argResults['golden'], goldenFileName), + outputGoldenPath: path.join(argResults['out'], goldenFileName), + writeSignature: component.io.name != 'flutter', + force: forceRunAll || component.io.name == 'flutter', ); usedGoldens.add(goldenFileName); } - final Set unusedGoldens = system.Directory(argResults['golden']).listSync().map((system.FileSystemEntity file) => path.basename(file.path)).toSet() - ..removeAll(usedGoldens); + final Set unusedGoldens = system.Directory(argResults['golden']).listSync() + .map((system.FileSystemEntity file) => path.basename(file.path)).toSet() + ..removeAll(usedGoldens) + ..remove(toolSignatureFilename); if (unusedGoldens.isNotEmpty) { system.stderr.writeln('The following golden files in ${argResults['golden']} are unused and need to be deleted:'); unusedGoldens.map((String s) => ' * $s').forEach(system.stderr.writeln); From cf11d86bf716e7f21d4c2da9bf389eb1a0bdfcfd Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Thu, 20 Dec 2018 05:57:53 -0500 Subject: [PATCH 0593/1537] Roll src/third_party/skia 21ee517391bc..428ec1e55c05 (3 commits) (#7264) https://skia.googlesource.com/skia.git/+log/21ee517391bc..428ec1e55c05 Created with: gclient setdep -r src/third_party/skia@428ec1e55c05 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 354fab62a5bb0..be2c60faacb79 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '21ee517391bc0d64b6f00c4f27f4d72afb71105d', + 'skia_revision': '428ec1e55c051f5aa1e1b758cb458f88b78f8ecf', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 0bb2ed85852a9..66c377933f031 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 55cc6cc52931f540a2c65a9c3e80787d +Signature: 9083bab854c5a66cac96a49d1cb0c418 UNUSED LICENSES: From dbdb5e6f8c9fc8add75d7b5a19bdaa1144a9332e Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Thu, 20 Dec 2018 10:44:33 -0500 Subject: [PATCH 0594/1537] Roll src/third_party/skia 428ec1e55c05..44539be30ef8 (1 commits) (#7265) https://skia.googlesource.com/skia.git/+log/428ec1e55c05..44539be30ef8 Created with: gclient setdep -r src/third_party/skia@44539be30ef8 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index be2c60faacb79..ddd7e5fcfdabf 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '428ec1e55c051f5aa1e1b758cb458f88b78f8ecf', + 'skia_revision': '44539be30ef89b60b12899022f1b25bedf4f5f04', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 66c377933f031..45d627ba7f3d2 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 9083bab854c5a66cac96a49d1cb0c418 +Signature: 926438d6e841c7e0d3ef0d32bd248e85 UNUSED LICENSES: From b81d1b47361f5dbe684f10d84712bd6c31786089 Mon Sep 17 00:00:00 2001 From: Chris Bracken Date: Thu, 20 Dec 2018 11:29:28 -0800 Subject: [PATCH 0595/1537] Eliminate use of new keyword in licence tool (#7266) This eliminates the use of the now-optional new keyword and enforces the unnecessary_new lint. --- ci/licenses_golden/tool_signature | 2 +- tools/licenses/analysis_options.yaml | 1 + tools/licenses/lib/cache.dart | 2 +- tools/licenses/lib/filesystem.dart | 72 ++--- tools/licenses/lib/licenses.dart | 96 +++--- tools/licenses/lib/main.dart | 264 ++++++++-------- tools/licenses/lib/patterns.dart | 434 +++++++++++++-------------- 7 files changed, 436 insertions(+), 435 deletions(-) diff --git a/ci/licenses_golden/tool_signature b/ci/licenses_golden/tool_signature index d0448b285a612..93778661b9a78 100644 --- a/ci/licenses_golden/tool_signature +++ b/ci/licenses_golden/tool_signature @@ -1,2 +1,2 @@ -Signature: d2c90af3896928c85f00e941ad07ce23 +Signature: 44f83506f783ec3ec678f053b2757fc7 diff --git a/tools/licenses/analysis_options.yaml b/tools/licenses/analysis_options.yaml index ffb8ee486a8db..e5cfbeb84be43 100644 --- a/tools/licenses/analysis_options.yaml +++ b/tools/licenses/analysis_options.yaml @@ -53,4 +53,5 @@ linter: - unawaited_futures - unnecessary_brace_in_string_interps - unnecessary_getters_setters + - unnecessary_new - package_names diff --git a/tools/licenses/lib/cache.dart b/tools/licenses/lib/cache.dart index 5d55559917fb0..159ef1e217c58 100644 --- a/tools/licenses/lib/cache.dart +++ b/tools/licenses/lib/cache.dart @@ -4,7 +4,7 @@ import 'dart:collection'; -Map _cache = new LinkedHashMap(); +Map _cache = LinkedHashMap(); const int _maxSize = 10; T cache(Key key, T getter()) { diff --git a/tools/licenses/lib/filesystem.dart b/tools/licenses/lib/filesystem.dart index 81f741d97dd8b..396c8d68480de 100644 --- a/tools/licenses/lib/filesystem.dart +++ b/tools/licenses/lib/filesystem.dart @@ -313,7 +313,7 @@ mixin UTF8TextFile implements TextFile { @override String readString() { try { - return cache(new UTF8Of(this), () => utf8.decode(readBytes())); + return cache(UTF8Of(this), () => utf8.decode(readBytes())); } on FormatException { print(fullName); rethrow; @@ -324,13 +324,13 @@ mixin UTF8TextFile implements TextFile { mixin Latin1TextFile implements TextFile { @override String readString() { - return cache(new Latin1Of(this), () { + return cache(Latin1Of(this), () { final List bytes = readBytes(); if (bytes.any((int byte) => byte == 0x00)) throw '$fullName contains a U+0000 NULL and is probably not actually encoded as Win1252'; bool isUTF8 = false; try { - cache(new UTF8Of(this), () => utf8.decode(readBytes())); + cache(UTF8Of(this), () => utf8.decode(readBytes())); isUTF8 = true; } on FormatException { } @@ -355,7 +355,7 @@ mixin ZipFile on File implements Directory { @override Iterable get walk { try { - _root ??= ArchiveDirectory.parseArchive(new a.ZipDecoder().decodeBytes(readBytes()), fullName); + _root ??= ArchiveDirectory.parseArchive(a.ZipDecoder().decodeBytes(readBytes()), fullName); return _root.walk; } catch (exception) { print('failed to parse archive:\n$fullName'); @@ -370,7 +370,7 @@ mixin TarFile on File implements Directory { @override Iterable get walk { try { - _root ??= ArchiveDirectory.parseArchive(new a.TarDecoder().decodeBytes(readBytes()), fullName); + _root ??= ArchiveDirectory.parseArchive(a.TarDecoder().decodeBytes(readBytes()), fullName); return _root.walk; } catch (exception) { print('failed to parse archive:\n$fullName'); @@ -386,7 +386,7 @@ mixin GZipFile on File implements Directory { Iterable get walk sync* { try { String innerName = path.basenameWithoutExtension(fullName); - _data ??= InMemoryFile.parse(fullName + '!' + innerName, new a.GZipDecoder().decodeBytes(readBytes())); + _data ??= InMemoryFile.parse(fullName + '!' + innerName, a.GZipDecoder().decodeBytes(readBytes())); if (_data != null) yield _data; } catch (exception) { @@ -403,7 +403,7 @@ mixin BZip2File on File implements Directory { Iterable get walk sync* { try { String innerName = path.basenameWithoutExtension(fullName); - _data ??= InMemoryFile.parse(fullName + '!' + innerName, new a.BZip2Decoder().decodeBytes(readBytes())); + _data ??= InMemoryFile.parse(fullName + '!' + innerName, a.BZip2Decoder().decodeBytes(readBytes())); if (_data != null) yield _data; } catch (exception) { @@ -420,7 +420,7 @@ class FileSystemDirectory extends IoNode implements Directory { FileSystemDirectory(this._directory); factory FileSystemDirectory.fromPath(String name) { - return new FileSystemDirectory(new io.Directory(name)); + return FileSystemDirectory(io.Directory(name)); } final io.Directory _directory; @@ -432,7 +432,7 @@ class FileSystemDirectory extends IoNode implements Directory { String get fullName => _directory.path; List _readBytes(io.File file) { - return cache/*List*/(new BytesOf(file), () => file.readAsBytesSync()); + return cache/*List*/(BytesOf(file), () => file.readAsBytesSync()); } @override @@ -441,21 +441,21 @@ class FileSystemDirectory extends IoNode implements Directory { list.sort((io.FileSystemEntity a, io.FileSystemEntity b) => a.path.compareTo(b.path)); for (io.FileSystemEntity entity in list) { if (entity is io.Directory) { - yield new FileSystemDirectory(entity); + yield FileSystemDirectory(entity); } else if (entity is io.Link) { - yield new FileSystemLink(entity); + yield FileSystemLink(entity); } else { assert(entity is io.File); io.File fileEntity = entity; if (fileEntity.lengthSync() > 0) { switch (identifyFile(fileEntity.path, () => _readBytes(fileEntity))) { - case FileType.binary: yield new FileSystemFile(fileEntity); break; - case FileType.zip: yield new FileSystemZipFile(fileEntity); break; - case FileType.tar: yield new FileSystemTarFile(fileEntity); break; - case FileType.gz: yield new FileSystemGZipFile(fileEntity); break; - case FileType.bzip2: yield new FileSystemBZip2File(fileEntity); break; - case FileType.text: yield new FileSystemUTF8TextFile(fileEntity); break; - case FileType.latin1Text: yield new FileSystemLatin1TextFile(fileEntity); break; + case FileType.binary: yield FileSystemFile(fileEntity); break; + case FileType.zip: yield FileSystemZipFile(fileEntity); break; + case FileType.tar: yield FileSystemTarFile(fileEntity); break; + case FileType.gz: yield FileSystemGZipFile(fileEntity); break; + case FileType.bzip2: yield FileSystemBZip2File(fileEntity); break; + case FileType.text: yield FileSystemUTF8TextFile(fileEntity); break; + case FileType.latin1Text: yield FileSystemLatin1TextFile(fileEntity); break; case FileType.metadata: break; // ignore this file } } @@ -489,7 +489,7 @@ class FileSystemFile extends IoNode implements File { @override List readBytes() { - return cache(new BytesOf(_file), () => _file.readAsBytesSync()); + return cache(BytesOf(_file), () => _file.readAsBytesSync()); } } @@ -529,7 +529,7 @@ class ArchiveDirectory extends IoNode implements Directory { @override final String name; - Map _subdirectories = new SplayTreeMap(); + Map _subdirectories = SplayTreeMap(); List _files = []; void _add(a.ArchiveFile entry, List remainingPath) { @@ -537,19 +537,19 @@ class ArchiveDirectory extends IoNode implements Directory { final String subdirectoryName = remainingPath.removeAt(0); _subdirectories.putIfAbsent( subdirectoryName, - () => new ArchiveDirectory('$fullName/$subdirectoryName', subdirectoryName) + () => ArchiveDirectory('$fullName/$subdirectoryName', subdirectoryName) )._add(entry, remainingPath); } else { if (entry.size > 0) { final String entryFullName = fullName + '/' + path.basename(entry.name); switch (identifyFile(entry.name, () => entry.content)) { - case FileType.binary: _files.add(new ArchiveFile(entryFullName, entry)); break; - case FileType.zip: _files.add(new ArchiveZipFile(entryFullName, entry)); break; - case FileType.tar: _files.add(new ArchiveTarFile(entryFullName, entry)); break; - case FileType.gz: _files.add(new ArchiveGZipFile(entryFullName, entry)); break; - case FileType.bzip2: _files.add(new ArchiveBZip2File(entryFullName, entry)); break; - case FileType.text: _files.add(new ArchiveUTF8TextFile(entryFullName, entry)); break; - case FileType.latin1Text: _files.add(new ArchiveLatin1TextFile(entryFullName, entry)); break; + case FileType.binary: _files.add(ArchiveFile(entryFullName, entry)); break; + case FileType.zip: _files.add(ArchiveZipFile(entryFullName, entry)); break; + case FileType.tar: _files.add(ArchiveTarFile(entryFullName, entry)); break; + case FileType.gz: _files.add(ArchiveGZipFile(entryFullName, entry)); break; + case FileType.bzip2: _files.add(ArchiveBZip2File(entryFullName, entry)); break; + case FileType.text: _files.add(ArchiveUTF8TextFile(entryFullName, entry)); break; + case FileType.latin1Text: _files.add(ArchiveLatin1TextFile(entryFullName, entry)); break; case FileType.metadata: break; // ignore this file } } @@ -557,7 +557,7 @@ class ArchiveDirectory extends IoNode implements Directory { } static ArchiveDirectory parseArchive(a.Archive archive, String ownerPath) { - final ArchiveDirectory root = new ArchiveDirectory('$ownerPath!', ''); + final ArchiveDirectory root = ArchiveDirectory('$ownerPath!', ''); for (a.ArchiveFile file in archive.files) { if (file.size > 0) root._add(file, file.name.split('/')); @@ -623,13 +623,13 @@ class InMemoryFile extends IoNode implements File { if (bytes.isEmpty) return null; switch (identifyFile(fullName, () => bytes)) { - case FileType.binary: return new InMemoryFile(fullName, bytes); break; - case FileType.zip: return new InMemoryZipFile(fullName, bytes); break; - case FileType.tar: return new InMemoryTarFile(fullName, bytes); break; - case FileType.gz: return new InMemoryGZipFile(fullName, bytes); break; - case FileType.bzip2: return new InMemoryBZip2File(fullName, bytes); break; - case FileType.text: return new InMemoryUTF8TextFile(fullName, bytes); break; - case FileType.latin1Text: return new InMemoryLatin1TextFile(fullName, bytes); break; + case FileType.binary: return InMemoryFile(fullName, bytes); break; + case FileType.zip: return InMemoryZipFile(fullName, bytes); break; + case FileType.tar: return InMemoryTarFile(fullName, bytes); break; + case FileType.gz: return InMemoryGZipFile(fullName, bytes); break; + case FileType.bzip2: return InMemoryBZip2File(fullName, bytes); break; + case FileType.text: return InMemoryUTF8TextFile(fullName, bytes); break; + case FileType.latin1Text: return InMemoryLatin1TextFile(fullName, bytes); break; case FileType.metadata: break; // ignore this file } assert(false); diff --git a/tools/licenses/lib/licenses.dart b/tools/licenses/lib/licenses.dart index 091480ad77662..0b82829993143 100644 --- a/tools/licenses/lib/licenses.dart +++ b/tools/licenses/lib/licenses.dart @@ -109,7 +109,7 @@ abstract class License implements Comparable { factory License.unique(String body, LicenseType type, { bool reformatted: false, String origin, bool yesWeKnowWhatItLooksLikeButItIsNot: false }) { if (!reformatted) body = _reformat(body); - License result = _registry.putIfAbsent(body, () => new UniqueLicense._(body, type, origin: origin, yesWeKnowWhatItLooksLikeButItIsNot: yesWeKnowWhatItLooksLikeButItIsNot)); + License result = _registry.putIfAbsent(body, () => UniqueLicense._(body, type, origin: origin, yesWeKnowWhatItLooksLikeButItIsNot: yesWeKnowWhatItLooksLikeButItIsNot)); assert(() { if (result is! UniqueLicense || result.type != type) throw 'tried to add a UniqueLicense $type, but it was a duplicate of a ${result.runtimeType} ${result.type}'; @@ -121,7 +121,7 @@ abstract class License implements Comparable { factory License.template(String body, LicenseType type, { bool reformatted: false, String origin }) { if (!reformatted) body = _reformat(body); - License result = _registry.putIfAbsent(body, () => new TemplateLicense._(body, type, origin: origin)); + License result = _registry.putIfAbsent(body, () => TemplateLicense._(body, type, origin: origin)); assert(() { if (result is! TemplateLicense || result.type != type) throw 'tried to add a TemplateLicense $type, but it was a duplicate of a ${result.runtimeType} ${result.type}'; @@ -133,7 +133,7 @@ abstract class License implements Comparable { factory License.message(String body, LicenseType type, { bool reformatted: false, String origin }) { if (!reformatted) body = _reformat(body); - License result = _registry.putIfAbsent(body, () => new MessageLicense._(body, type, origin: origin)); + License result = _registry.putIfAbsent(body, () => MessageLicense._(body, type, origin: origin)); assert(() { if (result is! MessageLicense || result.type != type) throw 'tried to add a MessageLicense $type, but it was a duplicate of a ${result.runtimeType} ${result.type}'; @@ -143,7 +143,7 @@ abstract class License implements Comparable { } factory License.blank(String body, LicenseType type, { String origin }) { - License result = _registry.putIfAbsent(body, () => new BlankLicense._(_reformat(body), type, origin: origin)); + License result = _registry.putIfAbsent(body, () => BlankLicense._(_reformat(body), type, origin: origin)); assert(() { if (result is! BlankLicense || result.type != type) throw 'tried to add a BlankLicense $type, but it was a duplicate of a ${result.runtimeType} ${result.type}'; @@ -154,7 +154,7 @@ abstract class License implements Comparable { factory License.fromMultipleBlocks(List bodies, LicenseType type) { final String body = bodies.map((String s) => _reformat(s)).join('\n\n'); - return _registry.putIfAbsent(body, () => new UniqueLicense._(body, type)); + return _registry.putIfAbsent(body, () => UniqueLicense._(body, type)); } factory License.fromBodyAndType(String body, LicenseType type, { bool reformatted: false, String origin }) { @@ -166,10 +166,10 @@ abstract class License implements Comparable { case LicenseType.mit: case LicenseType.zlib: case LicenseType.icu: - return new TemplateLicense._(body, type, origin: origin); + return TemplateLicense._(body, type, origin: origin); case LicenseType.unknown: case LicenseType.apacheNotice: - return new UniqueLicense._(body, type, origin: origin); + return UniqueLicense._(body, type, origin: origin); case LicenseType.afl: case LicenseType.mpl: case LicenseType.gpl: @@ -179,11 +179,11 @@ abstract class License implements Comparable { case LicenseType.eclipse: case LicenseType.ijg: case LicenseType.apsl: - return new MessageLicense._(body, type, origin: origin); + return MessageLicense._(body, type, origin: origin); case LicenseType.openssl: - return new MultiLicense._(body, type, origin: origin); + return MultiLicense._(body, type, origin: origin); case LicenseType.libpng: - return new BlankLicense._(body, type, origin: origin); + return BlankLicense._(body, type, origin: origin); } }); assert(result.type == type); @@ -195,18 +195,18 @@ abstract class License implements Comparable { LicenseType type = convertLicenseNameToType(name); if (type == LicenseType.unknown) type = convertBodyToType(body); - return new License.fromBodyAndType(body, type, origin: origin); + return License.fromBodyAndType(body, type, origin: origin); } factory License.fromBody(String body, { String origin }) { body = _reformat(body); LicenseType type = convertBodyToType(body); - return new License.fromBodyAndType(body, type, reformatted: true, origin: origin); + return License.fromBodyAndType(body, type, reformatted: true, origin: origin); } factory License.fromCopyrightAndLicense(String copyright, String template, LicenseType type, { String origin }) { String body = '$copyright\n\n$template'; - return _registry.putIfAbsent(body, () => new TemplateLicense._(body, type, origin: origin)); + return _registry.putIfAbsent(body, () => TemplateLicense._(body, type, origin: origin)); } factory License.fromUrl(String url, { String origin }) { @@ -215,60 +215,60 @@ abstract class License implements Comparable { switch (url) { case 'Apache:2.0': case 'http://www.apache.org/licenses/LICENSE-2.0': - body = new system.File('data/apache-license-2.0').readAsStringSync(); + body = system.File('data/apache-license-2.0').readAsStringSync(); type = LicenseType.apache; break; case 'https://developers.google.com/open-source/licenses/bsd': - body = new system.File('data/google-bsd').readAsStringSync(); + body = system.File('data/google-bsd').readAsStringSync(); type = LicenseType.bsd; break; case 'http://polymer.github.io/LICENSE.txt': - body = new system.File('data/polymer-bsd').readAsStringSync(); + body = system.File('data/polymer-bsd').readAsStringSync(); type = LicenseType.bsd; break; case 'http://www.eclipse.org/legal/epl-v10.html': - body = new system.File('data/eclipse-1.0').readAsStringSync(); + body = system.File('data/eclipse-1.0').readAsStringSync(); type = LicenseType.eclipse; break; case 'COPYING3:3': - body = new system.File('data/gpl-3.0').readAsStringSync(); + body = system.File('data/gpl-3.0').readAsStringSync(); type = LicenseType.gpl; break; case 'COPYING.LIB:2': case 'COPYING.LIother.m_:2': // blame hyatt - body = new system.File('data/library-gpl-2.0').readAsStringSync(); + body = system.File('data/library-gpl-2.0').readAsStringSync(); type = LicenseType.lgpl; break; case 'GNU Lesser:2': // there has never been such a license, but the authors said they meant the LGPL2.1 case 'GNU Lesser:2.1': - body = new system.File('data/lesser-gpl-2.1').readAsStringSync(); + body = system.File('data/lesser-gpl-2.1').readAsStringSync(); type = LicenseType.lgpl; break; case 'COPYING.RUNTIME:3.1': case 'GCC Runtime Library Exception:3.1': - body = new system.File('data/gpl-gcc-exception-3.1').readAsStringSync(); + body = system.File('data/gpl-gcc-exception-3.1').readAsStringSync(); break; case 'Academic Free License:3.0': - body = new system.File('data/academic-3.0').readAsStringSync(); + body = system.File('data/academic-3.0').readAsStringSync(); type = LicenseType.afl; break; case 'http://mozilla.org/MPL/2.0/:2.0': - body = new system.File('data/mozilla-2.0').readAsStringSync(); + body = system.File('data/mozilla-2.0').readAsStringSync(); type = LicenseType.mpl; break; case 'http://opensource.org/licenses/MIT': case 'http://opensource->org/licenses/MIT': // i don't even - body = new system.File('data/mit').readAsStringSync(); + body = system.File('data/mit').readAsStringSync(); type = LicenseType.mit; break; case 'http://www.unicode.org/copyright.html': - body = new system.File('data/unicode').readAsStringSync(); + body = system.File('data/unicode').readAsStringSync(); type = LicenseType.icu; break; default: throw 'unknown url $url'; } - return _registry.putIfAbsent(body, () => new License.fromBodyAndType(body, type, origin: origin)); + return _registry.putIfAbsent(body, () => License.fromBodyAndType(body, type, origin: origin)); } License._(String body, this.type, { this.origin, bool yesWeKnowWhatItLooksLikeButItIsNot: false }) : body = body, authors = _readAuthors(body) { @@ -352,7 +352,7 @@ abstract class License implements Comparable { Iterable get licensees => _licensees; List _licensees = []; - Set _libraries = new Set(); + Set _libraries = Set(); bool get isUsed => _licensees.isNotEmpty; @@ -395,7 +395,7 @@ abstract class License implements Comparable { return prefixes.join('\n') + '\n\n' + body; } - static final RegExp _copyrightForAuthors = new RegExp( + static final RegExp _copyrightForAuthors = RegExp( r'Copyright [-0-9 ,(cC)©]+\b(The .+ Authors)\.', caseSensitive: false ); @@ -417,7 +417,7 @@ void clearLicenseRegistry() { _registry.clear(); } -final License missingLicense = new UniqueLicense._('', LicenseType.unknown); +final License missingLicense = UniqueLicense._('', LicenseType.unknown); String _reformat(String body) { // TODO(ianh): ensure that we're stripping the same amount of leading text on each line @@ -491,12 +491,12 @@ Iterable<_LineRange> _walkLinesBackwards(String body, int start) sync* { start -= 1; if (body[start] == '\n') { if (end != null) - yield new _LineRange(start + 1, end, body); + yield _LineRange(start + 1, end, body); end = start; } } if (end != null) - yield new _LineRange(start, end, body); + yield _LineRange(start, end, body); } Iterable<_LineRange> _walkLinesForwards(String body, { int start: 0, int end }) sync* { @@ -506,13 +506,13 @@ Iterable<_LineRange> _walkLinesForwards(String body, { int start: 0, int end }) while (endIndex < end) { if (body[endIndex] == '\n') { if (startIndex != null) - yield new _LineRange(startIndex, endIndex, body); + yield _LineRange(startIndex, endIndex, body); startIndex = endIndex + 1; } endIndex += 1; } if (startIndex != null) - yield new _LineRange(startIndex, endIndex, body); + yield _LineRange(startIndex, endIndex, body); } class _SplitLicense { @@ -586,7 +586,7 @@ _SplitLicense _splitLicense(String body, { bool verifyResults: true }) { } if (verifyResults && 'Copyright ('.allMatches(body, end).isNotEmpty && !body.startsWith('If you modify libpng')) throw 'the license seems to contain a copyright:\n===copyright===\n${body.substring(0, end)}\n===license===\n${body.substring(end)}\n========='; - return new _SplitLicense(body, end); + return _SplitLicense(body, end); } class _PartialLicenseMatch { @@ -703,7 +703,7 @@ Iterable<_PartialLicenseMatch> _findLicenseBlocks(String body, RegExp pattern, i assert(body[match.start - 1] == '\n'); split = match.start - 1; } - yield new _PartialLicenseMatch(body, start, split, match.end, match, hasCopyrights: foundAny); + yield _PartialLicenseMatch(body, start, split, match.end, match, hasCopyrights: foundAny); } } @@ -721,9 +721,9 @@ Iterable<_LicenseMatch> _expand(License template, String copyright, String body, List results = template.expandTemplate(_reformat(copyright), body, origin: origin).toList(); if (results.isEmpty) throw 'license could not be expanded'; - yield new _LicenseMatch(results.first, start, end, debug: 'expanding template for $debug'); + yield _LicenseMatch(results.first, start, end, debug: 'expanding template for $debug'); if (results.length > 1) - yield* results.skip(1).map((License license) => new _LicenseMatch(license, start, end, isDuplicate: true, debug: 'expanding subsequent template for $debug')); + yield* results.skip(1).map((License license) => _LicenseMatch(license, start, end, isDuplicate: true, debug: 'expanding subsequent template for $debug')); } Iterable<_LicenseMatch> _tryNone(String body, String filename, RegExp pattern, LicenseSource parentDirectory) sync* { @@ -732,16 +732,16 @@ Iterable<_LicenseMatch> _tryNone(String body, String filename, RegExp pattern, L if (results == null || results.isEmpty) throw 'no default license file found'; // TODO(ianh): use _expand if the license asks for the copyright to be included (e.g. BSD) - yield new _LicenseMatch(results.first, match.start, match.end, debug: '_tryNone'); + yield _LicenseMatch(results.first, match.start, match.end, debug: '_tryNone'); if (results.length > 1) - yield* results.skip(1).map((License license) => new _LicenseMatch(license, match.start, match.end, isDuplicate: true, debug: 'subsequent _tryNone')); + yield* results.skip(1).map((License license) => _LicenseMatch(license, match.start, match.end, isDuplicate: true, debug: 'subsequent _tryNone')); } } Iterable<_LicenseMatch> _tryAttribution(String body, RegExp pattern, { String origin }) sync* { for (Match match in pattern.allMatches(body)) { assert(match.groupCount == 2); - yield new _LicenseMatch(new License.unique('Thanks to ${match.group(2)}.', LicenseType.unknown, origin: origin), match.start, match.end, debug: '_tryAttribution'); + yield _LicenseMatch(License.unique('Thanks to ${match.group(2)}.', LicenseType.unknown, origin: origin), match.start, match.end, debug: '_tryAttribution'); } } @@ -771,7 +771,7 @@ Iterable<_LicenseMatch> _tryReferenceByFilename(String body, LicenseFileReferenc 'block:\n---\n${match.getEntireLicense()}\n---'; } if (match.getCopyrights() == '') { - yield new _LicenseMatch(template, match.start, match.end, debug: '_tryReferenceByFilename (with failed copyright search) looking for $filename'); + yield _LicenseMatch(template, match.start, match.end, debug: '_tryReferenceByFilename (with failed copyright search) looking for $filename'); } else { yield* _expand(template, match.getCopyrights(), match.getEntireLicense(), match.start, match.end, debug: '_tryReferenceByFilename (with successful copyright search) looking for $filename', origin: origin); } @@ -793,7 +793,7 @@ Iterable<_LicenseMatch> _tryReferenceByType(String body, RegExp pattern, License if (needsCopyright) yield* _expand(template, match.getCopyrights(), match.getEntireLicense(), match.start, match.end, debug: '_tryReferenceByType', origin: origin); else - yield new _LicenseMatch(template, match.start, match.end, debug: '_tryReferenceByType (without copyrights) for type $type'); + yield _LicenseMatch(template, match.start, match.end, debug: '_tryReferenceByType (without copyrights) for type $type'); } } @@ -803,7 +803,7 @@ License _dereferenceLicense(int groupIndex, String group(int index), MultipleVer String suffix = ''; if (pattern.versionIndicies != null && pattern.versionIndicies.containsKey(groupIndex)) suffix = ':${group(pattern.versionIndicies[groupIndex])}'; - result = new License.fromUrl('${group(groupIndex)}$suffix', origin: origin); + result = License.fromUrl('${group(groupIndex)}$suffix', origin: origin); } return result; } @@ -813,7 +813,7 @@ Iterable<_LicenseMatch> _tryReferenceByUrl(String body, MultipleVersionedLicense bool isDuplicate = false; for (int index in pattern.licenseIndices) { final License result = _dereferenceLicense(index, match.group, pattern, parentDirectory, origin: origin); - yield new _LicenseMatch(result, match.start, match.end, isDuplicate: isDuplicate, debug: '_tryReferenceByUrl'); + yield _LicenseMatch(result, match.start, match.end, isDuplicate: isDuplicate, debug: '_tryReferenceByUrl'); isDuplicate = true; } } @@ -826,7 +826,7 @@ Iterable<_LicenseMatch> _tryInline(String body, RegExp pattern, { bool needsCopy // "missingCopyrights: true" if our own "needsCopyright" argument is true. // We use a template license here (not unique) because it's not uncommon for files // to reference license blocks in other files, but with their own copyrights. - yield new _LicenseMatch(new License.fromBody(match.getEntireLicense(), origin: origin), match.start, match.end, debug: '_tryInline', missingCopyrights: needsCopyright && !match.hasCopyrights); + yield _LicenseMatch(License.fromBody(match.getEntireLicense(), origin: origin), match.start, match.end, debug: '_tryInline', missingCopyrights: needsCopyright && !match.hasCopyrights); } } @@ -947,7 +947,7 @@ class TemplateLicense extends License { @override Iterable expandTemplate(String copyright, String licenseBody, { String origin }) sync* { _conditions ??= _splitLicense(body).getConditions(); - yield new License.fromCopyrightAndLicense(copyright, _conditions, type, origin: '$origin + ${this.origin}'); + yield License.fromCopyrightAndLicense(copyright, _conditions, type, origin: '$origin + ${this.origin}'); } } @@ -957,8 +957,8 @@ class MultiLicense extends License { @override Iterable expandTemplate(String copyright, String licenseBody, { String origin }) sync* { - yield new License.fromBody(body, origin: '$origin + ${this.origin}'); - yield new License.fromBody(licenseBody, origin: '$origin + ${this.origin}'); + yield License.fromBody(body, origin: '$origin + ${this.origin}'); + yield License.fromBody(licenseBody, origin: '$origin + ${this.origin}'); } } diff --git a/tools/licenses/lib/main.dart b/tools/licenses/lib/main.dart index e70e2cb6cbb1c..182ca676ef8da 100644 --- a/tools/licenses/lib/main.dart +++ b/tools/licenses/lib/main.dart @@ -51,11 +51,11 @@ abstract class _RepositoryLicensedFile extends _RepositoryFile { _RepositoryLicensedFile(_RepositoryDirectory parent, fs.File io) : super(parent, io); // file names that we are confident won't be included in the final build product - static final RegExp _readmeNamePattern = new RegExp(r'\b_*(?:readme|contributing|patents)_*\b', caseSensitive: false); - static final RegExp _buildTimePattern = new RegExp(r'^(?!.*gen$)(?:CMakeLists\.txt|(?:pkgdata)?Makefile(?:\.inc)?(?:\.am|\.in|)|configure(?:\.ac|\.in)?|config\.(?:sub|guess)|.+\.m4|install-sh|.+\.sh|.+\.bat|.+\.pyc?|.+\.pl|icu-configure|.+\.gypi?|.*\.gni?|.+\.mk|.+\.cmake|.+\.gradle|.+\.yaml|pubspec\.lock|\.packages|vms_make\.com|pom\.xml|\.project|source\.properties)$', caseSensitive: false); - static final RegExp _docsPattern = new RegExp(r'^(?:INSTALL|NEWS|OWNERS|AUTHORS|ChangeLog(?:\.rst|\.[0-9]+)?|.+\.txt|.+\.md|.+\.log|.+\.css|.+\.1|doxygen\.config|.+\.spec(?:\.in)?)$', caseSensitive: false); - static final RegExp _devPattern = new RegExp(r'^(?:codereview\.settings|.+\.~|.+\.~[0-9]+~|\.clang-format|\.gitattributes|\.landmines|\.DS_Store|\.travis\.yml|\.cirrus\.yml)$', caseSensitive: false); - static final RegExp _testsPattern = new RegExp(r'^(?:tj(?:bench|example)test\.(?:java\.)?in|example\.c)$', caseSensitive: false); + static final RegExp _readmeNamePattern = RegExp(r'\b_*(?:readme|contributing|patents)_*\b', caseSensitive: false); + static final RegExp _buildTimePattern = RegExp(r'^(?!.*gen$)(?:CMakeLists\.txt|(?:pkgdata)?Makefile(?:\.inc)?(?:\.am|\.in|)|configure(?:\.ac|\.in)?|config\.(?:sub|guess)|.+\.m4|install-sh|.+\.sh|.+\.bat|.+\.pyc?|.+\.pl|icu-configure|.+\.gypi?|.*\.gni?|.+\.mk|.+\.cmake|.+\.gradle|.+\.yaml|pubspec\.lock|\.packages|vms_make\.com|pom\.xml|\.project|source\.properties)$', caseSensitive: false); + static final RegExp _docsPattern = RegExp(r'^(?:INSTALL|NEWS|OWNERS|AUTHORS|ChangeLog(?:\.rst|\.[0-9]+)?|.+\.txt|.+\.md|.+\.log|.+\.css|.+\.1|doxygen\.config|.+\.spec(?:\.in)?)$', caseSensitive: false); + static final RegExp _devPattern = RegExp(r'^(?:codereview\.settings|.+\.~|.+\.~[0-9]+~|\.clang-format|\.gitattributes|\.landmines|\.DS_Store|\.travis\.yml|\.cirrus\.yml)$', caseSensitive: false); + static final RegExp _testsPattern = RegExp(r'^(?:tj(?:bench|example)test\.(?:java\.)?in|example\.c)$', caseSensitive: false); bool get isIncludedInBuildProducts { return !io.name.contains(_readmeNamePattern) @@ -75,7 +75,7 @@ class _RepositorySourceFile extends _RepositoryLicensedFile { @override fs.TextFile get io => super.io; - static final RegExp _hashBangPattern = new RegExp(r'^#! *(?:/bin/sh|/bin/bash|/usr/bin/env +(?:python|bash))\b'); + static final RegExp _hashBangPattern = RegExp(r'^#! *(?:/bin/sh|/bin/bash|/usr/bin/env +(?:python|bash))\b'); @override bool get isShellScript { @@ -170,7 +170,7 @@ abstract class _RepositorySingleLicenseFile extends _RepositoryLicenseFile { class _RepositoryGeneralSingleLicenseFile extends _RepositorySingleLicenseFile { _RepositoryGeneralSingleLicenseFile(_RepositoryDirectory parent, fs.TextFile io) - : super(parent, io, new License.fromBodyAndName(io.readString(), io.name, origin: io.fullName)); + : super(parent, io, License.fromBodyAndName(io.readString(), io.name, origin: io.fullName)); _RepositoryGeneralSingleLicenseFile.fromLicense(_RepositoryDirectory parent, fs.TextFile io, License license) : super(parent, io, license); @@ -190,7 +190,7 @@ class _RepositoryApache4DNoticeFile extends _RepositorySingleLicenseFile { @override License licenseOfType(LicenseType type) => null; - static final RegExp _pattern = new RegExp( + static final RegExp _pattern = RegExp( r'^(// ------------------------------------------------------------------\n' r'// NOTICE file corresponding to the section 4d of The Apache License,\n' r'// Version 2\.0, in this case for (?:.+)\n' @@ -207,7 +207,7 @@ class _RepositoryApache4DNoticeFile extends _RepositorySingleLicenseFile { static License _parseLicense(fs.TextFile io) { final Match match = _pattern.allMatches(io.readString()).single; assert(match.groupCount == 2); - return new License.unique(match.group(2), LicenseType.apacheNotice, origin: io.fullName); + return License.unique(match.group(2), LicenseType.apacheNotice, origin: io.fullName); } } @@ -226,7 +226,7 @@ class _RepositoryLicenseRedirectFile extends _RepositorySingleLicenseFile { String contents = io.readString(); License license = interpretAsRedirectLicense(contents, parent, origin: io.fullName); if (license != null) - return new _RepositoryLicenseRedirectFile(parent, io, license); + return _RepositoryLicenseRedirectFile(parent, io, license); return null; } } @@ -243,7 +243,7 @@ class _RepositoryLicenseFileWithLeader extends _RepositorySingleLicenseFile { final Match match = leader.firstMatch(body); if (match == null) throw 'failed to strip leader from $io\nleader: /$leader/\nbody:\n---\n$body\n---'; - return new License.fromBodyAndName(body.substring(match.end), io.name, origin: io.fullName); + return License.fromBodyAndName(body.substring(match.end), io.name, origin: io.fullName); } } @@ -251,7 +251,7 @@ class _RepositoryReadmeIjgFile extends _RepositorySingleLicenseFile { _RepositoryReadmeIjgFile(_RepositoryDirectory parent, fs.TextFile io) : super(parent, io, _parseLicense(io)); - static final RegExp _pattern = new RegExp( + static final RegExp _pattern = RegExp( r'Permission is hereby granted to use, copy, modify, and distribute this\n' r'software \(or portions thereof\) for any purpose, without fee, subject to these\n' r'conditions:\n' @@ -272,7 +272,7 @@ class _RepositoryReadmeIjgFile extends _RepositorySingleLicenseFile { String body = io.readString(); if (!body.contains(_pattern)) throw 'unexpected contents in IJG README'; - return new License.message(body, LicenseType.ijg, origin: io.fullName); + return License.message(body, LicenseType.ijg, origin: io.fullName); } @override @@ -292,7 +292,7 @@ class _RepositoryDartLicenseFile extends _RepositorySingleLicenseFile { _RepositoryDartLicenseFile(_RepositoryDirectory parent, fs.TextFile io) : super(parent, io, _parseLicense(io)); - static final RegExp _pattern = new RegExp( + static final RegExp _pattern = RegExp( r'^This license applies to all parts of Dart that are not externally\n' r'maintained libraries\. The external maintained libraries used by\n' r'Dart are:\n' @@ -310,7 +310,7 @@ class _RepositoryDartLicenseFile extends _RepositorySingleLicenseFile { final Match match = _pattern.firstMatch(io.readString()); if (match == null || match.groupCount != 1) throw 'unexpected Dart license file contents'; - return new License.template(match.group(1), LicenseType.bsd, origin: io.fullName); + return License.template(match.group(1), LicenseType.bsd, origin: io.fullName); } @override @@ -321,7 +321,7 @@ class _RepositoryDartLicenseFile extends _RepositorySingleLicenseFile { class _RepositoryLibPngLicenseFile extends _RepositorySingleLicenseFile { _RepositoryLibPngLicenseFile(_RepositoryDirectory parent, fs.TextFile io) - : super(parent, io, new License.blank(io.readString(), LicenseType.libpng, origin: io.fullName)) { + : super(parent, io, License.blank(io.readString(), LicenseType.libpng, origin: io.fullName)) { _verifyLicense(io); } @@ -343,7 +343,7 @@ class _RepositoryLibPngLicenseFile extends _RepositorySingleLicenseFile { class _RepositoryBlankLicenseFile extends _RepositorySingleLicenseFile { _RepositoryBlankLicenseFile(_RepositoryDirectory parent, fs.TextFile io, String sanityCheck) - : super(parent, io, new License.blank(io.readString(), LicenseType.unknown)) { + : super(parent, io, License.blank(io.readString(), LicenseType.unknown)) { _verifyLicense(io, sanityCheck); } @@ -361,7 +361,7 @@ class _RepositoryCatapultApiClientLicenseFile extends _RepositorySingleLicenseFi _RepositoryCatapultApiClientLicenseFile(_RepositoryDirectory parent, fs.TextFile io) : super(parent, io, _parseLicense(io)); - static final RegExp _pattern = new RegExp( + static final RegExp _pattern = RegExp( r' *Licensed under the Apache License, Version 2\.0 \(the "License"\);\n' r' *you may not use this file except in compliance with the License\.\n' r' *You may obtain a copy of the License at\n' @@ -381,7 +381,7 @@ class _RepositoryCatapultApiClientLicenseFile extends _RepositorySingleLicenseFi final Match match = _pattern.firstMatch(io.readString()); if (match == null || match.groupCount != 1) throw 'unexpected apiclient license file contents'; - return new License.fromUrl(match.group(1), origin: io.fullName); + return License.fromUrl(match.group(1), origin: io.fullName); } @override @@ -394,7 +394,7 @@ class _RepositoryCatapultCoverageLicenseFile extends _RepositorySingleLicenseFil _RepositoryCatapultCoverageLicenseFile(_RepositoryDirectory parent, fs.TextFile io) : super(parent, io, _parseLicense(io)); - static final RegExp _pattern = new RegExp( + static final RegExp _pattern = RegExp( r' *Except where noted otherwise, this software is licensed under the Apache\n' r' *License, Version 2.0 \(the "License"\); you may not use this work except in\n' r' *compliance with the License\. You may obtain a copy of the License at\n' @@ -414,7 +414,7 @@ class _RepositoryCatapultCoverageLicenseFile extends _RepositorySingleLicenseFil final Match match = _pattern.firstMatch(io.readString()); if (match == null || match.groupCount != 1) throw 'unexpected coverage license file contents'; - return new License.fromUrl(match.group(1), origin: io.fullName); + return License.fromUrl(match.group(1), origin: io.fullName); } @override @@ -429,7 +429,7 @@ class _RepositoryLibJpegTurboLicense extends _RepositoryLicenseFile { _parseLicense(io); } - static final RegExp _pattern = new RegExp( + static final RegExp _pattern = RegExp( r'libjpeg-turbo is covered by three compatible BSD-style open source licenses:\n' r'\n' r'- The IJG \(Independent JPEG Group\) License, which is listed in\n' @@ -495,7 +495,7 @@ class _RepositoryFreetypeLicenseFile extends _RepositoryLicenseFile { _RepositoryFreetypeLicenseFile(_RepositoryDirectory parent, fs.TextFile io) : _target = _parseLicense(io), super(parent, io); - static final RegExp _pattern = new RegExp( + static final RegExp _pattern = RegExp( r"The FreeType 2 font engine is copyrighted work and cannot be used\n" r"legally without a software license\. In order to make this project\n" r"usable to a vast majority of developers, we distribute it under two\n" @@ -581,7 +581,7 @@ class _RepositoryIcuLicenseFile extends _RepositoryLicenseFile { final List _licenses; - static final RegExp _pattern = new RegExp( + static final RegExp _pattern = RegExp( r'^COPYRIGHT AND PERMISSION NOTICE \(ICU 58 and later\)\n+' r'( *Copyright (?:.|\n)+?)\n+' // 1 r'Third-Party Software Licenses\n+' @@ -653,8 +653,8 @@ class _RepositoryIcuLicenseFile extends _RepositoryLicenseFile { caseSensitive: false ); - static final RegExp _unexpectedHash = new RegExp(r'^.+ #', multiLine: true); - static final RegExp _newlineHash = new RegExp(r' # ?'); + static final RegExp _unexpectedHash = RegExp(r'^.+ #', multiLine: true); + static final RegExp _newlineHash = RegExp(r' # ?'); static String _dewrap(String s) { if (!s.startsWith(' # ')) @@ -674,16 +674,16 @@ class _RepositoryIcuLicenseFile extends _RepositoryLicenseFile { if (match.group(10).contains(copyrightMentionPattern) || match.group(11).contains('7.')) throw 'unexpected copyright in ICU license file'; final List result = [ - new License.fromBodyAndType(_dewrap(match.group(1)), LicenseType.unknown, origin: io.fullName), - new License.fromBodyAndType(_dewrap(match.group(2)), LicenseType.icu, origin: io.fullName), - new License.fromBodyAndType(_dewrap(match.group(3)), LicenseType.bsd, origin: io.fullName), - new License.fromBodyAndType(_dewrap(match.group(4)), LicenseType.bsd, origin: io.fullName), - new License.fromBodyAndType(_dewrap(match.group(5)), LicenseType.bsd, origin: io.fullName), - new License.fromBodyAndType(_dewrap(match.group(6)), LicenseType.unknown, origin: io.fullName), - new License.fromBodyAndType(_dewrap(match.group(7)), LicenseType.unknown, origin: io.fullName), - new License.fromBodyAndType(_dewrap(match.group(8)), LicenseType.bsd, origin: io.fullName), - new License.fromBodyAndType(_dewrap(match.group(9)), LicenseType.bsd, origin: io.fullName), - new License.fromBodyAndType(_dewrap(match.group(11)), LicenseType.bsd, origin: io.fullName), + License.fromBodyAndType(_dewrap(match.group(1)), LicenseType.unknown, origin: io.fullName), + License.fromBodyAndType(_dewrap(match.group(2)), LicenseType.icu, origin: io.fullName), + License.fromBodyAndType(_dewrap(match.group(3)), LicenseType.bsd, origin: io.fullName), + License.fromBodyAndType(_dewrap(match.group(4)), LicenseType.bsd, origin: io.fullName), + License.fromBodyAndType(_dewrap(match.group(5)), LicenseType.bsd, origin: io.fullName), + License.fromBodyAndType(_dewrap(match.group(6)), LicenseType.unknown, origin: io.fullName), + License.fromBodyAndType(_dewrap(match.group(7)), LicenseType.unknown, origin: io.fullName), + License.fromBodyAndType(_dewrap(match.group(8)), LicenseType.bsd, origin: io.fullName), + License.fromBodyAndType(_dewrap(match.group(9)), LicenseType.bsd, origin: io.fullName), + License.fromBodyAndType(_dewrap(match.group(11)), LicenseType.bsd, origin: io.fullName), ]; return result; } @@ -771,7 +771,7 @@ class _RepositoryMultiLicenseNoticesForFilesFile extends _RepositoryLicenseFile } on FormatException { bodyText = latin1.decode(bodyBytes); } - License license = new License.unique(bodyText, LicenseType.unknown, origin: io.fullName); + License license = License.unique(bodyText, LicenseType.unknown, origin: io.fullName); for (String name in names) { if (result[name] != null) throw 'conflicting license information for $name in ${io.fullName}'; @@ -813,7 +813,7 @@ class _RepositoryCxxStlDualLicenseFile extends _RepositoryLicenseFile { _RepositoryCxxStlDualLicenseFile(_RepositoryDirectory parent, fs.TextFile io) : _licenses = _parseLicenses(io), super(parent, io); - static final RegExp _pattern = new RegExp( + static final RegExp _pattern = RegExp( r'^' r'==============================================================================\n' r'.+ License\n' @@ -838,8 +838,8 @@ class _RepositoryCxxStlDualLicenseFile extends _RepositoryLicenseFile { if (match == null || match.groupCount != 2) throw 'unexpected dual license file contents'; return [ - new License.fromBodyAndType(match.group(1), LicenseType.bsd), - new License.fromBodyAndType(match.group(2), LicenseType.mit), + License.fromBodyAndType(match.group(1), LicenseType.bsd), + License.fromBodyAndType(match.group(2), LicenseType.mit), ]; } @@ -887,7 +887,7 @@ class _RepositoryDirectory extends _RepositoryEntry implements LicenseSource { final Map _childrenByName = {}; // the bit at the beginning excludes files like "license.py". - static final RegExp _licenseNamePattern = new RegExp(r'^(?!.*\.py$)(?!.*(?:no|update)-copyright)(?!.*mh-bsd-gcc).*\b_*(?:license(?!\.html)|copying|copyright|notice|l?gpl|bsd|mpl?|ftl\.txt)_*\b', caseSensitive: false); + static final RegExp _licenseNamePattern = RegExp(r'^(?!.*\.py$)(?!.*(?:no|update)-copyright)(?!.*mh-bsd-gcc).*\b_*(?:license(?!\.html)|copying|copyright|notice|l?gpl|bsd|mpl?|ftl\.txt)_*\b', caseSensitive: false); void crawl() { for (fs.IoNode entry in io.walk) { @@ -943,14 +943,14 @@ class _RepositoryDirectory extends _RepositoryEntry implements LicenseSource { _RepositoryDirectory createSubdirectory(fs.Directory entry) { if (entry.name == 'third_party') - return new _RepositoryGenericThirdPartyDirectory(this, entry); - return new _RepositoryDirectory(this, entry); + return _RepositoryGenericThirdPartyDirectory(this, entry); + return _RepositoryDirectory(this, entry); } _RepositoryFile createFile(fs.IoNode entry) { if (entry is fs.TextFile) { if (_RepositoryApache4DNoticeFile.consider(entry)) { - return new _RepositoryApache4DNoticeFile(this, entry); + return _RepositoryApache4DNoticeFile(this, entry); } else { _RepositoryFile result; if (entry.name == 'NOTICE') @@ -958,17 +958,17 @@ class _RepositoryDirectory extends _RepositoryEntry implements LicenseSource { if (result != null) { return result; } else if (entry.name.contains(_licenseNamePattern)) { - return new _RepositoryGeneralSingleLicenseFile(this, entry); + return _RepositoryGeneralSingleLicenseFile(this, entry); } else if (entry.name == 'README.ijg') { - return new _RepositoryReadmeIjgFile(this, entry); + return _RepositoryReadmeIjgFile(this, entry); } else { - return new _RepositorySourceFile(this, entry); + return _RepositorySourceFile(this, entry); } } } else if (entry.name == 'NOTICE.txt') { - return new _RepositoryMultiLicenseNoticesForFilesFile(this, entry); + return _RepositoryMultiLicenseNoticesForFilesFile(this, entry); } else { - return new _RepositoryBinaryFile(this, entry); + return _RepositoryBinaryFile(this, entry); } } @@ -1145,7 +1145,7 @@ class _RepositoryDirectory extends _RepositoryEntry implements LicenseSource { if (ignoreCase) { // we get here if we're trying a last-ditch effort at finding a file. // so this should happen only rarely. - map = new HashMap( + map = HashMap( equals: (String n1, String n2) => n1.toLowerCase() == n2.toLowerCase(), hashCode: (String n) => n.toLowerCase().hashCode ) @@ -1175,7 +1175,7 @@ class _RepositoryDirectory extends _RepositoryEntry implements LicenseSource { } Set getLicenses(_Progress progress) { - Set result = new Set(); + Set result = Set(); for (_RepositoryDirectory directory in _subdirectories) result.addAll(directory.getLicenses(progress)); for (_RepositoryLicensedFile file in _files) { @@ -1281,7 +1281,7 @@ class _RepositoryReachOutDirectory extends _RepositoryDirectory { @override _RepositoryFile createFile(fs.IoNode entry) { if (reachOutFilenames.contains(entry.name)) - return new _RepositoryReachOutFile(this, entry, offset); + return _RepositoryReachOutFile(this, entry, offset); return super.createFile(entry); } } @@ -1302,7 +1302,7 @@ class _RepositoryExcludeSubpathDirectory extends _RepositoryDirectory { @override _RepositoryDirectory createSubdirectory(fs.Directory entry) { if (entry.name == paths[index] && (index < paths.length - 1)) - return new _RepositoryExcludeSubpathDirectory(this, entry, paths, index + 1); + return _RepositoryExcludeSubpathDirectory(this, entry, paths, index + 1); return super.createSubdirectory(entry); } } @@ -1338,7 +1338,7 @@ class _RepositoryFreetypeDocsDirectory extends _RepositoryDirectory { @override _RepositoryFile createFile(fs.IoNode entry) { if (entry.name == 'LICENSE.TXT') - return new _RepositoryFreetypeLicenseFile(this, entry); + return _RepositoryFreetypeLicenseFile(this, entry); return super.createFile(entry); } @@ -1350,7 +1350,7 @@ class _RepositoryFreetypeDocsDirectory extends _RepositoryDirectory { // We don't ship anything in this directory so don't bother looking for licenses there. // However, there are licenses in this directory referenced from elsewhere, so we do // want to crawl it and expose them. - return new Set(); + return Set(); } } @@ -1386,7 +1386,7 @@ class _RepositoryFreetypeSrcDirectory extends _RepositoryDirectory { @override _RepositoryDirectory createSubdirectory(fs.Directory entry) { if (entry.name == 'gzip') - return new _RepositoryFreetypeSrcGZipDirectory(this, entry); + return _RepositoryFreetypeSrcGZipDirectory(this, entry); return super.createSubdirectory(entry); } @@ -1431,9 +1431,9 @@ class _RepositoryFreetypeDirectory extends _RepositoryDirectory { @override _RepositoryDirectory createSubdirectory(fs.Directory entry) { if (entry.name == 'src') - return new _RepositoryFreetypeSrcDirectory(this, entry); + return _RepositoryFreetypeSrcDirectory(this, entry); if (entry.name == 'docs') - return new _RepositoryFreetypeDocsDirectory(this, entry); + return _RepositoryFreetypeDocsDirectory(this, entry); return super.createSubdirectory(entry); } } @@ -1450,7 +1450,7 @@ class _RepositoryIcuDirectory extends _RepositoryDirectory { @override _RepositoryFile createFile(fs.IoNode entry) { if (entry.name == 'LICENSE') - return new _RepositoryIcuLicenseFile(this, entry); + return _RepositoryIcuLicenseFile(this, entry); return super.createFile(entry); } } @@ -1471,7 +1471,7 @@ class _RepositoryJSR305Directory extends _RepositoryDirectory { @override _RepositoryDirectory createSubdirectory(fs.Directory entry) { if (entry.name == 'src') - return new _RepositoryJSR305SrcDirectory(this, entry); + return _RepositoryJSR305SrcDirectory(this, entry); return super.createSubdirectory(entry); } } @@ -1499,14 +1499,14 @@ class _RepositoryLibcxxDirectory extends _RepositoryDirectory { @override _RepositoryDirectory createSubdirectory(fs.Directory entry) { if (entry.name == 'src') - return new _RepositoryLibcxxSrcDirectory(this, entry); + return _RepositoryLibcxxSrcDirectory(this, entry); return super.createSubdirectory(entry); } @override _RepositoryFile createFile(fs.IoNode entry) { if (entry.name == 'LICENSE.TXT') - return new _RepositoryCxxStlDualLicenseFile(this, entry); + return _RepositoryCxxStlDualLicenseFile(this, entry); return super.createFile(entry); } } @@ -1517,7 +1517,7 @@ class _RepositoryLibcxxSrcDirectory extends _RepositoryDirectory { @override _RepositoryDirectory createSubdirectory(fs.Directory entry) { if (entry.name == 'support') - return new _RepositoryLibcxxSrcSupportDirectory(this, entry); + return _RepositoryLibcxxSrcSupportDirectory(this, entry); return super.createSubdirectory(entry); } } @@ -1538,7 +1538,7 @@ class _RepositoryLibcxxabiDirectory extends _RepositoryDirectory { @override _RepositoryFile createFile(fs.IoNode entry) { if (entry.name == 'LICENSE.TXT') - return new _RepositoryCxxStlDualLicenseFile(this, entry); + return _RepositoryCxxStlDualLicenseFile(this, entry); return super.createFile(entry); } } @@ -1549,9 +1549,9 @@ class _RepositoryLibJpegDirectory extends _RepositoryDirectory { @override _RepositoryFile createFile(fs.IoNode entry) { if (entry.name == 'README') - return new _RepositoryReadmeIjgFile(this, entry); + return _RepositoryReadmeIjgFile(this, entry); if (entry.name == 'LICENSE') - return new _RepositoryLicenseFileWithLeader(this, entry, new RegExp(r'^\(Copied from the README\.\)\n+-+\n+')); + return _RepositoryLicenseFileWithLeader(this, entry, RegExp(r'^\(Copied from the README\.\)\n+-+\n+')); return super.createFile(entry); } } @@ -1562,7 +1562,7 @@ class _RepositoryLibJpegTurboDirectory extends _RepositoryDirectory { @override _RepositoryFile createFile(fs.IoNode entry) { if (entry.name == 'LICENSE.md') - return new _RepositoryLibJpegTurboLicense(this, entry); + return _RepositoryLibJpegTurboLicense(this, entry); return super.createFile(entry); } @@ -1581,7 +1581,7 @@ class _RepositoryLibPngDirectory extends _RepositoryDirectory { @override _RepositoryFile createFile(fs.IoNode entry) { if (entry.name == 'LICENSE' || entry.name == 'png.h') - return new _RepositoryLibPngLicenseFile(this, entry); + return _RepositoryLibPngLicenseFile(this, entry); return super.createFile(entry); } } @@ -1604,7 +1604,7 @@ class _RepositoryPkgDirectory extends _RepositoryDirectory { @override _RepositoryDirectory createSubdirectory(fs.Directory entry) { if (entry.name == 'when') - return new _RepositoryPkgWhenDirectory(this, entry); + return _RepositoryPkgWhenDirectory(this, entry); return super.createSubdirectory(entry); } } @@ -1625,7 +1625,7 @@ class _RepositorySkiaLibWebPDirectory extends _RepositoryDirectory { @override _RepositoryDirectory createSubdirectory(fs.Directory entry) { if (entry.name == 'webp') - return new _RepositoryReachOutDirectory(this, entry, new Set.from(const ['config.h']), 3); + return _RepositoryReachOutDirectory(this, entry, Set.from(const ['config.h']), 3); return super.createSubdirectory(entry); } } @@ -1656,13 +1656,13 @@ class _RepositorySkiaThirdPartyDirectory extends _RepositoryGenericThirdPartyDir @override _RepositoryDirectory createSubdirectory(fs.Directory entry) { if (entry.name == 'ktx') - return new _RepositoryReachOutDirectory(this, entry, new Set.from(const ['ktx.h', 'ktx.cpp']), 2); + return _RepositoryReachOutDirectory(this, entry, Set.from(const ['ktx.h', 'ktx.cpp']), 2); if (entry.name == 'libmicrohttpd') - return new _RepositoryReachOutDirectory(this, entry, new Set.from(const ['MHD_config.h']), 2); + return _RepositoryReachOutDirectory(this, entry, Set.from(const ['MHD_config.h']), 2); if (entry.name == 'libwebp') - return new _RepositorySkiaLibWebPDirectory(this, entry); + return _RepositorySkiaLibWebPDirectory(this, entry); if (entry.name == 'libsdl') - return new _RepositorySkiaLibSdlDirectory(this, entry); + return _RepositorySkiaLibSdlDirectory(this, entry); return super.createSubdirectory(entry); } } @@ -1681,7 +1681,7 @@ class _RepositorySkiaDirectory extends _RepositoryDirectory { @override _RepositoryDirectory createSubdirectory(fs.Directory entry) { if (entry.name == 'third_party') - return new _RepositorySkiaThirdPartyDirectory(this, entry); + return _RepositorySkiaThirdPartyDirectory(this, entry); return super.createSubdirectory(entry); } } @@ -1699,7 +1699,7 @@ class _RepositoryVulkanDirectory extends _RepositoryDirectory { @override _RepositoryDirectory createSubdirectory(fs.Directory entry) { if (entry.name == 'src') - return new _RepositoryExcludeSubpathDirectory(this, entry, const ['spec']); + return _RepositoryExcludeSubpathDirectory(this, entry, const ['spec']); return super.createSubdirectory(entry); } } @@ -1735,41 +1735,41 @@ class _RepositoryRootThirdPartyDirectory extends _RepositoryGenericThirdPartyDir @override _RepositoryDirectory createSubdirectory(fs.Directory entry) { if (entry.name == 'android_platform') - return new _RepositoryAndroidPlatformDirectory(this, entry); + return _RepositoryAndroidPlatformDirectory(this, entry); if (entry.name == 'boringssl') - return new _RepositoryBoringSSLDirectory(this, entry); + return _RepositoryBoringSSLDirectory(this, entry); if (entry.name == 'catapult') - return new _RepositoryCatapultDirectory(this, entry); + return _RepositoryCatapultDirectory(this, entry); if (entry.name == 'dart') - return new _RepositoryDartDirectory(this, entry); + return _RepositoryDartDirectory(this, entry); if (entry.name == 'expat') - return new _RepositoryExpatDirectory(this, entry); + return _RepositoryExpatDirectory(this, entry); if (entry.name == 'freetype-android') throw '//third_party/freetype-android is no longer part of this client: remove it'; if (entry.name == 'freetype2') - return new _RepositoryFreetypeDirectory(this, entry); + return _RepositoryFreetypeDirectory(this, entry); if (entry.name == 'harfbuzz') - return new _RepositoryHarfbuzzDirectory(this, entry); + return _RepositoryHarfbuzzDirectory(this, entry); if (entry.name == 'icu') - return new _RepositoryIcuDirectory(this, entry); + return _RepositoryIcuDirectory(this, entry); if (entry.name == 'jsr-305') - return new _RepositoryJSR305Directory(this, entry); + return _RepositoryJSR305Directory(this, entry); if (entry.name == 'libcxx') - return new _RepositoryLibcxxDirectory(this, entry); + return _RepositoryLibcxxDirectory(this, entry); if (entry.name == 'libcxxabi') - return new _RepositoryLibcxxabiDirectory(this, entry); + return _RepositoryLibcxxabiDirectory(this, entry); if (entry.name == 'libjpeg') - return new _RepositoryLibJpegDirectory(this, entry); + return _RepositoryLibJpegDirectory(this, entry); if (entry.name == 'libjpeg_turbo' || entry.name == 'libjpeg-turbo') - return new _RepositoryLibJpegTurboDirectory(this, entry); + return _RepositoryLibJpegTurboDirectory(this, entry); if (entry.name == 'libpng') - return new _RepositoryLibPngDirectory(this, entry); + return _RepositoryLibPngDirectory(this, entry); if (entry.name == 'libwebp') - return new _RepositoryLibWebpDirectory(this, entry); + return _RepositoryLibWebpDirectory(this, entry); if (entry.name == 'pkg') - return new _RepositoryPkgDirectory(this, entry); + return _RepositoryPkgDirectory(this, entry); if (entry.name == 'vulkan') - return new _RepositoryVulkanDirectory(this, entry); + return _RepositoryVulkanDirectory(this, entry); return super.createSubdirectory(entry); } } @@ -1802,14 +1802,14 @@ class _RepositoryBoringSSLSourceDirectory extends _RepositoryDirectory { @override _RepositoryFile createFile(fs.IoNode entry) { if (entry.name == 'LICENSE') - return new _RepositoryOpenSSLLicenseFile(this, entry); + return _RepositoryOpenSSLLicenseFile(this, entry); return super.createFile(entry); } @override _RepositoryDirectory createSubdirectory(fs.Directory entry) { if (entry.name == 'third_party') - return new _RepositoryBoringSSLThirdPartyDirectory(this, entry); + return _RepositoryBoringSSLThirdPartyDirectory(this, entry); return super.createSubdirectory(entry); } } @@ -1824,7 +1824,7 @@ class _RepositoryBoringSSLSourceDirectory extends _RepositoryDirectory { class _RepositoryOpenSSLLicenseFile extends _RepositorySingleLicenseFile { _RepositoryOpenSSLLicenseFile(_RepositoryDirectory parent, fs.TextFile io) : super(parent, io, - new License.fromBodyAndType( + License.fromBodyAndType( LineSplitter.split(io.readString()) .skip(23) .takeWhile((String s) => !s.startsWith('BoringSSL uses the Chromium test infrastructure to run a continuous build,')) @@ -1854,14 +1854,14 @@ class _RepositoryBoringSSLDirectory extends _RepositoryDirectory { @override _RepositoryFile createFile(fs.IoNode entry) { if (entry.name == 'README') - return new _RepositoryBlankLicenseFile(this, entry, 'This repository contains the files generated by boringssl for its build.'); + return _RepositoryBlankLicenseFile(this, entry, 'This repository contains the files generated by boringssl for its build.'); return super.createFile(entry); } @override _RepositoryDirectory createSubdirectory(fs.Directory entry) { if (entry.name == 'src') - return new _RepositoryBoringSSLSourceDirectory(this, entry); + return _RepositoryBoringSSLSourceDirectory(this, entry); return super.createSubdirectory(entry); } } @@ -1872,7 +1872,7 @@ class _RepositoryCatapultThirdPartyApiClientDirectory extends _RepositoryDirecto @override _RepositoryFile createFile(fs.IoNode entry) { if (entry.name == 'LICENSE') - return new _RepositoryCatapultApiClientLicenseFile(this, entry); + return _RepositoryCatapultApiClientLicenseFile(this, entry); return super.createFile(entry); } } @@ -1883,7 +1883,7 @@ class _RepositoryCatapultThirdPartyCoverageDirectory extends _RepositoryDirector @override _RepositoryFile createFile(fs.IoNode entry) { if (entry.name == 'NOTICE.txt') - return new _RepositoryCatapultCoverageLicenseFile(this, entry); + return _RepositoryCatapultCoverageLicenseFile(this, entry); return super.createFile(entry); } } @@ -1894,9 +1894,9 @@ class _RepositoryCatapultThirdPartyDirectory extends _RepositoryDirectory { @override _RepositoryDirectory createSubdirectory(fs.Directory entry) { if (entry.name == 'apiclient') - return new _RepositoryCatapultThirdPartyApiClientDirectory(this, entry); + return _RepositoryCatapultThirdPartyApiClientDirectory(this, entry); if (entry.name == 'coverage') - return new _RepositoryCatapultThirdPartyCoverageDirectory(this, entry); + return _RepositoryCatapultThirdPartyCoverageDirectory(this, entry); return super.createSubdirectory(entry); } } @@ -1907,7 +1907,7 @@ class _RepositoryCatapultDirectory extends _RepositoryDirectory { @override _RepositoryDirectory createSubdirectory(fs.Directory entry) { if (entry.name == 'third_party') - return new _RepositoryCatapultThirdPartyDirectory(this, entry); + return _RepositoryCatapultThirdPartyDirectory(this, entry); return super.createSubdirectory(entry); } } @@ -1940,7 +1940,7 @@ class _RepositoryDartThirdPartyDirectory extends _RepositoryGenericThirdPartyDir @override _RepositoryDirectory createSubdirectory(fs.Directory entry) { if (entry.name == 'boringssl') - return new _RepositoryBoringSSLDirectory(this, entry); + return _RepositoryBoringSSLDirectory(this, entry); return super.createSubdirectory(entry); } } @@ -1951,7 +1951,7 @@ class _RepositoryDartRuntimeDirectory extends _RepositoryDirectory { @override _RepositoryDirectory createSubdirectory(fs.Directory entry) { if (entry.name == 'third_party') - return new _RepositoryDartRuntimeThirdPartyDirectory(this, entry); + return _RepositoryDartRuntimeThirdPartyDirectory(this, entry); return super.createSubdirectory(entry); } } @@ -1965,7 +1965,7 @@ class _RepositoryDartDirectory extends _RepositoryDirectory { @override _RepositoryFile createFile(fs.IoNode entry) { if (entry.name == 'LICENSE') - return new _RepositoryDartLicenseFile(this, entry); + return _RepositoryDartLicenseFile(this, entry); return super.createFile(entry); } @@ -1983,9 +1983,9 @@ class _RepositoryDartDirectory extends _RepositoryDirectory { @override _RepositoryDirectory createSubdirectory(fs.Directory entry) { if (entry.name == 'third_party') - return new _RepositoryDartThirdPartyDirectory(this, entry); + return _RepositoryDartThirdPartyDirectory(this, entry); if (entry.name == 'runtime') - return new _RepositoryDartRuntimeDirectory(this, entry); + return _RepositoryDartRuntimeDirectory(this, entry); return super.createSubdirectory(entry); } } @@ -2014,9 +2014,9 @@ class _RepositoryFlutterDirectory extends _RepositoryDirectory { @override _RepositoryDirectory createSubdirectory(fs.Directory entry) { if (entry.name == 'sky') - return new _RepositoryExcludeSubpathDirectory(this, entry, const ['packages', 'sky_engine', 'LICENSE']); // that's the output of this script! + return _RepositoryExcludeSubpathDirectory(this, entry, const ['packages', 'sky_engine', 'LICENSE']); // that's the output of this script! if (entry.name == 'third_party') - return new _RepositoryFlutterThirdPartyDirectory(this, entry); + return _RepositoryFlutterThirdPartyDirectory(this, entry); return super.createSubdirectory(entry); } } @@ -2030,7 +2030,7 @@ class _RepositoryFlutterThirdPartyDirectory extends _RepositoryDirectory { @override _RepositoryDirectory createSubdirectory(fs.Directory entry) { if (entry.name == 'txt') - return new _RepositoryFlutterTxtDirectory(this, entry); + return _RepositoryFlutterTxtDirectory(this, entry); return super.createSubdirectory(entry); } } @@ -2041,7 +2041,7 @@ class _RepositoryFlutterTxtDirectory extends _RepositoryDirectory { @override _RepositoryDirectory createSubdirectory(fs.Directory entry) { if (entry.name == 'third_party') - return new _RepositoryFlutterTxtThirdPartyDirectory(this, entry); + return _RepositoryFlutterTxtThirdPartyDirectory(this, entry); return super.createSubdirectory(entry); } } @@ -2103,9 +2103,9 @@ class _RepositoryRoot extends _RepositoryDirectory { if (entry.name == 'base') throw '//base is no longer part of this client: remove it'; if (entry.name == 'third_party') - return new _RepositoryRootThirdPartyDirectory(this, entry); + return _RepositoryRootThirdPartyDirectory(this, entry); if (entry.name == 'flutter') - return new _RepositoryFlutterDirectory(this, entry); + return _RepositoryFlutterDirectory(this, entry); return super.createSubdirectory(entry); } @@ -2115,7 +2115,7 @@ class _RepositoryRoot extends _RepositoryDirectory { // is therefore represented as a separate top-level component. fs.Directory thirdPartyNode = io.walk.firstWhere((fs.IoNode node) => node.name == 'third_party'); fs.IoNode skiaNode = thirdPartyNode.walk.firstWhere((fs.IoNode node) => node.name == 'skia'); - return <_RepositoryDirectory>[new _RepositorySkiaDirectory(this, skiaNode)]; + return <_RepositoryDirectory>[_RepositorySkiaDirectory(this, skiaNode)]; } } @@ -2125,7 +2125,7 @@ class _Progress { // This may happen when a git client contains left-over empty component // directories after DEPS file changes. if (max <= 0) - throw new ArgumentError('Progress.max must be > 0 but was: $max'); + throw ArgumentError('Progress.max must be > 0 but was: $max'); } final int max; @@ -2154,7 +2154,7 @@ class _Progress { Stopwatch _lastUpdate; void update({bool flush = false}) { if (_lastUpdate == null || _lastUpdate.elapsedMilliseconds > 90 || flush) { - _lastUpdate ??= new Stopwatch(); + _lastUpdate ??= Stopwatch(); final String line = toString(); system.stderr.write('\r$line'); if (_lastLength > line.length) @@ -2176,10 +2176,10 @@ class _Progress { /// Reads the signature from a golden file. Future _readSignature(String goldenPath) async { try { - system.File goldenFile = new system.File(goldenPath); + system.File goldenFile = system.File(goldenPath); String goldenSignature = await goldenFile.openRead() - .transform(utf8.decoder).transform(new LineSplitter()).first; - final RegExp signaturePattern = new RegExp(r'Signature: (\w+)'); + .transform(utf8.decoder).transform(LineSplitter()).first; + final RegExp signaturePattern = RegExp(r'Signature: (\w+)'); Match goldenMatch = signaturePattern.matchAsPrefix(goldenSignature); if (goldenMatch != null) return goldenMatch.group(1); @@ -2204,10 +2204,10 @@ Future _computeLicenseToolChanges(_RepositoryDirectory root, {String golde final fs.Directory flutterNode = root.io.walk.firstWhere((fs.IoNode node) => node.name == 'flutter'); final fs.Directory toolsNode = flutterNode.walk.firstWhere((fs.IoNode node) => node.name == 'tools'); final fs.Directory licenseNode = toolsNode.walk.firstWhere((fs.IoNode node) => node.name == 'licenses'); - final _RepositoryFlutterLicenseToolDirectory licenseToolDirectory = new _RepositoryFlutterLicenseToolDirectory(licenseNode); + final _RepositoryFlutterLicenseToolDirectory licenseToolDirectory = _RepositoryFlutterLicenseToolDirectory(licenseNode); final String toolSignature = await licenseToolDirectory.signature; - system.IOSink sink = new system.File(outputSignaturePath).openWrite(); + system.IOSink sink = system.File(outputSignaturePath).openWrite(); _writeSignature(toolSignature, sink); await sink.close(); @@ -2233,14 +2233,14 @@ Future _collectLicensesForComponent(_RepositoryDirectory componentRoot, { return; } - _Progress progress = new _Progress(componentRoot.fileCount); + _Progress progress = _Progress(componentRoot.fileCount); - system.File outFile = new system.File(outputGoldenPath); + system.File outFile = system.File(outputGoldenPath); system.IOSink sink = outFile.openWrite(); if (writeSignature) _writeSignature(signature, sink); - List licenses = new Set.from(componentRoot.getLicenses(progress).toList()).toList(); + List licenses = Set.from(componentRoot.getLicenses(progress).toList()).toList(); sink.writeln('UNUSED LICENSES:\n'); List unusedLicenses = licenses @@ -2268,7 +2268,7 @@ Future _collectLicensesForComponent(_RepositoryDirectory componentRoot, { // MAIN Future main(List arguments) async { - final ArgParser parser = new ArgParser() + final ArgParser parser = ArgParser() ..addOption('src', help: 'The root of the engine source') ..addOption('out', help: 'The directory where output is written') ..addOption('golden', help: 'The directory containing golden results') @@ -2292,20 +2292,20 @@ Future main(List arguments) async { print(parser.usage); system.exit(1); } - system.Directory out = new system.Directory(argResults['out']); + system.Directory out = system.Directory(argResults['out']); if (!out.existsSync()) out.createSync(recursive: true); } try { system.stderr.writeln('Finding files...'); - fs.FileSystemDirectory rootDirectory = new fs.FileSystemDirectory.fromPath(argResults['src']); - final _RepositoryDirectory root = new _RepositoryRoot(rootDirectory); + fs.FileSystemDirectory rootDirectory = fs.FileSystemDirectory.fromPath(argResults['src']); + final _RepositoryDirectory root = _RepositoryRoot(rootDirectory); if (releaseMode) { system.stderr.writeln('Collecting licenses...'); - _Progress progress = new _Progress(root.fileCount); - List licenses = new Set.from(root.getLicenses(progress).toList()).toList(); + _Progress progress = _Progress(root.fileCount); + List licenses = Set.from(root.getLicenses(progress).toList()).toList(); if (progress.hadErrors) throw 'Had failures while collecting licenses.'; progress.label = 'Dumping results...'; @@ -2347,7 +2347,7 @@ Future main(List arguments) async { // For other components, we need a clean repository that does not // contain any state left over from previous components. clearLicenseRegistry(); - componentRoot = new _RepositoryRoot(rootDirectory).subdirectories + componentRoot = _RepositoryRoot(rootDirectory).subdirectories .firstWhere((_RepositoryDirectory dir) => dir.name == component.name); } diff --git a/tools/licenses/lib/patterns.dart b/tools/licenses/lib/patterns.dart index dde04c5438e7f..68a0acc314729 100644 --- a/tools/licenses/lib/patterns.dart +++ b/tools/licenses/lib/patterns.dart @@ -6,30 +6,30 @@ const String kIndent = r'^((?:[-;@# copyrightStatementLeadingPatterns = [ - new RegExp(r'^ *(?:Portions(?: are)? )?Copyright .+$', caseSensitive: false), - new RegExp(r'^.*All rights? reserved\.$', caseSensitive: false), - new RegExp(r'^ *\(C\) .+$', caseSensitive: false), - new RegExp(r'^:copyright: .+$', caseSensitive: false), - new RegExp(r'[-_a-zA-Z0-9()]+ function provided freely by .+'), - new RegExp(r'^.+ optimized code \(C\) COPYRIGHT .+$', caseSensitive: false), - new RegExp(r'©'), + RegExp(r'^ *(?:Portions(?: are)? )?Copyright .+$', caseSensitive: false), + RegExp(r'^.*All rights? reserved\.$', caseSensitive: false), + RegExp(r'^ *\(C\) .+$', caseSensitive: false), + RegExp(r'^:copyright: .+$', caseSensitive: false), + RegExp(r'[-_a-zA-Z0-9()]+ function provided freely by .+'), + RegExp(r'^.+ optimized code \(C\) COPYRIGHT .+$', caseSensitive: false), + RegExp(r'©'), // TODO(ianh): I wish there was a way around including the next few lines so many times in the output: - new RegExp(r"^This file (?:is|was) part of the Independent JPEG Group's software[:.]$"), - new RegExp(r'^It was modified by The libjpeg-turbo Project to include only code$'), - new RegExp(r'^relevant to libjpeg-turbo\.$'), - new RegExp(r'^It was modified by The libjpeg-turbo Project to include only code relevant$'), - new RegExp(r'^to libjpeg-turbo\.$'), - new RegExp(r'^It was modified by The libjpeg-turbo Project to include only code and$'), - new RegExp(r'^information relevant to libjpeg-turbo\.$'), + RegExp(r"^This file (?:is|was) part of the Independent JPEG Group's software[:.]$"), + RegExp(r'^It was modified by The libjpeg-turbo Project to include only code$'), + RegExp(r'^relevant to libjpeg-turbo\.$'), + RegExp(r'^It was modified by The libjpeg-turbo Project to include only code relevant$'), + RegExp(r'^to libjpeg-turbo\.$'), + RegExp(r'^It was modified by The libjpeg-turbo Project to include only code and$'), + RegExp(r'^information relevant to libjpeg-turbo\.$'), ]; // copyright blocks end with the last line that matches this, rest is considered license final List copyrightStatementPatterns = [ - new RegExp(r'^ *(?:Portions(?: created by the Initial Developer)?(?: are)? )?Copyright .+$', caseSensitive: false), - new RegExp(r'^\(Version [-0-9.:, ]+ Copyright .+\)$', caseSensitive: false), - new RegExp(r'^.*(?:All )?rights? reserved\.$', caseSensitive: false), - new RegExp(r'^ *\(C\) .+$', caseSensitive: false), - new RegExp(r'^:copyright: .+$', caseSensitive: false), - new RegExp(r'^ *[0-9][0-9][0-9][0-9].+ [<(].+@.+[)>]$'), - new RegExp(r'^ [^ ].* [<(].+@.+[)>]$'), // that's exactly the number of spaces to line up with the X if "Copyright (c) 2011 X" is on the previous line - new RegExp(r'^ *and .+$', caseSensitive: false), - new RegExp(r'^ *others\.?$', caseSensitive: false), - new RegExp(r'^for more details\.$', caseSensitive: false), - new RegExp(r'^ *For more info read ([^ ]+)$', caseSensitive: false), - new RegExp(r'^(?:Google )?Author\(?s?\)?: .+', caseSensitive: false), - new RegExp(r'^Written by .+', caseSensitive: false), - new RegExp(r'^Based on$', caseSensitive: false), - new RegExp(r"^based on (?:code in )?['`][^'`]+['`]$", caseSensitive: false), - new RegExp(r"^Based on .+, written by .+, [0-9]+\.$", caseSensitive: false), - new RegExp(r'^(?:Based on the )?x86 SIMD extension for IJG JPEG library(?: - version [0-9.]+|,)?$'), - new RegExp(r'^This software originally derived from .+\.$'), - new RegExp(r'^Derived from .+, which was$'), - new RegExp(r'^ *This is part of .+, a .+ library\.$'), - new RegExp(r'^This file is part of [^ ]+\.$'), - new RegExp(r'^(?:Modification )?[Dd]eveloped [-0-9]+ by .+\.$', caseSensitive: false), - new RegExp(r'^Modified .+[:.]$', caseSensitive: false), - new RegExp(r'^(?:[^ ]+ )?Modifications:$', caseSensitive: false), - new RegExp(r'^ *Modifications for', caseSensitive: false), - new RegExp(r'^ *Modifications of', caseSensitive: false), - new RegExp(r'^Last changed in .+$', caseSensitive: false), - new RegExp(r'[-_a-zA-Z0-9()]+ function provided freely by .+'), // TODO(ianh): file a bug on analyzer about what happens if you omit this comma - new RegExp(r'^.+ optimized code \(C\) COPYRIGHT .+$', caseSensitive: false), - new RegExp(r'^\(Royal Institute of Technology, Stockholm, Sweden\)\.$'), - new RegExp(r'^\(?https?://[^ ]+$\)?'), - - new RegExp(r'^The Original Code is Mozilla Communicator client code, released$'), - new RegExp(r'^March 31, 1998.$'), // mozilla first release date - - new RegExp(r'^The Elliptic Curve Public-Key Crypto Library \(ECC Code\) included$'), - new RegExp(r'^herein is developed by SUN MICROSYSTEMS, INC\., and is contributed$'), - new RegExp(r'^to the OpenSSL project\.$'), - - new RegExp(r'^This code is derived from software contributed to The NetBSD Foundation$'), - new RegExp(r'^by (?:Atsushi Onoe|Dieter Baron|Klaus Klein|Luke Mewburn|Thomas Klausner|,| |and)*\.$'), - - new RegExp(r'^FT_Raccess_Get_HeaderInfo\(\) and raccess_guess_darwin_hfsplus\(\) are$'), - new RegExp(r'^derived from ftobjs\.c\.$'), + RegExp(r'^ *(?:Portions(?: created by the Initial Developer)?(?: are)? )?Copyright .+$', caseSensitive: false), + RegExp(r'^\(Version [-0-9.:, ]+ Copyright .+\)$', caseSensitive: false), + RegExp(r'^.*(?:All )?rights? reserved\.$', caseSensitive: false), + RegExp(r'^ *\(C\) .+$', caseSensitive: false), + RegExp(r'^:copyright: .+$', caseSensitive: false), + RegExp(r'^ *[0-9][0-9][0-9][0-9].+ [<(].+@.+[)>]$'), + RegExp(r'^ [^ ].* [<(].+@.+[)>]$'), // that's exactly the number of spaces to line up with the X if "Copyright (c) 2011 X" is on the previous line + RegExp(r'^ *and .+$', caseSensitive: false), + RegExp(r'^ *others\.?$', caseSensitive: false), + RegExp(r'^for more details\.$', caseSensitive: false), + RegExp(r'^ *For more info read ([^ ]+)$', caseSensitive: false), + RegExp(r'^(?:Google )?Author\(?s?\)?: .+', caseSensitive: false), + RegExp(r'^Written by .+', caseSensitive: false), + RegExp(r'^Based on$', caseSensitive: false), + RegExp(r"^based on (?:code in )?['`][^'`]+['`]$", caseSensitive: false), + RegExp(r"^Based on .+, written by .+, [0-9]+\.$", caseSensitive: false), + RegExp(r'^(?:Based on the )?x86 SIMD extension for IJG JPEG library(?: - version [0-9.]+|,)?$'), + RegExp(r'^This software originally derived from .+\.$'), + RegExp(r'^Derived from .+, which was$'), + RegExp(r'^ *This is part of .+, a .+ library\.$'), + RegExp(r'^This file is part of [^ ]+\.$'), + RegExp(r'^(?:Modification )?[Dd]eveloped [-0-9]+ by .+\.$', caseSensitive: false), + RegExp(r'^Modified .+[:.]$', caseSensitive: false), + RegExp(r'^(?:[^ ]+ )?Modifications:$', caseSensitive: false), + RegExp(r'^ *Modifications for', caseSensitive: false), + RegExp(r'^ *Modifications of', caseSensitive: false), + RegExp(r'^Last changed in .+$', caseSensitive: false), + RegExp(r'[-_a-zA-Z0-9()]+ function provided freely by .+'), // TODO(ianh): file a bug on analyzer about what happens if you omit this comma + RegExp(r'^.+ optimized code \(C\) COPYRIGHT .+$', caseSensitive: false), + RegExp(r'^\(Royal Institute of Technology, Stockholm, Sweden\)\.$'), + RegExp(r'^\(?https?://[^ ]+$\)?'), + + RegExp(r'^The Original Code is Mozilla Communicator client code, released$'), + RegExp(r'^March 31, 1998.$'), // mozilla first release date + + RegExp(r'^The Elliptic Curve Public-Key Crypto Library \(ECC Code\) included$'), + RegExp(r'^herein is developed by SUN MICROSYSTEMS, INC\., and is contributed$'), + RegExp(r'^to the OpenSSL project\.$'), + + RegExp(r'^This code is derived from software contributed to The NetBSD Foundation$'), + RegExp(r'^by (?:Atsushi Onoe|Dieter Baron|Klaus Klein|Luke Mewburn|Thomas Klausner|,| |and)*\.$'), + + RegExp(r'^FT_Raccess_Get_HeaderInfo\(\) and raccess_guess_darwin_hfsplus\(\) are$'), + RegExp(r'^derived from ftobjs\.c\.$'), // TODO(ianh): I wish there was a way around including the next few lines so many times in the output: - new RegExp(r"^This file (?:is|was) part of the Independent JPEG Group's software[:.]$"), - new RegExp(r'^It was modified by The libjpeg-turbo Project to include only code$'), - new RegExp(r'^relevant to libjpeg-turbo\.$'), - new RegExp(r'^It was modified by The libjpeg-turbo Project to include only code relevant$'), - new RegExp(r'^to libjpeg-turbo\.$'), - new RegExp(r'^It was modified by The libjpeg-turbo Project to include only code and$'), - new RegExp(r'^information relevant to libjpeg-turbo\.$'), + RegExp(r"^This file (?:is|was) part of the Independent JPEG Group's software[:.]$"), + RegExp(r'^It was modified by The libjpeg-turbo Project to include only code$'), + RegExp(r'^relevant to libjpeg-turbo\.$'), + RegExp(r'^It was modified by The libjpeg-turbo Project to include only code relevant$'), + RegExp(r'^to libjpeg-turbo\.$'), + RegExp(r'^It was modified by The libjpeg-turbo Project to include only code and$'), + RegExp(r'^information relevant to libjpeg-turbo\.$'), - new RegExp(r'^All or some portions of this file are derived from material licensed$'), - new RegExp(r'^to the University of California by American Telephone and Telegraph$'), - new RegExp(r'^Co\. or Unix System Laboratories, Inc\. and are reproduced herein with$'), - new RegExp(r'^the permission of UNIX System Laboratories, Inc.$'), + RegExp(r'^All or some portions of this file are derived from material licensed$'), + RegExp(r'^to the University of California by American Telephone and Telegraph$'), + RegExp(r'^Co\. or Unix System Laboratories, Inc\. and are reproduced herein with$'), + RegExp(r'^the permission of UNIX System Laboratories, Inc.$'), - new RegExp(r'^This software was developed by the Computer Systems Engineering group$'), - new RegExp(r'^at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and$'), - new RegExp(r'^contributed to Berkeley\.$'), + RegExp(r'^This software was developed by the Computer Systems Engineering group$'), + RegExp(r'^at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and$'), + RegExp(r'^contributed to Berkeley\.$'), - new RegExp(r'^This code is derived from software contributed to Berkeley by$'), - new RegExp(r'^Ralph Campbell\. +This file is derived from the MIPS RISC$'), - new RegExp(r'^Architecture book by Gerry Kane\.$'), + RegExp(r'^This code is derived from software contributed to Berkeley by$'), + RegExp(r'^Ralph Campbell\. +This file is derived from the MIPS RISC$'), + RegExp(r'^Architecture book by Gerry Kane\.$'), - new RegExp(r'^All advertising materials mentioning features or use of this software$'), - new RegExp(r'^must display the following acknowledgement:$'), - new RegExp(r'^This product includes software developed by the University of$'), - new RegExp(r'^California, Lawrence Berkeley Laboratory\.$'), + RegExp(r'^All advertising materials mentioning features or use of this software$'), + RegExp(r'^must display the following acknowledgement:$'), + RegExp(r'^This product includes software developed by the University of$'), + RegExp(r'^California, Lawrence Berkeley Laboratory\.$'), - new RegExp(r'^ *Condition of use and distribution are the same than zlib :$'), - new RegExp(r'^The MIT License:$'), + RegExp(r'^ *Condition of use and distribution are the same than zlib :$'), + RegExp(r'^The MIT License:$'), - new RegExp(r'^$'), // TODO(ianh): file an issue on what happens if you omit the close quote + RegExp(r'^$'), // TODO(ianh): file an issue on what happens if you omit the close quote ]; // patterns that indicate we're running into another license final List licenseFragments = [ - new RegExp(r'"as is" without express or implied warranty\.'), - new RegExp(r'version of this file under any of the LGPL, the MPL or the GPL\.'), - new RegExp(r'SUCH DAMAGE\.'), - new RegExp(r'found in the LICENSE file'), - new RegExp(r''), - new RegExp(r'License & terms of use'), + RegExp(r'"as is" without express or implied warranty\.'), + RegExp(r'version of this file under any of the LGPL, the MPL or the GPL\.'), + RegExp(r'SUCH DAMAGE\.'), + RegExp(r'found in the LICENSE file'), + RegExp(r''), + RegExp(r'License & terms of use'), ]; final String _linebreak = r' *(?:(?:\*/ *|[*#])?(?:\n\1 *(?:\*/ *)?)*\n\1\2 *)?'; @@ -166,15 +166,15 @@ final String _linebreakLoose = r' *(?:(?:\*/ *|[*#])?\n(?:-|;|#|<|!|/|\*| |REM)* // LICENSE RECOGNIZERS -final RegExp lrApache = new RegExp(r'^(?: |\r|\n)*Apache License\b'); -final RegExp lrMPL = new RegExp(r'^(?: |\r|\n)*Mozilla Public License Version 2\.0\n'); -final RegExp lrGPL = new RegExp(r'^(?: |\r|\n)*GNU GENERAL PUBLIC LICENSE\n'); -final RegExp lrAPSL = new RegExp(r'^APPLE PUBLIC SOURCE LICENSE Version 2\.0 +- +August 6, 2003'); -final RegExp lrMIT = new RegExp(r'Permission(?: |\n)+is(?: |\n)+hereby(?: |\n)+granted,(?: |\n)+free(?: |\n)+of(?: |\n)+charge,(?: |\n)+to(?: |\n)+any(?: |\n)+person(?: |\n)+obtaining(?: |\n)+a(?: |\n)+copy(?: |\n)+of(?: |\n)+this(?: |\n)+software(?: |\n)+and(?: |\n)+associated(?: |\n)+documentation(?: |\n)+files(?: |\n)+\(the(?: |\n)+"Software"\),(?: |\n)+to(?: |\n)+deal(?: |\n)+in(?: |\n)+the(?: |\n)+Software(?: |\n)+without(?: |\n)+restriction,(?: |\n)+including(?: |\n)+without(?: |\n)+limitation(?: |\n)+the(?: |\n)+rights(?: |\n)+to(?: |\n)+use,(?: |\n)+copy,(?: |\n)+modify,(?: |\n)+merge,(?: |\n)+publish,(?: |\n)+distribute,(?: |\n)+sublicense,(?: |\n)+and/or(?: |\n)+sell(?: |\n)+copies(?: |\n)+of(?: |\n)+the(?: |\n)+Software,(?: |\n)+and(?: |\n)+to(?: |\n)+permit(?: |\n)+persons(?: |\n)+to(?: |\n)+whom(?: |\n)+the(?: |\n)+Software(?: |\n)+is(?: |\n)+furnished(?: |\n)+to(?: |\n)+do(?: |\n)+so,(?: |\n)+subject(?: |\n)+to(?: |\n)+the(?: |\n)+following(?: |\n)+conditions:'); -final RegExp lrOpenSSL = new RegExp(r'Copyright \(c\) 1998-2011 The OpenSSL Project\. All rights reserved\.(.|\n)*Original SSLeay License'); -final RegExp lrBSD = new RegExp(r'Redistribution(?: |\n)+and(?: |\n)+use(?: |\n)+in(?: |\n)+source(?: |\n)+and(?: |\n)+binary(?: |\n)+forms(?:(?: |\n)+of(?: |\n)+the(?: |\n)+software(?: |\n)+as(?: |\n)+well(?: |\n)+as(?: |\n)+documentation)?,(?: |\n)+with(?: |\n)+or(?: |\n)+without(?: |\n)+modification,(?: |\n)+are(?: |\n)+permitted(?: |\n)+provided(?: |\n)+that(?: |\n)+the(?: |\n)+following(?: |\n)+conditions(?: |\n)+are(?: |\n)+met:'); -final RegExp lrZlib = new RegExp(r'Permission(?: |\n)+is(?: |\n)+granted(?: |\n)+to(?: |\n)+anyone(?: |\n)+to(?: |\n)+use(?: |\n)+this(?: |\n)+software(?: |\n)+for(?: |\n)+any(?: |\n)+purpose,(?: |\n)+including(?: |\n)+commercial(?: |\n)+applications,(?: |\n)+and(?: |\n)+to(?: |\n)+alter(?: |\n)+it(?: |\n)+and(?: |\n)+redistribute(?: |\n)+it(?: |\n)+freely,(?: |\n)+subject(?: |\n)+to(?: |\n)+the(?: |\n)+following(?: |\n)+restrictions:'); -final RegExp lrPNG = new RegExp(r'This code is released under the libpng license\.'); +final RegExp lrApache = RegExp(r'^(?: |\r|\n)*Apache License\b'); +final RegExp lrMPL = RegExp(r'^(?: |\r|\n)*Mozilla Public License Version 2\.0\n'); +final RegExp lrGPL = RegExp(r'^(?: |\r|\n)*GNU GENERAL PUBLIC LICENSE\n'); +final RegExp lrAPSL = RegExp(r'^APPLE PUBLIC SOURCE LICENSE Version 2\.0 +- +August 6, 2003'); +final RegExp lrMIT = RegExp(r'Permission(?: |\n)+is(?: |\n)+hereby(?: |\n)+granted,(?: |\n)+free(?: |\n)+of(?: |\n)+charge,(?: |\n)+to(?: |\n)+any(?: |\n)+person(?: |\n)+obtaining(?: |\n)+a(?: |\n)+copy(?: |\n)+of(?: |\n)+this(?: |\n)+software(?: |\n)+and(?: |\n)+associated(?: |\n)+documentation(?: |\n)+files(?: |\n)+\(the(?: |\n)+"Software"\),(?: |\n)+to(?: |\n)+deal(?: |\n)+in(?: |\n)+the(?: |\n)+Software(?: |\n)+without(?: |\n)+restriction,(?: |\n)+including(?: |\n)+without(?: |\n)+limitation(?: |\n)+the(?: |\n)+rights(?: |\n)+to(?: |\n)+use,(?: |\n)+copy,(?: |\n)+modify,(?: |\n)+merge,(?: |\n)+publish,(?: |\n)+distribute,(?: |\n)+sublicense,(?: |\n)+and/or(?: |\n)+sell(?: |\n)+copies(?: |\n)+of(?: |\n)+the(?: |\n)+Software,(?: |\n)+and(?: |\n)+to(?: |\n)+permit(?: |\n)+persons(?: |\n)+to(?: |\n)+whom(?: |\n)+the(?: |\n)+Software(?: |\n)+is(?: |\n)+furnished(?: |\n)+to(?: |\n)+do(?: |\n)+so,(?: |\n)+subject(?: |\n)+to(?: |\n)+the(?: |\n)+following(?: |\n)+conditions:'); +final RegExp lrOpenSSL = RegExp(r'Copyright \(c\) 1998-2011 The OpenSSL Project\. All rights reserved\.(.|\n)*Original SSLeay License'); +final RegExp lrBSD = RegExp(r'Redistribution(?: |\n)+and(?: |\n)+use(?: |\n)+in(?: |\n)+source(?: |\n)+and(?: |\n)+binary(?: |\n)+forms(?:(?: |\n)+of(?: |\n)+the(?: |\n)+software(?: |\n)+as(?: |\n)+well(?: |\n)+as(?: |\n)+documentation)?,(?: |\n)+with(?: |\n)+or(?: |\n)+without(?: |\n)+modification,(?: |\n)+are(?: |\n)+permitted(?: |\n)+provided(?: |\n)+that(?: |\n)+the(?: |\n)+following(?: |\n)+conditions(?: |\n)+are(?: |\n)+met:'); +final RegExp lrZlib = RegExp(r'Permission(?: |\n)+is(?: |\n)+granted(?: |\n)+to(?: |\n)+anyone(?: |\n)+to(?: |\n)+use(?: |\n)+this(?: |\n)+software(?: |\n)+for(?: |\n)+any(?: |\n)+purpose,(?: |\n)+including(?: |\n)+commercial(?: |\n)+applications,(?: |\n)+and(?: |\n)+to(?: |\n)+alter(?: |\n)+it(?: |\n)+and(?: |\n)+redistribute(?: |\n)+it(?: |\n)+freely,(?: |\n)+subject(?: |\n)+to(?: |\n)+the(?: |\n)+following(?: |\n)+restrictions:'); +final RegExp lrPNG = RegExp(r'This code is released under the libpng license\.'); // "NO COPYRIGHT" STATEMENTS @@ -185,14 +185,14 @@ final List csNoCopyrights = [ // groups are ignored // Seen in Expat files - new RegExp( + RegExp( r'^// No copyright notice; this file based on autogenerated header', multiLine: true, caseSensitive: false ), // Seen in Android NDK - new RegExp( + RegExp( r'^[/* ]*This header was automatically generated from a Linux kernel header\n' r'^[/* ]*of the same name, to make information necessary for userspace to\n' r'^[/* ]*call into the kernel available to libc. It contains only constants,\n' @@ -202,7 +202,7 @@ final List csNoCopyrights = [ caseSensitive: false ), - new RegExp( + RegExp( kIndent + r'These constants were taken from version 3 of the DWARF standard, *\n' r'^\1\2which is Copyright \(c\) 2005 Free Standards Group, and *\n' @@ -212,7 +212,7 @@ final List csNoCopyrights = [ ), // Freetype - new RegExp( + RegExp( kIndent + (r'This is a dummy file, used to please the build system\. It is never included by the auto-fitter sources\.'.replaceAll(' ', _linebreak)), multiLine: true, @@ -220,7 +220,7 @@ final List csNoCopyrights = [ ), // Freetype - new RegExp( + RegExp( kIndent + ( r'This software was written by Alexander Peslyak in 2001\. No copyright is ' @@ -248,7 +248,7 @@ final List csAttribution = [ // group 1 is the prefix, group 2 is the attribution // Seen in musl in Android SDK - new RegExp( + RegExp( r'^([/* ]*)This code was written by (.+) in [0-9]+; no copyright is claimed\.\n' r'^\1This code is in the public domain\. +Attribution is appreciated but\n' r'^\1unnecessary\.', @@ -277,12 +277,12 @@ final List csReferencesByFilename = csReferencesByFilename = csReferencesByFilename = csReferencesByFilename = csReferencesByFilename = csReferencesByFilename = csReferencesByFilename = csReferencesByFilename = csReferencesByFilename = csReferencesByFilename = csReferencesByFilename = csReferencesByFilename = csReferencesByFilename = csReferencesByFilename = csReferencesByType = [ // groups 1 and 2 are the prefix, group 3 is the license type // Seen in Jinja files, markupsafe files - new RegExp( + RegExp( kIndent + r':license: ([A-Z0-9]+)', multiLine: true, caseSensitive: false ), - new RegExp( + RegExp( kIndent + r'This software is made available under the terms of the (ICU) License -- ICU 1\.\8\.1 and later\.'.replaceAll(' ', _linebreak), multiLine: true, caseSensitive: false ), - new RegExp( + RegExp( kIndent + ( r'(?:@APPLE_LICENSE_HEADER_START@)? ' @@ -557,7 +557,7 @@ final List csReferencesByTypeNoCopyright = [ // used with _tryReferenceByType // groups 1 and 2 are the prefix, group 3 is the license type - new RegExp( + RegExp( kIndent + r'Written by Andy Polyakov for the OpenSSL ' r'project\. The module is, however, dual licensed under (OpenSSL) and ' @@ -585,13 +585,13 @@ final List csReferencesByUrl = [3], versionIndicies: const { 3:4 }, checkLocalFirst: false, - pattern: new RegExp( + pattern: RegExp( kIndent + r'Licensed under the (Academic Free License) version (3\.0)', multiLine: true, caseSensitive: false, @@ -600,12 +600,12 @@ final List csReferencesByUrl = [3], checkLocalFirst: false, - pattern: new RegExp( + pattern: RegExp( r'^(?:[-;# csReferencesByUrl = [3], checkLocalFirst: false, - pattern: new RegExp( + pattern: RegExp( kIndent + r'Licensed under the Apache License, Version 2\.0 \(the "License"\); *\n' r'^\1\2you may not use this file except in compliance with the License\. *\n' @@ -648,12 +648,12 @@ final List csReferencesByUrl = [3], checkLocalFirst: false, - pattern: new RegExp( + pattern: RegExp( kIndent + r'Use of this source code is governed by a BS?D-style *\n' r'^\1\2license that can be found in the LICENSE file or at *\n' @@ -665,12 +665,12 @@ final List csReferencesByUrl = / thing is someone being over-eager with search-and-replace in rapidjson - new MultipleVersionedLicenseReferencePattern( + MultipleVersionedLicenseReferencePattern( firstPrefixIndex: 1, indentPrefixIndex: 2, licenseIndices: const [3], checkLocalFirst: false, - pattern: new RegExp( + pattern: RegExp( kIndent + r'Licensed under the MIT License \(the "License"\); you may not use this file except *\n' r'^\1\2in compliance with the License(?:\.|->) You may obtain a copy of the License at *\n' @@ -687,12 +687,12 @@ final List csReferencesByUrl = [3], checkLocalFirst: false, - pattern: new RegExp( + pattern: RegExp( kIndent + r'This code may only be used under the BSD style license found at (http://polymer.github.io/LICENSE.txt)$', multiLine: true, @@ -701,13 +701,13 @@ final List csReferencesByUrl = [3], versionIndicies: const {3:4}, checkLocalFirst: false, - pattern: new RegExp( + pattern: RegExp( kIndent + r'This file is dual licensed. +It may be redistributed and/or modified *\n' r'^\1\2under the terms of the (Apache) (2\.0) License OR version 2 of the GNU *\n' @@ -719,12 +719,12 @@ final List csReferencesByUrl = [5, 6], versionIndicies: const {5:3, 6:4}, - pattern: new RegExp( + pattern: RegExp( kIndent + r'This file is part of the GNU ISO C\+\+ Library\. +This library is free *\n' r'^\1\2software; you can redistribute _?_?it and/or modify _?_?it under the terms *\n' @@ -752,12 +752,12 @@ final List csReferencesByUrl = [5, 6], versionIndicies: const {5:3, 6:4}, - pattern: new RegExp( + pattern: RegExp( kIndent + r'This file is part of the GNU ISO C\+\+ Library\. +This library is free *\n' r'^\1\2software; you can redistribute it and/or modify it under the *\n' @@ -785,12 +785,12 @@ final List csReferencesByUrl = [6, 4], versionIndicies: const {6:3, 4:5}, - pattern: new RegExp( + pattern: RegExp( kIndent + r'This file is part of the GNU ISO C\+\+ Library\. +This library is free *\n' r'^\1\2software; you can redistribute it and/or modify it under the *\n' @@ -817,12 +817,12 @@ final List csReferencesByUrl = [5, 6], versionIndicies: const {5:3, 6:4}, - pattern: new RegExp( + pattern: RegExp( kIndent + r'This file is part of GCC. *\n' r'^(?:(?:\1\2? *)? *\n)*' @@ -851,12 +851,12 @@ final List csReferencesByUrl = [5, 6], versionIndicies: const { 5:3, 6:4 }, - pattern: new RegExp( + pattern: RegExp( kIndent + r'This file is part of GCC. *\n' r'^(?:(?:\1\2? *)? *\n)*' @@ -885,12 +885,12 @@ final List csReferencesByUrl = [4], versionIndicies: const { 4:3 }, - pattern: new RegExp( + pattern: RegExp( kIndent + r'This library is free software; you can redistribute it and/or *\n' r'^\1\2modify it under the terms of the GNU Library General Public *\n' @@ -913,12 +913,12 @@ final List csReferencesByUrl = [4], versionIndicies: const { 4:3 }, - pattern: new RegExp( + pattern: RegExp( kIndent + r'Licensed under the Academic Free License version 2.0 *\n' r'^\1\2Or under the following terms: *\n' @@ -944,12 +944,12 @@ final List csReferencesByUrl = [4], versionIndicies: const { 4:3 }, - pattern: new RegExp( + pattern: RegExp( kIndent + r'This Source Code Form is subject to the terms of the Mozilla Public *\n' r'^\1\2License, v\. (2.0)\. +If a copy of the MPL was not distributed with this *\n' @@ -961,12 +961,12 @@ final List csReferencesByUrl = [3], versionIndicies: const { 3:4 }, - pattern: new RegExp( + pattern: RegExp( kIndent + r'(?:Version: [GMPL/012. ]+ *\n' r'^(?:(?:\1\2? *)? *\n)*' @@ -1015,12 +1015,12 @@ final List csReferencesByUrl = [4], versionIndicies: const { 4:3 }, - pattern: new RegExp( + pattern: RegExp( kIndent + r'This library is free software; you can redistribute it and/or *\n' r'^\1\2modify it under the terms of the GNU Lesser General Public *\n' @@ -1055,12 +1055,12 @@ final List csReferencesByUrl = [3], checkLocalFirst: false, - pattern: new RegExp( + pattern: RegExp( kIndent + r'(?:©|Copyright \(C\)) 20.. and later: Unicode, Inc. and others.[ *]*\n' r'^\1\2License & terms of use: (http://www.unicode.org/copyright.html)', @@ -1070,12 +1070,12 @@ final List csReferencesByUrl = [3], checkLocalFirst: false, - pattern: new RegExp( + pattern: RegExp( kIndent + r'Copyright \(C\) 2016 and later: Unicode, Inc. and others. License & terms of use: (http://www.unicode.org/copyright.html) *\n', multiLine: true, @@ -1084,12 +1084,12 @@ final List csReferencesByUrl = [3], checkLocalFirst: false, - pattern: new RegExp( + pattern: RegExp( kIndent + r'© 2016 and later: Unicode, Inc. and others. *\n' r'^ *License & terms of use: (http://www.unicode.org/copyright.html)#License *\n' @@ -1110,7 +1110,7 @@ final List csLicenses = [ // should have two groups, prefixes 1 and 2 // BoringSSL - new RegExp( + RegExp( kIndent + r'Redistribution and use in source and binary forms, with or without *\n' r'^\1\2modification, are permitted provided that the following conditions *\n' @@ -1159,7 +1159,7 @@ final List csLicenses = [ caseSensitive: false ), - new RegExp( + RegExp( kIndent + r'(?:This package is an SSL implementation written *\n' r'^\1\2by Eric Young \(eay@cryptsoft\.com\)\. *\n' @@ -1217,7 +1217,7 @@ final List csLicenses = [ caseSensitive: false ), - new RegExp( + RegExp( kIndent + ( r'License to copy and use this software is granted provided that it ' @@ -1242,7 +1242,7 @@ final List csLicenses = [ // BSD-DERIVED LICENSES - new RegExp( + RegExp( kIndent + ( 'Redistribution and use in source and binary forms, with or without ' @@ -1380,7 +1380,7 @@ final List csLicenses = [ // Seen in libjpeg-turbo // TODO(ianh): Mark License as not needing to be shown - new RegExp( + RegExp( kIndent + r"This software is provided 'as-is', without any express or implied *\n" r'^\1\2warranty\. +In no event will the authors be held liable for any damages *\n' @@ -1402,7 +1402,7 @@ final List csLicenses = [ ), // seen in GLFW - new RegExp( + RegExp( kIndent + r"This software is provided 'as-is', without any express or implied *\n" r'^\1\2warranty\. +In no event will the authors be held liable for any damages *\n' @@ -1430,7 +1430,7 @@ final List csLicenses = [ // MIT-DERIVED LICENSES // Seen in Mesa - new RegExp( + RegExp( kIndent + ( r'Permission is hereby granted, free of charge, to any person obtaining ' @@ -1503,7 +1503,7 @@ final List csLicenses = [ // OTHER BRIEF LICENSES - new RegExp( + RegExp( kIndent + r'Permission to use, copy, modify, and distribute this software for any *\n' r'^(?:\1\2)?purpose with or without fee is hereby granted, provided that the above *\n' @@ -1525,7 +1525,7 @@ final List csLicenses = [ ), // Seen in the NDK - new RegExp( + RegExp( kIndent + r'Permission to use, copy, modify, and/or distribute this software for any *\n' r'^\1\2purpose with or without fee is hereby granted, provided that the above *\n' @@ -1543,7 +1543,7 @@ final List csLicenses = [ ), // seen in GLFW - new RegExp( + RegExp( kIndent + r'Permission to use, copy, modify, and distribute this software for any *\n' r'^\1\2purpose with or without fee is hereby granted, provided that the above *\n' @@ -1558,7 +1558,7 @@ final List csLicenses = [ ), // seen in GLFW, base - new RegExp( + RegExp( kIndent + r'Permission to use, copy, modify, and distribute this software for any *\n' r'^\1\2purpose without fee is hereby granted, provided that this entire notice *\n' @@ -1575,7 +1575,7 @@ final List csLicenses = [ ), // harfbuzz - new RegExp( + RegExp( kIndent + r'Permission is hereby granted, without written agreement and without *\n' r'^\1\2license or royalty fees, to use, copy, modify, and distribute this *\n' @@ -1599,7 +1599,7 @@ final List csLicenses = [ ), // NDK - new RegExp( + RegExp( kIndent + r'Permission to use, copy, modify and distribute this software and *\n' r'^\1\2its documentation is hereby granted, provided that both the copyright *\n' @@ -1625,7 +1625,7 @@ final List csLicenses = [ ), // seen in Android NDK gnu-libstdc++ - new RegExp( + RegExp( kIndent + ( r'Permission to use, copy, modify, (?:distribute and sell|sell, and distribute) this software ' @@ -1647,7 +1647,7 @@ final List csLicenses = [ ), // Seen in Android NDK - new RegExp( + RegExp( kIndent + r'Developed at (?:SunPro|SunSoft), a Sun Microsystems, Inc. business. *\n' r'^\1\2Permission to use, copy, modify, and distribute this *\n' @@ -1658,7 +1658,7 @@ final List csLicenses = [ ), // Seen in Android NDK (stlport) - new RegExp( + RegExp( kIndent + r'This material is provided "as is", with absolutely no warranty expressed *\n' r'^\1\2or implied\. +Any use is at your own risk\. *\n' @@ -1673,7 +1673,7 @@ final List csLicenses = [ ), // freetype2. - new RegExp( + RegExp( kIndent + ( r'Permission to use, copy, modify, distribute, and sell this software and its ' @@ -1700,7 +1700,7 @@ final List csLicenses = [ // TODO(ianh): File a bug on what happens if you replace the // with a # // ICU - new RegExp( + RegExp( kIndent + r'This file is provided as-is by Unicode, Inc\. \(The Unicode Consortium\)\. ' r'No claims are made as to fitness for any particular purpose\. No ' @@ -1720,7 +1720,7 @@ final List csLicenses = [ ), // OpenSSL - new RegExp( + RegExp( kIndent + r'The portions of the attached software \("Contribution"\) is developed by *\n' r'^\1\2Nokia Corporation and is licensed pursuant to the OpenSSL open source *\n' @@ -1755,7 +1755,7 @@ final List csNotices = [ // used with _tryInline, with needsCopyright: false // should have two groups, prefixes 1 and 2 - new RegExp( + RegExp( kIndent + r'The Graphics Interchange Format\(c\) is the copyright property of CompuServe *\n' r'^\1\2Incorporated\. +Only CompuServe Incorporated is authorized to define, redefine, *\n' @@ -1783,7 +1783,7 @@ final List csNotices = [ // NSPR // (Showing the entire block instead of the LGPL for this file is based // on advice specifically regarding the prtime.cc file.) - new RegExp( + RegExp( r'()()/\* Portions are Copyright \(C\) 2011 Google Inc \*/\n' r'/\* \*\*\*\*\* BEGIN LICENSE BLOCK \*\*\*\*\*\n' r' \* Version: MPL 1\.1/GPL 2\.0/LGPL 2\.1\n' @@ -1823,7 +1823,7 @@ final List csNotices = [ ), // Advice for this was "text verbatim". - new RegExp( + RegExp( kIndent + r'Copyright \(c\) 2015-2016 Khronos Group\. This work is licensed under a\n' r'\1\2Creative Commons Attribution 4\.0 International License; see\n' @@ -1834,7 +1834,7 @@ final List csNotices = [ // by analogy to the above one // seen in jsr305 - new RegExp( + RegExp( kIndent + r'Copyright .+\n' r'\1\2Released under the Creative Commons Attribution License\n' @@ -1845,7 +1845,7 @@ final List csNotices = [ ), // Advice for this was "Just display its text as a politeness. Nothing else required". - new RegExp( + RegExp( r'()()/\* mdXhl\.c \* ----------------------------------------------------------------------------\n' r' \* "THE BEER-WARE LICENSE" \(Revision 42\):\n' r' \* wrote this file\. +As long as you retain this notice you\n' @@ -1885,10 +1885,10 @@ final List csForwardReferenceLicenses = csForwardReferenceLicenses = Date: Thu, 20 Dec 2018 11:48:59 -0800 Subject: [PATCH 0596/1537] Document native functions for compilation trace (#7256) --- lib/ui/natives.dart | 31 +++++++++++++++++++++---------- 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/lib/ui/natives.dart b/lib/ui/natives.dart index 4375c3eea3e44..7f349c6a8edd1 100644 --- a/lib/ui/natives.dart +++ b/lib/ui/natives.dart @@ -36,22 +36,33 @@ void _setupHooks() { }()); } -void saveCompilationTrace(String filePath) { - final dynamic result = _saveCompilationTrace(); - if (result is Error) - throw result; - - final File file = new File(filePath); - file.writeAsBytesSync(result); -} - -List dumpCompilationTrace() { +/// Returns runtime Dart compilation trace as a UTF-8 encoded memory buffer. +/// +/// The buffer contains a list of symbols compiled by the Dart JIT at runtime up to the point +/// when this function was called. This list can be saved to a text file and passed to tools +/// such as `flutter build` or Dart `gen_snapshot` in order to precompile this code offline. +/// +/// The list has one symbol per line of the following format: `,,\n`. +/// Here are some examples: +/// +/// ``` +/// dart:core,Duration,get:inMilliseconds +/// package:flutter/src/widgets/binding.dart,::,runApp +/// file:///.../my_app.dart,::,main +/// ``` +/// +/// This function is only effective in debug and dynamic modes, and will throw in AOT mode. +List saveCompilationTrace() { final dynamic result = _saveCompilationTrace(); if (result is Error) throw result; return result; } +// TODO(sbaranov): This function will go away in subsequent PR, once the framework has caught up. +@Deprecated('Use saveCompilationTrace() instead.') +List dumpCompilationTrace() => saveCompilationTrace(); + dynamic _saveCompilationTrace() native 'SaveCompilationTrace'; void _scheduleMicrotask(void callback()) native 'ScheduleMicrotask'; From 0310e910d64e6a022013c3696351d2d3233c8dec Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Thu, 20 Dec 2018 15:19:47 -0500 Subject: [PATCH 0597/1537] Roll src/third_party/skia 44539be30ef8..b03e024a4034 (7 commits) (#7268) https://skia.googlesource.com/skia.git/+log/44539be30ef8..b03e024a4034 Created with: gclient setdep -r src/third_party/skia@b03e024a4034 The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index ddd7e5fcfdabf..2f5a8532b16a1 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '44539be30ef89b60b12899022f1b25bedf4f5f04', + 'skia_revision': 'b03e024a40340208ac11cc18c27e444a046e3c5e', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 45d627ba7f3d2..bc593ed81914e 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 926438d6e841c7e0d3ef0d32bd248e85 +Signature: e76d9d08ef98b0680c6515e9f8e31445 UNUSED LICENSES: From 74af4429a53663b5f7b7a73c0ba8c900c35b6a1f Mon Sep 17 00:00:00 2001 From: Chris Bracken Date: Thu, 20 Dec 2018 12:27:50 -0800 Subject: [PATCH 0598/1537] Mark all unreassigned locals final in license tool (#7267) Marks locals final where possible, and enables the prefer_final_locals lint. --- ci/licenses_golden/tool_signature | 2 +- tools/licenses/analysis_options.yaml | 1 + tools/licenses/lib/filesystem.dart | 10 ++-- tools/licenses/lib/licenses.dart | 34 +++++------ tools/licenses/lib/main.dart | 90 ++++++++++++++-------------- 5 files changed, 69 insertions(+), 68 deletions(-) diff --git a/ci/licenses_golden/tool_signature b/ci/licenses_golden/tool_signature index 93778661b9a78..400a58ce37269 100644 --- a/ci/licenses_golden/tool_signature +++ b/ci/licenses_golden/tool_signature @@ -1,2 +1,2 @@ -Signature: 44f83506f783ec3ec678f053b2757fc7 +Signature: 589881cc85de13ab88e7d283493fe1be diff --git a/tools/licenses/analysis_options.yaml b/tools/licenses/analysis_options.yaml index e5cfbeb84be43..04467ed62ef8e 100644 --- a/tools/licenses/analysis_options.yaml +++ b/tools/licenses/analysis_options.yaml @@ -43,6 +43,7 @@ linter: - one_member_abstracts - overridden_fields - package_prefixed_library_names + - prefer_final_locals - prefer_is_not_empty - slash_for_doc_comments - sort_constructors_first diff --git a/tools/licenses/lib/filesystem.dart b/tools/licenses/lib/filesystem.dart index 396c8d68480de..33e28536483eb 100644 --- a/tools/licenses/lib/filesystem.dart +++ b/tools/licenses/lib/filesystem.dart @@ -58,7 +58,7 @@ bool hasSubsequence(List bytes, List signature, int limit) { const String kMultiLicenseFileHeader = 'Notices for files contained in'; bool isMultiLicenseNotice(Reader reader) { - List bytes = reader(); + final List bytes = reader(); return (ascii.decode(bytes.take(kMultiLicenseFileHeader.length).toList(), allowInvalid: true) == kMultiLicenseFileHeader); } @@ -385,7 +385,7 @@ mixin GZipFile on File implements Directory { @override Iterable get walk sync* { try { - String innerName = path.basenameWithoutExtension(fullName); + final String innerName = path.basenameWithoutExtension(fullName); _data ??= InMemoryFile.parse(fullName + '!' + innerName, a.GZipDecoder().decodeBytes(readBytes())); if (_data != null) yield _data; @@ -402,7 +402,7 @@ mixin BZip2File on File implements Directory { @override Iterable get walk sync* { try { - String innerName = path.basenameWithoutExtension(fullName); + final String innerName = path.basenameWithoutExtension(fullName); _data ??= InMemoryFile.parse(fullName + '!' + innerName, a.BZip2Decoder().decodeBytes(readBytes())); if (_data != null) yield _data; @@ -437,7 +437,7 @@ class FileSystemDirectory extends IoNode implements Directory { @override Iterable get walk sync* { - List list = _directory.listSync().toList(); + final List list = _directory.listSync().toList(); list.sort((io.FileSystemEntity a, io.FileSystemEntity b) => a.path.compareTo(b.path)); for (io.FileSystemEntity entity in list) { if (entity is io.Directory) { @@ -446,7 +446,7 @@ class FileSystemDirectory extends IoNode implements Directory { yield FileSystemLink(entity); } else { assert(entity is io.File); - io.File fileEntity = entity; + final io.File fileEntity = entity; if (fileEntity.lengthSync() > 0) { switch (identifyFile(fileEntity.path, () => _readBytes(fileEntity))) { case FileType.binary: yield FileSystemFile(fileEntity); break; diff --git a/tools/licenses/lib/licenses.dart b/tools/licenses/lib/licenses.dart index 0b82829993143..dbfd0a8629502 100644 --- a/tools/licenses/lib/licenses.dart +++ b/tools/licenses/lib/licenses.dart @@ -109,7 +109,7 @@ abstract class License implements Comparable { factory License.unique(String body, LicenseType type, { bool reformatted: false, String origin, bool yesWeKnowWhatItLooksLikeButItIsNot: false }) { if (!reformatted) body = _reformat(body); - License result = _registry.putIfAbsent(body, () => UniqueLicense._(body, type, origin: origin, yesWeKnowWhatItLooksLikeButItIsNot: yesWeKnowWhatItLooksLikeButItIsNot)); + final License result = _registry.putIfAbsent(body, () => UniqueLicense._(body, type, origin: origin, yesWeKnowWhatItLooksLikeButItIsNot: yesWeKnowWhatItLooksLikeButItIsNot)); assert(() { if (result is! UniqueLicense || result.type != type) throw 'tried to add a UniqueLicense $type, but it was a duplicate of a ${result.runtimeType} ${result.type}'; @@ -121,7 +121,7 @@ abstract class License implements Comparable { factory License.template(String body, LicenseType type, { bool reformatted: false, String origin }) { if (!reformatted) body = _reformat(body); - License result = _registry.putIfAbsent(body, () => TemplateLicense._(body, type, origin: origin)); + final License result = _registry.putIfAbsent(body, () => TemplateLicense._(body, type, origin: origin)); assert(() { if (result is! TemplateLicense || result.type != type) throw 'tried to add a TemplateLicense $type, but it was a duplicate of a ${result.runtimeType} ${result.type}'; @@ -133,7 +133,7 @@ abstract class License implements Comparable { factory License.message(String body, LicenseType type, { bool reformatted: false, String origin }) { if (!reformatted) body = _reformat(body); - License result = _registry.putIfAbsent(body, () => MessageLicense._(body, type, origin: origin)); + final License result = _registry.putIfAbsent(body, () => MessageLicense._(body, type, origin: origin)); assert(() { if (result is! MessageLicense || result.type != type) throw 'tried to add a MessageLicense $type, but it was a duplicate of a ${result.runtimeType} ${result.type}'; @@ -143,7 +143,7 @@ abstract class License implements Comparable { } factory License.blank(String body, LicenseType type, { String origin }) { - License result = _registry.putIfAbsent(body, () => BlankLicense._(_reformat(body), type, origin: origin)); + final License result = _registry.putIfAbsent(body, () => BlankLicense._(_reformat(body), type, origin: origin)); assert(() { if (result is! BlankLicense || result.type != type) throw 'tried to add a BlankLicense $type, but it was a duplicate of a ${result.runtimeType} ${result.type}'; @@ -160,7 +160,7 @@ abstract class License implements Comparable { factory License.fromBodyAndType(String body, LicenseType type, { bool reformatted: false, String origin }) { if (!reformatted) body = _reformat(body); - License result = _registry.putIfAbsent(body, () { + final License result = _registry.putIfAbsent(body, () { switch (type) { case LicenseType.bsd: case LicenseType.mit: @@ -200,12 +200,12 @@ abstract class License implements Comparable { factory License.fromBody(String body, { String origin }) { body = _reformat(body); - LicenseType type = convertBodyToType(body); + final LicenseType type = convertBodyToType(body); return License.fromBodyAndType(body, type, reformatted: true, origin: origin); } factory License.fromCopyrightAndLicense(String copyright, String template, LicenseType type, { String origin }) { - String body = '$copyright\n\n$template'; + final String body = '$copyright\n\n$template'; return _registry.putIfAbsent(body, () => TemplateLicense._(body, type, origin: origin)); } @@ -526,7 +526,7 @@ class _SplitLicense { } _SplitLicense _splitLicense(String body, { bool verifyResults: true }) { - Iterator<_LineRange> lines = _walkLinesForwards(body).iterator; + final Iterator<_LineRange> lines = _walkLinesForwards(body).iterator; if (!lines.moveNext()) throw 'tried to split empty license'; int end = 0; @@ -718,7 +718,7 @@ class _LicenseMatch { } Iterable<_LicenseMatch> _expand(License template, String copyright, String body, int start, int end, { String debug: '', String origin }) sync* { - List results = template.expandTemplate(_reformat(copyright), body, origin: origin).toList(); + final List results = template.expandTemplate(_reformat(copyright), body, origin: origin).toList(); if (results.isEmpty) throw 'license could not be expanded'; yield _LicenseMatch(results.first, start, end, debug: 'expanding template for $debug'); @@ -755,7 +755,7 @@ Iterable<_LicenseMatch> _tryReferenceByFilename(String body, LicenseFileReferenc if (template == null) throw 'failed to find template $filename in $parentDirectory (authors=$authors)'; assert(_reformat(copyright) != ''); - String entireLicense = body.substring(match.start, match.end); + final String entireLicense = body.substring(match.start, match.end); yield* _expand(template, copyright, entireLicense, match.start, match.end, debug: '_tryReferenceByFilename (with explicit copyright) looking for $filename', origin: origin); } } else { @@ -786,7 +786,7 @@ Iterable<_LicenseMatch> _tryReferenceByType(String body, RegExp pattern, License if (template == null) throw 'failed to find accompanying $type license in $parentDirectory'; assert(() { - String copyrights = _reformat(match.getCopyrights()); + final String copyrights = _reformat(match.getCopyrights()); assert(needsCopyright && copyrights.isNotEmpty || !needsCopyright && copyrights.isEmpty); return true; }()); @@ -844,7 +844,7 @@ Iterable<_LicenseMatch> _tryForwardReferencePattern(String fileContents, Forward List determineLicensesFor(String fileContents, String filename, LicenseSource parentDirectory, { String origin }) { if (fileContents.length > kMaxSize) fileContents = fileContents.substring(0, kMaxSize); - List<_LicenseMatch> results = <_LicenseMatch>[]; + final List<_LicenseMatch> results = <_LicenseMatch>[]; fileContents = fileContents.replaceAll('\t', ' '); fileContents = fileContents.replaceAll(newlinePattern, '\n'); results.addAll(csNoCopyrights.expand((RegExp pattern) => _tryNone(fileContents, filename, pattern, parentDirectory))); @@ -876,11 +876,11 @@ List determineLicensesFor(String fileContents, String filename, License throw 'unmatched potential copyright and license statements; first twenty lines:\n----8<----\n${fileContents.split("\n").take(20).join("\n")}\n----8<----'; } } - List<_LicenseMatch> verificationList = results.toList(); + final List<_LicenseMatch> verificationList = results.toList(); if (usedTemplate != null && !verificationList.contains(usedTemplate)) verificationList.add(usedTemplate); verificationList.sort((_LicenseMatch a, _LicenseMatch b) { - int result = a.start - b.start; + final int result = a.start - b.start; if (result != 0) return result; return a.end - b.end; @@ -911,13 +911,13 @@ License interpretAsRedirectLicense(String fileContents, LicenseSource parentDire } on String { return null; } - String body = split.getConditions().trim(); + final String body = split.getConditions().trim(); License result; for (MultipleVersionedLicenseReferencePattern pattern in csReferencesByUrl) { - Match match = pattern.pattern.matchAsPrefix(body); + final Match match = pattern.pattern.matchAsPrefix(body); if (match != null && match.start == 0 && match.end == body.length) { for (int index in pattern.licenseIndices) { - License candidate = _dereferenceLicense(index, match.group, pattern, parentDirectory, origin: origin); + final License candidate = _dereferenceLicense(index, match.group, pattern, parentDirectory, origin: origin); if (result != null && candidate != null) throw 'Multiple potential matches in interpretAsRedirectLicense in $parentDirectory; body was:\n------8<------\n$fileContents\n------8<------'; result = candidate; diff --git a/tools/licenses/lib/main.dart b/tools/licenses/lib/main.dart index 182ca676ef8da..f8786c7184cb8 100644 --- a/tools/licenses/lib/main.dart +++ b/tools/licenses/lib/main.dart @@ -223,8 +223,8 @@ class _RepositoryLicenseRedirectFile extends _RepositorySingleLicenseFile { } static _RepositoryLicenseRedirectFile maybeCreateFrom(_RepositoryDirectory parent, fs.TextFile io) { - String contents = io.readString(); - License license = interpretAsRedirectLicense(contents, parent, origin: io.fullName); + final String contents = io.readString(); + final License license = interpretAsRedirectLicense(contents, parent, origin: io.fullName); if (license != null) return _RepositoryLicenseRedirectFile(parent, io, license); return null; @@ -269,7 +269,7 @@ class _RepositoryReadmeIjgFile extends _RepositorySingleLicenseFile { ); static License _parseLicense(fs.TextFile io) { - String body = io.readString(); + final String body = io.readString(); if (!body.contains(_pattern)) throw 'unexpected contents in IJG README'; return License.message(body, LicenseType.ijg, origin: io.fullName); @@ -450,7 +450,7 @@ class _RepositoryLibJpegTurboLicense extends _RepositoryLicenseFile { ); static void _parseLicense(fs.TextFile io) { - String body = io.readString(); + final String body = io.readString(); if (!body.contains(_pattern)) throw 'unexpected contents in libjpeg-turbo LICENSE'; } @@ -715,7 +715,7 @@ class _RepositoryIcuLicenseFile extends _RepositoryLicenseFile { Iterable> splitIntList(List data, int boundary) sync* { int index = 0; List getOne() { - int start = index; + final int start = index; int end = index; while ((end < data.length) && (data[end] != boundary)) end += 1; @@ -771,7 +771,7 @@ class _RepositoryMultiLicenseNoticesForFilesFile extends _RepositoryLicenseFile } on FormatException { bodyText = latin1.decode(bodyBytes); } - License license = License.unique(bodyText, LicenseType.unknown, origin: io.fullName); + final License license = License.unique(bodyText, LicenseType.unknown, origin: io.fullName); for (String name in names) { if (result[name] != null) throw 'conflicting license information for $name in ${io.fullName}'; @@ -783,7 +783,7 @@ class _RepositoryMultiLicenseNoticesForFilesFile extends _RepositoryLicenseFile @override List licensesFor(String name) { - License license = _licenses[name]; + final License license = _licenses[name]; if (license != null) return [license]; return null; @@ -894,12 +894,12 @@ class _RepositoryDirectory extends _RepositoryEntry implements LicenseSource { if (shouldRecurse(entry)) { assert(!_childrenByName.containsKey(entry.name)); if (entry is fs.Directory) { - _RepositoryDirectory child = createSubdirectory(entry); + final _RepositoryDirectory child = createSubdirectory(entry); _subdirectories.add(child); _childrenByName[child.name] = child; } else if (entry is fs.File) { try { - _RepositoryFile child = createFile(entry); + final _RepositoryFile child = createFile(entry); assert(child != null); if (child is _RepositoryLicensedFile) { _files.add(child); @@ -983,8 +983,8 @@ class _RepositoryDirectory extends _RepositoryEntry implements LicenseSource { } if (_licenses.length == 1) return _licenses.single.licensesFor(name); - List licenses = _licenses.expand/*License*/((_RepositoryLicenseFile license) sync* { - List licenses = license.licensesFor(name); + final List licenses = _licenses.expand((_RepositoryLicenseFile license) sync* { + final List licenses = license.licensesFor(name); if (licenses != null) yield* licenses; }).toList(); @@ -1014,7 +1014,7 @@ class _RepositoryDirectory extends _RepositoryEntry implements LicenseSource { /// Searches the current and all parent directories (up to the license root) /// for a license of the specified type. License _nearestAncestorLicenseWithType(LicenseType type) { - License result = _localLicenseWithType(type); + final License result = _localLicenseWithType(type); if (result != null) return result; if (_canGoUp(null)) @@ -1046,8 +1046,8 @@ class _RepositoryDirectory extends _RepositoryEntry implements LicenseSource { /// Searches the current directory for licenses of the specified type. License _localLicenseWithType(LicenseType type) { - List licenses = _licenses.expand/*License*/((_RepositoryLicenseFile license) sync* { - License result = license.licenseOfType(type); + final List licenses = _licenses.expand((_RepositoryLicenseFile license) sync* { + final License result = license.licenseOfType(type); if (result != null) yield result; }).toList(); @@ -1089,7 +1089,7 @@ class _RepositoryDirectory extends _RepositoryEntry implements LicenseSource { } License _nearestAncestorLicenseWithName(String name, { String authors }) { - License result = _localLicenseWithName(name, authors: authors); + final License result = _localLicenseWithName(name, authors: authors); if (result != null) return result; if (_canGoUp(authors)) @@ -1175,14 +1175,14 @@ class _RepositoryDirectory extends _RepositoryEntry implements LicenseSource { } Set getLicenses(_Progress progress) { - Set result = Set(); + final Set result = Set(); for (_RepositoryDirectory directory in _subdirectories) result.addAll(directory.getLicenses(progress)); for (_RepositoryLicensedFile file in _files) { if (file.isIncludedInBuildProducts) { try { progress.label = '$file'; - List licenses = file.licenses; + final List licenses = file.licenses; assert(licenses != null && licenses.isNotEmpty); result.addAll(licenses); progress.advance(true); @@ -1232,10 +1232,10 @@ class _RepositoryDirectory extends _RepositoryEntry implements LicenseSource { /// Compute a signature representing a hash of all the licensed files within /// this directory tree. Future get signature async { - List<_RepositoryLicensedFile> allFiles = _signatureFiles.toList(); + final List<_RepositoryLicensedFile> allFiles = _signatureFiles.toList(); allFiles.sort((_RepositoryLicensedFile a, _RepositoryLicensedFile b) => a.io.fullName.compareTo(b.io.fullName)); - crypto.Digest digest = await crypto.md5.bind(_signatureStream(allFiles)).single; + final crypto.Digest digest = await crypto.md5.bind(_signatureStream(allFiles)).single; return digest.bytes.map((int e) => e.toRadixString(16).padLeft(2, '0')).join(); } @@ -1362,7 +1362,7 @@ class _RepositoryFreetypeSrcGZipDirectory extends _RepositoryDirectory { @override List nearestLicensesFor(String name) { - License zlib = nearestLicenseWithName('zlib.h'); + final License zlib = nearestLicenseWithName('zlib.h'); assert(zlib != null); if (zlib != null) return [zlib]; @@ -1372,7 +1372,7 @@ class _RepositoryFreetypeSrcGZipDirectory extends _RepositoryDirectory { @override License nearestLicenseOfType(LicenseType type) { if (type == LicenseType.zlib) { - License result = nearestLicenseWithName('zlib.h'); + final License result = nearestLicenseWithName('zlib.h'); assert(result != null); return result; } @@ -1402,9 +1402,9 @@ class _RepositoryFreetypeDirectory extends _RepositoryDirectory { @override List nearestLicensesFor(String name) { - List result = super.nearestLicensesFor(name); + final List result = super.nearestLicensesFor(name); if (result == null) { - License license = nearestLicenseWithName('LICENSE.TXT'); + final License license = nearestLicenseWithName('LICENSE.TXT'); assert(license != null); if (license != null) return [license]; @@ -1415,7 +1415,7 @@ class _RepositoryFreetypeDirectory extends _RepositoryDirectory { @override License nearestLicenseOfType(LicenseType type) { if (type == LicenseType.freetype) { - License result = nearestLicenseWithName('FTL.TXT'); + final License result = nearestLicenseWithName('FTL.TXT'); assert(result != null); return result; } @@ -2113,8 +2113,8 @@ class _RepositoryRoot extends _RepositoryDirectory { List<_RepositoryDirectory> get virtualSubdirectories { // Skia is updated more frequently than other third party libraries and // is therefore represented as a separate top-level component. - fs.Directory thirdPartyNode = io.walk.firstWhere((fs.IoNode node) => node.name == 'third_party'); - fs.IoNode skiaNode = thirdPartyNode.walk.firstWhere((fs.IoNode node) => node.name == 'skia'); + final fs.Directory thirdPartyNode = io.walk.firstWhere((fs.IoNode node) => node.name == 'third_party'); + final fs.IoNode skiaNode = thirdPartyNode.walk.firstWhere((fs.IoNode node) => node.name == 'skia'); return <_RepositoryDirectory>[_RepositorySkiaDirectory(this, skiaNode)]; } } @@ -2168,7 +2168,7 @@ class _Progress { bool get hadErrors => _withoutLicense > 0; @override String toString() { - int percent = (100.0 * (_withLicense + _withoutLicense) / max).round(); + final int percent = (100.0 * (_withLicense + _withoutLicense) / max).round(); return '${(_withLicense + _withoutLicense).toString().padLeft(10)} of $max ${'█' * (percent ~/ 10)}${'░' * (10 - (percent ~/ 10))} $percent% ($_withoutLicense missing licenses) $label'; } } @@ -2176,11 +2176,11 @@ class _Progress { /// Reads the signature from a golden file. Future _readSignature(String goldenPath) async { try { - system.File goldenFile = system.File(goldenPath); - String goldenSignature = await goldenFile.openRead() + final system.File goldenFile = system.File(goldenPath); + final String goldenSignature = await goldenFile.openRead() .transform(utf8.decoder).transform(LineSplitter()).first; final RegExp signaturePattern = RegExp(r'Signature: (\w+)'); - Match goldenMatch = signaturePattern.matchAsPrefix(goldenSignature); + final Match goldenMatch = signaturePattern.matchAsPrefix(goldenSignature); if (goldenMatch != null) return goldenMatch.group(1); } on system.FileSystemException { @@ -2207,7 +2207,7 @@ Future _computeLicenseToolChanges(_RepositoryDirectory root, {String golde final _RepositoryFlutterLicenseToolDirectory licenseToolDirectory = _RepositoryFlutterLicenseToolDirectory(licenseNode); final String toolSignature = await licenseToolDirectory.signature; - system.IOSink sink = system.File(outputSignaturePath).openWrite(); + final system.IOSink sink = system.File(outputSignaturePath).openWrite(); _writeSignature(toolSignature, sink); await sink.close(); @@ -2233,17 +2233,17 @@ Future _collectLicensesForComponent(_RepositoryDirectory componentRoot, { return; } - _Progress progress = _Progress(componentRoot.fileCount); + final _Progress progress = _Progress(componentRoot.fileCount); - system.File outFile = system.File(outputGoldenPath); - system.IOSink sink = outFile.openWrite(); + final system.File outFile = system.File(outputGoldenPath); + final system.IOSink sink = outFile.openWrite(); if (writeSignature) _writeSignature(signature, sink); - List licenses = Set.from(componentRoot.getLicenses(progress).toList()).toList(); + final List licenses = Set.from(componentRoot.getLicenses(progress).toList()).toList(); sink.writeln('UNUSED LICENSES:\n'); - List unusedLicenses = licenses + final List unusedLicenses = licenses .where((License license) => !license.isUsed) .map((License license) => license.toString()) .toList(); @@ -2252,8 +2252,8 @@ Future _collectLicensesForComponent(_RepositoryDirectory componentRoot, { sink.writeln('~' * 80); sink.writeln('USED LICENSES:\n'); - List usedLicenses = licenses.where((License license) => license.isUsed).toList(); - List output = usedLicenses.map((License license) => license.toString()).toList(); + final List usedLicenses = licenses.where((License license) => license.isUsed).toList(); + final List output = usedLicenses.map((License license) => license.toString()).toList(); output.sort(); sink.writeln(output.join('\n\n')); sink.writeln('Total license count: ${licenses.length}'); @@ -2274,8 +2274,8 @@ Future main(List arguments) async { ..addOption('golden', help: 'The directory containing golden results') ..addFlag('release', help: 'Print output in the format used for product releases'); - ArgResults argResults = parser.parse(arguments); - bool releaseMode = argResults['release']; + final ArgResults argResults = parser.parse(arguments); + final bool releaseMode = argResults['release']; if (argResults['src'] == null) { print('Flutter license script: Must provide --src directory'); print(parser.usage); @@ -2292,25 +2292,25 @@ Future main(List arguments) async { print(parser.usage); system.exit(1); } - system.Directory out = system.Directory(argResults['out']); + final system.Directory out = system.Directory(argResults['out']); if (!out.existsSync()) out.createSync(recursive: true); } try { system.stderr.writeln('Finding files...'); - fs.FileSystemDirectory rootDirectory = fs.FileSystemDirectory.fromPath(argResults['src']); + final fs.FileSystemDirectory rootDirectory = fs.FileSystemDirectory.fromPath(argResults['src']); final _RepositoryDirectory root = _RepositoryRoot(rootDirectory); if (releaseMode) { system.stderr.writeln('Collecting licenses...'); - _Progress progress = _Progress(root.fileCount); - List licenses = Set.from(root.getLicenses(progress).toList()).toList(); + final _Progress progress = _Progress(root.fileCount); + final List licenses = Set.from(root.getLicenses(progress).toList()).toList(); if (progress.hadErrors) throw 'Had failures while collecting licenses.'; progress.label = 'Dumping results...'; progress.flush(); - List output = licenses + final List output = licenses .where((License license) => license.isUsed) .map((License license) => license.toStringFormal()) .where((String text) => text != null) From 72aa378428325ee5d44ef812ddee034dd6704daa Mon Sep 17 00:00:00 2001 From: Chris Bracken Date: Thu, 20 Dec 2018 13:22:30 -0800 Subject: [PATCH 0599/1537] [License] Eliminate duplicate case in switch (#7269) This changes behaviour, but we should treat diffs as binary for the reasons outlined in the comment on the remaining diff case. --- ci/licenses_golden/tool_signature | 2 +- tools/licenses/analysis_options.yaml | 1 + tools/licenses/lib/filesystem.dart | 1 - 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ci/licenses_golden/tool_signature b/ci/licenses_golden/tool_signature index 400a58ce37269..3b246461400f5 100644 --- a/ci/licenses_golden/tool_signature +++ b/ci/licenses_golden/tool_signature @@ -1,2 +1,2 @@ -Signature: 589881cc85de13ab88e7d283493fe1be +Signature: a55f4ce9207b1a1dff62891b1c203f5e diff --git a/tools/licenses/analysis_options.yaml b/tools/licenses/analysis_options.yaml index 04467ed62ef8e..390b7a15bbbc7 100644 --- a/tools/licenses/analysis_options.yaml +++ b/tools/licenses/analysis_options.yaml @@ -39,6 +39,7 @@ linter: - implementation_imports - library_names - library_prefixes + - no_duplicate_case_values - non_constant_identifier_names - one_member_abstracts - overridden_fields diff --git a/tools/licenses/lib/filesystem.dart b/tools/licenses/lib/filesystem.dart index 33e28536483eb..60f9d5df60295 100644 --- a/tools/licenses/lib/filesystem.dart +++ b/tools/licenses/lib/filesystem.dart @@ -180,7 +180,6 @@ FileType identifyFile(String name, Reader reader) { // Documentation case '.md': return FileType.text; case '.txt': return FileType.text; - case '.diff': return FileType.text; case '.html': return FileType.text; // Fonts case '.ttf': return FileType.binary; // TrueType Font From 6a9041853c4bb9a878f4962ad3f4bda93c06ed68 Mon Sep 17 00:00:00 2001 From: Chris Bracken Date: Thu, 20 Dec 2018 13:50:21 -0800 Subject: [PATCH 0600/1537] [License] Assert license filename is non-null, non-empty (#7270) --- ci/licenses_golden/tool_signature | 2 +- tools/licenses/analysis_options.yaml | 1 + tools/licenses/lib/licenses.dart | 3 ++- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/ci/licenses_golden/tool_signature b/ci/licenses_golden/tool_signature index 3b246461400f5..399e9f9fba730 100644 --- a/ci/licenses_golden/tool_signature +++ b/ci/licenses_golden/tool_signature @@ -1,2 +1,2 @@ -Signature: a55f4ce9207b1a1dff62891b1c203f5e +Signature: 0461a8d6fe3503cd19d8e0d3becfee87 diff --git a/tools/licenses/analysis_options.yaml b/tools/licenses/analysis_options.yaml index 390b7a15bbbc7..cb0a09da642ef 100644 --- a/tools/licenses/analysis_options.yaml +++ b/tools/licenses/analysis_options.yaml @@ -56,4 +56,5 @@ linter: - unnecessary_brace_in_string_interps - unnecessary_getters_setters - unnecessary_new + - unnecessary_statements - package_names diff --git a/tools/licenses/lib/licenses.dart b/tools/licenses/lib/licenses.dart index dbfd0a8629502..7e7585db8f965 100644 --- a/tools/licenses/lib/licenses.dart +++ b/tools/licenses/lib/licenses.dart @@ -357,9 +357,10 @@ abstract class License implements Comparable { bool get isUsed => _licensees.isNotEmpty; void markUsed(String filename, String libraryName) { + assert(filename != null); + assert(filename != ''); assert(libraryName != null); assert(libraryName != ''); - filename != null; _licensees.add(filename); _libraries.add(libraryName); } From cc51731d824adbc27b1e266172c66a0441c25023 Mon Sep 17 00:00:00 2001 From: Justin McCandless Date: Thu, 20 Dec 2018 14:14:04 -0800 Subject: [PATCH 0601/1537] Clarify TextAffinity docs (#7238) * Clarify TextAffinity docs * Clarify TextPosition and the definition of upstream/downstream * Docs fixes from code review, less redundant with 'string in code' --- lib/ui/text.dart | 80 +++++++++++++++++++++++++++++++++++------------- 1 file changed, 59 insertions(+), 21 deletions(-) diff --git a/lib/ui/text.dart b/lib/ui/text.dart index 9655585061974..abd227d116057 100644 --- a/lib/ui/text.dart +++ b/lib/ui/text.dart @@ -833,28 +833,66 @@ class TextBox { String toString() => 'TextBox.fromLTRBD(${left.toStringAsFixed(1)}, ${top.toStringAsFixed(1)}, ${right.toStringAsFixed(1)}, ${bottom.toStringAsFixed(1)}, $direction)'; } -/// Whether a [TextPosition] is visually upstream or downstream of its offset. +/// Disambiguates cases where a string offset could match two locations in the +/// rendered string. /// -/// For example, when a text position exists at a line break, a single offset has -/// two visual positions, one prior to the line break (at the end of the first -/// line) and one after the line break (at the start of the second line). A text -/// affinity disambiguates between those cases. (Something similar happens with -/// between runs of bidirectional text.) +/// For example, at an offset where the rendered text wraps, there are two +/// visual positions that the offset could represent: one prior to the line +/// break (at the end of the first line) and one after the line break (at the +/// start of the second line). A text affinity disambiguates between these two +/// cases. +/// +/// This affects only line breaks caused by wrapping, not explicit newline +/// characters. For newline characters, the position is fully specified by the +/// offset alone, and there is no ambiguity. +/// +/// TextAffinity also affects bidirectional text at the interface between LTR +/// and RTL text. Consider the following string, where the lowercase letters +/// will be displayed as LTR and the uppercase letters RTL: "helloHELLO". When +/// rendered, the string would appear visually as "helloOLLEH". An offset of 5 +/// would be ambiguous without a corresponding TextAffinity. Looking at the +/// string in code, the offset represents the position just after the "o" and +/// just before the "H". When rendered, this offset could be either in the +/// middle of the string to the right of the "o" or at the end of the string to +/// the right of the "H". enum TextAffinity { - /// The position has affinity for the upstream side of the text position. + /// The position has affinity for the upstream side of the text position, or + /// in the direction of the beginning of the string. + /// + /// In the example of an offset at the place where text is wrapping, upstream + /// indicates the end of the first line. /// - /// For example, if the offset of the text position is a line break, the - /// position represents the end of the first line. + /// In the bidirectional text example above, an offset of 5 with TextAffinity + /// upstream would appear in the middle of the rendered text, just to the + /// right of the "o". upstream, - /// The position has affinity for the downstream side of the text position. + /// The position has affinity for the downstream side of the text position, or + /// in the direction of the end of the string. /// - /// For example, if the offset of the text position is a line break, the - /// position represents the start of the second line. + /// In the example of an offset at the place where text is wrapping, + /// downstream indicates the beginning of the second line. + /// + /// In the bidirectional text example above, an offset of 5 with TextAffinity + /// downstream would appear at the end of the rendered text, just to the right + /// of the "H". downstream, } -/// A visual position in a string of text. +/// A position in a string of text. A TextPosition can be used to locate a +/// position in a string in code (using the [offset] property), and it can also +/// be used to locate the same position visually in a rendered string of text +/// (using [offset] and, when needed to resolve ambiguity, [affinity]). +/// +/// The location of an offset in a rendered string is ambiguous in two cases. +/// One happens when rendered text is forced to wrap. In this case, the offset +/// where the wrap occurs could visually appear either at the end of the first +/// line or the beginning of the second line. The second way is with +/// bidirectional text. An offset at the interface between two different text +/// directions could have one of two locations in the rendered text. +/// +/// See the documentation for [TextAffinity] for more information on how +/// TextAffinity disambiguates situations like these. class TextPosition { /// Creates an object representing a particular position in a string. /// @@ -865,21 +903,21 @@ class TextPosition { }) : assert(offset != null), assert(affinity != null); - /// The index of the character that immediately follows the position. + /// The index of the character that immediately follows the position in the + /// string representation of the text. /// /// For example, given the string `'Hello'`, offset 0 represents the cursor /// being before the `H`, while offset 5 represents the cursor being just /// after the `o`. final int offset; - /// If the offset has more than one visual location (e.g., occurs at a line - /// break), which of the two locations is represented by this position. + /// Disambiguates cases where the position in the string given by [offset] + /// could represent two different visual positions in the rendered text. For + /// example, this can happen when text is forced to wrap, or when one string + /// of text is rendered with multiple text directions. /// - /// For example, if the text `'AB'` had a forced line break between the `A` - /// and the `B`, then the downstream affinity at offset 1 represents the - /// cursor being just after the `A` on the first line, while the upstream - /// affinity at offset 1 represents the cursor being just before the `B` on - /// the first line. + /// See the documentation for [TextAffinity] for more information on how + /// TextAffinity disambiguates situations like these. final TextAffinity affinity; @override From c6f5e67cbe059e6abe3f5d92f3ecc89ee75d79cd Mon Sep 17 00:00:00 2001 From: Chris Bracken Date: Thu, 20 Dec 2018 11:37:14 -0800 Subject: [PATCH 0602/1537] [License] Enable prefer_single_quotes lint --- tools/licenses/analysis_options.yaml | 1 + tools/licenses/lib/main.dart | 64 ++++++++++++++-------------- tools/licenses/lib/patterns.dart | 2 +- 3 files changed, 34 insertions(+), 33 deletions(-) diff --git a/tools/licenses/analysis_options.yaml b/tools/licenses/analysis_options.yaml index cb0a09da642ef..94c27df722c40 100644 --- a/tools/licenses/analysis_options.yaml +++ b/tools/licenses/analysis_options.yaml @@ -46,6 +46,7 @@ linter: - package_prefixed_library_names - prefer_final_locals - prefer_is_not_empty + - prefer_single_quotes - slash_for_doc_comments - sort_constructors_first - sort_unnamed_constructors_first diff --git a/tools/licenses/lib/main.dart b/tools/licenses/lib/main.dart index f8786c7184cb8..d355ae85c1b9d 100644 --- a/tools/licenses/lib/main.dart +++ b/tools/licenses/lib/main.dart @@ -496,43 +496,43 @@ class _RepositoryFreetypeLicenseFile extends _RepositoryLicenseFile { : _target = _parseLicense(io), super(parent, io); static final RegExp _pattern = RegExp( - r"The FreeType 2 font engine is copyrighted work and cannot be used\n" - r"legally without a software license\. In order to make this project\n" - r"usable to a vast majority of developers, we distribute it under two\n" - r"mutually exclusive open-source licenses\.\n" - r"\n" - r"This means that \*you\* must choose \*one\* of the two licenses described\n" - r"below, then obey all its terms and conditions when using FreeType 2 in\n" - r"any of your projects or products.\n" - r"\n" + r'The FreeType 2 font engine is copyrighted work and cannot be used\n' + r'legally without a software license\. In order to make this project\n' + r'usable to a vast majority of developers, we distribute it under two\n' + r'mutually exclusive open-source licenses\.\n' + r'\n' + r'This means that \*you\* must choose \*one\* of the two licenses described\n' + r'below, then obey all its terms and conditions when using FreeType 2 in\n' + r'any of your projects or products.\n' + r'\n' r" - The FreeType License, found in the file `(FTL\.TXT)', which is similar\n" - r" to the original BSD license \*with\* an advertising clause that forces\n" + r' to the original BSD license \*with\* an advertising clause that forces\n' r" you to explicitly cite the FreeType project in your product's\n" - r" documentation\. All details are in the license file\. This license\n" + r' documentation\. All details are in the license file\. This license\n' r" is suited to products which don't use the GNU General Public\n" - r" License\.\n" - r"\n" - r" Note that this license is compatible to the GNU General Public\n" - r" License version 3, but not version 2\.\n" - r"\n" + r' License\.\n' + r'\n' + r' Note that this license is compatible to the GNU General Public\n' + r' License version 3, but not version 2\.\n' + r'\n' r" - The GNU General Public License version 2, found in `GPLv2\.TXT' \(any\n" - r" later version can be used also\), for programs which already use the\n" - r" GPL\. Note that the FTL is incompatible with GPLv2 due to its\n" - r" advertisement clause\.\n" - r"\n" - r"The contributed BDF and PCF drivers come with a license similar to that\n" - r"of the X Window System\. It is compatible to the above two licenses \(see\n" - r"file src/bdf/README and src/pcf/README\)\. The same holds for the files\n" + r' later version can be used also\), for programs which already use the\n' + r' GPL\. Note that the FTL is incompatible with GPLv2 due to its\n' + r' advertisement clause\.\n' + r'\n' + r'The contributed BDF and PCF drivers come with a license similar to that\n' + r'of the X Window System\. It is compatible to the above two licenses \(see\n' + r'file src/bdf/README and src/pcf/README\)\. The same holds for the files\n' r"`fthash\.c' and `fthash\.h'; their code was part of the BDF driver in\n" - r"earlier FreeType versions\.\n" - r"\n" - r"The gzip module uses the zlib license \(see src/gzip/zlib\.h\) which too is\n" - r"compatible to the above two licenses\.\n" - r"\n" - r"The MD5 checksum support \(only used for debugging in development builds\)\n" - r"is in the public domain\.\n" - r"\n*" - r"--- end of LICENSE\.TXT ---\n*$" + r'earlier FreeType versions\.\n' + r'\n' + r'The gzip module uses the zlib license \(see src/gzip/zlib\.h\) which too is\n' + r'compatible to the above two licenses\.\n' + r'\n' + r'The MD5 checksum support \(only used for debugging in development builds\)\n' + r'is in the public domain\.\n' + r'\n*' + r'--- end of LICENSE\.TXT ---\n*$' ); static String _parseLicense(fs.TextFile io) { diff --git a/tools/licenses/lib/patterns.dart b/tools/licenses/lib/patterns.dart index 68a0acc314729..7d61406144b9f 100644 --- a/tools/licenses/lib/patterns.dart +++ b/tools/licenses/lib/patterns.dart @@ -87,7 +87,7 @@ final List copyrightStatementPatterns = [ RegExp(r'^Written by .+', caseSensitive: false), RegExp(r'^Based on$', caseSensitive: false), RegExp(r"^based on (?:code in )?['`][^'`]+['`]$", caseSensitive: false), - RegExp(r"^Based on .+, written by .+, [0-9]+\.$", caseSensitive: false), + RegExp(r'^Based on .+, written by .+, [0-9]+\.$', caseSensitive: false), RegExp(r'^(?:Based on the )?x86 SIMD extension for IJG JPEG library(?: - version [0-9.]+|,)?$'), RegExp(r'^This software originally derived from .+\.$'), RegExp(r'^Derived from .+, which was$'), From 68fadca0e191c2905372981b96437c816bac16c1 Mon Sep 17 00:00:00 2001 From: Chris Bracken Date: Thu, 20 Dec 2018 11:39:49 -0800 Subject: [PATCH 0603/1537] [License] Enable unnecessary_this lint --- tools/licenses/analysis_options.yaml | 1 + tools/licenses/lib/licenses.dart | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/tools/licenses/analysis_options.yaml b/tools/licenses/analysis_options.yaml index 94c27df722c40..2368599d9abe9 100644 --- a/tools/licenses/analysis_options.yaml +++ b/tools/licenses/analysis_options.yaml @@ -58,4 +58,5 @@ linter: - unnecessary_getters_setters - unnecessary_new - unnecessary_statements + - unnecessary_this - package_names diff --git a/tools/licenses/lib/licenses.dart b/tools/licenses/lib/licenses.dart index 7e7585db8f965..616a498f45d9c 100644 --- a/tools/licenses/lib/licenses.dart +++ b/tools/licenses/lib/licenses.dart @@ -518,7 +518,7 @@ Iterable<_LineRange> _walkLinesForwards(String body, { int start: 0, int end }) class _SplitLicense { _SplitLicense(this._body, this._split) { - assert(this._split == 0 || this._split == this._body.length || this._body[this._split] == '\n'); + assert(_split == 0 || _split == _body.length || _body[_split] == '\n'); } final String _body; final int _split; From 1d7285beacf71868f1c09371edf17f5dbd3205dc Mon Sep 17 00:00:00 2001 From: Chris Bracken Date: Thu, 20 Dec 2018 11:47:52 -0800 Subject: [PATCH 0604/1537] [License] Enable empty_catches lint --- tools/licenses/analysis_options.yaml | 1 + tools/licenses/lib/filesystem.dart | 2 ++ tools/licenses/lib/licenses.dart | 6 +++--- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/tools/licenses/analysis_options.yaml b/tools/licenses/analysis_options.yaml index 2368599d9abe9..281e646ce2731 100644 --- a/tools/licenses/analysis_options.yaml +++ b/tools/licenses/analysis_options.yaml @@ -16,6 +16,7 @@ linter: - close_sinks - control_flow_in_finally - empty_statements + - empty_catches - hash_and_equals # - invariant_booleans # Produces false positives, see https://github.com/flutter/flutter/issues/5790 - iterable_contains_unrelated_type diff --git a/tools/licenses/lib/filesystem.dart b/tools/licenses/lib/filesystem.dart index 60f9d5df60295..d11d0d0608919 100644 --- a/tools/licenses/lib/filesystem.dart +++ b/tools/licenses/lib/filesystem.dart @@ -332,6 +332,8 @@ mixin Latin1TextFile implements TextFile { cache(UTF8Of(this), () => utf8.decode(readBytes())); isUTF8 = true; } on FormatException { + // Exceptions are fine/expected for non-UTF8 text, which we test for + // immediately below. } if (isUTF8) throw '$fullName contains valid UTF-8 and is probably not actually encoded as Win1252'; diff --git a/tools/licenses/lib/licenses.dart b/tools/licenses/lib/licenses.dart index 616a498f45d9c..05ce3a3172303 100644 --- a/tools/licenses/lib/licenses.dart +++ b/tools/licenses/lib/licenses.dart @@ -327,19 +327,19 @@ abstract class License implements Comparable { try { latin1Encoded = latin1.encode(body); isUTF8 = false; - } on ArgumentError { } + } on ArgumentError { /* Fall through to next encoding check. */ } if (!isUTF8) { bool isAscii = false; try { ascii.decode(latin1Encoded); isAscii = true; - } on FormatException { } + } on FormatException { /* Fall through to next encoding check */ } if (isAscii) return; try { utf8.decode(latin1Encoded); isUTF8 = true; - } on FormatException { } + } on FormatException { /* We check isUTF8 below and throw if necessary */ } if (isUTF8) throw 'tried to create a License object with text that appears to have been misdecoded as Latin1 instead of as UTF-8:\n$body'; } From 4703a7f108fa0f96c0f16b9f4510998cbc50ca84 Mon Sep 17 00:00:00 2001 From: Chris Bracken Date: Thu, 20 Dec 2018 12:00:30 -0800 Subject: [PATCH 0605/1537] [License] Enable prefer_equal_for_default_values lint --- tools/licenses/analysis_options.yaml | 1 + tools/licenses/lib/licenses.dart | 48 ++++++++++++++++++++-------- tools/licenses/lib/main.dart | 6 ++-- tools/licenses/lib/patterns.dart | 20 ++++++++++-- 4 files changed, 57 insertions(+), 18 deletions(-) diff --git a/tools/licenses/analysis_options.yaml b/tools/licenses/analysis_options.yaml index 281e646ce2731..5bfc674a9ef00 100644 --- a/tools/licenses/analysis_options.yaml +++ b/tools/licenses/analysis_options.yaml @@ -45,6 +45,7 @@ linter: - one_member_abstracts - overridden_fields - package_prefixed_library_names + - prefer_equal_for_default_values - prefer_final_locals - prefer_is_not_empty - prefer_single_quotes diff --git a/tools/licenses/lib/licenses.dart b/tools/licenses/lib/licenses.dart index 05ce3a3172303..a02c48b2e725b 100644 --- a/tools/licenses/lib/licenses.dart +++ b/tools/licenses/lib/licenses.dart @@ -106,7 +106,11 @@ abstract class LicenseSource { } abstract class License implements Comparable { - factory License.unique(String body, LicenseType type, { bool reformatted: false, String origin, bool yesWeKnowWhatItLooksLikeButItIsNot: false }) { + factory License.unique(String body, LicenseType type, { + bool reformatted = false, + String origin, + bool yesWeKnowWhatItLooksLikeButItIsNot = false + }) { if (!reformatted) body = _reformat(body); final License result = _registry.putIfAbsent(body, () => UniqueLicense._(body, type, origin: origin, yesWeKnowWhatItLooksLikeButItIsNot: yesWeKnowWhatItLooksLikeButItIsNot)); @@ -118,7 +122,10 @@ abstract class License implements Comparable { return result; } - factory License.template(String body, LicenseType type, { bool reformatted: false, String origin }) { + factory License.template(String body, LicenseType type, { + bool reformatted = false, + String origin + }) { if (!reformatted) body = _reformat(body); final License result = _registry.putIfAbsent(body, () => TemplateLicense._(body, type, origin: origin)); @@ -130,7 +137,10 @@ abstract class License implements Comparable { return result; } - factory License.message(String body, LicenseType type, { bool reformatted: false, String origin }) { + factory License.message(String body, LicenseType type, { + bool reformatted = false, + String origin + }) { if (!reformatted) body = _reformat(body); final License result = _registry.putIfAbsent(body, () => MessageLicense._(body, type, origin: origin)); @@ -157,7 +167,10 @@ abstract class License implements Comparable { return _registry.putIfAbsent(body, () => UniqueLicense._(body, type)); } - factory License.fromBodyAndType(String body, LicenseType type, { bool reformatted: false, String origin }) { + factory License.fromBodyAndType(String body, LicenseType type, { + bool reformatted = false, + String origin + }) { if (!reformatted) body = _reformat(body); final License result = _registry.putIfAbsent(body, () { @@ -271,7 +284,10 @@ abstract class License implements Comparable { return _registry.putIfAbsent(body, () => License.fromBodyAndType(body, type, origin: origin)); } - License._(String body, this.type, { this.origin, bool yesWeKnowWhatItLooksLikeButItIsNot: false }) : body = body, authors = _readAuthors(body) { + License._(String body, this.type, { + this.origin, + bool yesWeKnowWhatItLooksLikeButItIsNot = false + }) : body = body, authors = _readAuthors(body) { assert(_reformat(body) == body); assert(() { try { @@ -500,7 +516,7 @@ Iterable<_LineRange> _walkLinesBackwards(String body, int start) sync* { yield _LineRange(start, end, body); } -Iterable<_LineRange> _walkLinesForwards(String body, { int start: 0, int end }) sync* { +Iterable<_LineRange> _walkLinesForwards(String body, { int start = 0, int end }) sync* { int startIndex = start == 0 || body[start-1] == '\n' ? start : null; int endIndex = startIndex ?? start; end ??= body.length; @@ -526,7 +542,7 @@ class _SplitLicense { String getConditions() => _split >= _body.length ? '' : _body.substring(_split == 0 ? 0 : _split + 1); } -_SplitLicense _splitLicense(String body, { bool verifyResults: true }) { +_SplitLicense _splitLicense(String body, { bool verifyResults = true }) { final Iterator<_LineRange> lines = _walkLinesForwards(body).iterator; if (!lines.moveNext()) throw 'tried to split empty license'; @@ -613,7 +629,7 @@ class _PartialLicenseMatch { final bool hasCopyrights; } -Iterable<_PartialLicenseMatch> _findLicenseBlocks(String body, RegExp pattern, int firstPrefixIndex, int indentPrefixIndex, { bool needsCopyright: true }) sync* { +Iterable<_PartialLicenseMatch> _findLicenseBlocks(String body, RegExp pattern, int firstPrefixIndex, int indentPrefixIndex, { bool needsCopyright = true }) sync* { // I tried doing this with one big RegExp initially, but that way lay madness. for (Match match in pattern.allMatches(body)) { assert(match.groupCount >= firstPrefixIndex); @@ -709,7 +725,11 @@ Iterable<_PartialLicenseMatch> _findLicenseBlocks(String body, RegExp pattern, i } class _LicenseMatch { - _LicenseMatch(this.license, this.start, this.end, { this.debug: '', this.isDuplicate: false, this.missingCopyrights: false }); + _LicenseMatch(this.license, this.start, this.end, { + this.debug = '', + this.isDuplicate = false, + this.missingCopyrights = false + }); final License license; final int start; final int end; @@ -718,7 +738,7 @@ class _LicenseMatch { final bool missingCopyrights; } -Iterable<_LicenseMatch> _expand(License template, String copyright, String body, int start, int end, { String debug: '', String origin }) sync* { +Iterable<_LicenseMatch> _expand(License template, String copyright, String body, int start, int end, { String debug = '', String origin }) sync* { final List results = template.expandTemplate(_reformat(copyright), body, origin: origin).toList(); if (results.isEmpty) throw 'license could not be expanded'; @@ -780,7 +800,7 @@ Iterable<_LicenseMatch> _tryReferenceByFilename(String body, LicenseFileReferenc } } -Iterable<_LicenseMatch> _tryReferenceByType(String body, RegExp pattern, LicenseSource parentDirectory, { String origin, bool needsCopyright: true }) sync* { +Iterable<_LicenseMatch> _tryReferenceByType(String body, RegExp pattern, LicenseSource parentDirectory, { String origin, bool needsCopyright = true }) sync* { for (_PartialLicenseMatch match in _findLicenseBlocks(body, pattern, 1, 2, needsCopyright: needsCopyright)) { final LicenseType type = convertLicenseNameToType(match.group(3)); final License template = parentDirectory.nearestLicenseOfType(type); @@ -965,8 +985,10 @@ class MultiLicense extends License { // the kind of license that should not be combined with separate copyright notices class UniqueLicense extends License { - UniqueLicense._(String body, LicenseType type, { String origin, bool yesWeKnowWhatItLooksLikeButItIsNot: false }) - : super._(body, type, origin: origin, yesWeKnowWhatItLooksLikeButItIsNot: yesWeKnowWhatItLooksLikeButItIsNot); + UniqueLicense._(String body, LicenseType type, { + String origin, + bool yesWeKnowWhatItLooksLikeButItIsNot = false + }) : super._(body, type, origin: origin, yesWeKnowWhatItLooksLikeButItIsNot: yesWeKnowWhatItLooksLikeButItIsNot); @override Iterable expandTemplate(String copyright, String licenseBody, { String origin }) sync* { throw 'attempted to expand non-template license with "$copyright"\ntemplate was: $this'; diff --git a/tools/licenses/lib/main.dart b/tools/licenses/lib/main.dart index d355ae85c1b9d..f3d025aa0122d 100644 --- a/tools/licenses/lib/main.dart +++ b/tools/licenses/lib/main.dart @@ -1097,13 +1097,13 @@ class _RepositoryDirectory extends _RepositoryEntry implements LicenseSource { return null; } - License _fullWalkUpForLicenseWithName(String name, { String authors, bool ignoreCase: false }) { + License _fullWalkUpForLicenseWithName(String name, { String authors, bool ignoreCase = false }) { return _canGoUp(authors) ? parent._fullWalkUpForLicenseWithName(name, authors: authors, ignoreCase: ignoreCase) : _fullWalkDownForLicenseWithName(name, authors: authors, ignoreCase: ignoreCase); } - License _fullWalkDownForLicenseWithName(String name, { String authors, bool ignoreCase: false }) { + License _fullWalkDownForLicenseWithName(String name, { String authors, bool ignoreCase = false }) { License result = _localLicenseWithName(name, authors: authors, ignoreCase: ignoreCase); if (result == null) { for (_RepositoryDirectory directory in _subdirectories) { @@ -1140,7 +1140,7 @@ class _RepositoryDirectory extends _RepositoryEntry implements LicenseSource { /// to the LICENSE in the root of the repo. bool get isLicenseRootException => false; - License _localLicenseWithName(String name, { String authors, bool ignoreCase: false }) { + License _localLicenseWithName(String name, { String authors, bool ignoreCase = false }) { Map map; if (ignoreCase) { // we get here if we're trying a last-ditch effort at finding a file. diff --git a/tools/licenses/lib/patterns.dart b/tools/licenses/lib/patterns.dart index 7d61406144b9f..4740081f1d47d 100644 --- a/tools/licenses/lib/patterns.dart +++ b/tools/licenses/lib/patterns.dart @@ -262,7 +262,15 @@ final List csAttribution = [ // REFERENCES TO OTHER FILES class LicenseFileReferencePattern { - LicenseFileReferencePattern({ this.firstPrefixIndex, this.indentPrefixIndex, this.copyrightIndex, this.authorIndex, this.fileIndex, this.pattern, this.needsCopyright: true }); + LicenseFileReferencePattern({ + this.firstPrefixIndex, + this.indentPrefixIndex, + this.copyrightIndex, + this.authorIndex, + this.fileIndex, + this.pattern, + this.needsCopyright = true + }); final int firstPrefixIndex; final int indentPrefixIndex; final int copyrightIndex; @@ -571,7 +579,15 @@ final List csReferencesByTypeNoCopyright = [ ]; class MultipleVersionedLicenseReferencePattern { - MultipleVersionedLicenseReferencePattern({ this.firstPrefixIndex, this.indentPrefixIndex, this.licenseIndices, this.versionIndicies, this.checkLocalFirst: true, this.pattern }); + MultipleVersionedLicenseReferencePattern({ + this.firstPrefixIndex, + this.indentPrefixIndex, + this.licenseIndices, + this.versionIndicies, + this.checkLocalFirst = true, + this.pattern + }); + final int firstPrefixIndex; final int indentPrefixIndex; final List licenseIndices; From 32423ef38683acdd1706d28aba229e99ca148eb1 Mon Sep 17 00:00:00 2001 From: Chris Bracken Date: Thu, 20 Dec 2018 12:04:39 -0800 Subject: [PATCH 0606/1537] [License] Enable prefer_asserts_in_initializer_lists lint --- tools/licenses/analysis_options.yaml | 1 + tools/licenses/lib/licenses.dart | 23 +++++++++++------------ 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/tools/licenses/analysis_options.yaml b/tools/licenses/analysis_options.yaml index 5bfc674a9ef00..d3dfa75eecc0b 100644 --- a/tools/licenses/analysis_options.yaml +++ b/tools/licenses/analysis_options.yaml @@ -45,6 +45,7 @@ linter: - one_member_abstracts - overridden_fields - package_prefixed_library_names + - prefer_asserts_in_initializer_lists - prefer_equal_for_default_values - prefer_final_locals - prefer_is_not_empty diff --git a/tools/licenses/lib/licenses.dart b/tools/licenses/lib/licenses.dart index a02c48b2e725b..030dc080df415 100644 --- a/tools/licenses/lib/licenses.dart +++ b/tools/licenses/lib/licenses.dart @@ -287,8 +287,9 @@ abstract class License implements Comparable { License._(String body, this.type, { this.origin, bool yesWeKnowWhatItLooksLikeButItIsNot = false - }) : body = body, authors = _readAuthors(body) { - assert(_reformat(body) == body); + }) : body = body, + authors = _readAuthors(body), + assert(_reformat(body) == body) { assert(() { try { switch (type) { @@ -533,9 +534,8 @@ Iterable<_LineRange> _walkLinesForwards(String body, { int start = 0, int end }) } class _SplitLicense { - _SplitLicense(this._body, this._split) { - assert(_split == 0 || _split == _body.length || _body[_split] == '\n'); - } + _SplitLicense(this._body, this._split) : assert(_split == 0 || _split == _body.length || _body[_split] == '\n'); + final String _body; final int _split; String getCopyright() => _body.substring(0, _split); @@ -607,10 +607,9 @@ _SplitLicense _splitLicense(String body, { bool verifyResults = true }) { } class _PartialLicenseMatch { - _PartialLicenseMatch(this._body, this.start, this.split, this.end, this._match, { this.hasCopyrights }) { - assert(split >= start); - assert(split == start || _body[split] == '\n'); - } + _PartialLicenseMatch(this._body, this.start, this.split, this.end, this._match, { this.hasCopyrights }) : assert(split >= start), + assert(split == start || _body[split] == '\n'); + final String _body; final int start; final int split; @@ -959,9 +958,9 @@ class MessageLicense extends License { // the kind of license that says to include the copyright and the license text (e.g. BSD) class TemplateLicense extends License { - TemplateLicense._(String body, LicenseType type, { String origin }) : super._(body, type, origin: origin) { - assert(!body.startsWith('Apache License')); - } + TemplateLicense._(String body, LicenseType type, { String origin }) + : assert(!body.startsWith('Apache License')), + super._(body, type, origin: origin); String _conditions; From 06e35912da96dbafceb8441847fcf6d1e0fa377b Mon Sep 17 00:00:00 2001 From: Chris Bracken Date: Thu, 20 Dec 2018 12:06:26 -0800 Subject: [PATCH 0607/1537] [License] Enable prefer_final_fields lint --- tools/licenses/analysis_options.yaml | 1 + tools/licenses/lib/filesystem.dart | 4 ++-- tools/licenses/lib/licenses.dart | 4 ++-- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/tools/licenses/analysis_options.yaml b/tools/licenses/analysis_options.yaml index d3dfa75eecc0b..9ad2263657e81 100644 --- a/tools/licenses/analysis_options.yaml +++ b/tools/licenses/analysis_options.yaml @@ -47,6 +47,7 @@ linter: - package_prefixed_library_names - prefer_asserts_in_initializer_lists - prefer_equal_for_default_values + - prefer_final_fields - prefer_final_locals - prefer_is_not_empty - prefer_single_quotes diff --git a/tools/licenses/lib/filesystem.dart b/tools/licenses/lib/filesystem.dart index d11d0d0608919..27034b57abc29 100644 --- a/tools/licenses/lib/filesystem.dart +++ b/tools/licenses/lib/filesystem.dart @@ -530,8 +530,8 @@ class ArchiveDirectory extends IoNode implements Directory { @override final String name; - Map _subdirectories = SplayTreeMap(); - List _files = []; + final Map _subdirectories = SplayTreeMap(); + final List _files = []; void _add(a.ArchiveFile entry, List remainingPath) { if (remainingPath.length > 1) { diff --git a/tools/licenses/lib/licenses.dart b/tools/licenses/lib/licenses.dart index 030dc080df415..fec29c4d80b61 100644 --- a/tools/licenses/lib/licenses.dart +++ b/tools/licenses/lib/licenses.dart @@ -368,8 +368,8 @@ abstract class License implements Comparable { final LicenseType type; Iterable get licensees => _licensees; - List _licensees = []; - Set _libraries = Set(); + final List _licensees = []; + final Set _libraries = Set(); bool get isUsed => _licensees.isNotEmpty; From 392df65f69e90d04cbfab691a77d197444d0e0f8 Mon Sep 17 00:00:00 2001 From: Chris Bracken Date: Thu, 20 Dec 2018 12:07:42 -0800 Subject: [PATCH 0608/1537] [License] Enable prefer_const_declarations lint --- tools/licenses/analysis_options.yaml | 1 + tools/licenses/lib/patterns.dart | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/tools/licenses/analysis_options.yaml b/tools/licenses/analysis_options.yaml index 9ad2263657e81..27ae61cd9075c 100644 --- a/tools/licenses/analysis_options.yaml +++ b/tools/licenses/analysis_options.yaml @@ -46,6 +46,7 @@ linter: - overridden_fields - package_prefixed_library_names - prefer_asserts_in_initializer_lists + - prefer_const_declarations - prefer_equal_for_default_values - prefer_final_fields - prefer_final_locals diff --git a/tools/licenses/lib/patterns.dart b/tools/licenses/lib/patterns.dart index 4740081f1d47d..6a4114ad012d8 100644 --- a/tools/licenses/lib/patterns.dart +++ b/tools/licenses/lib/patterns.dart @@ -161,8 +161,8 @@ final List licenseFragments = [ RegExp(r'License & terms of use'), ]; -final String _linebreak = r' *(?:(?:\*/ *|[*#])?(?:\n\1 *(?:\*/ *)?)*\n\1\2 *)?'; -final String _linebreakLoose = r' *(?:(?:\*/ *|[*#])?\n(?:-|;|#|<|!|/|\*| |REM)*)*'; +const String _linebreak = r' *(?:(?:\*/ *|[*#])?(?:\n\1 *(?:\*/ *)?)*\n\1\2 *)?'; +const String _linebreakLoose = r' *(?:(?:\*/ *|[*#])?\n(?:-|;|#|<|!|/|\*| |REM)*)*'; // LICENSE RECOGNIZERS From bd955d78a74d23e0f1412884b7a52e552b7051ab Mon Sep 17 00:00:00 2001 From: Chris Bracken Date: Thu, 20 Dec 2018 12:09:31 -0800 Subject: [PATCH 0609/1537] [License] Enable avoid_function_literals_in_foreach_calls lint --- tools/licenses/analysis_options.yaml | 1 + tools/licenses/lib/main.dart | 6 ++++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/tools/licenses/analysis_options.yaml b/tools/licenses/analysis_options.yaml index 27ae61cd9075c..33c638ba552d0 100644 --- a/tools/licenses/analysis_options.yaml +++ b/tools/licenses/analysis_options.yaml @@ -11,6 +11,7 @@ analyzer: linter: rules: - avoid_empty_else + - avoid_function_literals_in_foreach_calls - comment_references - cancel_subscriptions - close_sinks diff --git a/tools/licenses/lib/main.dart b/tools/licenses/lib/main.dart index f3d025aa0122d..c50371732ffb2 100644 --- a/tools/licenses/lib/main.dart +++ b/tools/licenses/lib/main.dart @@ -102,7 +102,8 @@ class _RepositorySourceFile extends _RepositoryLicensedFile { throw 'file has no detectable license and no in-scope default license file'; } _licenses.sort(); - _licenses.forEach((License license) => license.markUsed(io.fullName, libraryName)); + for (License license in licenses) + license.markUsed(io.fullName, libraryName); assert(_licenses != null && _licenses.isNotEmpty); return _licenses; } @@ -122,7 +123,8 @@ class _RepositoryBinaryFile extends _RepositoryLicensedFile { _licenses = parent.nearestLicensesFor(name); if (_licenses == null || _licenses.isEmpty) throw 'no license file found in scope for ${io.fullName}'; - _licenses.forEach((License license) => license.markUsed(io.fullName, libraryName)); + for (License license in licenses) + license.markUsed(io.fullName, libraryName); } return _licenses; } From 5f2e6cd41931c15012969d929f99c5fd0edfef05 Mon Sep 17 00:00:00 2001 From: Chris Bracken Date: Thu, 20 Dec 2018 12:11:35 -0800 Subject: [PATCH 0610/1537] [License] Enable unnecessary_overrides lint --- tools/licenses/analysis_options.yaml | 1 + tools/licenses/lib/main.dart | 9 --------- 2 files changed, 1 insertion(+), 9 deletions(-) diff --git a/tools/licenses/analysis_options.yaml b/tools/licenses/analysis_options.yaml index 33c638ba552d0..98ec5cd1f732e 100644 --- a/tools/licenses/analysis_options.yaml +++ b/tools/licenses/analysis_options.yaml @@ -63,6 +63,7 @@ linter: - unnecessary_brace_in_string_interps - unnecessary_getters_setters - unnecessary_new + - unnecessary_overrides - unnecessary_statements - unnecessary_this - package_names diff --git a/tools/licenses/lib/main.dart b/tools/licenses/lib/main.dart index c50371732ffb2..27f3a4c69c144 100644 --- a/tools/licenses/lib/main.dart +++ b/tools/licenses/lib/main.dart @@ -112,9 +112,6 @@ class _RepositorySourceFile extends _RepositoryLicensedFile { class _RepositoryBinaryFile extends _RepositoryLicensedFile { _RepositoryBinaryFile(_RepositoryDirectory parent, fs.File io) : super(parent, io); - @override - fs.File get io => super.io; - List _licenses; @override @@ -734,9 +731,6 @@ class _RepositoryMultiLicenseNoticesForFilesFile extends _RepositoryLicenseFile : _licenses = _parseLicense(io), super(parent, io); - @override - fs.File get io => super.io; - final Map _licenses; static Map _parseLicense(fs.File io) { @@ -1255,9 +1249,6 @@ class _RepositoryGenericThirdPartyDirectory extends _RepositoryDirectory { class _RepositoryReachOutFile extends _RepositoryLicensedFile { _RepositoryReachOutFile(_RepositoryDirectory parent, fs.File io, this.offset) : super(parent, io); - @override - fs.File get io => super.io; - final int offset; @override From e2ab3780a3eed9eebe0f4d48c133b32e681ad40e Mon Sep 17 00:00:00 2001 From: Chris Bracken Date: Thu, 20 Dec 2018 12:12:51 -0800 Subject: [PATCH 0611/1537] [License] Enable directives_ordering lint --- tools/licenses/analysis_options.yaml | 1 + tools/licenses/lib/filesystem.dart | 2 +- tools/licenses/lib/licenses.dart | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/tools/licenses/analysis_options.yaml b/tools/licenses/analysis_options.yaml index 98ec5cd1f732e..294a92372d48c 100644 --- a/tools/licenses/analysis_options.yaml +++ b/tools/licenses/analysis_options.yaml @@ -16,6 +16,7 @@ linter: - cancel_subscriptions - close_sinks - control_flow_in_finally + - directives_ordering - empty_statements - empty_catches - hash_and_equals diff --git a/tools/licenses/lib/filesystem.dart b/tools/licenses/lib/filesystem.dart index 27034b57abc29..f9ac92aa764b5 100644 --- a/tools/licenses/lib/filesystem.dart +++ b/tools/licenses/lib/filesystem.dart @@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -import 'dart:convert'; import 'dart:collection'; +import 'dart:convert'; import 'dart:io' as io; import 'package:path/path.dart' as path; diff --git a/tools/licenses/lib/licenses.dart b/tools/licenses/lib/licenses.dart index fec29c4d80b61..448674722bc55 100644 --- a/tools/licenses/lib/licenses.dart +++ b/tools/licenses/lib/licenses.dart @@ -6,8 +6,8 @@ import 'dart:convert'; import 'dart:io' as system; import 'cache.dart'; -import 'patterns.dart'; import 'limits.dart'; +import 'patterns.dart'; class FetchedContentsOf extends Key { FetchedContentsOf(dynamic value) : super(value); } From d120e15af66217f41ea6d7190f2258e1b6dad2d6 Mon Sep 17 00:00:00 2001 From: Chris Bracken Date: Thu, 20 Dec 2018 12:14:38 -0800 Subject: [PATCH 0612/1537] [License] Enable prefer_void_to_null lint --- tools/licenses/analysis_options.yaml | 1 + tools/licenses/lib/main.dart | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/tools/licenses/analysis_options.yaml b/tools/licenses/analysis_options.yaml index 294a92372d48c..506f7bb2e168e 100644 --- a/tools/licenses/analysis_options.yaml +++ b/tools/licenses/analysis_options.yaml @@ -54,6 +54,7 @@ linter: - prefer_final_locals - prefer_is_not_empty - prefer_single_quotes + - prefer_void_to_null - slash_for_doc_comments - sort_constructors_first - sort_unnamed_constructors_first diff --git a/tools/licenses/lib/main.dart b/tools/licenses/lib/main.dart index 27f3a4c69c144..294dfe6cdd7c7 100644 --- a/tools/licenses/lib/main.dart +++ b/tools/licenses/lib/main.dart @@ -2260,7 +2260,7 @@ Future _collectLicensesForComponent(_RepositoryDirectory componentRoot, { // MAIN -Future main(List arguments) async { +Future main(List arguments) async { final ArgParser parser = ArgParser() ..addOption('src', help: 'The root of the engine source') ..addOption('out', help: 'The directory where output is written') From c8f83fbea2e254c569c3a7b03ecf8997a7e80b57 Mon Sep 17 00:00:00 2001 From: Chris Bracken Date: Thu, 20 Dec 2018 12:18:31 -0800 Subject: [PATCH 0613/1537] [License] Enable prefer_collection_literals lint --- tools/licenses/analysis_options.yaml | 1 + tools/licenses/lib/cache.dart | 4 +--- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/tools/licenses/analysis_options.yaml b/tools/licenses/analysis_options.yaml index 506f7bb2e168e..7eea061fd894f 100644 --- a/tools/licenses/analysis_options.yaml +++ b/tools/licenses/analysis_options.yaml @@ -48,6 +48,7 @@ linter: - overridden_fields - package_prefixed_library_names - prefer_asserts_in_initializer_lists + - prefer_collection_literals - prefer_const_declarations - prefer_equal_for_default_values - prefer_final_fields diff --git a/tools/licenses/lib/cache.dart b/tools/licenses/lib/cache.dart index 159ef1e217c58..62dcbeecf4d51 100644 --- a/tools/licenses/lib/cache.dart +++ b/tools/licenses/lib/cache.dart @@ -2,9 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -import 'dart:collection'; - -Map _cache = LinkedHashMap(); +Map _cache = {}; const int _maxSize = 10; T cache(Key key, T getter()) { From 97ae27164e5ccbbe99f16870d2b8b36b4385a99e Mon Sep 17 00:00:00 2001 From: Chris Bracken Date: Thu, 20 Dec 2018 12:20:07 -0800 Subject: [PATCH 0614/1537] [License] Enable prefer_initializing_formals lint --- tools/licenses/analysis_options.yaml | 1 + tools/licenses/lib/licenses.dart | 5 ++--- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/tools/licenses/analysis_options.yaml b/tools/licenses/analysis_options.yaml index 7eea061fd894f..0e383923746e2 100644 --- a/tools/licenses/analysis_options.yaml +++ b/tools/licenses/analysis_options.yaml @@ -53,6 +53,7 @@ linter: - prefer_equal_for_default_values - prefer_final_fields - prefer_final_locals + - prefer_initializing_formals - prefer_is_not_empty - prefer_single_quotes - prefer_void_to_null diff --git a/tools/licenses/lib/licenses.dart b/tools/licenses/lib/licenses.dart index 448674722bc55..d23634c2ee975 100644 --- a/tools/licenses/lib/licenses.dart +++ b/tools/licenses/lib/licenses.dart @@ -284,11 +284,10 @@ abstract class License implements Comparable { return _registry.putIfAbsent(body, () => License.fromBodyAndType(body, type, origin: origin)); } - License._(String body, this.type, { + License._(this.body, this.type, { this.origin, bool yesWeKnowWhatItLooksLikeButItIsNot = false - }) : body = body, - authors = _readAuthors(body), + }) : authors = _readAuthors(body), assert(_reformat(body) == body) { assert(() { try { From 2b207a51c77e808e0f54aa1e7c45b79a0f8f47ae Mon Sep 17 00:00:00 2001 From: Chris Bracken Date: Thu, 20 Dec 2018 12:22:15 -0800 Subject: [PATCH 0615/1537] [License] Enable unnecessary_parenthesis lint --- tools/licenses/analysis_options.yaml | 1 + tools/licenses/lib/filesystem.dart | 2 +- tools/licenses/lib/licenses.dart | 6 +++--- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/tools/licenses/analysis_options.yaml b/tools/licenses/analysis_options.yaml index 0e383923746e2..99309dcd83817 100644 --- a/tools/licenses/analysis_options.yaml +++ b/tools/licenses/analysis_options.yaml @@ -68,6 +68,7 @@ linter: - unnecessary_getters_setters - unnecessary_new - unnecessary_overrides + - unnecessary_parenthesis - unnecessary_statements - unnecessary_this - package_names diff --git a/tools/licenses/lib/filesystem.dart b/tools/licenses/lib/filesystem.dart index f9ac92aa764b5..f2640b4a11296 100644 --- a/tools/licenses/lib/filesystem.dart +++ b/tools/licenses/lib/filesystem.dart @@ -59,7 +59,7 @@ const String kMultiLicenseFileHeader = 'Notices for files contained in'; bool isMultiLicenseNotice(Reader reader) { final List bytes = reader(); - return (ascii.decode(bytes.take(kMultiLicenseFileHeader.length).toList(), allowInvalid: true) == kMultiLicenseFileHeader); + return ascii.decode(bytes.take(kMultiLicenseFileHeader.length).toList(), allowInvalid: true) == kMultiLicenseFileHeader; } FileType identifyFile(String name, Reader reader) { diff --git a/tools/licenses/lib/licenses.dart b/tools/licenses/lib/licenses.dart index d23634c2ee975..89d1099c2de65 100644 --- a/tools/licenses/lib/licenses.dart +++ b/tools/licenses/lib/licenses.dart @@ -656,9 +656,9 @@ Iterable<_PartialLicenseMatch> _findLicenseBlocks(String body, RegExp pattern, i if (lastWasBlank && (foundNonBlank || !needsCopyright)) break; lastWasBlank = true; - } else if (((!isBlockCommentLine && line.startsWith('/*')) || - line.startsWith(' - + diff --git a/tools/android_lint/.gitignore b/tools/android_lint/.gitignore new file mode 100644 index 0000000000000..e44752dc2001b --- /dev/null +++ b/tools/android_lint/.gitignore @@ -0,0 +1 @@ +lint_report/ diff --git a/tools/android_lint/bin/main.dart b/tools/android_lint/bin/main.dart new file mode 100644 index 0000000000000..4254fd2d20124 --- /dev/null +++ b/tools/android_lint/bin/main.dart @@ -0,0 +1,148 @@ +// 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. + +import 'dart:io'; + +import 'package:args/args.dart'; +import 'package:path/path.dart' as path; +import 'package:process/process.dart'; + +const LocalProcessManager processManager = LocalProcessManager(); + +/// Runs the Android SDK Lint tool on flutter/shell/platform/android. +/// +/// This script scans the flutter/shell/platform/android directory for Java +/// files to build a `project.xml` file. This file is then passed to the lint +/// tool and HTML output is reqeusted in the directory for the `--out` +/// parameter, which defaults to `lint_report`. +/// +/// The `--in` parameter may be specified to force this script to scan a +/// specific location for the engine repository, and expects to be given the +/// `src` directory that contains both `third_party` and `flutter`. +/// +/// At the time of this writing, the Android Lint tool doesn't work well with +/// Java > 1.8. This script will print a warning if you are not running +/// Java 1.8. +Future main(List args) async { + final ArgParser argParser = setupOptions(); + await checkJava1_8(); + final int exitCode = await runLint(argParser, argParser.parse(args)); + exit(exitCode); +} + +Future runLint(ArgParser argParser, ArgResults argResults) async { + final Directory androidDir = Directory(path.join( + argResults['in'], + 'flutter', + 'shell', + 'platform', + 'android', + )); + if (!androidDir.existsSync()) { + print('This command must be run from the engine/src directory, ' + 'or be passed that directory as the --in parameter.\n'); + print(argParser.usage); + return -1; + } + + final Directory androidSdkDir = Directory( + path.join(argResults['in'], 'third_party', 'android_tools', 'sdk'), + ); + + if (!androidSdkDir.existsSync()) { + print('The Android SDK for this engine is missing from the ' + 'third_party/android_tools directory. Have you run gclient sync?\n'); + print(argParser.usage); + return -1; + } + + final IOSink projectXml = File('./project.xml').openWrite(); + projectXml.write( + ''' + + + + + +'''); + for (final FileSystemEntity entity in androidDir.listSync(recursive: true)) { + if (!entity.path.endsWith('.java')) { + continue; + } + projectXml.writeln(' '); + } + + projectXml.write(''' + +'''); + await projectXml.close(); + + print('Wrote project.xml, starting lint...'); + final ProcessResult result = await processManager.run( + [ + path.join(androidSdkDir.path, 'tools', 'bin', 'lint'), + '--project', + './project.xml', + '--html', + argResults['out'], + '--showall', + '--exitcode', // Set non-zero exit code on errors + '-Wall', + '-Werror', + ], + ); + if (result.stderr != null) { + print('Lint tool had internal errors:'); + print(result.stderr); + } + print(result.stdout); + return result.exitCode; +} + +ArgParser setupOptions() { + final ArgParser argParser = ArgParser(); + argParser.addOption( + 'in', + help: 'The path to `engine/src`.', + defaultsTo: path.relative( + path.join( + path.dirname( + path.dirname(path.dirname(path.fromUri(Platform.script))), + ), + '..', + '..', + ), + ), + ); + argParser.addOption( + 'out', + help: 'The path to write the generated the HTML report to.', + defaultsTo: 'lint_report', + ); + argParser.addFlag( + 'help', + help: 'Print usage of the command.', + negatable: false, + defaultsTo: false, + ); + + return argParser; +} + +Future checkJava1_8() async { + print('Checking Java version...'); + final ProcessResult javaResult = await processManager.run( + ['java', '-version'], + ); + if (javaResult.exitCode != 0) { + print('Could not run "java -version". ' + 'Ensure Java is installed and available on your path.'); + print(javaResult.stderr); + } + final String javaVersionStdout = javaResult.stdout; + if (javaVersionStdout.contains('"1.8')) { + print('The Android SDK tools may not work properly with your Java version. ' + 'If this process fails, please retry using Java 1.8.'); + } +} diff --git a/tools/android_lint/project.xml b/tools/android_lint/project.xml new file mode 100644 index 0000000000000..6d8fffe439f3e --- /dev/null +++ b/tools/android_lint/project.xml @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tools/android_lint/pubspec.yaml b/tools/android_lint/pubspec.yaml new file mode 100644 index 0000000000000..b27131c37c920 --- /dev/null +++ b/tools/android_lint/pubspec.yaml @@ -0,0 +1,5 @@ +name: android_lint +dependencies: + args: 1.5.0 + path: ^1.6.2 + process: ^3.0.9 From f3d4a7f71d403222ea27d679ff8d8ead487b471d Mon Sep 17 00:00:00 2001 From: Ben Konyi Date: Mon, 4 Mar 2019 13:39:35 -0800 Subject: [PATCH 1275/1537] Roll src/third_party/dart 7c70ab1817..7d8ffe0daf (77 commits) 7d8ffe0daf Eliminate uses of old AST node types from pkg/analyzer/lib/src/test_utilities 2e463506b7 Read more nodes from serialized AST. e91c3b3ab4 Update pkg:html version to 0.13.4+1 819f44532c Eliminate uses of old AST node types from pkg/analyzer/lib/src/task/strong 095e651ff2 Eliminate uses of old AST node types from pkg/analyzer/lib/src/services 2c087433db [co19] DEPS and status files updated b095a6be8e [infra] Update checked in SDKs to 2.2.1-dev.0.0 f46186ac49 [infra] Fix update_flakiness using wrong key when computing matches. 03e46ee969 [infra] Add expectation and matches information to flaky.json. 15f1fc212c Add a flag to allow only analyzing project folders that contain open files bc2b78886d [CFE] handle set literals in constant evaluator. 2b2e71770c [kernel] Add SetConstant node to Kernel. 084e98e3a3 [VM] Ensure that a newly allocated object is either new or added to remembered set if we want to eliminate write barriers to it 95cfa6c583 Support native class and js-interop annotations through ir constants 62d22083ac Flatten native member resolver 053dfbb2ac [cfe] Compile list spread elements into block expressions 1e0d514469 Address comments from a previous CL 156790474e Allocate fieldOffsets once, in computeFieldOffsets(). 4a144e631f Fix production of outline for incomplete generic function types (issue 36059) 4bd3e4b561 Write more AST nodes to summary. fa2d32e80a [ddc] Add api to query loaded libs 5a335957f2 [analyzer] fix #33119, add strict-raw-types flag 76d31a251e [dartdevc] fix hot restart static field reset 2f158b9997 Add ABI_VERSION to the version file and a script to upload dills to CPID 0491d5cde7 Revert "[VM runtime] Dual mapping of executable pages." 5f9bd87689 Eliminate uses of old AST node types from parts of the analyzer 38d675287c Eliminate uses of old AST node types from parts of the analyzer df59b09756 Fail early if a thread has no stack headroom 44186dfdcd [VM runtime] Dual mapping of executable pages. 298866ed94 Write / read resolved AST to / from flat buffers. 863f7df7aa Include debug info when dart:core is not resolved. f00fe7a289 Rework of downward inference for the ui-as-code features 1a9f40b1c5 [VM] Remove unnecessary assert to fix cc/PrintJSON test c2a48ee065 [VM] Fix bigint left shift that could cause heap corruption when intrinsified. 9201b906ee Convert ir.Constant to ConstantValue dc555eb9a7 [vm] On Fuchsia, enable timeline streams based on the state of system trace categories. 644026da51 Eliminate uses of old AST node types from AstFactory c35304ef18 [vm/simdbc,interpreter] Preserve arguments descriptor around call to inline cache miss handler a681a6297a [vm/incremental compiler] Add reject/compile_expresson test for incremental compiler. ce1fb830d0 [infra] Suggest running gsutil.py config in approve_results if needed. 2c8f70cde3 [cfe] Add type inference for spreads in set literals b36c56ff84 [cfe] Add type inference for spreads in list literals e4aa4325b7 [fasta] Enable spread collections in unit tests 1471b8e444 Revert "[CFE] Move constant evaluation number semantics handling to front end." 6e06047004 AST to Text more resilient in writeAdditionalExports c2b466b09f [CFE] Move constant evaluation number semantics handling to front end. b60b664b16 [infra] Make gclient sync quiet when nothing is updated. 9a0a3fd8c1 Eliminate uses of old AST node types from analyzer_plugin ba4cfb8613 Initial computation of initializer complexity through the scope visitor. 15515d86e3 Reland "[analyzer] Constant verifier support for SetOrMapLiteral" 9bec44d1e2 Revert "[analyzer] Constant verifier support for SetOrMapLiteral" d73bc49420 DEPS: update html, http_parser, logging, package_resolver, source_span 9c6315c199 [analyzer] Constant verifier support for SetOrMapLiteral 67366ed771 Support for @Variant and @VariantId in generator. 16fc751e49 [fuchsia] Clean-up after the FIDL string/vector types transition 1d3a0d5129 Revert "[vm/ffi] Stress tests for FFI functions." 24df9cc588 [vm] Implement interpreter stubs for ARM, SIMARM and SIMARM64. e8d6e2f704 [ VM ] Updated SourceReport tests with correct token positions 19dbd70363 Catch errors in formatting function types 2259695037 [vm, gc] Document object representation. 223f407af5 [gardening] Skip ffi/negative_function_test on asan bot c2e48195f0 Rename UiAsCodeVisitorMixin to UIAsCodeVisitorMixin 48ee388791 Fix a typo in a shared test 545ebe1741 Prepare to publish analyzer 0.35.3 17195d2667 Eliminate uses of old AST node types from dev_compiler a417659fcd debug dartfix test a10b0d8763 [vm/compiler] LICM and CSE improvements ff6f61c872 [VM / Observatory ] Remove needless stacktrace print when adding to closed socket a51c9f15cc Make optype compatible with previous versions of analyzer. a2eac98753 Merge HintCodeTest_Driver into HintCodeTest. 9d609426b2 [vm] Update status file for standalone_2/ffi/function_stress_test bab9d2ad05 [vm] Remember GenericCovariantImpl in TypeParameter 3dcc0c69a1 [vm] Fix windows build after "[vm/ffi] Stress tests for FFI functions." 1596f437bd debug dartfix test fa8ba53b52 [infra] Add a script that appends fields with previous results to result data b186a270e4 [vm/ffi] Stress tests for FFI functions. 7dec865054 Add set literal support to the flutter outline computer --- DEPS | 10 +++++----- ci/licenses_golden/licenses_third_party | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/DEPS b/DEPS index 8530e49a065eb..f0c255780dfbe 100644 --- a/DEPS +++ b/DEPS @@ -31,7 +31,7 @@ vars = { # Dart is: https://github.com/dart-lang/sdk/blob/master/DEPS. # You can use //tools/dart/create_updated_flutter_deps.py to produce # updated revision list of existing dependencies. - 'dart_revision': '7c70ab1817ad6553f21fadadf0a88fe568ee8745', + 'dart_revision': '7d8ffe0daf8148dd281884ec3911f1274e21f0af', # WARNING: DO NOT EDIT MANUALLY # The lines between blank lines above and below are generated by a script. See create_updated_flutter_deps.py @@ -52,9 +52,9 @@ vars = { 'dart_dartdoc_tag': 'v0.28.2', 'dart_fixnum_tag': '0.10.9', 'dart_glob_tag': '1.1.7', - 'dart_html_tag': '0.13.3+2', + 'dart_html_tag': '0.13.4+1', 'dart_http_multi_server_tag': '2.0.5', - 'dart_http_parser_tag': '3.1.1', + 'dart_http_parser_tag': '3.1.3', 'dart_http_retry_tag': '0.1.1', 'dart_http_tag': '0.12.0', 'dart_http_throttle_tag': '1.0.2', @@ -70,7 +70,7 @@ vars = { 'dart_oauth2_tag': '1.2.1', 'dart_observatory_pub_packages_rev': '0894122173b0f98eb08863a7712e78407d4477bc', 'dart_package_config_tag': '1.0.5', - 'dart_package_resolver_tag': '1.0.4', + 'dart_package_resolver_tag': '1.0.10', 'dart_path_tag': '1.6.2', 'dart_plugin_tag': 'f5b4b0e32d1406d62daccea030ba6457d14b1c47', 'dart_pool_tag': '1.3.6', @@ -86,7 +86,7 @@ vars = { 'dart_shelf_web_socket_tag': '0.2.2+3', 'dart_source_map_stack_trace_tag': '1.1.5', 'dart_source_maps_tag': '8af7cc1a1c3a193c1fba5993ce22a546a319c40e', - 'dart_source_span_tag': '1.4.1', + 'dart_source_span_tag': '1.5.5', 'dart_stack_trace_tag': '1.9.3', 'dart_stream_channel_tag': '1.6.8', 'dart_string_scanner_tag': '1.0.3', diff --git a/ci/licenses_golden/licenses_third_party b/ci/licenses_golden/licenses_third_party index 28067d13e0b2d..5ade61510b999 100644 --- a/ci/licenses_golden/licenses_third_party +++ b/ci/licenses_golden/licenses_third_party @@ -1,4 +1,4 @@ -Signature: 80f68675dab65099e7156f61547b4d56 +Signature: 1405abeaed1a76feefc683d14369d056 UNUSED LICENSES: From 3d53e2026a70f098e3bb789d6bfb338ad879e57e Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Mon, 4 Mar 2019 18:05:13 -0500 Subject: [PATCH 1276/1537] Roll src/third_party/skia 5800f2e8a920..e3e80b7edfd1 (2 commits) (#8028) https://skia.googlesource.com/skia.git/%2Blog/5800f2e8a920..e3e80b7edfd1 git log 5800f2e8a920ed57c66cde8f6f29c1af376e7661..e3e80b7edfd1d31724ef789b7d879d0fee5e52f2 --date=short --no-merges --format=%ad %ae %s 2019-03-04 skia-recreate-skps@skia-swarming-bots.iam.gserviceaccount.com Update go_deps asset 2019-03-04 recipe-roller@chromium.org Roll recipe dependencies (trivial). The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (reed@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index f0c255780dfbe..6775e0e664399 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '5800f2e8a920ed57c66cde8f6f29c1af376e7661', + 'skia_revision': 'e3e80b7edfd1d31724ef789b7d879d0fee5e52f2', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 4fcc7e5a33796..78e6827b929ff 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: c3fc29250d07962ef7acf39c704bd8e8 +Signature: 6a5e4c2b1031c3a8cc1b8d5e0524d4dc UNUSED LICENSES: From 36ca5740c7e39e25d7ac22c755e66525b92fbb56 Mon Sep 17 00:00:00 2001 From: Chris Yang Date: Mon, 4 Mar 2019 15:55:32 -0800 Subject: [PATCH 1277/1537] [platform_views] Fix duplicated touch event pass down to flutter view from platform view. (#8026) Fix for flutter/flutter#27700 and flutter/flutter#24207 There are 2 fixes included in this PR. The intercepting views sometime pass up the touches events to flutter view, even after the forward gesture recognizer pass the event to the flutter view. We only want the event to be passed to the flutter view once. So we let the intercepting view 'consumes' the event in this PR to fix the problem. When a touch sequence has multiple touch points participated(e.g. Pinch gesture), the touchesBegan and touchesEnded can be triggered multiple times if the touches do not happen simultaneously. One example would be: when performing a pinch gesture with 2 fingers, I put down one finger, keep the finger on the screen, then put down another finger, perform pinch, lift up both finger at the same time. In this sequence, touchesBegan is called twice with each touch in one of the calls and touchesEnded is called once and has 2 touches in the callback. To handle this issue, we added a count to count the touches in one touch sequence. We only set the state to fail when the count reaches 0(That is all the touches has began in the current sequence is ended). --- .../framework/Source/FlutterPlatformViews.mm | 30 ++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm index 3452807bcdeb5..2bd198af6bf12 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm @@ -353,6 +353,21 @@ - (void)blockGesture { _delayingRecognizer.get().state = UIGestureRecognizerStateEnded; } +// We want the intercepting view to consume the touches and not pass the touches up to the parent +// view. Make the touch event method not call super will not pass the touches up to the parent view. +// Hence we overide the touch event methods and do nothing. +- (void)touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event { +} + +- (void)touchesMoved:(NSSet*)touches withEvent:(UIEvent*)event { +} + +- (void)touchesCancelled:(NSSet*)touches withEvent:(UIEvent*)event { +} + +- (void)touchesEnded:(NSSet*)touches withEvent:(UIEvent*)event { +} + @end @implementation DelayingGestureRecognizer { @@ -395,6 +410,8 @@ @implementation ForwardingGestureRecognizer { // So this is safe as when FlutterView is deallocated the reference to ForwardingGestureRecognizer // will go away. UIView* _flutterView; + // Counting the pointers that has started in one touch sequence. + NSInteger _currentTouchPointersCount; } - (instancetype)initWithTarget:(id)target flutterView:(UIView*)flutterView { @@ -402,12 +419,15 @@ - (instancetype)initWithTarget:(id)target flutterView:(UIView*)flutterView { if (self) { self.delegate = self; _flutterView = flutterView; + _currentTouchPointersCount = 0; } return self; } - (void)touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event { [_flutterView touchesBegan:touches withEvent:event]; + _currentTouchPointersCount += touches.count; + [_flutterView touchesBegan:touches withEvent:event]; } - (void)touchesMoved:(NSSet*)touches withEvent:(UIEvent*)event { @@ -416,11 +436,19 @@ - (void)touchesMoved:(NSSet*)touches withEvent:(UIEvent*)event { - (void)touchesEnded:(NSSet*)touches withEvent:(UIEvent*)event { [_flutterView touchesEnded:touches withEvent:event]; - self.state = UIGestureRecognizerStateFailed; + _currentTouchPointersCount -= touches.count; + // Touches in one touch sequence are sent to the touchesEnded method separately if different + // fingers stop touching the screen at different time. So one touchesEnded method triggering does + // not necessarially mean the touch sequence has ended. We Only set the state to + // UIGestureRecognizerStateFailed when all the touches in the current touch sequence is ended. + if (_currentTouchPointersCount == 0) { + self.state = UIGestureRecognizerStateFailed; + } } - (void)touchesCancelled:(NSSet*)touches withEvent:(UIEvent*)event { [_flutterView touchesCancelled:touches withEvent:event]; + _currentTouchPointersCount = 0; self.state = UIGestureRecognizerStateFailed; } From fb3e35d6aca6ab6901d315698551855e25dc98a2 Mon Sep 17 00:00:00 2001 From: Matt Carroll Date: Mon, 4 Mar 2019 17:12:52 -0800 Subject: [PATCH 1278/1537] Android Embedding PR15: Add Viewport Metrics to FlutterView (#8029) --- .../engine/android/FlutterSurfaceView.java | 13 +++- .../engine/android/FlutterTextureView.java | 12 ++-- .../embedding/engine/android/FlutterView.java | 66 +++++++++++++++++-- .../engine/renderer/FlutterRenderer.java | 60 ++++++++++------- 4 files changed, 113 insertions(+), 38 deletions(-) diff --git a/shell/platform/android/io/flutter/embedding/engine/android/FlutterSurfaceView.java b/shell/platform/android/io/flutter/embedding/engine/android/FlutterSurfaceView.java index edbe8645d32d1..dc52f9e6d46f9 100644 --- a/shell/platform/android/io/flutter/embedding/engine/android/FlutterSurfaceView.java +++ b/shell/platform/android/io/flutter/embedding/engine/android/FlutterSurfaceView.java @@ -56,6 +56,7 @@ public void surfaceCreated(SurfaceHolder holder) { @Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { + Log.d(TAG, "SurfaceHolder.Callback.surfaceChanged()"); if (isAttachedToFlutterRenderer) { changeSurfaceSize(width, height); } @@ -97,13 +98,17 @@ private void init() { * Invoked by the owner of this {@code FlutterSurfaceView} when it wants to begin rendering * a Flutter UI to this {@code FlutterSurfaceView}. * - * If an Android {@link android.view.Surface} is available, this method will begin rendering - * {@link FlutterRenderer}'s Flutter UI to this {@code FlutterSurfaceView}. + * If an Android {@link android.view.Surface} is available, this method will give that + * {@link android.view.Surface} to the given {@link FlutterRenderer} to begin rendering + * Flutter's UI to this {@code FlutterSurfaceView}. * * If no Android {@link android.view.Surface} is available yet, this {@code FlutterSurfaceView} - * will wait until a {@link android.view.Surface} becomes available and then begin rendering. + * will wait until a {@link android.view.Surface} becomes available and then give that + * {@link android.view.Surface} to the given {@link FlutterRenderer} to begin rendering + * Flutter's UI to this {@code FlutterSurfaceView}. */ public void attachToRenderer(@NonNull FlutterRenderer flutterRenderer) { + Log.d(TAG, "attachToRenderer"); if (this.flutterRenderer != null) { this.flutterRenderer.detachFromRenderSurface(); } @@ -114,6 +119,7 @@ public void attachToRenderer(@NonNull FlutterRenderer flutterRenderer) { // If we're already attached to an Android window then we're now attached to both a renderer // and the Android window. We can begin rendering now. if (isSurfaceAvailableForRendering) { + Log.d(TAG, "Surface is available for rendering. Connecting."); connectSurfaceToRenderer(); } } @@ -179,5 +185,6 @@ public void updateSemantics(ByteBuffer buffer, String[] strings) { @Override public void onFirstFrameRendered() { // TODO(mattcarroll): decide where this method should live and what it needs to do. + Log.d(TAG, "onFirstFrameRendered()"); } } diff --git a/shell/platform/android/io/flutter/embedding/engine/android/FlutterTextureView.java b/shell/platform/android/io/flutter/embedding/engine/android/FlutterTextureView.java index 8ea3fee2d6327..c12c2fa4274fc 100644 --- a/shell/platform/android/io/flutter/embedding/engine/android/FlutterTextureView.java +++ b/shell/platform/android/io/flutter/embedding/engine/android/FlutterTextureView.java @@ -111,11 +111,14 @@ private void init() { * Invoked by the owner of this {@code FlutterTextureView} when it wants to begin rendering * a Flutter UI to this {@code FlutterTextureView}. * - * If an Android {@link SurfaceTexture} is available, this method will begin rendering - * {@link FlutterRenderer}'s Flutter UI to this {@code FlutterTextureView}. + * If an Android {@link SurfaceTexture} is available, this method will give that + * {@link SurfaceTexture} to the given {@link FlutterRenderer} to begin rendering + * Flutter's UI to this {@code FlutterTextureView}. * - * If no Android {@link SurfaceTexture} is available yet, this {@code FlutterSurfaceView} - * will wait until a {@link SurfaceTexture} becomes available and then begin rendering. + * If no Android {@link SurfaceTexture} is available yet, this {@code FlutterTextureView} + * will wait until a {@link SurfaceTexture} becomes available and then give that + * {@link SurfaceTexture} to the given {@link FlutterRenderer} to begin rendering + * Flutter's UI to this {@code FlutterTextureView}. */ public void attachToRenderer(@NonNull FlutterRenderer flutterRenderer) { if (this.flutterRenderer != null) { @@ -193,5 +196,6 @@ public void updateSemantics(ByteBuffer buffer, String[] strings) { @Override public void onFirstFrameRendered() { // TODO(mattcarroll): decide where this method should live and what it needs to do. + Log.d(TAG, "onFirstFrameRendered()"); } } diff --git a/shell/platform/android/io/flutter/embedding/engine/android/FlutterView.java b/shell/platform/android/io/flutter/embedding/engine/android/FlutterView.java index fad69bac0ed97..aee6a5a95547c 100644 --- a/shell/platform/android/io/flutter/embedding/engine/android/FlutterView.java +++ b/shell/platform/android/io/flutter/embedding/engine/android/FlutterView.java @@ -17,10 +17,9 @@ import android.view.KeyEvent; import android.view.MotionEvent; import android.view.WindowInsets; +import android.view.WindowManager; import android.view.inputmethod.EditorInfo; import android.view.inputmethod.InputConnection; -import android.view.inputmethod.InputMethod; -import android.view.inputmethod.InputMethodManager; import android.widget.FrameLayout; import java.util.ArrayList; @@ -30,6 +29,7 @@ import io.flutter.embedding.engine.FlutterEngine; import io.flutter.embedding.engine.renderer.FlutterRenderer; import io.flutter.plugin.editing.TextInputPlugin; +import io.flutter.view.VsyncWaiter; /** * Displays a Flutter UI on an Android device. @@ -77,6 +77,9 @@ public class FlutterView extends FrameLayout { @Nullable private AndroidKeyProcessor androidKeyProcessor; + // Directly implemented View behavior that communicates with Flutter. + private final FlutterRenderer.ViewportMetrics viewportMetrics = new FlutterRenderer.ViewportMetrics(); + /** * Constructs a {@code FlutterSurfaceView} programmatically, without any XML attributes. * @@ -158,8 +161,10 @@ protected void onConfigurationChanged(Configuration newConfig) { */ @Override protected void onSizeChanged(int width, int height, int oldWidth, int oldHeight) { - // TODO(mattcarroll): hookup to viewport metrics. super.onSizeChanged(width, height, oldWidth, oldHeight); + viewportMetrics.width = width; + viewportMetrics.height = height; + sendViewportMetricsToFlutter(); } /** @@ -174,8 +179,22 @@ protected void onSizeChanged(int width, int height, int oldWidth, int oldHeight) */ @Override public final WindowInsets onApplyWindowInsets(WindowInsets insets) { - // TODO(mattcarroll): hookup to Flutter metrics. - return insets; + WindowInsets newInsets = super.onApplyWindowInsets(insets); + + // Status bar (top) and left/right system insets should partially obscure the content (padding). + viewportMetrics.paddingTop = insets.getSystemWindowInsetTop(); + viewportMetrics.paddingRight = insets.getSystemWindowInsetRight(); + viewportMetrics.paddingBottom = 0; + viewportMetrics.paddingLeft = insets.getSystemWindowInsetLeft(); + + // Bottom system inset (keyboard) should adjust scrollable bottom edge (inset). + viewportMetrics.viewInsetTop = 0; + viewportMetrics.viewInsetRight = 0; + viewportMetrics.viewInsetBottom = insets.getSystemWindowInsetBottom(); + viewportMetrics.viewInsetLeft = 0; + sendViewportMetricsToFlutter(); + + return newInsets; } /** @@ -188,8 +207,23 @@ public final WindowInsets onApplyWindowInsets(WindowInsets insets) { @Override @SuppressWarnings("deprecation") protected boolean fitSystemWindows(Rect insets) { - // TODO(mattcarroll): hookup to Flutter metrics. - return super.fitSystemWindows(insets); + if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.KITKAT) { + // Status bar, left/right system insets partially obscure content (padding). + viewportMetrics.paddingTop = insets.top; + viewportMetrics.paddingRight = insets.right; + viewportMetrics.paddingBottom = 0; + viewportMetrics.paddingLeft = insets.left; + + // Bottom system inset (keyboard) should adjust scrollable bottom edge (inset). + viewportMetrics.viewInsetTop = 0; + viewportMetrics.viewInsetRight = 0; + viewportMetrics.viewInsetBottom = insets.bottom; + viewportMetrics.viewInsetLeft = 0; + sendViewportMetricsToFlutter(); + return true; + } else { + return super.fitSystemWindows(insets); + } } //------- End: Process View configuration that Flutter cares about. -------- @@ -312,13 +346,16 @@ public boolean onHoverEvent(MotionEvent event) { * {@link FlutterEngine}. */ public void attachToFlutterEngine(@NonNull FlutterEngine flutterEngine) { + Log.d(TAG, "attachToFlutterEngine()"); if (isAttachedToFlutterEngine()) { if (flutterEngine == this.flutterEngine) { // We are already attached to this FlutterEngine + Log.d(TAG, "Already attached to this engine. Doing nothing."); return; } // Detach from a previous FlutterEngine so we can attach to this new one. + Log.d(TAG, "Currently attached to a different engine. Detaching."); detachFromFlutterEngine(); } @@ -346,6 +383,7 @@ public void attachToFlutterEngine(@NonNull FlutterEngine flutterEngine) { // Push View and Context related information from Android to Flutter. sendUserSettingsToFlutter(); sendLocalesToFlutter(getResources().getConfiguration()); + sendViewportMetricsToFlutter(); } /** @@ -359,7 +397,9 @@ public void attachToFlutterEngine(@NonNull FlutterEngine flutterEngine) { * {@link FlutterEngine}. */ public void detachFromFlutterEngine() { + Log.d(TAG, "detachFromFlutterEngine()"); if (!isAttachedToFlutterEngine()) { + Log.d(TAG, "Not attached to an engine. Doing nothing."); return; } Log.d(TAG, "Detaching from Flutter Engine"); @@ -422,6 +462,18 @@ private void sendUserSettingsToFlutter() { .send(); } + // TODO(mattcarroll): consider introducing a system channel for this communication instead of JNI + private void sendViewportMetricsToFlutter() { + Log.d(TAG, "sendViewportMetricsToFlutter()"); + if (!isAttachedToFlutterEngine()) { + Log.w(TAG, "Tried to send viewport metrics from Android to Flutter but this FlutterView was not attached to a FlutterEngine."); + return; + } + + viewportMetrics.devicePixelRatio = getResources().getDisplayMetrics().density; + flutterEngine.getRenderer().setViewportMetrics(viewportMetrics); + } + /** * Render modes for a {@link FlutterView}. */ diff --git a/shell/platform/android/io/flutter/embedding/engine/renderer/FlutterRenderer.java b/shell/platform/android/io/flutter/embedding/engine/renderer/FlutterRenderer.java index 996ddb4952ed0..35dacea6d467d 100644 --- a/shell/platform/android/io/flutter/embedding/engine/renderer/FlutterRenderer.java +++ b/shell/platform/android/io/flutter/embedding/engine/renderer/FlutterRenderer.java @@ -29,7 +29,7 @@ * code via JNI. The corresponding {@link RenderSurface} is used as a delegate to carry out * certain actions on behalf of this {@code FlutterRenderer} within an Android view hierarchy. * - * {@link FlutterView} is an implementation of a {@link RenderSurface}. + * {@link io.flutter.embedding.engine.android.FlutterView} is an implementation of a {@link RenderSurface}. */ @TargetApi(Build.VERSION_CODES.JELLY_BEAN) public class FlutterRenderer implements TextureRegistry { @@ -49,14 +49,16 @@ public void attachToRenderSurface(@NonNull RenderSurface renderSurface) { } this.renderSurface = renderSurface; + this.renderSurface.attachToRenderer(this); this.flutterJNI.setRenderSurface(renderSurface); } public void detachFromRenderSurface() { // TODO(mattcarroll): determine desired behavior if we're asked to detach without first being attached if (this.renderSurface != null) { - surfaceDestroyed(); + this.renderSurface.detachFromRenderer(); this.renderSurface = null; + surfaceDestroyed(); this.flutterJNI.setRenderSurface(null); } } @@ -157,29 +159,19 @@ public void surfaceDestroyed() { } // TODO(mattcarroll): describe the native behavior that this invokes - public void setViewportMetrics(float devicePixelRatio, - int physicalWidth, - int physicalHeight, - int physicalPaddingTop, - int physicalPaddingRight, - int physicalPaddingBottom, - int physicalPaddingLeft, - int physicalViewInsetTop, - int physicalViewInsetRight, - int physicalViewInsetBottom, - int physicalViewInsetLeft) { + public void setViewportMetrics(@NonNull ViewportMetrics viewportMetrics) { flutterJNI.setViewportMetrics( - devicePixelRatio, - physicalWidth, - physicalHeight, - physicalPaddingTop, - physicalPaddingRight, - physicalPaddingBottom, - physicalPaddingLeft, - physicalViewInsetTop, - physicalViewInsetRight, - physicalViewInsetBottom, - physicalViewInsetLeft + viewportMetrics.devicePixelRatio, + viewportMetrics.width, + viewportMetrics.height, + viewportMetrics.paddingTop, + viewportMetrics.paddingRight, + viewportMetrics.paddingBottom, + viewportMetrics.paddingLeft, + viewportMetrics.viewInsetTop, + viewportMetrics.viewInsetRight, + viewportMetrics.viewInsetBottom, + viewportMetrics.viewInsetLeft ); } @@ -281,4 +273,24 @@ public interface RenderSurface { */ void onFirstFrameRendered(); } + + /** + * Mutable data structure that holds all viewport metrics properties that Flutter cares about. + * + * All distance measurements, e.g., width, height, padding, viewInsets, are measured in device + * pixels, not logical pixels. + */ + public static final class ViewportMetrics { + public float devicePixelRatio = 1.0f; + public int width = 0; + public int height = 0; + public int paddingTop = 0; + public int paddingRight = 0; + public int paddingBottom = 0; + public int paddingLeft = 0; + public int viewInsetTop = 0; + public int viewInsetRight = 0; + public int viewInsetBottom = 0; + public int viewInsetLeft = 0; + } } From 8f1fdcd195239241285f6b59237a00596fa57f95 Mon Sep 17 00:00:00 2001 From: Matt Carroll Date: Mon, 4 Mar 2019 18:02:24 -0800 Subject: [PATCH 1279/1537] Android Embedding PR 14: Almost done with FlutterFragment. (#8000) --- .../engine/android/FlutterFragment.java | 89 ++++++++++++++++++- .../embedding/engine/android/FlutterView.java | 10 +++ 2 files changed, 98 insertions(+), 1 deletion(-) diff --git a/shell/platform/android/io/flutter/embedding/engine/android/FlutterFragment.java b/shell/platform/android/io/flutter/embedding/engine/android/FlutterFragment.java index e4042bbaaa139..47defdf13367a 100644 --- a/shell/platform/android/io/flutter/embedding/engine/android/FlutterFragment.java +++ b/shell/platform/android/io/flutter/embedding/engine/android/FlutterFragment.java @@ -19,6 +19,7 @@ import io.flutter.embedding.engine.FlutterEngine; import io.flutter.embedding.engine.FlutterShellArgs; import io.flutter.embedding.engine.dart.DartExecutor; +import io.flutter.plugin.platform.PlatformPlugin; import io.flutter.view.FlutterMain; import static android.content.ComponentCallbacks2.TRIM_MEMORY_RUNNING_LOW; @@ -160,6 +161,8 @@ protected static Bundle createArgsBundle(@Nullable String dartEntrypoint, private FlutterEngine flutterEngine; @Nullable private FlutterView flutterView; + @Nullable + private PlatformPlugin platformPlugin; public FlutterFragment() { // Ensure that we at least have an empty Bundle of arguments so that we don't @@ -181,11 +184,30 @@ public FlutterEngine getFlutterEngine() { public void onAttach(Context context) { super.onAttach(context); + initializeFlutter(getContextCompat()); + // When "retain instance" is true, the FlutterEngine will survive configuration // changes. Therefore, we create a new one only if one does not already exist. if (flutterEngine == null) { createFlutterEngine(); } + + // Regardless of whether or not a FlutterEngine already existed, the PlatformPlugin + // is bound to a specific Activity. Therefore, it needs to be created and configured + // every time this Fragment attaches to a new Activity. + // TODO(mattcarroll): the PlatformPlugin needs to be reimagined because it implicitly takes + // control of the entire window. This is unacceptable for non-fullscreen + // use-cases. + platformPlugin = new PlatformPlugin(getActivity(), flutterEngine.getPlatformChannel()); + } + + private void initializeFlutter(@NonNull Context context) { + String[] flutterShellArgsArray = getArguments().getStringArray(ARG_FLUTTER_INITIALIZATION_ARGS); + FlutterShellArgs flutterShellArgs = new FlutterShellArgs( + flutterShellArgsArray != null ? flutterShellArgsArray : new String[] {} + ); + + FlutterMain.ensureInitializationComplete(context.getApplicationContext(), flutterShellArgs.toArray()); } /** @@ -307,7 +329,72 @@ protected String getDartEntrypointFunctionName() { // TODO(mattcarroll): determine why this can't be in onResume(). Comment reason, or move if possible. public void onPostResume() { Log.d(TAG, "onPostResume()"); - flutterEngine.getLifecycleChannel().appIsResumed(); + if (flutterEngine != null) { + flutterEngine.getLifecycleChannel().appIsResumed(); + + // TODO(mattcarroll): find a better way to handle the update of UI overlays than calling through + // to platformPlugin. We're implicitly entangling the Window, Activity, Fragment, + // and engine all with this one call. + platformPlugin.onPostResume(); + + // TODO(mattcarroll): consider a more abstract way to invoke this behavior. It is very strange for + // a Fragment to have a seemingly random View responsibility, but this is what + // existed in the original embedding and I don't have a good alternative yet. + flutterView.updateAccessibilityFeatures(); + } else { + Log.w(TAG, "onPostResume() invoked before FlutterFragment was attached to an Activity."); + } + } + + @Override + public void onPause() { + super.onPause(); + Log.d(TAG, "onPause()"); + flutterEngine.getLifecycleChannel().appIsInactive(); + } + + @Override + public void onStop() { + super.onStop(); + Log.d(TAG, "onStop()"); + flutterEngine.getLifecycleChannel().appIsPaused(); + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + Log.d(TAG, "onDestroyView()"); + flutterView.detachFromFlutterEngine(); + } + + @Override + public void onDetach() { + super.onDetach(); + Log.d(TAG, "onDetach()"); + + // Null out the platformPlugin to avoid a possible retain cycle between the plugin, this Fragment, + // and this Fragment's Activity. + platformPlugin = null; + + // Destroy our FlutterEngine if we're not set to retain it. + if (!retainFlutterIsolateAfterFragmentDestruction()) { + flutterEngine.destroy(); + flutterEngine = null; + } + } + + /** + * Returns true if the {@link FlutterEngine} within this {@code FlutterFragment} should outlive + * the {@code FlutterFragment}, itself. + * + * Defaults to false. This method can be overridden in subclasses to retain the + * {@link FlutterEngine}. + */ + // TODO(mattcarroll): consider a dynamic determination of this preference based on whether the + // engine was created automatically, or if the engine was provided manually. + // Manually provided engines should probably not be destroyed. + protected boolean retainFlutterIsolateAfterFragmentDestruction() { + return false; } /** diff --git a/shell/platform/android/io/flutter/embedding/engine/android/FlutterView.java b/shell/platform/android/io/flutter/embedding/engine/android/FlutterView.java index aee6a5a95547c..c7d86cbf2e6ab 100644 --- a/shell/platform/android/io/flutter/embedding/engine/android/FlutterView.java +++ b/shell/platform/android/io/flutter/embedding/engine/android/FlutterView.java @@ -9,6 +9,7 @@ import android.graphics.Rect; import android.os.Build; import android.os.LocaleList; +import android.provider.Settings; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.text.format.DateFormat; @@ -334,6 +335,15 @@ public boolean onHoverEvent(MotionEvent event) { } //-------- End: Process UI I/O that Flutter cares about. --------- + //-------- Start: Accessibility ------- + /** + * No-op. Placeholder so that the containing Fragment can call through, but not yet implemented. + */ + public void updateAccessibilityFeatures() { + // TODO(mattcarroll): bring in accessibility code from old FlutterView. + } + //-------- End: Accessibility --------- + /** * Connects this {@code FlutterView} to the given {@link FlutterEngine}. * From 629c0d8366571d3881ba05d9ac1899e246d6fb59 Mon Sep 17 00:00:00 2001 From: Ben Konyi Date: Mon, 4 Mar 2019 17:54:40 -0800 Subject: [PATCH 1280/1537] Roll src/third_party/dart 7d8ffe0daf..571ea80e11 (3 commits) 571ea80e11 [vm/compiler] added assert to kernel flowgraph builder b88e6dd910 Fix the type argument on the deep flattening spread test. 62df51cb34 Eliminate uses of old AST node types from parts of the analyzer --- DEPS | 2 +- ci/licenses_golden/licenses_third_party | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 6775e0e664399..9eca9db96ef2d 100644 --- a/DEPS +++ b/DEPS @@ -31,7 +31,7 @@ vars = { # Dart is: https://github.com/dart-lang/sdk/blob/master/DEPS. # You can use //tools/dart/create_updated_flutter_deps.py to produce # updated revision list of existing dependencies. - 'dart_revision': '7d8ffe0daf8148dd281884ec3911f1274e21f0af', + 'dart_revision': '571ea80e1101e706980ea8aefa7fc18a0c8ba2ec', # WARNING: DO NOT EDIT MANUALLY # The lines between blank lines above and below are generated by a script. See create_updated_flutter_deps.py diff --git a/ci/licenses_golden/licenses_third_party b/ci/licenses_golden/licenses_third_party index 5ade61510b999..1e1b8c898d1c0 100644 --- a/ci/licenses_golden/licenses_third_party +++ b/ci/licenses_golden/licenses_third_party @@ -1,4 +1,4 @@ -Signature: 1405abeaed1a76feefc683d14369d056 +Signature: 4a8dfa2afe659f0a6057032c092f7496 UNUSED LICENSES: From 2cd9b41ba50e78171515b2e4883bc9945b448ff8 Mon Sep 17 00:00:00 2001 From: Ian Hickson Date: Mon, 4 Mar 2019 18:43:47 -0800 Subject: [PATCH 1281/1537] Select MPL instead of LGPL (#7991) --- ci/licenses_golden/licenses_skia | 971 ++++++++++++++---------------- ci/licenses_golden/tool_signature | 2 +- sky/packages/sky_engine/LICENSE | 969 ++++++++++++++--------------- tools/licenses/README.md | 42 +- tools/licenses/data/mozilla-1.1 | 469 +++++++++++++++ tools/licenses/lib/licenses.dart | 4 + tools/licenses/lib/main.dart | 51 +- tools/licenses/lib/patterns.dart | 8 +- 8 files changed, 1486 insertions(+), 1030 deletions(-) create mode 100644 tools/licenses/data/mozilla-1.1 diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 78e6827b929ff..69608c8b69161 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -435,512 +435,477 @@ limitations under the License. ==================================================================================================== LIBRARY: gif ORIGIN: ../../../third_party/skia/third_party/gif/SkGifImageReader.cpp -TYPE: LicenseType.lgpl +TYPE: LicenseType.mpl FILE: ../../../third_party/skia/third_party/gif/SkGifImageReader.cpp FILE: ../../../third_party/skia/third_party/gif/SkGifImageReader.h ---------------------------------------------------------------------------------------------------- -GNU LESSER GENERAL PUBLIC LICENSE - Version 2.1, February 1999 - -Copyright (C) 1991, 1999 Free Software Foundation, Inc. -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -Everyone is permitted to copy and distribute verbatim copies -of this license document, but changing it is not allowed. - -[This is the first released version of the Lesser GPL. It also counts - as the successor of the GNU Library Public License, version 2, hence - the version number 2.1.] - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -Licenses are intended to guarantee your freedom to share and change -free software--to make sure the software is free for all its users. - - This license, the Lesser General Public License, applies to some -specially designated software packages--typically libraries--of the -Free Software Foundation and other authors who decide to use it. You -can use it too, but we suggest you first think carefully about whether -this license or the ordinary General Public License is the better -strategy to use in any particular case, based on the explanations below. - - When we speak of free software, we are referring to freedom of use, -not price. Our General Public Licenses are designed to make sure that -you have the freedom to distribute copies of free software (and charge -for this service if you wish); that you receive source code or can get -it if you want it; that you can change the software and use pieces of -it in new free programs; and that you are informed that you can do -these things. - - To protect your rights, we need to make restrictions that forbid -distributors to deny you these rights or to ask you to surrender these -rights. These restrictions translate to certain responsibilities for -you if you distribute copies of the library or if you modify it. - - For example, if you distribute copies of the library, whether gratis -or for a fee, you must give the recipients all the rights that we gave -you. You must make sure that they, too, receive or can get the source -code. If you link other code with the library, you must provide -complete object files to the recipients, so that they can relink them -with the library after making changes to the library and recompiling -it. And you must show them these terms so they know their rights. - - We protect your rights with a two-step method: (1) we copyright the -library, and (2) we offer you this license, which gives you legal -permission to copy, distribute and/or modify the library. - - To protect each distributor, we want to make it very clear that -there is no warranty for the free library. Also, if the library is -modified by someone else and passed on, the recipients should know -that what they have is not the original version, so that the original -author's reputation will not be affected by problems that might be -introduced by others. - - Finally, software patents pose a constant threat to the existence of -any free program. We wish to make sure that a company cannot -effectively restrict the users of a free program by obtaining a -restrictive license from a patent holder. Therefore, we insist that -any patent license obtained for a version of the library must be -consistent with the full freedom of use specified in this license. - - Most GNU software, including some libraries, is covered by the -ordinary GNU General Public License. This license, the GNU Lesser -General Public License, applies to certain designated libraries, and -is quite different from the ordinary General Public License. We use -this license for certain libraries in order to permit linking those -libraries into non-free programs. - - When a program is linked with a library, whether statically or using -a shared library, the combination of the two is legally speaking a -combined work, a derivative of the original library. The ordinary -General Public License therefore permits such linking only if the -entire combination fits its criteria of freedom. The Lesser General -Public License permits more lax criteria for linking other code with -the library. - - We call this license the "Lesser" General Public License because it -does Less to protect the user's freedom than the ordinary General -Public License. It also provides other free software developers Less -of an advantage over competing non-free programs. These disadvantages -are the reason we use the ordinary General Public License for many -libraries. However, the Lesser license provides advantages in certain -special circumstances. - - For example, on rare occasions, there may be a special need to -encourage the widest possible use of a certain library, so that it becomes -a de-facto standard. To achieve this, non-free programs must be -allowed to use the library. A more frequent case is that a free -library does the same job as widely used non-free libraries. In this -case, there is little to gain by limiting the free library to free -software only, so we use the Lesser General Public License. - - In other cases, permission to use a particular library in non-free -programs enables a greater number of people to use a large body of -free software. For example, permission to use the GNU C Library in -non-free programs enables many more people to use the whole GNU -operating system, as well as its variant, the GNU/Linux operating -system. - - Although the Lesser General Public License is Less protective of the -users' freedom, it does ensure that the user of a program that is -linked with the Library has the freedom and the wherewithal to run -that program using a modified version of the Library. - - The precise terms and conditions for copying, distribution and -modification follow. Pay close attention to the difference between a -"work based on the library" and a "work that uses the library". The -former contains code derived from the library, whereas the latter must -be combined with the library in order to run. - - GNU LESSER GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License Agreement applies to any software library or other -program which contains a notice placed by the copyright holder or -other authorized party saying it may be distributed under the terms of -this Lesser General Public License (also called "this License"). -Each licensee is addressed as "you". - - A "library" means a collection of software functions and/or data -prepared so as to be conveniently linked with application programs -(which use some of those functions and data) to form executables. - - The "Library", below, refers to any such software library or work -which has been distributed under these terms. A "work based on the -Library" means either the Library or any derivative work under -copyright law: that is to say, a work containing the Library or a -portion of it, either verbatim or with modifications and/or translated -straightforwardly into another language. (Hereinafter, translation is -included without limitation in the term "modification".) - - "Source code" for a work means the preferred form of the work for -making modifications to it. For a library, complete source code means -all the source code for all modules it contains, plus any associated -interface definition files, plus the scripts used to control compilation -and installation of the library. - - Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running a program using the Library is not restricted, and output from -such a program is covered only if its contents constitute a work based -on the Library (independent of the use of the Library in a tool for -writing it). Whether that is true depends on what the Library does -and what the program that uses the Library does. - - 1. You may copy and distribute verbatim copies of the Library's -complete source code as you receive it, in any medium, provided that -you conspicuously and appropriately publish on each copy an -appropriate copyright notice and disclaimer of warranty; keep intact -all the notices that refer to this License and to the absence of any -warranty; and distribute a copy of this License along with the -Library. - - You may charge a fee for the physical act of transferring a copy, -and you may at your option offer warranty protection in exchange for a -fee. - - 2. You may modify your copy or copies of the Library or any portion -of it, thus forming a work based on the Library, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) The modified work must itself be a software library. - - b) You must cause the files modified to carry prominent notices - stating that you changed the files and the date of any change. - - c) You must cause the whole of the work to be licensed at no - charge to all third parties under the terms of this License. - - d) If a facility in the modified Library refers to a function or a - table of data to be supplied by an application program that uses - the facility, other than as an argument passed when the facility - is invoked, then you must make a good faith effort to ensure that, - in the event an application does not supply such function or - table, the facility still operates, and performs whatever part of - its purpose remains meaningful. - - (For example, a function in a library to compute square roots has - a purpose that is entirely well-defined independent of the - application. Therefore, Subsection 2d requires that any - application-supplied function or table used by this function must - be optional: if the application does not supply it, the square - root function must still compute square roots.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Library, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Library, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote -it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Library. - -In addition, mere aggregation of another work not based on the Library -with the Library (or with a work based on the Library) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may opt to apply the terms of the ordinary GNU General Public -License instead of this License to a given copy of the Library. To do -this, you must alter all the notices that refer to this License, so -that they refer to the ordinary GNU General Public License, version 2, -instead of to this License. (If a newer version than version 2 of the -ordinary GNU General Public License has appeared, then you can specify -that version instead if you wish.) Do not make any other change in -these notices. - - Once this change is made in a given copy, it is irreversible for -that copy, so the ordinary GNU General Public License applies to all -subsequent copies and derivative works made from that copy. - - This option is useful when you wish to copy part of the code of -the Library into a program that is not a library. - - 4. You may copy and distribute the Library (or a portion or -derivative of it, under Section 2) in object code or executable form -under the terms of Sections 1 and 2 above provided that you accompany -it with the complete corresponding machine-readable source code, which -must be distributed under the terms of Sections 1 and 2 above on a -medium customarily used for software interchange. - - If distribution of object code is made by offering access to copy -from a designated place, then offering equivalent access to copy the -source code from the same place satisfies the requirement to -distribute the source code, even though third parties are not -compelled to copy the source along with the object code. - - 5. A program that contains no derivative of any portion of the -Library, but is designed to work with the Library by being compiled or -linked with it, is called a "work that uses the Library". Such a -work, in isolation, is not a derivative work of the Library, and -therefore falls outside the scope of this License. - - However, linking a "work that uses the Library" with the Library -creates an executable that is a derivative of the Library (because it -contains portions of the Library), rather than a "work that uses the -library". The executable is therefore covered by this License. -Section 6 states terms for distribution of such executables. - - When a "work that uses the Library" uses material from a header file -that is part of the Library, the object code for the work may be a -derivative work of the Library even though the source code is not. -Whether this is true is especially significant if the work can be -linked without the Library, or if the work is itself a library. The -threshold for this to be true is not precisely defined by law. - - If such an object file uses only numerical parameters, data -structure layouts and accessors, and small macros and small inline -functions (ten lines or less in length), then the use of the object -file is unrestricted, regardless of whether it is legally a derivative -work. (Executables containing this object code plus portions of the -Library will still fall under Section 6.) - - Otherwise, if the work is a derivative of the Library, you may -distribute the object code for the work under the terms of Section 6. -Any executables containing that work also fall under Section 6, -whether or not they are linked directly with the Library itself. - - 6. As an exception to the Sections above, you may also combine or -link a "work that uses the Library" with the Library to produce a -work containing portions of the Library, and distribute that work -under terms of your choice, provided that the terms permit -modification of the work for the customer's own use and reverse -engineering for debugging such modifications. - - You must give prominent notice with each copy of the work that the -Library is used in it and that the Library and its use are covered by -this License. You must supply a copy of this License. If the work -during execution displays copyright notices, you must include the -copyright notice for the Library among them, as well as a reference -directing the user to the copy of this License. Also, you must do one -of these things: - - a) Accompany the work with the complete corresponding - machine-readable source code for the Library including whatever - changes were used in the work (which must be distributed under - Sections 1 and 2 above); and, if the work is an executable linked - with the Library, with the complete machine-readable "work that - uses the Library", as object code and/or source code, so that the - user can modify the Library and then relink to produce a modified - executable containing the modified Library. (It is understood - that the user who changes the contents of definitions files in the - Library will not necessarily be able to recompile the application - to use the modified definitions.) - - b) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (1) uses at run time a - copy of the library already present on the user's computer system, - rather than copying library functions into the executable, and (2) - will operate properly with a modified version of the library, if - the user installs one, as long as the modified version is - interface-compatible with the version that the work was made with. - - c) Accompany the work with a written offer, valid for at - least three years, to give the same user the materials - specified in Subsection 6a, above, for a charge no more - than the cost of performing this distribution. - - d) If distribution of the work is made by offering access to copy - from a designated place, offer equivalent access to copy the above - specified materials from the same place. - - e) Verify that the user has already received a copy of these - materials or that you have already sent this user a copy. - - For an executable, the required form of the "work that uses the -Library" must include any data and utility programs needed for -reproducing the executable from it. However, as a special exception, -the materials to be distributed need not include anything that is -normally distributed (in either source or binary form) with the major -components (compiler, kernel, and so on) of the operating system on -which the executable runs, unless that component itself accompanies -the executable. - - It may happen that this requirement contradicts the license -restrictions of other proprietary libraries that do not normally -accompany the operating system. Such a contradiction means you cannot -use both them and the Library together in an executable that you -distribute. - - 7. You may place library facilities that are a work based on the -Library side-by-side in a single library together with other library -facilities not covered by this License, and distribute such a combined -library, provided that the separate distribution of the work based on -the Library and of the other library facilities is otherwise -permitted, and provided that you do these two things: - - a) Accompany the combined library with a copy of the same work - based on the Library, uncombined with any other library - facilities. This must be distributed under the terms of the - Sections above. - - b) Give prominent notice with the combined library of the fact - that part of it is a work based on the Library, and explaining - where to find the accompanying uncombined form of the same work. - - 8. You may not copy, modify, sublicense, link with, or distribute -the Library except as expressly provided under this License. Any -attempt otherwise to copy, modify, sublicense, link with, or -distribute the Library is void, and will automatically terminate your -rights under this License. However, parties who have received copies, -or rights, from you under this License will not have their licenses -terminated so long as such parties remain in full compliance. - - 9. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Library or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Library (or any work based on the -Library), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Library or works based on it. - - 10. Each time you redistribute the Library (or any work based on the -Library), the recipient automatically receives a license from the -original licensor to copy, distribute, link with or modify the Library -subject to these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties with -this License. - - 11. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Library at all. For example, if a patent -license would not permit royalty-free redistribution of the Library by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Library. - -If any portion of this section is held invalid or unenforceable under any -particular circumstance, the balance of the section is intended to apply, -and the section as a whole is intended to apply in other circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 12. If the distribution and/or use of the Library is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Library under this License may add -an explicit geographical distribution limitation excluding those countries, -so that distribution is permitted only in or among countries not thus -excluded. In such case, this License incorporates the limitation as if -written in the body of this License. - - 13. The Free Software Foundation may publish revised and/or new -versions of the Lesser General Public License from time to time. -Such new versions will be similar in spirit to the present version, -but may differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Library -specifies a version number of this License which applies to it and -"any later version", you have the option of following the terms and -conditions either of that version or of any later version published by -the Free Software Foundation. If the Library does not specify a -license version number, you may choose any version ever published by -the Free Software Foundation. - - 14. If you wish to incorporate parts of the Library into other free -programs whose distribution conditions are incompatible with these, -write to the author to ask for permission. For software which is -copyrighted by the Free Software Foundation, write to the Free -Software Foundation; we sometimes make exceptions for this. Our -decision will be guided by the two goals of preserving the free status -of all derivatives of our free software and of promoting the sharing -and reuse of software generally. - - NO WARRANTY - - 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO -WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. -EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR -OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY -KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE -LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME -THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN -WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY -AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU -FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR -CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE -LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING -RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A -FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF -SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Libraries - - If you develop a new library, and you want it to be of the greatest -possible use to the public, we recommend making it free software that -everyone can redistribute and change. You can do so by permitting -redistribution under these terms (or, alternatively, under the terms of the -ordinary General Public License). - - To apply these terms, attach the following notices to the library. It is -safest to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least the -"copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - -Also add information on how to contact you by electronic and paper mail. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the library, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the - library `Frob' (a library for tweaking knobs) written by James Random Hacker. - - , 1 April 1990 - Ty Coon, President of Vice - -That's all there is to it! +MOZILLA PUBLIC LICENSE + Version 1.1 + +1. Definitions. + + 1.0.1. "Commercial Use" means distribution or otherwise making the + Covered Code available to a third party. + + 1.1. "Contributor" means each entity that creates or contributes to + the creation of Modifications. + + 1.2. "Contributor Version" means the combination of the Original + Code, prior Modifications used by a Contributor, and the Modifications + made by that particular Contributor. + + 1.3. "Covered Code" means the Original Code or Modifications or the + combination of the Original Code and Modifications, in each case + including portions thereof. + + 1.4. "Electronic Distribution Mechanism" means a mechanism generally + accepted in the software development community for the electronic + transfer of data. + + 1.5. "Executable" means Covered Code in any form other than Source + Code. + + 1.6. "Initial Developer" means the individual or entity identified + as the Initial Developer in the Source Code notice required by Exhibit + A. + + 1.7. "Larger Work" means a work which combines Covered Code or + portions thereof with code not governed by the terms of this License. + + 1.8. "License" means this document. + + 1.8.1. "Licensable" means having the right to grant, to the maximum + extent possible, whether at the time of the initial grant or + subsequently acquired, any and all of the rights conveyed herein. + + 1.9. "Modifications" means any addition to or deletion from the + substance or structure of either the Original Code or any previous + Modifications. When Covered Code is released as a series of files, a + Modification is: + A. Any addition to or deletion from the contents of a file + containing Original Code or previous Modifications. + + B. Any new file that contains any part of the Original Code or + previous Modifications. + + 1.10. "Original Code" means Source Code of computer software code + which is described in the Source Code notice required by Exhibit A as + Original Code, and which, at the time of its release under this + License is not already Covered Code governed by this License. + + 1.10.1. "Patent Claims" means any patent claim(s), now owned or + hereafter acquired, including without limitation, method, process, + and apparatus claims, in any patent Licensable by grantor. + + 1.11. "Source Code" means the preferred form of the Covered Code for + making modifications to it, including all modules it contains, plus + any associated interface definition files, scripts used to control + compilation and installation of an Executable, or source code + differential comparisons against either the Original Code or another + well known, available Covered Code of the Contributor's choice. The + Source Code can be in a compressed or archival form, provided the + appropriate decompression or de-archiving software is widely available + for no charge. + + 1.12. "You" (or "Your") means an individual or a legal entity + exercising rights under, and complying with all of the terms of, this + License or a future version of this License issued under Section 6.1. + For legal entities, "You" includes any entity which controls, is + controlled by, or is under common control with You. For purposes of + this definition, "control" means (a) the power, direct or indirect, + to cause the direction or management of such entity, whether by + contract or otherwise, or (b) ownership of more than fifty percent + (50%) of the outstanding shares or beneficial ownership of such + entity. + +2. Source Code License. + + 2.1. The Initial Developer Grant. + The Initial Developer hereby grants You a world-wide, royalty-free, + non-exclusive license, subject to third party intellectual property + claims: + (a) under intellectual property rights (other than patent or + trademark) Licensable by Initial Developer to use, reproduce, + modify, display, perform, sublicense and distribute the Original + Code (or portions thereof) with or without Modifications, and/or + as part of a Larger Work; and + + (b) under Patents Claims infringed by the making, using or + selling of Original Code, to make, have made, use, practice, + sell, and offer for sale, and/or otherwise dispose of the + Original Code (or portions thereof). + + (c) the licenses granted in this Section 2.1(a) and (b) are + effective on the date Initial Developer first distributes + Original Code under the terms of this License. + + (d) Notwithstanding Section 2.1(b) above, no patent license is + granted: 1) for code that You delete from the Original Code; 2) + separate from the Original Code; or 3) for infringements caused + by: i) the modification of the Original Code or ii) the + combination of the Original Code with other software or devices. + + 2.2. Contributor Grant. + Subject to third party intellectual property claims, each Contributor + hereby grants You a world-wide, royalty-free, non-exclusive license + + (a) under intellectual property rights (other than patent or + trademark) Licensable by Contributor, to use, reproduce, modify, + display, perform, sublicense and distribute the Modifications + created by such Contributor (or portions thereof) either on an + unmodified basis, with other Modifications, as Covered Code + and/or as part of a Larger Work; and + + (b) under Patent Claims infringed by the making, using, or + selling of Modifications made by that Contributor either alone + and/or in combination with its Contributor Version (or portions + of such combination), to make, use, sell, offer for sale, have + made, and/or otherwise dispose of: 1) Modifications made by that + Contributor (or portions thereof); and 2) the combination of + Modifications made by that Contributor with its Contributor + Version (or portions of such combination). + + (c) the licenses granted in Sections 2.2(a) and 2.2(b) are + effective on the date Contributor first makes Commercial Use of + the Covered Code. + + (d) Notwithstanding Section 2.2(b) above, no patent license is + granted: 1) for any code that Contributor has deleted from the + Contributor Version; 2) separate from the Contributor Version; + 3) for infringements caused by: i) third party modifications of + Contributor Version or ii) the combination of Modifications made + by that Contributor with other software (except as part of the + Contributor Version) or other devices; or 4) under Patent Claims + infringed by Covered Code in the absence of Modifications made by + that Contributor. + +3. Distribution Obligations. + + 3.1. Application of License. + The Modifications which You create or to which You contribute are + governed by the terms of this License, including without limitation + Section 2.2. The Source Code version of Covered Code may be + distributed only under the terms of this License or a future version + of this License released under Section 6.1, and You must include a + copy of this License with every copy of the Source Code You + distribute. You may not offer or impose any terms on any Source Code + version that alters or restricts the applicable version of this + License or the recipients' rights hereunder. However, You may include + an additional document offering the additional rights described in + Section 3.5. + + 3.2. Availability of Source Code. + Any Modification which You create or to which You contribute must be + made available in Source Code form under the terms of this License + either on the same media as an Executable version or via an accepted + Electronic Distribution Mechanism to anyone to whom you made an + Executable version available; and if made available via Electronic + Distribution Mechanism, must remain available for at least twelve (12) + months after the date it initially became available, or at least six + (6) months after a subsequent version of that particular Modification + has been made available to such recipients. You are responsible for + ensuring that the Source Code version remains available even if the + Electronic Distribution Mechanism is maintained by a third party. + + 3.3. Description of Modifications. + You must cause all Covered Code to which You contribute to contain a + file documenting the changes You made to create that Covered Code and + the date of any change. You must include a prominent statement that + the Modification is derived, directly or indirectly, from Original + Code provided by the Initial Developer and including the name of the + Initial Developer in (a) the Source Code, and (b) in any notice in an + Executable version or related documentation in which You describe the + origin or ownership of the Covered Code. + + 3.4. Intellectual Property Matters + (a) Third Party Claims. + If Contributor has knowledge that a license under a third party's + intellectual property rights is required to exercise the rights + granted by such Contributor under Sections 2.1 or 2.2, + Contributor must include a text file with the Source Code + distribution titled "LEGAL" which describes the claim and the + party making the claim in sufficient detail that a recipient will + know whom to contact. If Contributor obtains such knowledge after + the Modification is made available as described in Section 3.2, + Contributor shall promptly modify the LEGAL file in all copies + Contributor makes available thereafter and shall take other steps + (such as notifying appropriate mailing lists or newsgroups) + reasonably calculated to inform those who received the Covered + Code that new knowledge has been obtained. + + (b) Contributor APIs. + If Contributor's Modifications include an application programming + interface and Contributor has knowledge of patent licenses which + are reasonably necessary to implement that API, Contributor must + also include this information in the LEGAL file. + + (c) Representations. + Contributor represents that, except as disclosed pursuant to + Section 3.4(a) above, Contributor believes that Contributor's + Modifications are Contributor's original creation(s) and/or + Contributor has sufficient rights to grant the rights conveyed by + this License. + + 3.5. Required Notices. + You must duplicate the notice in Exhibit A in each file of the Source + Code. If it is not possible to put such notice in a particular Source + Code file due to its structure, then You must include such notice in a + location (such as a relevant directory) where a user would be likely + to look for such a notice. If You created one or more Modification(s) + You may add your name as a Contributor to the notice described in + Exhibit A. You must also duplicate this License in any documentation + for the Source Code where You describe recipients' rights or ownership + rights relating to Covered Code. You may choose to offer, and to + charge a fee for, warranty, support, indemnity or liability + obligations to one or more recipients of Covered Code. However, You + may do so only on Your own behalf, and not on behalf of the Initial + Developer or any Contributor. You must make it absolutely clear than + any such warranty, support, indemnity or liability obligation is + offered by You alone, and You hereby agree to indemnify the Initial + Developer and every Contributor for any liability incurred by the + Initial Developer or such Contributor as a result of warranty, + support, indemnity or liability terms You offer. + + 3.6. Distribution of Executable Versions. + You may distribute Covered Code in Executable form only if the + requirements of Section 3.1-3.5 have been met for that Covered Code, + and if You include a notice stating that the Source Code version of + the Covered Code is available under the terms of this License, + including a description of how and where You have fulfilled the + obligations of Section 3.2. The notice must be conspicuously included + in any notice in an Executable version, related documentation or + collateral in which You describe recipients' rights relating to the + Covered Code. You may distribute the Executable version of Covered + Code or ownership rights under a license of Your choice, which may + contain terms different from this License, provided that You are in + compliance with the terms of this License and that the license for the + Executable version does not attempt to limit or alter the recipient's + rights in the Source Code version from the rights set forth in this + License. If You distribute the Executable version under a different + license You must make it absolutely clear that any terms which differ + from this License are offered by You alone, not by the Initial + Developer or any Contributor. You hereby agree to indemnify the + Initial Developer and every Contributor for any liability incurred by + the Initial Developer or such Contributor as a result of any such + terms You offer. + + 3.7. Larger Works. + You may create a Larger Work by combining Covered Code with other code + not governed by the terms of this License and distribute the Larger + Work as a single product. In such a case, You must make sure the + requirements of this License are fulfilled for the Covered Code. + +4. Inability to Comply Due to Statute or Regulation. + + If it is impossible for You to comply with any of the terms of this + License with respect to some or all of the Covered Code due to + statute, judicial order, or regulation then You must: (a) comply with + the terms of this License to the maximum extent possible; and (b) + describe the limitations and the code they affect. Such description + must be included in the LEGAL file described in Section 3.4 and must + be included with all distributions of the Source Code. Except to the + extent prohibited by statute or regulation, such description must be + sufficiently detailed for a recipient of ordinary skill to be able to + understand it. + +5. Application of this License. + + This License applies to code to which the Initial Developer has + attached the notice in Exhibit A and to related Covered Code. + +6. Versions of the License. + + 6.1. New Versions. + Netscape Communications Corporation ("Netscape") may publish revised + and/or new versions of the License from time to time. Each version + will be given a distinguishing version number. + + 6.2. Effect of New Versions. + Once Covered Code has been published under a particular version of the + License, You may always continue to use it under the terms of that + version. You may also choose to use such Covered Code under the terms + of any subsequent version of the License published by Netscape. No one + other than Netscape has the right to modify the terms applicable to + Covered Code created under this License. + + 6.3. Derivative Works. + If You create or use a modified version of this License (which you may + only do in order to apply it to code which is not already Covered Code + governed by this License), You must (a) rename Your license so that + the phrases "Mozilla", "MOZILLAPL", "MOZPL", "Netscape", + "MPL", "NPL" or any confusingly similar phrase do not appear in your + license (except to note that your license differs from this License) + and (b) otherwise make it clear that Your version of the license + contains terms which differ from the Mozilla Public License and + Netscape Public License. (Filling in the name of the Initial + Developer, Original Code or Contributor in the notice described in + Exhibit A shall not of themselves be deemed to be modifications of + this License.) + +7. DISCLAIMER OF WARRANTY. + + COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, + WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF + DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. + THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE + IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT, + YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE + COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER + OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF + ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER. + +8. TERMINATION. + + 8.1. This License and the rights granted hereunder will terminate + automatically if You fail to comply with terms herein and fail to cure + such breach within 30 days of becoming aware of the breach. All + sublicenses to the Covered Code which are properly granted shall + survive any termination of this License. Provisions which, by their + nature, must remain in effect beyond the termination of this License + shall survive. + + 8.2. If You initiate litigation by asserting a patent infringement + claim (excluding declatory judgment actions) against Initial Developer + or a Contributor (the Initial Developer or Contributor against whom + You file such action is referred to as "Participant") alleging that: + + (a) such Participant's Contributor Version directly or indirectly + infringes any patent, then any and all rights granted by such + Participant to You under Sections 2.1 and/or 2.2 of this License + shall, upon 60 days notice from Participant terminate prospectively, + unless if within 60 days after receipt of notice You either: (i) + agree in writing to pay Participant a mutually agreeable reasonable + royalty for Your past and future use of Modifications made by such + Participant, or (ii) withdraw Your litigation claim with respect to + the Contributor Version against such Participant. If within 60 days + of notice, a reasonable royalty and payment arrangement are not + mutually agreed upon in writing by the parties or the litigation claim + is not withdrawn, the rights granted by Participant to You under + Sections 2.1 and/or 2.2 automatically terminate at the expiration of + the 60 day notice period specified above. + + (b) any software, hardware, or device, other than such Participant's + Contributor Version, directly or indirectly infringes any patent, then + any rights granted to You by such Participant under Sections 2.1(b) + and 2.2(b) are revoked effective as of the date You first made, used, + sold, distributed, or had made, Modifications made by that + Participant. + + 8.3. If You assert a patent infringement claim against Participant + alleging that such Participant's Contributor Version directly or + indirectly infringes any patent where such claim is resolved (such as + by license or settlement) prior to the initiation of patent + infringement litigation, then the reasonable value of the licenses + granted by such Participant under Sections 2.1 or 2.2 shall be taken + into account in determining the amount or value of any payment or + license. + + 8.4. In the event of termination under Sections 8.1 or 8.2 above, + all end user license agreements (excluding distributors and resellers) + which have been validly granted by You or any distributor hereunder + prior to termination shall survive termination. + +9. LIMITATION OF LIABILITY. + + UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT + (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL + DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE, + OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR + ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY + CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, + WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER + COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN + INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF + LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY + RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW + PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE + EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO + THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU. + +10. U.S. GOVERNMENT END USERS. + + The Covered Code is a "commercial item," as that term is defined in + 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer + software" and "commercial computer software documentation," as such + terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 + C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), + all U.S. Government End Users acquire Covered Code with only those + rights set forth herein. + +11. MISCELLANEOUS. + + This License represents the complete agreement concerning subject + matter hereof. If any provision of this License is held to be + unenforceable, such provision shall be reformed only to the extent + necessary to make it enforceable. This License shall be governed by + California law provisions (except to the extent applicable law, if + any, provides otherwise), excluding its conflict-of-law provisions. + With respect to disputes in which at least one party is a citizen of, + or an entity chartered or registered to do business in the United + States of America, any litigation relating to this License shall be + subject to the jurisdiction of the Federal Courts of the Northern + District of California, with venue lying in Santa Clara County, + California, with the losing party responsible for costs, including + without limitation, court costs and reasonable attorneys' fees and + expenses. The application of the United Nations Convention on + Contracts for the International Sale of Goods is expressly excluded. + Any law or regulation which provides that the language of a contract + shall be construed against the drafter shall not apply to this + License. + +12. RESPONSIBILITY FOR CLAIMS. + + As between Initial Developer and the Contributors, each party is + responsible for claims and damages arising, directly or indirectly, + out of its utilization of rights under this License and You agree to + work with Initial Developer and Contributors to distribute such + responsibility on an equitable basis. Nothing herein is intended or + shall be deemed to constitute any admission of liability. + +13. MULTIPLE-LICENSED CODE. + + Initial Developer may designate portions of the Covered Code as + "Multiple-Licensed". "Multiple-Licensed" means that the Initial + Developer permits you to utilize portions of the Covered Code under + Your choice of the MPL or the alternative licenses, if any, specified + by the Initial Developer in the file described in Exhibit A. + +EXHIBIT A -Mozilla Public License. + + ``The contents of this file are subject to the Mozilla Public License + Version 1.1 (the "License"); you may not use this file except in + compliance with the License. You may obtain a copy of the License at + https://www.mozilla.org/MPL + + Software distributed under the License is distributed on an "AS IS" + basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the + License for the specific language governing rights and limitations + under the License. + + The Original Code is ______________________________________. + + The Initial Developer of the Original Code is ________________________. + Portions created by ______________________ are Copyright (C) ______ + _______________________. All Rights Reserved. + + Contributor(s): ______________________________________. + + Alternatively, the contents of this file may be used under the terms + of the _____ license (the "[___] License"), in which case the + provisions of [______] License are applicable instead of those + above. If you wish to allow use of your version of this file only + under the terms of the [____] License and not to allow others to use + your version of this file under the MPL, indicate your decision by + deleting the provisions above and replace them with the notice and + other provisions required by the [___] License. If you do not delete + the provisions above, a recipient may use your version of this file + under either the MPL or the [___] License." + + [NOTE: The text of this Exhibit A may differ slightly from the text of + the notices in the Source Code files of the Original Code. You should + use the text of this Exhibit A rather than the text found in the + Original Code Source Code for Your Modifications.] ==================================================================================================== ==================================================================================================== diff --git a/ci/licenses_golden/tool_signature b/ci/licenses_golden/tool_signature index 30c9333357bfe..2189010017a26 100644 --- a/ci/licenses_golden/tool_signature +++ b/ci/licenses_golden/tool_signature @@ -1,2 +1,2 @@ -Signature: 293c762c71d027f77cf88deb80f9e78e +Signature: 91b3b5b8c1ef9e911fd65b636d009be8 diff --git a/sky/packages/sky_engine/LICENSE b/sky/packages/sky_engine/LICENSE index dcc3e1b66c6f0..0a34be8037ede 100644 --- a/sky/packages/sky_engine/LICENSE +++ b/sky/packages/sky_engine/LICENSE @@ -4210,508 +4210,473 @@ Legal Terms -------------------------------------------------------------------------------- gif -GNU LESSER GENERAL PUBLIC LICENSE - Version 2.1, February 1999 - -Copyright (C) 1991, 1999 Free Software Foundation, Inc. -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -Everyone is permitted to copy and distribute verbatim copies -of this license document, but changing it is not allowed. - -[This is the first released version of the Lesser GPL. It also counts - as the successor of the GNU Library Public License, version 2, hence - the version number 2.1.] - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -Licenses are intended to guarantee your freedom to share and change -free software--to make sure the software is free for all its users. - - This license, the Lesser General Public License, applies to some -specially designated software packages--typically libraries--of the -Free Software Foundation and other authors who decide to use it. You -can use it too, but we suggest you first think carefully about whether -this license or the ordinary General Public License is the better -strategy to use in any particular case, based on the explanations below. - - When we speak of free software, we are referring to freedom of use, -not price. Our General Public Licenses are designed to make sure that -you have the freedom to distribute copies of free software (and charge -for this service if you wish); that you receive source code or can get -it if you want it; that you can change the software and use pieces of -it in new free programs; and that you are informed that you can do -these things. - - To protect your rights, we need to make restrictions that forbid -distributors to deny you these rights or to ask you to surrender these -rights. These restrictions translate to certain responsibilities for -you if you distribute copies of the library or if you modify it. - - For example, if you distribute copies of the library, whether gratis -or for a fee, you must give the recipients all the rights that we gave -you. You must make sure that they, too, receive or can get the source -code. If you link other code with the library, you must provide -complete object files to the recipients, so that they can relink them -with the library after making changes to the library and recompiling -it. And you must show them these terms so they know their rights. - - We protect your rights with a two-step method: (1) we copyright the -library, and (2) we offer you this license, which gives you legal -permission to copy, distribute and/or modify the library. - - To protect each distributor, we want to make it very clear that -there is no warranty for the free library. Also, if the library is -modified by someone else and passed on, the recipients should know -that what they have is not the original version, so that the original -author's reputation will not be affected by problems that might be -introduced by others. - - Finally, software patents pose a constant threat to the existence of -any free program. We wish to make sure that a company cannot -effectively restrict the users of a free program by obtaining a -restrictive license from a patent holder. Therefore, we insist that -any patent license obtained for a version of the library must be -consistent with the full freedom of use specified in this license. - - Most GNU software, including some libraries, is covered by the -ordinary GNU General Public License. This license, the GNU Lesser -General Public License, applies to certain designated libraries, and -is quite different from the ordinary General Public License. We use -this license for certain libraries in order to permit linking those -libraries into non-free programs. - - When a program is linked with a library, whether statically or using -a shared library, the combination of the two is legally speaking a -combined work, a derivative of the original library. The ordinary -General Public License therefore permits such linking only if the -entire combination fits its criteria of freedom. The Lesser General -Public License permits more lax criteria for linking other code with -the library. - - We call this license the "Lesser" General Public License because it -does Less to protect the user's freedom than the ordinary General -Public License. It also provides other free software developers Less -of an advantage over competing non-free programs. These disadvantages -are the reason we use the ordinary General Public License for many -libraries. However, the Lesser license provides advantages in certain -special circumstances. - - For example, on rare occasions, there may be a special need to -encourage the widest possible use of a certain library, so that it becomes -a de-facto standard. To achieve this, non-free programs must be -allowed to use the library. A more frequent case is that a free -library does the same job as widely used non-free libraries. In this -case, there is little to gain by limiting the free library to free -software only, so we use the Lesser General Public License. - - In other cases, permission to use a particular library in non-free -programs enables a greater number of people to use a large body of -free software. For example, permission to use the GNU C Library in -non-free programs enables many more people to use the whole GNU -operating system, as well as its variant, the GNU/Linux operating -system. - - Although the Lesser General Public License is Less protective of the -users' freedom, it does ensure that the user of a program that is -linked with the Library has the freedom and the wherewithal to run -that program using a modified version of the Library. - - The precise terms and conditions for copying, distribution and -modification follow. Pay close attention to the difference between a -"work based on the library" and a "work that uses the library". The -former contains code derived from the library, whereas the latter must -be combined with the library in order to run. - - GNU LESSER GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License Agreement applies to any software library or other -program which contains a notice placed by the copyright holder or -other authorized party saying it may be distributed under the terms of -this Lesser General Public License (also called "this License"). -Each licensee is addressed as "you". - - A "library" means a collection of software functions and/or data -prepared so as to be conveniently linked with application programs -(which use some of those functions and data) to form executables. - - The "Library", below, refers to any such software library or work -which has been distributed under these terms. A "work based on the -Library" means either the Library or any derivative work under -copyright law: that is to say, a work containing the Library or a -portion of it, either verbatim or with modifications and/or translated -straightforwardly into another language. (Hereinafter, translation is -included without limitation in the term "modification".) - - "Source code" for a work means the preferred form of the work for -making modifications to it. For a library, complete source code means -all the source code for all modules it contains, plus any associated -interface definition files, plus the scripts used to control compilation -and installation of the library. - - Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running a program using the Library is not restricted, and output from -such a program is covered only if its contents constitute a work based -on the Library (independent of the use of the Library in a tool for -writing it). Whether that is true depends on what the Library does -and what the program that uses the Library does. - - 1. You may copy and distribute verbatim copies of the Library's -complete source code as you receive it, in any medium, provided that -you conspicuously and appropriately publish on each copy an -appropriate copyright notice and disclaimer of warranty; keep intact -all the notices that refer to this License and to the absence of any -warranty; and distribute a copy of this License along with the -Library. - - You may charge a fee for the physical act of transferring a copy, -and you may at your option offer warranty protection in exchange for a -fee. - - 2. You may modify your copy or copies of the Library or any portion -of it, thus forming a work based on the Library, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) The modified work must itself be a software library. - - b) You must cause the files modified to carry prominent notices - stating that you changed the files and the date of any change. - - c) You must cause the whole of the work to be licensed at no - charge to all third parties under the terms of this License. - - d) If a facility in the modified Library refers to a function or a - table of data to be supplied by an application program that uses - the facility, other than as an argument passed when the facility - is invoked, then you must make a good faith effort to ensure that, - in the event an application does not supply such function or - table, the facility still operates, and performs whatever part of - its purpose remains meaningful. - - (For example, a function in a library to compute square roots has - a purpose that is entirely well-defined independent of the - application. Therefore, Subsection 2d requires that any - application-supplied function or table used by this function must - be optional: if the application does not supply it, the square - root function must still compute square roots.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Library, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Library, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote -it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Library. - -In addition, mere aggregation of another work not based on the Library -with the Library (or with a work based on the Library) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may opt to apply the terms of the ordinary GNU General Public -License instead of this License to a given copy of the Library. To do -this, you must alter all the notices that refer to this License, so -that they refer to the ordinary GNU General Public License, version 2, -instead of to this License. (If a newer version than version 2 of the -ordinary GNU General Public License has appeared, then you can specify -that version instead if you wish.) Do not make any other change in -these notices. - - Once this change is made in a given copy, it is irreversible for -that copy, so the ordinary GNU General Public License applies to all -subsequent copies and derivative works made from that copy. - - This option is useful when you wish to copy part of the code of -the Library into a program that is not a library. - - 4. You may copy and distribute the Library (or a portion or -derivative of it, under Section 2) in object code or executable form -under the terms of Sections 1 and 2 above provided that you accompany -it with the complete corresponding machine-readable source code, which -must be distributed under the terms of Sections 1 and 2 above on a -medium customarily used for software interchange. - - If distribution of object code is made by offering access to copy -from a designated place, then offering equivalent access to copy the -source code from the same place satisfies the requirement to -distribute the source code, even though third parties are not -compelled to copy the source along with the object code. - - 5. A program that contains no derivative of any portion of the -Library, but is designed to work with the Library by being compiled or -linked with it, is called a "work that uses the Library". Such a -work, in isolation, is not a derivative work of the Library, and -therefore falls outside the scope of this License. - - However, linking a "work that uses the Library" with the Library -creates an executable that is a derivative of the Library (because it -contains portions of the Library), rather than a "work that uses the -library". The executable is therefore covered by this License. -Section 6 states terms for distribution of such executables. - - When a "work that uses the Library" uses material from a header file -that is part of the Library, the object code for the work may be a -derivative work of the Library even though the source code is not. -Whether this is true is especially significant if the work can be -linked without the Library, or if the work is itself a library. The -threshold for this to be true is not precisely defined by law. - - If such an object file uses only numerical parameters, data -structure layouts and accessors, and small macros and small inline -functions (ten lines or less in length), then the use of the object -file is unrestricted, regardless of whether it is legally a derivative -work. (Executables containing this object code plus portions of the -Library will still fall under Section 6.) - - Otherwise, if the work is a derivative of the Library, you may -distribute the object code for the work under the terms of Section 6. -Any executables containing that work also fall under Section 6, -whether or not they are linked directly with the Library itself. - - 6. As an exception to the Sections above, you may also combine or -link a "work that uses the Library" with the Library to produce a -work containing portions of the Library, and distribute that work -under terms of your choice, provided that the terms permit -modification of the work for the customer's own use and reverse -engineering for debugging such modifications. - - You must give prominent notice with each copy of the work that the -Library is used in it and that the Library and its use are covered by -this License. You must supply a copy of this License. If the work -during execution displays copyright notices, you must include the -copyright notice for the Library among them, as well as a reference -directing the user to the copy of this License. Also, you must do one -of these things: - - a) Accompany the work with the complete corresponding - machine-readable source code for the Library including whatever - changes were used in the work (which must be distributed under - Sections 1 and 2 above); and, if the work is an executable linked - with the Library, with the complete machine-readable "work that - uses the Library", as object code and/or source code, so that the - user can modify the Library and then relink to produce a modified - executable containing the modified Library. (It is understood - that the user who changes the contents of definitions files in the - Library will not necessarily be able to recompile the application - to use the modified definitions.) - - b) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (1) uses at run time a - copy of the library already present on the user's computer system, - rather than copying library functions into the executable, and (2) - will operate properly with a modified version of the library, if - the user installs one, as long as the modified version is - interface-compatible with the version that the work was made with. - - c) Accompany the work with a written offer, valid for at - least three years, to give the same user the materials - specified in Subsection 6a, above, for a charge no more - than the cost of performing this distribution. - - d) If distribution of the work is made by offering access to copy - from a designated place, offer equivalent access to copy the above - specified materials from the same place. - - e) Verify that the user has already received a copy of these - materials or that you have already sent this user a copy. - - For an executable, the required form of the "work that uses the -Library" must include any data and utility programs needed for -reproducing the executable from it. However, as a special exception, -the materials to be distributed need not include anything that is -normally distributed (in either source or binary form) with the major -components (compiler, kernel, and so on) of the operating system on -which the executable runs, unless that component itself accompanies -the executable. - - It may happen that this requirement contradicts the license -restrictions of other proprietary libraries that do not normally -accompany the operating system. Such a contradiction means you cannot -use both them and the Library together in an executable that you -distribute. - - 7. You may place library facilities that are a work based on the -Library side-by-side in a single library together with other library -facilities not covered by this License, and distribute such a combined -library, provided that the separate distribution of the work based on -the Library and of the other library facilities is otherwise -permitted, and provided that you do these two things: - - a) Accompany the combined library with a copy of the same work - based on the Library, uncombined with any other library - facilities. This must be distributed under the terms of the - Sections above. - - b) Give prominent notice with the combined library of the fact - that part of it is a work based on the Library, and explaining - where to find the accompanying uncombined form of the same work. - - 8. You may not copy, modify, sublicense, link with, or distribute -the Library except as expressly provided under this License. Any -attempt otherwise to copy, modify, sublicense, link with, or -distribute the Library is void, and will automatically terminate your -rights under this License. However, parties who have received copies, -or rights, from you under this License will not have their licenses -terminated so long as such parties remain in full compliance. - - 9. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Library or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Library (or any work based on the -Library), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Library or works based on it. - - 10. Each time you redistribute the Library (or any work based on the -Library), the recipient automatically receives a license from the -original licensor to copy, distribute, link with or modify the Library -subject to these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties with -this License. - - 11. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Library at all. For example, if a patent -license would not permit royalty-free redistribution of the Library by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Library. - -If any portion of this section is held invalid or unenforceable under any -particular circumstance, the balance of the section is intended to apply, -and the section as a whole is intended to apply in other circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 12. If the distribution and/or use of the Library is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Library under this License may add -an explicit geographical distribution limitation excluding those countries, -so that distribution is permitted only in or among countries not thus -excluded. In such case, this License incorporates the limitation as if -written in the body of this License. - - 13. The Free Software Foundation may publish revised and/or new -versions of the Lesser General Public License from time to time. -Such new versions will be similar in spirit to the present version, -but may differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Library -specifies a version number of this License which applies to it and -"any later version", you have the option of following the terms and -conditions either of that version or of any later version published by -the Free Software Foundation. If the Library does not specify a -license version number, you may choose any version ever published by -the Free Software Foundation. - - 14. If you wish to incorporate parts of the Library into other free -programs whose distribution conditions are incompatible with these, -write to the author to ask for permission. For software which is -copyrighted by the Free Software Foundation, write to the Free -Software Foundation; we sometimes make exceptions for this. Our -decision will be guided by the two goals of preserving the free status -of all derivatives of our free software and of promoting the sharing -and reuse of software generally. - - NO WARRANTY - - 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO -WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. -EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR -OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY -KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE -LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME -THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN -WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY -AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU -FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR -CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE -LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING -RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A -FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF -SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Libraries - - If you develop a new library, and you want it to be of the greatest -possible use to the public, we recommend making it free software that -everyone can redistribute and change. You can do so by permitting -redistribution under these terms (or, alternatively, under the terms of the -ordinary General Public License). - - To apply these terms, attach the following notices to the library. It is -safest to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least the -"copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - -Also add information on how to contact you by electronic and paper mail. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the library, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the - library `Frob' (a library for tweaking knobs) written by James Random Hacker. - - , 1 April 1990 - Ty Coon, President of Vice - -That's all there is to it! +MOZILLA PUBLIC LICENSE + Version 1.1 + +1. Definitions. + + 1.0.1. "Commercial Use" means distribution or otherwise making the + Covered Code available to a third party. + + 1.1. "Contributor" means each entity that creates or contributes to + the creation of Modifications. + + 1.2. "Contributor Version" means the combination of the Original + Code, prior Modifications used by a Contributor, and the Modifications + made by that particular Contributor. + + 1.3. "Covered Code" means the Original Code or Modifications or the + combination of the Original Code and Modifications, in each case + including portions thereof. + + 1.4. "Electronic Distribution Mechanism" means a mechanism generally + accepted in the software development community for the electronic + transfer of data. + + 1.5. "Executable" means Covered Code in any form other than Source + Code. + + 1.6. "Initial Developer" means the individual or entity identified + as the Initial Developer in the Source Code notice required by Exhibit + A. + + 1.7. "Larger Work" means a work which combines Covered Code or + portions thereof with code not governed by the terms of this License. + + 1.8. "License" means this document. + + 1.8.1. "Licensable" means having the right to grant, to the maximum + extent possible, whether at the time of the initial grant or + subsequently acquired, any and all of the rights conveyed herein. + + 1.9. "Modifications" means any addition to or deletion from the + substance or structure of either the Original Code or any previous + Modifications. When Covered Code is released as a series of files, a + Modification is: + A. Any addition to or deletion from the contents of a file + containing Original Code or previous Modifications. + + B. Any new file that contains any part of the Original Code or + previous Modifications. + + 1.10. "Original Code" means Source Code of computer software code + which is described in the Source Code notice required by Exhibit A as + Original Code, and which, at the time of its release under this + License is not already Covered Code governed by this License. + + 1.10.1. "Patent Claims" means any patent claim(s), now owned or + hereafter acquired, including without limitation, method, process, + and apparatus claims, in any patent Licensable by grantor. + + 1.11. "Source Code" means the preferred form of the Covered Code for + making modifications to it, including all modules it contains, plus + any associated interface definition files, scripts used to control + compilation and installation of an Executable, or source code + differential comparisons against either the Original Code or another + well known, available Covered Code of the Contributor's choice. The + Source Code can be in a compressed or archival form, provided the + appropriate decompression or de-archiving software is widely available + for no charge. + + 1.12. "You" (or "Your") means an individual or a legal entity + exercising rights under, and complying with all of the terms of, this + License or a future version of this License issued under Section 6.1. + For legal entities, "You" includes any entity which controls, is + controlled by, or is under common control with You. For purposes of + this definition, "control" means (a) the power, direct or indirect, + to cause the direction or management of such entity, whether by + contract or otherwise, or (b) ownership of more than fifty percent + (50%) of the outstanding shares or beneficial ownership of such + entity. + +2. Source Code License. + + 2.1. The Initial Developer Grant. + The Initial Developer hereby grants You a world-wide, royalty-free, + non-exclusive license, subject to third party intellectual property + claims: + (a) under intellectual property rights (other than patent or + trademark) Licensable by Initial Developer to use, reproduce, + modify, display, perform, sublicense and distribute the Original + Code (or portions thereof) with or without Modifications, and/or + as part of a Larger Work; and + + (b) under Patents Claims infringed by the making, using or + selling of Original Code, to make, have made, use, practice, + sell, and offer for sale, and/or otherwise dispose of the + Original Code (or portions thereof). + + (c) the licenses granted in this Section 2.1(a) and (b) are + effective on the date Initial Developer first distributes + Original Code under the terms of this License. + + (d) Notwithstanding Section 2.1(b) above, no patent license is + granted: 1) for code that You delete from the Original Code; 2) + separate from the Original Code; or 3) for infringements caused + by: i) the modification of the Original Code or ii) the + combination of the Original Code with other software or devices. + + 2.2. Contributor Grant. + Subject to third party intellectual property claims, each Contributor + hereby grants You a world-wide, royalty-free, non-exclusive license + + (a) under intellectual property rights (other than patent or + trademark) Licensable by Contributor, to use, reproduce, modify, + display, perform, sublicense and distribute the Modifications + created by such Contributor (or portions thereof) either on an + unmodified basis, with other Modifications, as Covered Code + and/or as part of a Larger Work; and + + (b) under Patent Claims infringed by the making, using, or + selling of Modifications made by that Contributor either alone + and/or in combination with its Contributor Version (or portions + of such combination), to make, use, sell, offer for sale, have + made, and/or otherwise dispose of: 1) Modifications made by that + Contributor (or portions thereof); and 2) the combination of + Modifications made by that Contributor with its Contributor + Version (or portions of such combination). + + (c) the licenses granted in Sections 2.2(a) and 2.2(b) are + effective on the date Contributor first makes Commercial Use of + the Covered Code. + + (d) Notwithstanding Section 2.2(b) above, no patent license is + granted: 1) for any code that Contributor has deleted from the + Contributor Version; 2) separate from the Contributor Version; + 3) for infringements caused by: i) third party modifications of + Contributor Version or ii) the combination of Modifications made + by that Contributor with other software (except as part of the + Contributor Version) or other devices; or 4) under Patent Claims + infringed by Covered Code in the absence of Modifications made by + that Contributor. + +3. Distribution Obligations. + + 3.1. Application of License. + The Modifications which You create or to which You contribute are + governed by the terms of this License, including without limitation + Section 2.2. The Source Code version of Covered Code may be + distributed only under the terms of this License or a future version + of this License released under Section 6.1, and You must include a + copy of this License with every copy of the Source Code You + distribute. You may not offer or impose any terms on any Source Code + version that alters or restricts the applicable version of this + License or the recipients' rights hereunder. However, You may include + an additional document offering the additional rights described in + Section 3.5. + + 3.2. Availability of Source Code. + Any Modification which You create or to which You contribute must be + made available in Source Code form under the terms of this License + either on the same media as an Executable version or via an accepted + Electronic Distribution Mechanism to anyone to whom you made an + Executable version available; and if made available via Electronic + Distribution Mechanism, must remain available for at least twelve (12) + months after the date it initially became available, or at least six + (6) months after a subsequent version of that particular Modification + has been made available to such recipients. You are responsible for + ensuring that the Source Code version remains available even if the + Electronic Distribution Mechanism is maintained by a third party. + + 3.3. Description of Modifications. + You must cause all Covered Code to which You contribute to contain a + file documenting the changes You made to create that Covered Code and + the date of any change. You must include a prominent statement that + the Modification is derived, directly or indirectly, from Original + Code provided by the Initial Developer and including the name of the + Initial Developer in (a) the Source Code, and (b) in any notice in an + Executable version or related documentation in which You describe the + origin or ownership of the Covered Code. + + 3.4. Intellectual Property Matters + (a) Third Party Claims. + If Contributor has knowledge that a license under a third party's + intellectual property rights is required to exercise the rights + granted by such Contributor under Sections 2.1 or 2.2, + Contributor must include a text file with the Source Code + distribution titled "LEGAL" which describes the claim and the + party making the claim in sufficient detail that a recipient will + know whom to contact. If Contributor obtains such knowledge after + the Modification is made available as described in Section 3.2, + Contributor shall promptly modify the LEGAL file in all copies + Contributor makes available thereafter and shall take other steps + (such as notifying appropriate mailing lists or newsgroups) + reasonably calculated to inform those who received the Covered + Code that new knowledge has been obtained. + + (b) Contributor APIs. + If Contributor's Modifications include an application programming + interface and Contributor has knowledge of patent licenses which + are reasonably necessary to implement that API, Contributor must + also include this information in the LEGAL file. + + (c) Representations. + Contributor represents that, except as disclosed pursuant to + Section 3.4(a) above, Contributor believes that Contributor's + Modifications are Contributor's original creation(s) and/or + Contributor has sufficient rights to grant the rights conveyed by + this License. + + 3.5. Required Notices. + You must duplicate the notice in Exhibit A in each file of the Source + Code. If it is not possible to put such notice in a particular Source + Code file due to its structure, then You must include such notice in a + location (such as a relevant directory) where a user would be likely + to look for such a notice. If You created one or more Modification(s) + You may add your name as a Contributor to the notice described in + Exhibit A. You must also duplicate this License in any documentation + for the Source Code where You describe recipients' rights or ownership + rights relating to Covered Code. You may choose to offer, and to + charge a fee for, warranty, support, indemnity or liability + obligations to one or more recipients of Covered Code. However, You + may do so only on Your own behalf, and not on behalf of the Initial + Developer or any Contributor. You must make it absolutely clear than + any such warranty, support, indemnity or liability obligation is + offered by You alone, and You hereby agree to indemnify the Initial + Developer and every Contributor for any liability incurred by the + Initial Developer or such Contributor as a result of warranty, + support, indemnity or liability terms You offer. + + 3.6. Distribution of Executable Versions. + You may distribute Covered Code in Executable form only if the + requirements of Section 3.1-3.5 have been met for that Covered Code, + and if You include a notice stating that the Source Code version of + the Covered Code is available under the terms of this License, + including a description of how and where You have fulfilled the + obligations of Section 3.2. The notice must be conspicuously included + in any notice in an Executable version, related documentation or + collateral in which You describe recipients' rights relating to the + Covered Code. You may distribute the Executable version of Covered + Code or ownership rights under a license of Your choice, which may + contain terms different from this License, provided that You are in + compliance with the terms of this License and that the license for the + Executable version does not attempt to limit or alter the recipient's + rights in the Source Code version from the rights set forth in this + License. If You distribute the Executable version under a different + license You must make it absolutely clear that any terms which differ + from this License are offered by You alone, not by the Initial + Developer or any Contributor. You hereby agree to indemnify the + Initial Developer and every Contributor for any liability incurred by + the Initial Developer or such Contributor as a result of any such + terms You offer. + + 3.7. Larger Works. + You may create a Larger Work by combining Covered Code with other code + not governed by the terms of this License and distribute the Larger + Work as a single product. In such a case, You must make sure the + requirements of this License are fulfilled for the Covered Code. + +4. Inability to Comply Due to Statute or Regulation. + + If it is impossible for You to comply with any of the terms of this + License with respect to some or all of the Covered Code due to + statute, judicial order, or regulation then You must: (a) comply with + the terms of this License to the maximum extent possible; and (b) + describe the limitations and the code they affect. Such description + must be included in the LEGAL file described in Section 3.4 and must + be included with all distributions of the Source Code. Except to the + extent prohibited by statute or regulation, such description must be + sufficiently detailed for a recipient of ordinary skill to be able to + understand it. + +5. Application of this License. + + This License applies to code to which the Initial Developer has + attached the notice in Exhibit A and to related Covered Code. + +6. Versions of the License. + + 6.1. New Versions. + Netscape Communications Corporation ("Netscape") may publish revised + and/or new versions of the License from time to time. Each version + will be given a distinguishing version number. + + 6.2. Effect of New Versions. + Once Covered Code has been published under a particular version of the + License, You may always continue to use it under the terms of that + version. You may also choose to use such Covered Code under the terms + of any subsequent version of the License published by Netscape. No one + other than Netscape has the right to modify the terms applicable to + Covered Code created under this License. + + 6.3. Derivative Works. + If You create or use a modified version of this License (which you may + only do in order to apply it to code which is not already Covered Code + governed by this License), You must (a) rename Your license so that + the phrases "Mozilla", "MOZILLAPL", "MOZPL", "Netscape", + "MPL", "NPL" or any confusingly similar phrase do not appear in your + license (except to note that your license differs from this License) + and (b) otherwise make it clear that Your version of the license + contains terms which differ from the Mozilla Public License and + Netscape Public License. (Filling in the name of the Initial + Developer, Original Code or Contributor in the notice described in + Exhibit A shall not of themselves be deemed to be modifications of + this License.) + +7. DISCLAIMER OF WARRANTY. + + COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, + WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF + DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. + THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE + IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT, + YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE + COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER + OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF + ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER. + +8. TERMINATION. + + 8.1. This License and the rights granted hereunder will terminate + automatically if You fail to comply with terms herein and fail to cure + such breach within 30 days of becoming aware of the breach. All + sublicenses to the Covered Code which are properly granted shall + survive any termination of this License. Provisions which, by their + nature, must remain in effect beyond the termination of this License + shall survive. + + 8.2. If You initiate litigation by asserting a patent infringement + claim (excluding declatory judgment actions) against Initial Developer + or a Contributor (the Initial Developer or Contributor against whom + You file such action is referred to as "Participant") alleging that: + + (a) such Participant's Contributor Version directly or indirectly + infringes any patent, then any and all rights granted by such + Participant to You under Sections 2.1 and/or 2.2 of this License + shall, upon 60 days notice from Participant terminate prospectively, + unless if within 60 days after receipt of notice You either: (i) + agree in writing to pay Participant a mutually agreeable reasonable + royalty for Your past and future use of Modifications made by such + Participant, or (ii) withdraw Your litigation claim with respect to + the Contributor Version against such Participant. If within 60 days + of notice, a reasonable royalty and payment arrangement are not + mutually agreed upon in writing by the parties or the litigation claim + is not withdrawn, the rights granted by Participant to You under + Sections 2.1 and/or 2.2 automatically terminate at the expiration of + the 60 day notice period specified above. + + (b) any software, hardware, or device, other than such Participant's + Contributor Version, directly or indirectly infringes any patent, then + any rights granted to You by such Participant under Sections 2.1(b) + and 2.2(b) are revoked effective as of the date You first made, used, + sold, distributed, or had made, Modifications made by that + Participant. + + 8.3. If You assert a patent infringement claim against Participant + alleging that such Participant's Contributor Version directly or + indirectly infringes any patent where such claim is resolved (such as + by license or settlement) prior to the initiation of patent + infringement litigation, then the reasonable value of the licenses + granted by such Participant under Sections 2.1 or 2.2 shall be taken + into account in determining the amount or value of any payment or + license. + + 8.4. In the event of termination under Sections 8.1 or 8.2 above, + all end user license agreements (excluding distributors and resellers) + which have been validly granted by You or any distributor hereunder + prior to termination shall survive termination. + +9. LIMITATION OF LIABILITY. + + UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT + (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL + DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE, + OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR + ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY + CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, + WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER + COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN + INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF + LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY + RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW + PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE + EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO + THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU. + +10. U.S. GOVERNMENT END USERS. + + The Covered Code is a "commercial item," as that term is defined in + 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer + software" and "commercial computer software documentation," as such + terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 + C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), + all U.S. Government End Users acquire Covered Code with only those + rights set forth herein. + +11. MISCELLANEOUS. + + This License represents the complete agreement concerning subject + matter hereof. If any provision of this License is held to be + unenforceable, such provision shall be reformed only to the extent + necessary to make it enforceable. This License shall be governed by + California law provisions (except to the extent applicable law, if + any, provides otherwise), excluding its conflict-of-law provisions. + With respect to disputes in which at least one party is a citizen of, + or an entity chartered or registered to do business in the United + States of America, any litigation relating to this License shall be + subject to the jurisdiction of the Federal Courts of the Northern + District of California, with venue lying in Santa Clara County, + California, with the losing party responsible for costs, including + without limitation, court costs and reasonable attorneys' fees and + expenses. The application of the United Nations Convention on + Contracts for the International Sale of Goods is expressly excluded. + Any law or regulation which provides that the language of a contract + shall be construed against the drafter shall not apply to this + License. + +12. RESPONSIBILITY FOR CLAIMS. + + As between Initial Developer and the Contributors, each party is + responsible for claims and damages arising, directly or indirectly, + out of its utilization of rights under this License and You agree to + work with Initial Developer and Contributors to distribute such + responsibility on an equitable basis. Nothing herein is intended or + shall be deemed to constitute any admission of liability. + +13. MULTIPLE-LICENSED CODE. + + Initial Developer may designate portions of the Covered Code as + "Multiple-Licensed". "Multiple-Licensed" means that the Initial + Developer permits you to utilize portions of the Covered Code under + Your choice of the MPL or the alternative licenses, if any, specified + by the Initial Developer in the file described in Exhibit A. + +EXHIBIT A -Mozilla Public License. + + ``The contents of this file are subject to the Mozilla Public License + Version 1.1 (the "License"); you may not use this file except in + compliance with the License. You may obtain a copy of the License at + https://www.mozilla.org/MPL + + Software distributed under the License is distributed on an "AS IS" + basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the + License for the specific language governing rights and limitations + under the License. + + The Original Code is ______________________________________. + + The Initial Developer of the Original Code is ________________________. + Portions created by ______________________ are Copyright (C) ______ + _______________________. All Rights Reserved. + + Contributor(s): ______________________________________. + + Alternatively, the contents of this file may be used under the terms + of the _____ license (the "[___] License"), in which case the + provisions of [______] License are applicable instead of those + above. If you wish to allow use of your version of this file only + under the terms of the [____] License and not to allow others to use + your version of this file under the MPL, indicate your decision by + deleting the provisions above and replace them with the notice and + other provisions required by the [___] License. If you do not delete + the provisions above, a recipient may use your version of this file + under either the MPL or the [___] License." + + [NOTE: The text of this Exhibit A may differ slightly from the text of + the notices in the Source Code files of the Original Code. You should + use the text of this Exhibit A rather than the text found in the + Original Code Source Code for Your Modifications.] -------------------------------------------------------------------------------- gif diff --git a/tools/licenses/README.md b/tools/licenses/README.md index 786e3b8fc728c..ccd44c0a82f75 100644 --- a/tools/licenses/README.md +++ b/tools/licenses/README.md @@ -10,8 +10,17 @@ cd flutter/ci/licenses_golden patch -p2 < my/patch/file ``` -## Regenerate License Files (Only works on Linux) -To update the golden license files, make sure you've rebased your branch to the latest upstream master and then run the following in this directory: +## Check for license changes (Only works on Linux) + +This script has two sets of output files: "goldens", which describe +the current license state of the repository, and the actual real +LICENSE file, which is what matters. + +We look at changes to the goldens to determine if there are any actual +changes to the licenses. + +To update the goldens, make sure you've rebased your branch to the +latest upstream master and then run the following in this directory: ``` pub get @@ -20,9 +29,29 @@ rm -rf ../../../out/licenses dart lib/main.dart --src ../../.. --out ../../../out/licenses --golden ../../ci/licenses_golden ``` -Then copy any affected files from `../../../out/licenses` to `../../ci/licenses_golden` and add them to your change. +In order for the license script to work correctly, you need to remove +any untracked files inside `engine/src` (the buildroot), not just +`engine/src/flutter`. + +Once the script has finished, copy any affected files from +`../../../out/licenses` to `../../ci/licenses_golden` and add them to +your change, and examine the diffs to see what changed. + +``` +cp ../../../out/licenses/* ../../ci/licenses_golden +git diff +``` + +If the only changes are to what files are included, then you're good +to go. However, if any of the _licenses_ changed, whether new licenses +are added, old ones removed, or any have their content changed in +_any_ way (including, e.g., whitespace changes), or if the affected +libraries change, **you must update the actual license file**. -The `sky/packages/sky_engine/LICENSE` file is included in product releases and should be updated any time the golden file changes in a way that involves changes to anything other than the FILE lines. To update this file, run: +The `sky/packages/sky_engine/LICENSE` file is the one actually +included in product releases and the one that should be updated any +time the golden file changes in a way that involves changes to +anything other than the `FILE` lines. To update this file, run: ``` pub get @@ -30,4 +59,7 @@ gclient sync dart lib/main.dart --release --src ../../.. --out ../../../out/licenses > ../../sky/packages/sky_engine/LICENSE ``` -**In order for the license script to work, please remove all untracked files inside `engine/src` (not just `engine/src/flutter`)** +The bots do not verify that you did this step, it's important that you +do it! When reviewing patches, if you see a change to the golden +files, check to see if there's a corresponding change to the LICENSE +file! diff --git a/tools/licenses/data/mozilla-1.1 b/tools/licenses/data/mozilla-1.1 new file mode 100644 index 0000000000000..566908108012c --- /dev/null +++ b/tools/licenses/data/mozilla-1.1 @@ -0,0 +1,469 @@ + MOZILLA PUBLIC LICENSE + Version 1.1 + + --------------- + +1. Definitions. + + 1.0.1. "Commercial Use" means distribution or otherwise making the + Covered Code available to a third party. + + 1.1. "Contributor" means each entity that creates or contributes to + the creation of Modifications. + + 1.2. "Contributor Version" means the combination of the Original + Code, prior Modifications used by a Contributor, and the Modifications + made by that particular Contributor. + + 1.3. "Covered Code" means the Original Code or Modifications or the + combination of the Original Code and Modifications, in each case + including portions thereof. + + 1.4. "Electronic Distribution Mechanism" means a mechanism generally + accepted in the software development community for the electronic + transfer of data. + + 1.5. "Executable" means Covered Code in any form other than Source + Code. + + 1.6. "Initial Developer" means the individual or entity identified + as the Initial Developer in the Source Code notice required by Exhibit + A. + + 1.7. "Larger Work" means a work which combines Covered Code or + portions thereof with code not governed by the terms of this License. + + 1.8. "License" means this document. + + 1.8.1. "Licensable" means having the right to grant, to the maximum + extent possible, whether at the time of the initial grant or + subsequently acquired, any and all of the rights conveyed herein. + + 1.9. "Modifications" means any addition to or deletion from the + substance or structure of either the Original Code or any previous + Modifications. When Covered Code is released as a series of files, a + Modification is: + A. Any addition to or deletion from the contents of a file + containing Original Code or previous Modifications. + + B. Any new file that contains any part of the Original Code or + previous Modifications. + + 1.10. "Original Code" means Source Code of computer software code + which is described in the Source Code notice required by Exhibit A as + Original Code, and which, at the time of its release under this + License is not already Covered Code governed by this License. + + 1.10.1. "Patent Claims" means any patent claim(s), now owned or + hereafter acquired, including without limitation, method, process, + and apparatus claims, in any patent Licensable by grantor. + + 1.11. "Source Code" means the preferred form of the Covered Code for + making modifications to it, including all modules it contains, plus + any associated interface definition files, scripts used to control + compilation and installation of an Executable, or source code + differential comparisons against either the Original Code or another + well known, available Covered Code of the Contributor's choice. The + Source Code can be in a compressed or archival form, provided the + appropriate decompression or de-archiving software is widely available + for no charge. + + 1.12. "You" (or "Your") means an individual or a legal entity + exercising rights under, and complying with all of the terms of, this + License or a future version of this License issued under Section 6.1. + For legal entities, "You" includes any entity which controls, is + controlled by, or is under common control with You. For purposes of + this definition, "control" means (a) the power, direct or indirect, + to cause the direction or management of such entity, whether by + contract or otherwise, or (b) ownership of more than fifty percent + (50%) of the outstanding shares or beneficial ownership of such + entity. + +2. Source Code License. + + 2.1. The Initial Developer Grant. + The Initial Developer hereby grants You a world-wide, royalty-free, + non-exclusive license, subject to third party intellectual property + claims: + (a) under intellectual property rights (other than patent or + trademark) Licensable by Initial Developer to use, reproduce, + modify, display, perform, sublicense and distribute the Original + Code (or portions thereof) with or without Modifications, and/or + as part of a Larger Work; and + + (b) under Patents Claims infringed by the making, using or + selling of Original Code, to make, have made, use, practice, + sell, and offer for sale, and/or otherwise dispose of the + Original Code (or portions thereof). + + (c) the licenses granted in this Section 2.1(a) and (b) are + effective on the date Initial Developer first distributes + Original Code under the terms of this License. + + (d) Notwithstanding Section 2.1(b) above, no patent license is + granted: 1) for code that You delete from the Original Code; 2) + separate from the Original Code; or 3) for infringements caused + by: i) the modification of the Original Code or ii) the + combination of the Original Code with other software or devices. + + 2.2. Contributor Grant. + Subject to third party intellectual property claims, each Contributor + hereby grants You a world-wide, royalty-free, non-exclusive license + + (a) under intellectual property rights (other than patent or + trademark) Licensable by Contributor, to use, reproduce, modify, + display, perform, sublicense and distribute the Modifications + created by such Contributor (or portions thereof) either on an + unmodified basis, with other Modifications, as Covered Code + and/or as part of a Larger Work; and + + (b) under Patent Claims infringed by the making, using, or + selling of Modifications made by that Contributor either alone + and/or in combination with its Contributor Version (or portions + of such combination), to make, use, sell, offer for sale, have + made, and/or otherwise dispose of: 1) Modifications made by that + Contributor (or portions thereof); and 2) the combination of + Modifications made by that Contributor with its Contributor + Version (or portions of such combination). + + (c) the licenses granted in Sections 2.2(a) and 2.2(b) are + effective on the date Contributor first makes Commercial Use of + the Covered Code. + + (d) Notwithstanding Section 2.2(b) above, no patent license is + granted: 1) for any code that Contributor has deleted from the + Contributor Version; 2) separate from the Contributor Version; + 3) for infringements caused by: i) third party modifications of + Contributor Version or ii) the combination of Modifications made + by that Contributor with other software (except as part of the + Contributor Version) or other devices; or 4) under Patent Claims + infringed by Covered Code in the absence of Modifications made by + that Contributor. + +3. Distribution Obligations. + + 3.1. Application of License. + The Modifications which You create or to which You contribute are + governed by the terms of this License, including without limitation + Section 2.2. The Source Code version of Covered Code may be + distributed only under the terms of this License or a future version + of this License released under Section 6.1, and You must include a + copy of this License with every copy of the Source Code You + distribute. You may not offer or impose any terms on any Source Code + version that alters or restricts the applicable version of this + License or the recipients' rights hereunder. However, You may include + an additional document offering the additional rights described in + Section 3.5. + + 3.2. Availability of Source Code. + Any Modification which You create or to which You contribute must be + made available in Source Code form under the terms of this License + either on the same media as an Executable version or via an accepted + Electronic Distribution Mechanism to anyone to whom you made an + Executable version available; and if made available via Electronic + Distribution Mechanism, must remain available for at least twelve (12) + months after the date it initially became available, or at least six + (6) months after a subsequent version of that particular Modification + has been made available to such recipients. You are responsible for + ensuring that the Source Code version remains available even if the + Electronic Distribution Mechanism is maintained by a third party. + + 3.3. Description of Modifications. + You must cause all Covered Code to which You contribute to contain a + file documenting the changes You made to create that Covered Code and + the date of any change. You must include a prominent statement that + the Modification is derived, directly or indirectly, from Original + Code provided by the Initial Developer and including the name of the + Initial Developer in (a) the Source Code, and (b) in any notice in an + Executable version or related documentation in which You describe the + origin or ownership of the Covered Code. + + 3.4. Intellectual Property Matters + (a) Third Party Claims. + If Contributor has knowledge that a license under a third party's + intellectual property rights is required to exercise the rights + granted by such Contributor under Sections 2.1 or 2.2, + Contributor must include a text file with the Source Code + distribution titled "LEGAL" which describes the claim and the + party making the claim in sufficient detail that a recipient will + know whom to contact. If Contributor obtains such knowledge after + the Modification is made available as described in Section 3.2, + Contributor shall promptly modify the LEGAL file in all copies + Contributor makes available thereafter and shall take other steps + (such as notifying appropriate mailing lists or newsgroups) + reasonably calculated to inform those who received the Covered + Code that new knowledge has been obtained. + + (b) Contributor APIs. + If Contributor's Modifications include an application programming + interface and Contributor has knowledge of patent licenses which + are reasonably necessary to implement that API, Contributor must + also include this information in the LEGAL file. + + (c) Representations. + Contributor represents that, except as disclosed pursuant to + Section 3.4(a) above, Contributor believes that Contributor's + Modifications are Contributor's original creation(s) and/or + Contributor has sufficient rights to grant the rights conveyed by + this License. + + 3.5. Required Notices. + You must duplicate the notice in Exhibit A in each file of the Source + Code. If it is not possible to put such notice in a particular Source + Code file due to its structure, then You must include such notice in a + location (such as a relevant directory) where a user would be likely + to look for such a notice. If You created one or more Modification(s) + You may add your name as a Contributor to the notice described in + Exhibit A. You must also duplicate this License in any documentation + for the Source Code where You describe recipients' rights or ownership + rights relating to Covered Code. You may choose to offer, and to + charge a fee for, warranty, support, indemnity or liability + obligations to one or more recipients of Covered Code. However, You + may do so only on Your own behalf, and not on behalf of the Initial + Developer or any Contributor. You must make it absolutely clear than + any such warranty, support, indemnity or liability obligation is + offered by You alone, and You hereby agree to indemnify the Initial + Developer and every Contributor for any liability incurred by the + Initial Developer or such Contributor as a result of warranty, + support, indemnity or liability terms You offer. + + 3.6. Distribution of Executable Versions. + You may distribute Covered Code in Executable form only if the + requirements of Section 3.1-3.5 have been met for that Covered Code, + and if You include a notice stating that the Source Code version of + the Covered Code is available under the terms of this License, + including a description of how and where You have fulfilled the + obligations of Section 3.2. The notice must be conspicuously included + in any notice in an Executable version, related documentation or + collateral in which You describe recipients' rights relating to the + Covered Code. You may distribute the Executable version of Covered + Code or ownership rights under a license of Your choice, which may + contain terms different from this License, provided that You are in + compliance with the terms of this License and that the license for the + Executable version does not attempt to limit or alter the recipient's + rights in the Source Code version from the rights set forth in this + License. If You distribute the Executable version under a different + license You must make it absolutely clear that any terms which differ + from this License are offered by You alone, not by the Initial + Developer or any Contributor. You hereby agree to indemnify the + Initial Developer and every Contributor for any liability incurred by + the Initial Developer or such Contributor as a result of any such + terms You offer. + + 3.7. Larger Works. + You may create a Larger Work by combining Covered Code with other code + not governed by the terms of this License and distribute the Larger + Work as a single product. In such a case, You must make sure the + requirements of this License are fulfilled for the Covered Code. + +4. Inability to Comply Due to Statute or Regulation. + + If it is impossible for You to comply with any of the terms of this + License with respect to some or all of the Covered Code due to + statute, judicial order, or regulation then You must: (a) comply with + the terms of this License to the maximum extent possible; and (b) + describe the limitations and the code they affect. Such description + must be included in the LEGAL file described in Section 3.4 and must + be included with all distributions of the Source Code. Except to the + extent prohibited by statute or regulation, such description must be + sufficiently detailed for a recipient of ordinary skill to be able to + understand it. + +5. Application of this License. + + This License applies to code to which the Initial Developer has + attached the notice in Exhibit A and to related Covered Code. + +6. Versions of the License. + + 6.1. New Versions. + Netscape Communications Corporation ("Netscape") may publish revised + and/or new versions of the License from time to time. Each version + will be given a distinguishing version number. + + 6.2. Effect of New Versions. + Once Covered Code has been published under a particular version of the + License, You may always continue to use it under the terms of that + version. You may also choose to use such Covered Code under the terms + of any subsequent version of the License published by Netscape. No one + other than Netscape has the right to modify the terms applicable to + Covered Code created under this License. + + 6.3. Derivative Works. + If You create or use a modified version of this License (which you may + only do in order to apply it to code which is not already Covered Code + governed by this License), You must (a) rename Your license so that + the phrases "Mozilla", "MOZILLAPL", "MOZPL", "Netscape", + "MPL", "NPL" or any confusingly similar phrase do not appear in your + license (except to note that your license differs from this License) + and (b) otherwise make it clear that Your version of the license + contains terms which differ from the Mozilla Public License and + Netscape Public License. (Filling in the name of the Initial + Developer, Original Code or Contributor in the notice described in + Exhibit A shall not of themselves be deemed to be modifications of + this License.) + +7. DISCLAIMER OF WARRANTY. + + COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, + WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF + DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. + THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE + IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT, + YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE + COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER + OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF + ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER. + +8. TERMINATION. + + 8.1. This License and the rights granted hereunder will terminate + automatically if You fail to comply with terms herein and fail to cure + such breach within 30 days of becoming aware of the breach. All + sublicenses to the Covered Code which are properly granted shall + survive any termination of this License. Provisions which, by their + nature, must remain in effect beyond the termination of this License + shall survive. + + 8.2. If You initiate litigation by asserting a patent infringement + claim (excluding declatory judgment actions) against Initial Developer + or a Contributor (the Initial Developer or Contributor against whom + You file such action is referred to as "Participant") alleging that: + + (a) such Participant's Contributor Version directly or indirectly + infringes any patent, then any and all rights granted by such + Participant to You under Sections 2.1 and/or 2.2 of this License + shall, upon 60 days notice from Participant terminate prospectively, + unless if within 60 days after receipt of notice You either: (i) + agree in writing to pay Participant a mutually agreeable reasonable + royalty for Your past and future use of Modifications made by such + Participant, or (ii) withdraw Your litigation claim with respect to + the Contributor Version against such Participant. If within 60 days + of notice, a reasonable royalty and payment arrangement are not + mutually agreed upon in writing by the parties or the litigation claim + is not withdrawn, the rights granted by Participant to You under + Sections 2.1 and/or 2.2 automatically terminate at the expiration of + the 60 day notice period specified above. + + (b) any software, hardware, or device, other than such Participant's + Contributor Version, directly or indirectly infringes any patent, then + any rights granted to You by such Participant under Sections 2.1(b) + and 2.2(b) are revoked effective as of the date You first made, used, + sold, distributed, or had made, Modifications made by that + Participant. + + 8.3. If You assert a patent infringement claim against Participant + alleging that such Participant's Contributor Version directly or + indirectly infringes any patent where such claim is resolved (such as + by license or settlement) prior to the initiation of patent + infringement litigation, then the reasonable value of the licenses + granted by such Participant under Sections 2.1 or 2.2 shall be taken + into account in determining the amount or value of any payment or + license. + + 8.4. In the event of termination under Sections 8.1 or 8.2 above, + all end user license agreements (excluding distributors and resellers) + which have been validly granted by You or any distributor hereunder + prior to termination shall survive termination. + +9. LIMITATION OF LIABILITY. + + UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT + (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL + DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE, + OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR + ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY + CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, + WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER + COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN + INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF + LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY + RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW + PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE + EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO + THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU. + +10. U.S. GOVERNMENT END USERS. + + The Covered Code is a "commercial item," as that term is defined in + 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer + software" and "commercial computer software documentation," as such + terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 + C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), + all U.S. Government End Users acquire Covered Code with only those + rights set forth herein. + +11. MISCELLANEOUS. + + This License represents the complete agreement concerning subject + matter hereof. If any provision of this License is held to be + unenforceable, such provision shall be reformed only to the extent + necessary to make it enforceable. This License shall be governed by + California law provisions (except to the extent applicable law, if + any, provides otherwise), excluding its conflict-of-law provisions. + With respect to disputes in which at least one party is a citizen of, + or an entity chartered or registered to do business in the United + States of America, any litigation relating to this License shall be + subject to the jurisdiction of the Federal Courts of the Northern + District of California, with venue lying in Santa Clara County, + California, with the losing party responsible for costs, including + without limitation, court costs and reasonable attorneys' fees and + expenses. The application of the United Nations Convention on + Contracts for the International Sale of Goods is expressly excluded. + Any law or regulation which provides that the language of a contract + shall be construed against the drafter shall not apply to this + License. + +12. RESPONSIBILITY FOR CLAIMS. + + As between Initial Developer and the Contributors, each party is + responsible for claims and damages arising, directly or indirectly, + out of its utilization of rights under this License and You agree to + work with Initial Developer and Contributors to distribute such + responsibility on an equitable basis. Nothing herein is intended or + shall be deemed to constitute any admission of liability. + +13. MULTIPLE-LICENSED CODE. + + Initial Developer may designate portions of the Covered Code as + "Multiple-Licensed". "Multiple-Licensed" means that the Initial + Developer permits you to utilize portions of the Covered Code under + Your choice of the MPL or the alternative licenses, if any, specified + by the Initial Developer in the file described in Exhibit A. + +EXHIBIT A -Mozilla Public License. + + ``The contents of this file are subject to the Mozilla Public License + Version 1.1 (the "License"); you may not use this file except in + compliance with the License. You may obtain a copy of the License at + https://www.mozilla.org/MPL/ + + Software distributed under the License is distributed on an "AS IS" + basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the + License for the specific language governing rights and limitations + under the License. + + The Original Code is ______________________________________. + + The Initial Developer of the Original Code is ________________________. + Portions created by ______________________ are Copyright (C) ______ + _______________________. All Rights Reserved. + + Contributor(s): ______________________________________. + + Alternatively, the contents of this file may be used under the terms + of the _____ license (the "[___] License"), in which case the + provisions of [______] License are applicable instead of those + above. If you wish to allow use of your version of this file only + under the terms of the [____] License and not to allow others to use + your version of this file under the MPL, indicate your decision by + deleting the provisions above and replace them with the notice and + other provisions required by the [___] License. If you do not delete + the provisions above, a recipient may use your version of this file + under either the MPL or the [___] License." + + [NOTE: The text of this Exhibit A may differ slightly from the text of + the notices in the Source Code files of the Original Code. You should + use the text of this Exhibit A rather than the text found in the + Original Code Source Code for Your Modifications.] diff --git a/tools/licenses/lib/licenses.dart b/tools/licenses/lib/licenses.dart index 629c6fcc63ea2..718f3123c04ca 100644 --- a/tools/licenses/lib/licenses.dart +++ b/tools/licenses/lib/licenses.dart @@ -269,6 +269,10 @@ abstract class License implements Comparable { body = system.File('data/academic-3.0').readAsStringSync(); type = LicenseType.afl; break; + case 'Mozilla Public License:1.1': + body = system.File('data/mozilla-1.1').readAsStringSync(); + type = LicenseType.mpl; + break; case 'http://mozilla.org/MPL/2.0/:2.0': body = system.File('data/mozilla-2.0').readAsStringSync(); type = LicenseType.mpl; diff --git a/tools/licenses/lib/main.dart b/tools/licenses/lib/main.dart index c9d8171eb1c46..9f0cadc87081a 100644 --- a/tools/licenses/lib/main.dart +++ b/tools/licenses/lib/main.dart @@ -1184,7 +1184,7 @@ class _RepositoryDirectory extends _RepositoryEntry implements LicenseSource { result.addAll(licenses); progress.advance(success: true); } catch (e, stack) { - system.stderr.writeln('error searching for copyright in: ${file.io}\n$e'); + system.stderr.writeln('\nerror searching for copyright in: ${file.io}\n$e'); if (e is! String) system.stderr.writeln(stack); system.stderr.writeln('\n'); @@ -2256,6 +2256,9 @@ Future _collectLicensesForComponent(_RepositoryDirectory componentRoot, { final List licenses = Set.from(componentRoot.getLicenses(progress).toList()).toList(); + if (progress.hadErrors) + throw 'Had failures while collecting licenses.'; + sink.writeln('UNUSED LICENSES:\n'); final List unusedLicenses = licenses .where((License license) => !license.isUsed) @@ -2268,6 +2271,38 @@ Future _collectLicensesForComponent(_RepositoryDirectory componentRoot, { sink.writeln('USED LICENSES:\n'); final List usedLicenses = licenses.where((License license) => license.isUsed).toList(); final List output = usedLicenses.map((License license) => license.toString()).toList(); + for (int index = 0; index < output.length; index += 1) { + // The strings we look for here are strings which we do not expect to see in + // any of the licenses we use. They either represent examples of misparsing + // licenses (issues we've previously run into and fixed), or licenses we + // know we are trying to avoid (e.g. the GPL, or licenses that only apply to + // test content which shouldn't get built at all). + // If you find that one of these tests is getting hit, and it's not obvious + // to you why the relevant license is a problem, please ask around (e.g. try + // asking Hixie). Do not merely remove one of these checks, sometimes the + // issues involved are relatively subtle. + if (output[index].contains('Version: MPL 1.1/GPL 2.0/LGPL 2.1')) + throw 'Unexpected trilicense block found in: ${usedLicenses[index].origin}'; + if (output[index].contains('The contents of this file are subject to the Mozilla Public License Version')) + throw 'Unexpected MPL block found in: ${usedLicenses[index].origin}'; + if (output[index].contains('You should have received a copy of the GNU')) + throw 'Unexpected GPL block found in: ${usedLicenses[index].origin}'; + if (output[index].contains('BoringSSL is a fork of OpenSSL')) + throw 'Unexpected legacy BoringSSL block found in: ${usedLicenses[index].origin}'; + if (output[index].contains('Contents of this folder are ported from')) + throw 'Unexpected block found in: ${usedLicenses[index].origin}'; + if (output[index].contains('https://github.com/w3c/web-platform-tests/tree/master/selectors-api')) + throw 'Unexpected W3C content found in: ${usedLicenses[index].origin}'; + if (output[index].contains('http://www.w3.org/Consortium/Legal/2008/04-testsuite-copyright.html')) + throw 'Unexpected W3C copyright found in: ${usedLicenses[index].origin}'; + if (output[index].contains('It is based on commit')) + throw 'Unexpected content found in: ${usedLicenses[index].origin}'; + if (output[index].contains('The original code is covered by the dual-licensing approach described in:')) + throw 'Unexpected old license reference found in: ${usedLicenses[index].origin}'; + if (output[index].contains('must choose')) + throw 'Unexpected indecisiveness found in: ${usedLicenses[index].origin}'; + } + output.sort(); sink.writeln(output.join('\n\n')); sink.writeln('Total license count: ${licenses.length}'); @@ -2396,17 +2431,3 @@ Future main(List arguments) async { system.exit(1); } } - -// Sanity checks: -// -// The following substrings shouldn't be in the output: -// Version: MPL 1.1/GPL 2.0/LGPL 2.1 -// The contents of this file are subject to the Mozilla Public License Version -// You should have received a copy of the GNU -// BoringSSL is a fork of OpenSSL -// Contents of this folder are ported from -// https://github.com/w3c/web-platform-tests/tree/master/selectors-api -// It is based on commit -// The original code is covered by the dual-licensing approach described in: -// http://www.w3.org/Consortium/Legal/2008/04-testsuite-copyright.html -// must choose diff --git a/tools/licenses/lib/patterns.dart b/tools/licenses/lib/patterns.dart index d92fc1402ca9c..232edaa719fa3 100644 --- a/tools/licenses/lib/patterns.dart +++ b/tools/licenses/lib/patterns.dart @@ -980,14 +980,14 @@ final List csReferencesByUrl = [3], - versionIndicies: const { 3:4 }, + licenseIndices: const [3], // 5 is lgpl, which we're actively not selecting + versionIndicies: const { 3:4 }, // 5:6 for lgpl pattern: RegExp( kIndent + r'(?:Version: [GMPL/012. ]+ *\n' r'^(?:(?:\1\2? *)? *\n)*' - r'^\1\2)?The contents of this file are subject to the Mozilla Public License Version *\n' - r'^\1\2(?:1\.1) \(the "License"\); you may not use this file except in compliance with *\n' + r'^\1\2)?The contents of this file are subject to the (Mozilla Public License) Version *\n' + r'^\1\2(1\.1) \(the "License"\); you may not use this file except in compliance with *\n' r'^\1\2the License\. +You may obtain a copy of the License at *\n' r'^\1\2http://www\.mozilla\.org/MPL/ *\n' r'^(?:(?:\1\2? *)? *\n)*' From 052774e1cb0187bf2ba81c3d9f3e3fa291f5ebac Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Mon, 4 Mar 2019 22:50:32 -0500 Subject: [PATCH 1282/1537] Roll src/third_party/skia e3e80b7edfd1..0a57971f0544 (16 commits) (#8035) https://skia.googlesource.com/skia.git/%2Blog/e3e80b7edfd1..0a57971f0544 git log e3e80b7edfd1d31724ef789b7d879d0fee5e52f2..0a57971f054410af9f0b29e776b8f186540c7a1c --date=short --no-merges --format=%ad %ae %s 2019-03-04 recipe-roller@chromium.org Roll recipe dependencies (trivial). 2019-03-01 halcanary@google.com SkQP: fix five tests 2019-03-04 robertphillips@google.com Reduce usage of SkCanvas::flush 2019-03-04 fmalita@chromium.org Fix handling of SkSL nullable FPs 2019-03-01 mtklein@google.com mark lowp TODOs 2019-03-04 brianosman@google.com Add SkParticleValue to allow further customization of curve behavior 2019-03-04 herb@google.com Introduce SkStrikeCacheInterface 2019-03-04 egdaniel@google.com Add API for creating SkImage from AHB while uploading data to it. 2019-03-04 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/angle2 4d153383bd3a..0e1ce2e55387 (1 commits) 2019-03-04 robertphillips@google.com Clean up GrSurfaceContext's relationship with GrRecordingContext 2019-02-28 mtklein@google.com add kRGBA_F16Norm_SkColorType 2019-03-01 robertphillips@google.com Remove (unnecessary?) flush in RenderYUVAToRGBA 2019-03-04 skia-autoroll@skia-public.iam.gserviceaccount.com Roll ../src aae499d4d09d..8e3cddfd5a43 (217 commits) 2019-03-04 halcanary@google.com SkQP: fix androidx (follows 2ccdd2bc1d0) 2019-03-04 robertphillips@google.com Remove peekProxy's side-effect behavior 2019-03-04 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader 823ca85404fb..bb305299f4de (1 commits) The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (reed@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 9eca9db96ef2d..fde0db003757b 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'e3e80b7edfd1d31724ef789b7d879d0fee5e52f2', + 'skia_revision': '0a57971f054410af9f0b29e776b8f186540c7a1c', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 69608c8b69161..26b698cfbade1 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 6a5e4c2b1031c3a8cc1b8d5e0524d4dc +Signature: 7a19060fde0d980ac4a36861c31ada7e UNUSED LICENSES: @@ -4847,6 +4847,7 @@ FILE: ../../../third_party/skia/modules/sksg/src/SkSGTransformPriv.h FILE: ../../../third_party/skia/samplecode/SampleSG.cpp FILE: ../../../third_party/skia/samplecode/SampleThinAA.cpp FILE: ../../../third_party/skia/src/core/SkDescriptor.cpp +FILE: ../../../third_party/skia/src/core/SkStrikeInterface.h FILE: ../../../third_party/skia/src/gpu/GrAHardwareBufferUtils.cpp FILE: ../../../third_party/skia/src/gpu/GrAHardwareBufferUtils.h FILE: ../../../third_party/skia/src/gpu/GrBaseContextPriv.h From ed628da00aa9ef50ef06c61888f32c46fdea6be6 Mon Sep 17 00:00:00 2001 From: Chris Bracken Date: Mon, 4 Mar 2019 22:00:54 -0800 Subject: [PATCH 1283/1537] Add missing kHasImplicitScrolling enum value (#8030) This brings the Dart and C++ semantics flag enums back in sync. In #5941, implicit scrolling support was added to SemanticsFlag in dart:ui, and to the Android embedder, but not to the SemanticsFlags enum on the C++ side. This also clarifies/corrects the documentation for this value in dart:ui and in the embedder API. --- lib/ui/semantics.dart | 11 ++++++----- lib/ui/semantics/semantics_node.h | 1 + shell/platform/embedder/embedder.h | 8 ++++++++ 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/lib/ui/semantics.dart b/lib/ui/semantics.dart index 1e3650910d543..79aaf1ef943d9 100644 --- a/lib/ui/semantics.dart +++ b/lib/ui/semantics.dart @@ -264,8 +264,9 @@ class SemanticsAction { /// A Boolean value that can be associated with a semantics node. // -// When changes are made to this class, the equivalent APIs in each of the -// embedders *must* be updated. +// When changes are made to this class, the equivalent APIs in +// `lib/ui/semantics/semantics_node.h` and in each of the embedders *must* be +// updated. class SemanticsFlag { static const int _kHasCheckedStateIndex = 1 << 0; static const int _kIsCheckedIndex = 1 << 1; @@ -476,9 +477,9 @@ class SemanticsFlag { /// to move focus to an offscreen child. /// /// For example, a [ListView] widget has implicit scrolling so that users can - /// easily move to the next visible set of children. A [TabBar] widget does - /// not have implicit scrolling, so that users can navigate into the tab - /// body when reaching the end of the tab bar. + /// easily move the accessibility focus to the next set of children. A + /// [PageView] widget does not have implicit scrolling, so that users don't + /// navigate to the next page when reaching the end of the current one. static const SemanticsFlag hasImplicitScrolling = const SemanticsFlag._(_kHasImplicitScrollingIndex); /// The possible semantics flags. diff --git a/lib/ui/semantics/semantics_node.h b/lib/ui/semantics/semantics_node.h index 7596dc20957e8..6bed3b305f1d3 100644 --- a/lib/ui/semantics/semantics_node.h +++ b/lib/ui/semantics/semantics_node.h @@ -65,6 +65,7 @@ enum class SemanticsFlags : int32_t { kIsLiveRegion = 1 << 15, kHasToggledState = 1 << 16, kIsToggled = 1 << 17, + kHasImplicitScrolling = 1 << 18, }; struct SemanticsNode { diff --git a/shell/platform/embedder/embedder.h b/shell/platform/embedder/embedder.h index baf789594d012..11f70f1092f5d 100644 --- a/shell/platform/embedder/embedder.h +++ b/shell/platform/embedder/embedder.h @@ -141,6 +141,14 @@ typedef enum { kFlutterSemanticsFlagHasToggledState = 1 << 16, // If true, the semantics node is "on". If false, the semantics node is "off". kFlutterSemanticsFlagIsToggled = 1 << 17, + // Whether the platform can scroll the semantics node when the user attempts + // to move the accessibility focus to an offscreen child. + // + // For example, a |ListView| widget has implicit scrolling so that users can + // easily move the accessibility focus to the next set of children. A + // |PageView| widget does not have implicit scrolling, so that users don't + // navigate to the next page when reaching the end of the current one. + kFlutterSemanticsFlagHasImplicitScrolling = 1 << 18, } FlutterSemanticsFlag; typedef enum { From c462269807fec45f403a615bf90a1e2a573a36f3 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Tue, 5 Mar 2019 03:20:00 -0500 Subject: [PATCH 1284/1537] Roll src/third_party/skia 0a57971f0544..fbc887df72ec (1 commits) (#8037) https://skia.googlesource.com/skia.git/%2Blog/0a57971f0544..fbc887df72ec git log 0a57971f054410af9f0b29e776b8f186540c7a1c..fbc887df72ec102843c009977b24ed5b4bb2fab1 --date=short --no-merges --format=%ad %ae %s 2019-03-05 reed@google.com Revert "Remove (unnecessary?) flush in RenderYUVAToRGBA" The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (reed@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index fde0db003757b..3464e40b5d6b6 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '0a57971f054410af9f0b29e776b8f186540c7a1c', + 'skia_revision': 'fbc887df72ec102843c009977b24ed5b4bb2fab1', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 26b698cfbade1..31ab8006db70b 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 7a19060fde0d980ac4a36861c31ada7e +Signature: 8ba8b757d4d23dc9e9b1a157dc7ca2e2 UNUSED LICENSES: From 75d4db31d0cc59404d726b4d92ca52e31545a25c Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Tue, 5 Mar 2019 07:41:42 -0500 Subject: [PATCH 1285/1537] Roll src/third_party/skia fbc887df72ec..25bc174cf682 (7 commits) (#8039) https://skia.googlesource.com/skia.git/%2Blog/fbc887df72ec..25bc174cf682 git log fbc887df72ec102843c009977b24ed5b4bb2fab1..25bc174cf682e666d5437e5f3b910a7a11b4bb9e --date=short --no-merges --format=%ad %ae %s 2019-03-04 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader bb305299f4de..d318dd329423 (7 commits) 2019-03-04 fmalita@chromium.org SkMixerColorFilter GPU impl 2019-03-04 csmartdalton@google.com Drop support for GL_EXT_raster_multisample 2019-03-05 skia-recreate-skps@skia-swarming-bots.iam.gserviceaccount.com Update go_deps asset 2019-03-01 bungeman@google.com Roll HarfBuzz. 2019-03-05 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/angle2 0e1ce2e55387..b8cff9e9347c (6 commits) 2019-03-05 recipe-roller@chromium.org Roll recipe dependencies (trivial). The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (reed@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 3464e40b5d6b6..99d4eebdb50a3 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'fbc887df72ec102843c009977b24ed5b4bb2fab1', + 'skia_revision': '25bc174cf682e666d5437e5f3b910a7a11b4bb9e', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 31ab8006db70b..e6eb0de71a859 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 8ba8b757d4d23dc9e9b1a157dc7ca2e2 +Signature: c8fbe627d3b7f9e585d53f4e8584f18b UNUSED LICENSES: @@ -4862,6 +4862,9 @@ FILE: ../../../third_party/skia/src/gpu/GrImageContext.cpp FILE: ../../../third_party/skia/src/gpu/GrImageContextPriv.h FILE: ../../../third_party/skia/src/gpu/GrRecordingContext.cpp FILE: ../../../third_party/skia/src/gpu/GrRecordingContextPriv.h +FILE: ../../../third_party/skia/src/gpu/effects/GrMixerEffect.cpp +FILE: ../../../third_party/skia/src/gpu/effects/GrMixerEffect.fp +FILE: ../../../third_party/skia/src/gpu/effects/GrMixerEffect.h FILE: ../../../third_party/skia/src/gpu/vk/GrVkSecondaryCBDrawContext.cpp FILE: ../../../third_party/skia/src/gpu/vk/GrVkSecondaryCBDrawContext.h FILE: ../../../third_party/skia/src/sksl/SkSLDefines.h From e6a5201f0be3e471438df703ea7355c186d25f51 Mon Sep 17 00:00:00 2001 From: Chris Bracken Date: Tue, 5 Mar 2019 07:58:26 -0800 Subject: [PATCH 1286/1537] Add missing values to semantics action enums (#8033) This brings the Dart and C++ semantics flag enums back in sync. In #5902, the ability to move the cursor forward and backward one word were added to dart:ui, and to the Android embedder, but not to the SemanticsAction enum on the C++ side. --- lib/ui/semantics.dart | 5 +++-- lib/ui/semantics/semantics_node.h | 5 ++++- shell/platform/embedder/embedder.h | 4 ++++ 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/lib/ui/semantics.dart b/lib/ui/semantics.dart index 79aaf1ef943d9..b98d36fe2b895 100644 --- a/lib/ui/semantics.dart +++ b/lib/ui/semantics.dart @@ -7,8 +7,9 @@ part of dart.ui; /// The possible actions that can be conveyed from the operating system /// accessibility APIs to a semantics node. // -// When changes are made to this class, the equivalent APIs in each of the -// embedders *must* be updated. +// When changes are made to this class, the equivalent APIs in +// `lib/ui/semantics/semantics_node.h` and in each of the embedders *must* be +// updated. class SemanticsAction { const SemanticsAction._(this.index); diff --git a/lib/ui/semantics/semantics_node.h b/lib/ui/semantics/semantics_node.h index 6bed3b305f1d3..f6918e54475ba 100644 --- a/lib/ui/semantics/semantics_node.h +++ b/lib/ui/semantics/semantics_node.h @@ -16,7 +16,8 @@ namespace blink { -// Must match the SemanticsAction enum in semantics.dart. +// Must match the SemanticsAction enum in semantics.dart and in each of the +// embedders. enum class SemanticsAction : int32_t { kTap = 1 << 0, kLongPress = 1 << 1, @@ -37,6 +38,8 @@ enum class SemanticsAction : int32_t { kDidLoseAccessibilityFocus = 1 << 16, kCustomAction = 1 << 17, kDismiss = 1 << 18, + kMoveCursorForwardByWordIndex = 1 << 19, + kMoveCursorBackwardByWordIndex = 1 << 20, }; const int kScrollableSemanticsActions = diff --git a/shell/platform/embedder/embedder.h b/shell/platform/embedder/embedder.h index 11f70f1092f5d..402f58ebcd3ef 100644 --- a/shell/platform/embedder/embedder.h +++ b/shell/platform/embedder/embedder.h @@ -97,6 +97,10 @@ typedef enum { kFlutterSemanticsActionCustomAction = 1 << 17, // A request that the node should be dismissed. kFlutterSemanticsActionDismiss = 1 << 18, + // Move the cursor forward by one word. + kFlutterSemanticsActionMoveCursorForwardByWordIndex = 1 << 19, + // Move the cursor backward by one word. + kFlutterSemanticsActionMoveCursorBackwardByWordIndex = 1 << 20, } FlutterSemanticsAction; // The set of properties that may be associated with a semantics node. From 5fed421972b7c573e5c9c77140f8cb17592eb443 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Tue, 5 Mar 2019 12:20:58 -0500 Subject: [PATCH 1287/1537] Roll src/third_party/skia 25bc174cf682..72542816cadb (14 commits) (#8040) https://skia.googlesource.com/skia.git/%2Blog/25bc174cf682..72542816cadb git log 25bc174cf682e666d5437e5f3b910a7a11b4bb9e..72542816cadbc3d18a19725f6f6aecf45ffc188c --date=short --no-merges --format=%ad %ae %s 2019-03-04 reed@google.com add sample for retained vertices 2019-03-05 fmalita@chromium.org Reland "SkMixerColorFilter GPU impl" 2019-03-05 reed@google.com Revert "SkMixerColorFilter GPU impl" 2019-03-05 reed@google.com Reland "check if we can use legacy blits" 2019-03-05 reed@google.com Revert "check if we can use legacy blits" 2019-02-27 brianosman@google.com Remove dithering during SkConvertPixels 2019-03-05 bsalomon@google.com Remove legacy promise image APIs 2019-03-04 jvanverth@google.com Fix issue with offsetting polygon by 0 distance. 2019-03-05 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader d69cdaba1445..e95eeb19a770 (1 commits) 2019-03-04 bsalomon@google.com Default implementation of onSetRelease() on GrSurface 2019-03-04 bsalomon@google.com Simplify promise image lazy instantiation callbacks. 2019-03-04 robertphillips@google.com Lay some groundwork for depowering SkGpuDevice's and SkImage_GpuBase's context pointer 2019-03-05 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader d318dd329423..d69cdaba1445 (4 commits) 2019-03-01 reed@google.com check if we can use legacy blits The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (reed@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/DEPS b/DEPS index 99d4eebdb50a3..004c3f14c31f7 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '25bc174cf682e666d5437e5f3b910a7a11b4bb9e', + 'skia_revision': '72542816cadbc3d18a19725f6f6aecf45ffc188c', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index e6eb0de71a859..e9e85586b9d13 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: c8fbe627d3b7f9e585d53f4e8584f18b +Signature: cf0991f5443f916cde12c3bc27ba049f UNUSED LICENSES: @@ -1717,8 +1717,6 @@ FILE: ../../../third_party/skia/src/effects/SkTrimPE.h FILE: ../../../third_party/skia/src/effects/SkTrimPathEffect.cpp FILE: ../../../third_party/skia/src/gpu/GrContextThreadSafeProxyPriv.h FILE: ../../../third_party/skia/src/gpu/GrDDLContext.cpp -FILE: ../../../third_party/skia/src/gpu/GrDeinstantiateProxyTracker.cpp -FILE: ../../../third_party/skia/src/gpu/GrDeinstantiateProxyTracker.h FILE: ../../../third_party/skia/src/gpu/GrDriverBugWorkarounds.cpp FILE: ../../../third_party/skia/src/gpu/GrFPArgs.h FILE: ../../../third_party/skia/src/gpu/GrLegacyDirectContext.cpp From 14e082fa0546666dbde653860ade6280fcf0a8a5 Mon Sep 17 00:00:00 2001 From: Dan Field Date: Tue, 5 Mar 2019 09:36:16 -0800 Subject: [PATCH 1288/1537] add lint script for Android with baseline (#8036) * add lint script for Android with baseline --- .cirrus.yml | 4 + tools/android_lint/baseline.xml | 939 +++++++++++++++++++++++++++++++ tools/android_lint/bin/main.dart | 95 +++- 3 files changed, 1007 insertions(+), 31 deletions(-) create mode 100644 tools/android_lint/baseline.xml diff --git a/.cirrus.yml b/.cirrus.yml index e4cafa6434f1a..bfe6d0816b9fb 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -38,6 +38,10 @@ task: ninja -C out/host_release test_host_script: cd $ENGINE_PATH/src && ./flutter/testing/run_tests.sh host_release - name: build_android + lint_host_script: | + cd $ENGINE_PATH/src/flutter/tools/android_lint + $ENGINE_PATH/src/third_party/dart/tools/sdks/dart-sdk/bin/pub get + $ENGINE_PATH/src/third_party/dart/tools/sdks/dart-sdk/bin/dart bin/main.dart compile_host_script: | cd $ENGINE_PATH/src ./flutter/tools/gn --android --unoptimized diff --git a/tools/android_lint/baseline.xml b/tools/android_lint/baseline.xml new file mode 100644 index 0000000000000..2a81ee20380c5 --- /dev/null +++ b/tools/android_lint/baseline.xml @@ -0,0 +1,939 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tools/android_lint/bin/main.dart b/tools/android_lint/bin/main.dart index 4254fd2d20124..c96de9afc2226 100644 --- a/tools/android_lint/bin/main.dart +++ b/tools/android_lint/bin/main.dart @@ -57,7 +57,15 @@ Future runLint(ArgParser argParser, ArgResults argResults) async { return -1; } - final IOSink projectXml = File('./project.xml').openWrite(); + if (argResults['rebaseline']) { + print('Removing previous baseline.xml...'); + final File baselineXml = File(baselineXmlPath); + if (baselineXml.existsSync()) { + await baselineXml.delete(); + } + } + print('Preparing projext.xml...'); + final IOSink projectXml = File(projectXmlPath).openWrite(); projectXml.write( ''' @@ -79,57 +87,67 @@ Future runLint(ArgParser argParser, ArgResults argResults) async { await projectXml.close(); print('Wrote project.xml, starting lint...'); - final ProcessResult result = await processManager.run( + final Process lintProcess = await processManager.start( [ path.join(androidSdkDir.path, 'tools', 'bin', 'lint'), '--project', - './project.xml', + projectXmlPath, '--html', argResults['out'], '--showall', '--exitcode', // Set non-zero exit code on errors '-Wall', '-Werror', + '--baseline', + baselineXmlPath, ], ); - if (result.stderr != null) { - print('Lint tool had internal errors:'); - print(result.stderr); - } - print(result.stdout); - return result.exitCode; + lintProcess.stdout.pipe(stdout); + lintProcess.stderr.pipe(stderr); + return await lintProcess.exitCode; } +/// Prepares an [ArgParser] for this script. ArgParser setupOptions() { final ArgParser argParser = ArgParser(); - argParser.addOption( - 'in', - help: 'The path to `engine/src`.', - defaultsTo: path.relative( - path.join( - path.dirname( - path.dirname(path.dirname(path.fromUri(Platform.script))), + argParser + ..addOption( + 'in', + help: 'The path to `engine/src`.', + defaultsTo: path.relative( + path.join( + projectDir, + '..', + '..', + '..', ), - '..', - '..', ), - ), - ); - argParser.addOption( - 'out', - help: 'The path to write the generated the HTML report to.', - defaultsTo: 'lint_report', - ); - argParser.addFlag( - 'help', - help: 'Print usage of the command.', - negatable: false, - defaultsTo: false, - ); + ) + ..addOption( + 'out', + help: 'The path to write the generated the HTML report to.', + defaultsTo: path.join(projectDir, 'lint_report'), + ) + ..addFlag( + 'help', + help: 'Print usage of the command.', + negatable: false, + defaultsTo: false, + ) + ..addFlag( + 'rebaseline', + help: 'Recalculates the baseline for errors and warnings ' + 'in this project.', + negatable: false, + defaultsTo: false, + ); return argParser; } +/// Checks that `java` points to Java 1.8. +/// +/// The SDK lint tool may not work with Java > 1.8. Future checkJava1_8() async { print('Checking Java version...'); final ProcessResult javaResult = await processManager.run( @@ -146,3 +164,18 @@ Future checkJava1_8() async { 'If this process fails, please retry using Java 1.8.'); } } + +/// The root directory of this project. +String get projectDir => path.dirname( + path.dirname( + path.fromUri(Platform.script), + ), + ); + +/// The path to use for project.xml, which tells the linter where to find source +/// files. +String get projectXmlPath => path.join(projectDir, 'project.xml'); + +/// The path to use for baseline.xml, which tells the linter what errors or +/// warnings to ignore. +String get baselineXmlPath => path.join(projectDir, 'baseline.xml'); From effee2f80e3478a54ee3327df020cc356f833935 Mon Sep 17 00:00:00 2001 From: Chris Yang Date: Tue, 5 Mar 2019 11:12:00 -0800 Subject: [PATCH 1289/1537] remove extra statement (#8041) Remove an extra statement introduced in https://github.com/flutter/engine/commit/36ca5740c7e39e25d7ac22c755e66525b92fbb56 --- .../platform/darwin/ios/framework/Source/FlutterPlatformViews.mm | 1 - 1 file changed, 1 deletion(-) diff --git a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm index 2bd198af6bf12..304ae123bc364 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm @@ -427,7 +427,6 @@ - (instancetype)initWithTarget:(id)target flutterView:(UIView*)flutterView { - (void)touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event { [_flutterView touchesBegan:touches withEvent:event]; _currentTouchPointersCount += touches.count; - [_flutterView touchesBegan:touches withEvent:event]; } - (void)touchesMoved:(NSSet*)touches withEvent:(UIEvent*)event { From f4951df193a7966f9ed4da43d555eee0913d84d1 Mon Sep 17 00:00:00 2001 From: Chris Bracken Date: Tue, 5 Mar 2019 12:07:07 -0800 Subject: [PATCH 1290/1537] Minor cleanups to CONTRIBUTING.md (#8043) This is really just in order to trigger a build. ci.chromium.org infra had a short outage during our last build. --- CONTRIBUTING.md | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index aa1efa2bc0437..7102ad364ac08 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,18 +1,22 @@ Contributing to the Flutter engine ================================== -[![Build Status](https://cirrus-ci.com/flutter/engine.svg)](https://cirrus-ci.com/flutter/engine) +[![Build Status](https://cirrus-ci.com/flutter/engine.svg)][build_status] -_See also: [Flutter's code of conduct](https://github.com/flutter/flutter/blob/master/CODE_OF_CONDUCT.md)_ +_See also: [Flutter's code of conduct][code_of_conduct]_ Welcome ------- -For an introduction to contributing to Flutter, see [our -contributor -guide](https://github.com/flutter/flutter/blob/master/CONTRIBUTING.md). +For an introduction to contributing to Flutter, see [our contributor +guide][contrib_guide]. -For specific instructions regarding building Flutter's engine, see -[Setting up the Engine development -environment](https://github.com/flutter/flutter/wiki/Setting-up-the-Engine-development-environment) -on our wiki. Those instructions are part of the broader onboarding instructions described in the contributing guide. +For specific instructions regarding building Flutter's engine, see [Setting up +the Engine development environment][engine_dev_setup] on our wiki. Those +instructions are part of the broader onboarding instructions described in the +contributing guide. + +[build_status]: https://cirrus-ci.com/flutter/engine +[code_of_conduct]: https://github.com/flutter/flutter/blob/master/CODE_OF_CONDUCT.md +[contrib_guide]: https://github.com/flutter/flutter/wiki/Setting-up-the-Engine-development-environment +[engine_dev_setup]: https://github.com/flutter/flutter/wiki/Setting-up-the-Engine-development-environment From dd80fc9ff69a355ffde8ca340ceddd0fba4f1f89 Mon Sep 17 00:00:00 2001 From: stuartmorgan Date: Tue, 5 Mar 2019 14:12:07 -0800 Subject: [PATCH 1291/1537] Add engine support for scrollwheel events (#7494) Adds support for pointer signals, in a way that will support both discrete events (e.g., scroll wheels, flutter/flutter#22762) and continuous gestures (e.g., trackpad scroll, flutter/flutter#21953). Also exposes these new event options to the embedder. Does not include code to send the new events from the platform shells. --- lib/stub_ui/hooks.dart | 5 ++- lib/stub_ui/pointer.dart | 33 ++++++++++++++++++- lib/ui/hooks.dart | 5 ++- lib/ui/pointer.dart | 33 ++++++++++++++++++- lib/ui/window/pointer_data.cc | 2 +- lib/ui/window/pointer_data.h | 10 ++++++ .../android/io/flutter/view/FlutterView.java | 16 +++++++-- shell/platform/embedder/embedder.cc | 17 ++++++++++ shell/platform/embedder/embedder.h | 10 ++++++ 9 files changed, 124 insertions(+), 7 deletions(-) diff --git a/lib/stub_ui/hooks.dart b/lib/stub_ui/hooks.dart index 8fd0c2a338a01..6e0820832939b 100644 --- a/lib/stub_ui/hooks.dart +++ b/lib/stub_ui/hooks.dart @@ -213,7 +213,7 @@ void _invoke3(void callback(A1 a1, A2 a2, A3 a3), Zone zone, A1 arg1 // // * pointer_data.cc // * FlutterView.java -const int _kPointerDataFieldCount = 21; +const int _kPointerDataFieldCount = 24; PointerDataPacket _unpackPointerDataPacket(ByteData packet) { const int kStride = Int64List.bytesPerElement; @@ -227,6 +227,7 @@ PointerDataPacket _unpackPointerDataPacket(ByteData packet) { timeStamp: new Duration(microseconds: packet.getInt64(kStride * offset++, _kFakeHostEndian)), change: PointerChange.values[packet.getInt64(kStride * offset++, _kFakeHostEndian)], kind: PointerDeviceKind.values[packet.getInt64(kStride * offset++, _kFakeHostEndian)], + signalKind: PointerSignalKind.values[packet.getInt64(kStride * offset++, _kFakeHostEndian)], device: packet.getInt64(kStride * offset++, _kFakeHostEndian), physicalX: packet.getFloat64(kStride * offset++, _kFakeHostEndian), physicalY: packet.getFloat64(kStride * offset++, _kFakeHostEndian), @@ -245,6 +246,8 @@ PointerDataPacket _unpackPointerDataPacket(ByteData packet) { orientation: packet.getFloat64(kStride * offset++, _kFakeHostEndian), tilt: packet.getFloat64(kStride * offset++, _kFakeHostEndian), platformData: packet.getInt64(kStride * offset++, _kFakeHostEndian), + scrollDeltaX: packet.getFloat64(kStride * offset++, _kFakeHostEndian), + scrollDeltaY: packet.getFloat64(kStride * offset++, _kFakeHostEndian) ); assert(offset == (i + 1) * _kPointerDataFieldCount); } diff --git a/lib/stub_ui/pointer.dart b/lib/stub_ui/pointer.dart index c0d3757d84bd5..fd5f3a13e25aa 100644 --- a/lib/stub_ui/pointer.dart +++ b/lib/stub_ui/pointer.dart @@ -54,6 +54,18 @@ enum PointerDeviceKind { unknown } +/// The kind of [PointerDeviceKind.signal]. +enum PointerSignalKind { + /// The event is not associated with a pointer signal. + none, + + /// A pointer-generated scroll (e.g., mouse wheel or trackpad scroll). + scroll, + + /// An unknown pointer signal kind. + unknown +} + /// Information about the state of a pointer. class PointerData { /// Creates an object that represents the state of a pointer. @@ -61,6 +73,7 @@ class PointerData { this.timeStamp: Duration.zero, this.change: PointerChange.cancel, this.kind: PointerDeviceKind.touch, + this.signalKind, this.device: 0, this.physicalX: 0.0, this.physicalY: 0.0, @@ -79,6 +92,8 @@ class PointerData { this.orientation: 0.0, this.tilt: 0.0, this.platformData: 0, + this.scrollDeltaX: 0.0, + this.scrollDeltaY: 0.0, }); /// Time of event dispatch, relative to an arbitrary timeline. @@ -90,6 +105,9 @@ class PointerData { /// The kind of input device for which the event was generated. final PointerDeviceKind kind; + /// The kind of signal for a pointer signal event. + final PointerSignalKind signalKind; + /// Unique identifier for the pointing device, reused across interactions. final int device; @@ -203,6 +221,16 @@ class PointerData { /// Opaque platform-specific data associated with the event. final int platformData; + /// For events with signalKind of PointerSignalKind.scroll: + /// + /// The amount to scroll in the x direction, in physical pixels. + final double scrollDeltaX; + + /// For events with signalKind of PointerSignalKind.scroll: + /// + /// The amount to scroll in the y direction, in physical pixels. + final double scrollDeltaY; + @override String toString() => '$runtimeType(x: $physicalX, y: $physicalY)'; @@ -212,6 +240,7 @@ class PointerData { 'timeStamp: $timeStamp, ' 'change: $change, ' 'kind: $kind, ' + 'signalKind: $signalKind, ' 'device: $device, ' 'physicalX: $physicalX, ' 'physicalY: $physicalY, ' @@ -228,7 +257,9 @@ class PointerData { 'radiusMax: $radiusMax, ' 'orientation: $orientation, ' 'tilt: $tilt, ' - 'platformData: $platformData' + 'platformData: $platformData, ' + 'scrollDeltaX: $scrollDeltaX, ' + 'scrollDeltaY: $scrollDeltaY' ')'; } } diff --git a/lib/ui/hooks.dart b/lib/ui/hooks.dart index b1550bf90b1ee..e88580a95ce06 100644 --- a/lib/ui/hooks.dart +++ b/lib/ui/hooks.dart @@ -259,7 +259,7 @@ void _invoke3(void callback(A1 a1, A2 a2, A3 a3), Zone zone, A1 arg1 // // * pointer_data.cc // * FlutterView.java -const int _kPointerDataFieldCount = 21; +const int _kPointerDataFieldCount = 24; PointerDataPacket _unpackPointerDataPacket(ByteData packet) { const int kStride = Int64List.bytesPerElement; @@ -273,6 +273,7 @@ PointerDataPacket _unpackPointerDataPacket(ByteData packet) { timeStamp: new Duration(microseconds: packet.getInt64(kStride * offset++, _kFakeHostEndian)), change: PointerChange.values[packet.getInt64(kStride * offset++, _kFakeHostEndian)], kind: PointerDeviceKind.values[packet.getInt64(kStride * offset++, _kFakeHostEndian)], + signalKind: PointerSignalKind.values[packet.getInt64(kStride * offset++, _kFakeHostEndian)], device: packet.getInt64(kStride * offset++, _kFakeHostEndian), physicalX: packet.getFloat64(kStride * offset++, _kFakeHostEndian), physicalY: packet.getFloat64(kStride * offset++, _kFakeHostEndian), @@ -291,6 +292,8 @@ PointerDataPacket _unpackPointerDataPacket(ByteData packet) { orientation: packet.getFloat64(kStride * offset++, _kFakeHostEndian), tilt: packet.getFloat64(kStride * offset++, _kFakeHostEndian), platformData: packet.getInt64(kStride * offset++, _kFakeHostEndian), + scrollDeltaX: packet.getFloat64(kStride * offset++, _kFakeHostEndian), + scrollDeltaY: packet.getFloat64(kStride * offset++, _kFakeHostEndian) ); assert(offset == (i + 1) * _kPointerDataFieldCount); } diff --git a/lib/ui/pointer.dart b/lib/ui/pointer.dart index c0d3757d84bd5..fd5f3a13e25aa 100644 --- a/lib/ui/pointer.dart +++ b/lib/ui/pointer.dart @@ -54,6 +54,18 @@ enum PointerDeviceKind { unknown } +/// The kind of [PointerDeviceKind.signal]. +enum PointerSignalKind { + /// The event is not associated with a pointer signal. + none, + + /// A pointer-generated scroll (e.g., mouse wheel or trackpad scroll). + scroll, + + /// An unknown pointer signal kind. + unknown +} + /// Information about the state of a pointer. class PointerData { /// Creates an object that represents the state of a pointer. @@ -61,6 +73,7 @@ class PointerData { this.timeStamp: Duration.zero, this.change: PointerChange.cancel, this.kind: PointerDeviceKind.touch, + this.signalKind, this.device: 0, this.physicalX: 0.0, this.physicalY: 0.0, @@ -79,6 +92,8 @@ class PointerData { this.orientation: 0.0, this.tilt: 0.0, this.platformData: 0, + this.scrollDeltaX: 0.0, + this.scrollDeltaY: 0.0, }); /// Time of event dispatch, relative to an arbitrary timeline. @@ -90,6 +105,9 @@ class PointerData { /// The kind of input device for which the event was generated. final PointerDeviceKind kind; + /// The kind of signal for a pointer signal event. + final PointerSignalKind signalKind; + /// Unique identifier for the pointing device, reused across interactions. final int device; @@ -203,6 +221,16 @@ class PointerData { /// Opaque platform-specific data associated with the event. final int platformData; + /// For events with signalKind of PointerSignalKind.scroll: + /// + /// The amount to scroll in the x direction, in physical pixels. + final double scrollDeltaX; + + /// For events with signalKind of PointerSignalKind.scroll: + /// + /// The amount to scroll in the y direction, in physical pixels. + final double scrollDeltaY; + @override String toString() => '$runtimeType(x: $physicalX, y: $physicalY)'; @@ -212,6 +240,7 @@ class PointerData { 'timeStamp: $timeStamp, ' 'change: $change, ' 'kind: $kind, ' + 'signalKind: $signalKind, ' 'device: $device, ' 'physicalX: $physicalX, ' 'physicalY: $physicalY, ' @@ -228,7 +257,9 @@ class PointerData { 'radiusMax: $radiusMax, ' 'orientation: $orientation, ' 'tilt: $tilt, ' - 'platformData: $platformData' + 'platformData: $platformData, ' + 'scrollDeltaX: $scrollDeltaX, ' + 'scrollDeltaY: $scrollDeltaY' ')'; } } diff --git a/lib/ui/window/pointer_data.cc b/lib/ui/window/pointer_data.cc index e74e0b5ce94f0..d52bda18c3f58 100644 --- a/lib/ui/window/pointer_data.cc +++ b/lib/ui/window/pointer_data.cc @@ -9,7 +9,7 @@ namespace blink { // If this value changes, update the pointer data unpacking code in hooks.dart. -static constexpr int kPointerDataFieldCount = 21; +static constexpr int kPointerDataFieldCount = 24; static_assert(sizeof(PointerData) == sizeof(int64_t) * kPointerDataFieldCount, "PointerData has the wrong size"); diff --git a/lib/ui/window/pointer_data.h b/lib/ui/window/pointer_data.h index d9d01b560a1d2..56fd6067a1b35 100644 --- a/lib/ui/window/pointer_data.h +++ b/lib/ui/window/pointer_data.h @@ -28,11 +28,19 @@ struct alignas(8) PointerData { kMouse, kStylus, kInvertedStylus, + kSignal, + }; + + // Must match the PointerSignalKind enum in pointer.dart. + enum class SignalKind : int64_t { + kNone, + kScroll, }; int64_t time_stamp; Change change; DeviceKind kind; + SignalKind signal_kind; int64_t device; double physical_x; double physical_y; @@ -51,6 +59,8 @@ struct alignas(8) PointerData { double orientation; double tilt; int64_t platformData; + double scroll_delta_x; + double scroll_delta_y; void Clear(); }; diff --git a/shell/platform/android/io/flutter/view/FlutterView.java b/shell/platform/android/io/flutter/view/FlutterView.java index c766305fd7dcc..6c42dc152d739 100644 --- a/shell/platform/android/io/flutter/view/FlutterView.java +++ b/shell/platform/android/io/flutter/view/FlutterView.java @@ -378,10 +378,16 @@ public InputConnection onCreateInputConnection(EditorInfo outAttrs) { private static final int kPointerDeviceKindMouse = 1; private static final int kPointerDeviceKindStylus = 2; private static final int kPointerDeviceKindInvertedStylus = 3; - private static final int kPointerDeviceKindUnknown = 4; + private static final int kPointerDeviceKindSignal = 4; + private static final int kPointerDeviceKindUnknown = 5; + + // Must match the PointerSignalKind enum in pointer.dart. + private static final int kPointerSignalKindNone = 0; + private static final int kPointerSignalKindScroll = 1; + private static final int kPointerSignalKindUnknown = 2; // These values must match the unpacking code in hooks.dart. - private static final int kPointerDataFieldCount = 21; + private static final int kPointerDataFieldCount = 24; private static final int kPointerBytesPerField = 8; private int getPointerChangeForAction(int maskedAction) { @@ -436,11 +442,14 @@ private void addPointerForIndex(MotionEvent event, int pointerIndex, int pointer int pointerKind = getPointerDeviceTypeForToolType(event.getToolType(pointerIndex)); + int signalKind = kPointerSignalKindNone; + long timeStamp = event.getEventTime() * 1000; // Convert from milliseconds to microseconds. packet.putLong(timeStamp); // time_stamp packet.putLong(pointerChange); // change packet.putLong(pointerKind); // kind + packet.putLong(signalKind); // signal_kind packet.putLong(event.getPointerId(pointerIndex)); // device packet.putDouble(event.getX(pointerIndex)); // physical_x packet.putDouble(event.getY(pointerIndex)); // physical_y @@ -492,6 +501,9 @@ private void addPointerForIndex(MotionEvent event, int pointerIndex, int pointer } packet.putLong(pointerData); // platformData + + packet.putDouble(0.0); // scroll_delta_x + packet.putDouble(0.0); // scroll_delta_y } @Override diff --git a/shell/platform/embedder/embedder.cc b/shell/platform/embedder/embedder.cc index 7dffc91718e77..c4d0546474411 100644 --- a/shell/platform/embedder/embedder.cc +++ b/shell/platform/embedder/embedder.cc @@ -677,6 +677,19 @@ inline blink::PointerData::Change ToPointerDataChange( return blink::PointerData::Change::kCancel; } +// Returns the blink::PointerData::SignalKind for the given +// FlutterPointerSignaKind. +inline blink::PointerData::SignalKind ToPointerDataSignalKind( + FlutterPointerSignalKind kind) { + switch (kind) { + case kFlutterPointerSignalKindNone: + return blink::PointerData::SignalKind::kNone; + case kFlutterPointerSignalKindScroll: + return blink::PointerData::SignalKind::kScroll; + } + return blink::PointerData::SignalKind::kNone; +} + FlutterEngineResult FlutterEngineSendPointerEvent( FlutterEngine engine, const FlutterPointerEvent* pointers, @@ -699,6 +712,10 @@ FlutterEngineResult FlutterEngineSendPointerEvent( pointer_data.physical_x = SAFE_ACCESS(current, x, 0.0); pointer_data.physical_y = SAFE_ACCESS(current, y, 0.0); pointer_data.device = SAFE_ACCESS(current, device, 0); + pointer_data.signal_kind = ToPointerDataSignalKind( + SAFE_ACCESS(current, signal_kind, kFlutterPointerSignalKindNone)); + pointer_data.scroll_delta_x = SAFE_ACCESS(current, scroll_delta_x, 0.0); + pointer_data.scroll_delta_y = SAFE_ACCESS(current, scroll_delta_y, 0.0); packet->SetPointerData(i, pointer_data); current = reinterpret_cast( reinterpret_cast(current) + current->struct_size); diff --git a/shell/platform/embedder/embedder.h b/shell/platform/embedder/embedder.h index 402f58ebcd3ef..103da739a2147 100644 --- a/shell/platform/embedder/embedder.h +++ b/shell/platform/embedder/embedder.h @@ -277,6 +277,7 @@ typedef struct { double pixel_ratio; } FlutterWindowMetricsEvent; +// The phase of the pointer event. typedef enum { kCancel, kUp, @@ -287,6 +288,12 @@ typedef enum { kHover, } FlutterPointerPhase; +// The type of a pointer signal. +typedef enum { + kFlutterPointerSignalKindNone, + kFlutterPointerSignalKindScroll, +} FlutterPointerSignalKind; + typedef struct { // The size of this struct. Must be sizeof(FlutterPointerEvent). size_t struct_size; @@ -297,6 +304,9 @@ typedef struct { // An optional device identifier. If this is not specified, it is assumed that // the embedder has no multitouch capability. int32_t device; + FlutterPointerSignalKind signal_kind; + double scroll_delta_x; + double scroll_delta_y; } FlutterPointerEvent; struct _FlutterPlatformMessageResponseHandle; From e37bd27b485d03d006e3ebbe174c64c40eea8434 Mon Sep 17 00:00:00 2001 From: Chinmay Garde Date: Tue, 5 Mar 2019 15:21:06 -0800 Subject: [PATCH 1292/1537] Fix weak pointer use violations in shell and platform view. (#8046) --- shell/common/platform_view.cc | 17 ++++++++++++++--- shell/common/platform_view.h | 2 ++ shell/common/shell.cc | 25 +++++++++++++------------ shell/common/surface.h | 2 +- 4 files changed, 30 insertions(+), 16 deletions(-) diff --git a/shell/common/platform_view.cc b/shell/common/platform_view.cc index 7c7c1dc258aad..cd909814c66b8 100644 --- a/shell/common/platform_view.cc +++ b/shell/common/platform_view.cc @@ -60,7 +60,20 @@ void PlatformView::SetViewportMetrics(const blink::ViewportMetrics& metrics) { } void PlatformView::NotifyCreated() { - delegate_.OnPlatformViewCreated(CreateRenderingSurface()); + std::unique_ptr surface; + + // Threading: We want to use the platform view on the non-platform thread. + // Using the weak pointer is illegal. But, we are going to introduce a latch + // so that the platform view is not collected till the surface is obtained. + auto* platform_view = this; + fml::ManualResetWaitableEvent latch; + fml::TaskRunner::RunNowOrPostTask( + task_runners_.GetGPUTaskRunner(), [platform_view, &surface, &latch]() { + surface = platform_view->CreateRenderingSurface(); + latch.Signal(); + }); + latch.Wait(); + delegate_.OnPlatformViewCreated(std::move(surface)); } void PlatformView::NotifyDestroyed() { @@ -68,10 +81,8 @@ void PlatformView::NotifyDestroyed() { } sk_sp PlatformView::CreateResourceContext() const { -#ifndef OS_FUCHSIA FML_DLOG(WARNING) << "This platform does not setup the resource " "context on the IO thread for async texture uploads."; -#endif // OS_FUCHSIA return nullptr; } diff --git a/shell/common/platform_view.h b/shell/common/platform_view.h index ed3b6e999a3ea..2ed5091b46895 100644 --- a/shell/common/platform_view.h +++ b/shell/common/platform_view.h @@ -123,6 +123,8 @@ class PlatformView { SkISize size_; fml::WeakPtrFactory weak_factory_; + // Unlike all other methods on the platform view, this is called on the GPU + // task runner. virtual std::unique_ptr CreateRenderingSurface(); private: diff --git a/shell/common/shell.cc b/shell/common/shell.cc index 4a501d3af7d31..ef177eacabcc3 100644 --- a/shell/common/shell.cc +++ b/shell/common/shell.cc @@ -446,26 +446,27 @@ void Shell::OnPlatformViewCreated(std::unique_ptr surface) { fml::TaskRunner::RunNowOrPostTask(gpu_task_runner, gpu_task); }; - auto io_task = [io_manager = io_manager_->GetWeakPtr(), - platform_view = platform_view_->GetWeakPtr(), + // Threading: Capture platform view by raw pointer and not the weak pointer. + // We are going to use the pointer on the IO thread which is not safe with a + // weak pointer. However, we are preventing the platform view from being + // collected by using a latch. + auto* platform_view = platform_view_.get(); + + FML_DCHECK(platform_view); + + auto io_task = [io_manager = io_manager_->GetWeakPtr(), platform_view, ui_task_runner = task_runners_.GetUITaskRunner(), ui_task] { - if (io_manager) { + if (io_manager && !io_manager->GetResourceContext()) { io_manager->NotifyResourceContextAvailable( - platform_view ? platform_view->CreateResourceContext() : nullptr); + platform_view->CreateResourceContext()); } // Step 1: Next, post a task on the UI thread to tell the engine that it has // an output surface. fml::TaskRunner::RunNowOrPostTask(ui_task_runner, ui_task); }; - // Step 0: If the IOManager doesn't already have a ResourceContext, tell the - // IO thread that the PlatformView can make one for it now. - // Otherwise, jump right to step 1 on the UI thread. - if (!io_manager_->GetResourceContext()) { - fml::TaskRunner::RunNowOrPostTask(task_runners_.GetIOTaskRunner(), io_task); - } else { - fml::TaskRunner::RunNowOrPostTask(task_runners_.GetUITaskRunner(), ui_task); - } + fml::TaskRunner::RunNowOrPostTask(task_runners_.GetIOTaskRunner(), io_task); + latch.Wait(); } diff --git a/shell/common/surface.h b/shell/common/surface.h index d82453a00dd29..dc37c803d9ce9 100644 --- a/shell/common/surface.h +++ b/shell/common/surface.h @@ -15,7 +15,7 @@ namespace shell { /// Represents a Frame that has been fully configured for the underlying client -/// rendering API. A frame may only be sumitted once. +/// rendering API. A frame may only be submitted once. class SurfaceFrame { public: using SubmitCallback = From b30f9897b9b8506d20dc5bdf943b42540ee4ea1b Mon Sep 17 00:00:00 2001 From: Dan Field Date: Tue, 5 Mar 2019 16:32:22 -0800 Subject: [PATCH 1293/1537] Improve elevation bounds for physical shape layers (#8044) * improve elevation bounds calculation and add diagram --- flow/layers/physical_shape_layer.cc | 38 ++++++++++++++++++++++++----- 1 file changed, 32 insertions(+), 6 deletions(-) diff --git a/flow/layers/physical_shape_layer.cc b/flow/layers/physical_shape_layer.cc index 841ae4cf6a076..d022ccb223305 100644 --- a/flow/layers/physical_shape_layer.cc +++ b/flow/layers/physical_shape_layer.cc @@ -9,6 +9,9 @@ namespace flow { +const SkScalar kLightHeight = 600; +const SkScalar kLightRadius = 800; + PhysicalShapeLayer::PhysicalShapeLayer(Clip clip_behavior) : isRect_(false), clip_behavior_(clip_behavior) {} @@ -51,11 +54,36 @@ void PhysicalShapeLayer::Preroll(PrerollContext* context, set_needs_system_composite(true); #else // Add some margin to the paint bounds to leave space for the shadow. - // The margin is hardcoded to an arbitrary maximum for now because Skia - // doesn't provide a way to calculate it. We fill this whole region - // and clip children to it so we don't need to join the child paint bounds. + // We fill this whole region and clip children to it so we don't need to + // join the child paint bounds. + // The offset is calculated as follows: + + // .-- (kLightRadius = 800) + // ----- (light) + // | (kLightHeight = 600) + // ------------- (layer) + // | + // | (elevation) + // | + // ------------------------------------------------ (canvas) + // ----------- (extent of shadow) + // + // E = lx } x = (r + w/2)/h + // } => + // r + w/2 = hx } E = (l/h)(r + w/2) + // + // Where: E = extent of shadow + // l = elevation of layer + // r = radius of the light source + // w = width of the layer + // h = light height + // x = multiplier for elevation to extent SkRect bounds(path_.getBounds()); - bounds.outset(20.0, 20.0); + double ex = (kLightRadius * device_pixel_ratio_ + bounds.width() * 0.5) / + kLightHeight; + double ey = (kLightRadius * device_pixel_ratio_ + bounds.height() * 0.5) / + kLightHeight; + bounds.outset(elevation_ * ex, elevation_ * ey); set_paint_bounds(bounds); #endif // defined(OS_FUCHSIA) } @@ -145,8 +173,6 @@ void PhysicalShapeLayer::DrawShadow(SkCanvas* canvas, SkScalar dpr) { const SkScalar kAmbientAlpha = 0.039f; const SkScalar kSpotAlpha = 0.25f; - const SkScalar kLightHeight = 600; - const SkScalar kLightRadius = 800; SkShadowFlags flags = transparentOccluder ? SkShadowFlags::kTransparentOccluder_ShadowFlag From 70a18b51533580505156b85ba9176c2036db6e65 Mon Sep 17 00:00:00 2001 From: Chris Bracken Date: Tue, 5 Mar 2019 17:35:43 -0800 Subject: [PATCH 1294/1537] Add clang static analysis support to gn wrapper (#8047) Adds --clang-static-analysis option to GN to enable/disable compiling with clang static analysis enabled. --- DEPS | 2 +- tools/gn | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/DEPS b/DEPS index 004c3f14c31f7..fe3e5cd636d8d 100644 --- a/DEPS +++ b/DEPS @@ -116,7 +116,7 @@ allowed_hosts = [ ] deps = { - 'src': 'https://github.com/flutter/buildroot.git' + '@' + '7f64ff4928e7106cd8d81c6397fba4b7c1cdbb96', + 'src': 'https://github.com/flutter/buildroot.git' + '@' + '4a12b0dfad16723b2190b697a669e3ae17b50b35', # Fuchsia compatibility # diff --git a/tools/gn b/tools/gn index 3a753ef39edef..8cf8af92d3166 100755 --- a/tools/gn +++ b/tools/gn @@ -91,6 +91,11 @@ def to_gn_args(args): gn_args['android_full_debug'] = args.target_os == 'android' and args.unoptimized gn_args['is_clang'] = not sys.platform.startswith(('cygwin', 'win')) + if not sys.platform.startswith(('cygwin', 'win')): + gn_args['use_clang_static_analyzer'] = args.clang_static_analyzer + else: + gn_args['use_clang_static_analyzer'] = False + gn_args['embedder_for_target'] = args.embedder_for_target gn_args['enable_coverage'] = args.coverage @@ -261,6 +266,9 @@ def parse_args(args): parser.add_argument('--clang', default=True, action='store_true') parser.add_argument('--no-clang', dest='clang', action='store_false') + parser.add_argument('--clang-static-analyzer', default=False, action='store_true') + parser.add_argument('--no-clang-static-analyzer', dest='clang_static_analyzer', action='store_false') + parser.add_argument('--target-sysroot', type=str) parser.add_argument('--target-toolchain', type=str) parser.add_argument('--target-triple', type=str) From 4773375c6815968631b6df87e3813e6e6cce1d83 Mon Sep 17 00:00:00 2001 From: Chinmay Garde Date: Tue, 5 Mar 2019 17:36:10 -0800 Subject: [PATCH 1295/1537] Used named conditionals for platform specific dependencies and suppress Android and Windows hooks on Mac. (#8051) --- .cirrus.yml | 2 +- DEPS | 80 ++++++++++++++++------------------------------------- 2 files changed, 25 insertions(+), 57 deletions(-) diff --git a/.cirrus.yml b/.cirrus.yml index bfe6d0816b9fb..d55ef85f89ad5 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -65,7 +65,7 @@ task: # sudo gem install jazzy@0.9.4 gclient_sync_script: | mkdir -p $ENGINE_PATH/src - echo 'solutions = [{"managed": False,"name": "src/flutter","url": "git@github.com:flutter/engine.git","custom_deps": {},"deps_file": "DEPS","safesync_url": "",},]' > $ENGINE_PATH/.gclient + echo 'solutions = [{"managed": False,"name": "src/flutter","url": "git@github.com:flutter/engine.git","deps_file": "DEPS", "custom_vars": {"download_android_deps" : False, "download_windows_deps" : False,},},]' > $ENGINE_PATH/.gclient cd $ENGINE_PATH/src rm -rf flutter rm -rf out diff --git a/DEPS b/DEPS index fe3e5cd636d8d..00ee27c83be41 100644 --- a/DEPS +++ b/DEPS @@ -104,6 +104,12 @@ vars = { 'ios_tools_revision': '69b7c1b160e7107a6a98d948363772dc9caea46f', 'buildtools_revision': 'bac220c15490dcf7b7d8136f75100bbc77e8d217', + + # Checkout Android dependencies only on platforms where we build for Android targets. + 'download_android_deps': 'host_os == "mac" or host_os == "linux"', + + # Checkout Windows dependencies only if we are building on Windows. + 'download_windows_deps' : 'host_os == "win"', } # Only these hosts are allowed for dependencies in this DEPS file. @@ -383,10 +389,6 @@ deps = { Var('dart_git') + '/when.git' + '@' + '0.2.0', } -recursedeps = [ - 'src/buildtools', -] - hooks = [ { # This clobbers when necessary (based on get_landmines.py). It must be the @@ -402,12 +404,12 @@ hooks = [ { # Update the Windows toolchain if necessary. 'name': 'win_toolchain', + 'condition': 'download_windows_deps', 'pattern': '.', 'action': ['python', 'src/build/vs_toolchain.py', 'update'], }, { - # Pull dart sdk if needed - # this will be used by android_tools + # Pull prebuilt dart sdk. 'name': 'dart', 'pattern': '.', 'action': ['python', 'src/tools/dart/update.py'], @@ -415,31 +417,17 @@ hooks = [ { 'name': 'prepare_android_downloader', 'pattern': '.', + 'condition': 'download_android_deps', 'cwd': 'src/tools/android/android_sdk_downloader', - 'condition': 'host_os == "linux" or host_os == "mac"', 'action': [ '../../../third_party/dart/tools/sdks/dart-sdk/bin/pub', # this hook _must_ be run _after_ the dart hook. 'get' ], }, - # TODO(dnfield): This can be enabled when we actually support building - # the android engine on windows. For now there's no sense in having - # windows clients download bits they don't need. - # see: https://github.com/flutter/flutter/issues/13841 - # { - # 'name': 'prepare_android_downloader_win', - # 'pattern': '.', - # 'cwd': 'src\\tools\\android\\android_sdk_downloader', - # 'condition': 'host_os == "win"', - # 'action': [ - # '..\\..\\..\\third_party\\dart\\tools\\sdks\\dart-sdk\\bin\\pub.bat', # this hook _must_ be run _after_ the dart hook. - # 'get' - # ], - # }, { 'name': 'download_android_tools', 'pattern': '.', - 'condition': 'host_os == "mac" or host_os == "linux"', + 'condition': 'download_android_deps', 'action': [ 'src/third_party/dart/tools/sdks/dart-sdk/bin/dart', # this hook _must_ be run _after_ the dart hook. '--enable-asserts', @@ -454,31 +442,10 @@ hooks = [ '--ndk-version=19.1.5304403' ], }, - # TODO(dnfield): This can be enabled when we actually support building - # the android engine on windows. For now there's no sense in having - # windows clients download bits they don't need. - # see: https://github.com/flutter/flutter/issues/13841 - # { - # 'name': 'download_android_tools_win', - # 'pattern': '.', - # 'condition': 'host_os == "win"', - # 'action': [ - # 'src\\third_party\\dart\\tools\\sdks\\dart-sdk\\bin\\dart.exe', # this hook _must_ be run _after_ the dart hook. - # '--enable-asserts', - # 'src\\tools\\android\\android_sdk_downloader\\lib\\main.dart', - # '-y', # Accept licenses - # '--out=src\\third_party\\android_tools', - # '--platform=28', - # '--platform-revision=6', - # '--build-tools-version=28.0.3', - # '--platform-tools-version=28.0.1', - # '--tools-version=26.1.1', - # '--ndk-version=19.0.5232133' - # ], - # }, { 'name': 'download_android_support', 'pattern': '.', + 'condition': 'download_android_deps', 'action': [ 'python', 'src/flutter/tools/android_support/download_android_support.py', @@ -510,18 +477,19 @@ hooks = [ ], }, { - "name": "7zip", - "pattern": ".", - "action": [ - "download_from_google_storage", - "--no_auth", - "--no_resume", - "--bucket", - "dart-dependencies", - "--platform=win32", - "--extract", - "-s", - "src/third_party/dart/third_party/7zip.tar.gz.sha1", + 'name': '7zip', + 'pattern': '.', + 'condition': 'download_windows_deps', + 'action': [ + 'download_from_google_storage', + '--no_auth', + '--no_resume', + '--bucket', + 'dart-dependencies', + '--platform=win32', + '--extract', + '-s', + 'src/third_party/dart/third_party/7zip.tar.gz.sha1', ], }, ] From 57c120a2928888e5a38ad464b84721e296dabd23 Mon Sep 17 00:00:00 2001 From: Jonah Williams Date: Tue, 5 Mar 2019 17:47:06 -0800 Subject: [PATCH 1296/1537] remove extra source files (#8052) --- BUILD.gn | 80 -------------------------------------------------------- 1 file changed, 80 deletions(-) diff --git a/BUILD.gn b/BUILD.gn index bbd82204f17b6..a320299636089 100644 --- a/BUILD.gn +++ b/BUILD.gn @@ -5,18 +5,6 @@ import("$flutter_root/common/config.gni") import("//third_party/dart/build/dart/dart_action.gni") -# Temporary snapshot copy rules until we can use the full SDK. -_flutter_sdk_snapshots = [ - [ - "dart2js", - "//third_party/dart/utils/compiler:dart2js", - ], - [ - "kernel_worker", - "//third_party/dart/utils/bazel:kernel_worker", - ], -] - group("flutter") { testonly = true @@ -37,12 +25,7 @@ group("flutter") { "$flutter_root/frontend_server", "//third_party/dart:create_sdk", "$flutter_root/lib/stub_ui:stub_ui", - ":dart2js_platform_files", - ":flutter_dartdevc_kernel_sdk", ] - foreach(snapshot, _flutter_sdk_snapshots) { - public_deps += [ ":copy_flutter_${snapshot[0]}_snapshot" ] - } } } @@ -81,66 +64,3 @@ group("dist") { "$flutter_root/sky/dist", ] } - -foreach(snapshot, _flutter_sdk_snapshots) { - copy("copy_flutter_${snapshot[0]}_snapshot") { - deps = [ - snapshot[1], - ] - sources = [ - "$root_gen_dir/${snapshot[0]}.dart.snapshot", - ] - outputs = [ - "$root_out_dir/dart-sdk/bin/snapshots/flutter_{{source_file_part}}", - ] - } -} - -copy("dart2js_platform_files") { - deps = [ - "//third_party/dart/utils/compiler:compile_dart2js_platform" - ] - - sources = [ - "$root_out_dir/dart2js_outline.dill", - "$root_out_dir/dart2js_platform.dill", - ] - - outputs = [ - "$root_out_dir/flutter_patched_sdk/{{source_file_part}}", - ] -} - - -prebuilt_dart_action("flutter_dartdevc_kernel_sdk") { - deps = [ - "//third_party/dart:create_sdk", - ] - - packages = "//third_party/dart/.packages" - - script = "//third_party/dart/pkg/dev_compiler/tool/kernel_sdk.dart" - - inputs = [ - "//third_party/dart/pkg/dev_compiler/tool/kernel_sdk.dart", - ] - - outputs = [ - "$target_gen_dir/kernel/amd/dart_sdk.js", - "$target_gen_dir/kernel/amd/dart_sdk.js.map", - "$target_gen_dir/kernel/common/dart_sdk.js", - "$target_gen_dir/kernel/common/dart_sdk.js.map", - "$target_gen_dir/kernel/es6/dart_sdk.js", - "$target_gen_dir/kernel/es6/dart_sdk.js.map", - "$target_gen_dir/kernel/legacy/dart_sdk.js", - "$target_gen_dir/kernel/legacy/dart_sdk.js.map", - ] - - libraries_path = rebase_path("$flutter_root/lib/snapshot/libraries.json") - output_path = rebase_path("$target_gen_dir/kernel/flutter_ddc_sdk.dill") - - args = [ - "--output=$output_path", - "--libraries=$libraries_path", - ] -} From 840c5233ae9a68ced0616140e09c6994b80ee054 Mon Sep 17 00:00:00 2001 From: Chris Bracken Date: Tue, 5 Mar 2019 18:30:39 -0800 Subject: [PATCH 1297/1537] Correct URL for Cirrus CI build status badge (#8054) --- CONTRIBUTING.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 7102ad364ac08..c5d94d44120ef 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,7 +1,7 @@ Contributing to the Flutter engine ================================== -[![Build Status](https://cirrus-ci.com/flutter/engine.svg)][build_status] +[![Build Status](https://api.cirrus-ci.com/github/flutter/engine.svg)][build_status] _See also: [Flutter's code of conduct][code_of_conduct]_ @@ -16,7 +16,7 @@ the Engine development environment][engine_dev_setup] on our wiki. Those instructions are part of the broader onboarding instructions described in the contributing guide. -[build_status]: https://cirrus-ci.com/flutter/engine +[build_status]: https://cirrus-ci.com/github/flutter/engine [code_of_conduct]: https://github.com/flutter/flutter/blob/master/CODE_OF_CONDUCT.md [contrib_guide]: https://github.com/flutter/flutter/wiki/Setting-up-the-Engine-development-environment [engine_dev_setup]: https://github.com/flutter/flutter/wiki/Setting-up-the-Engine-development-environment From 7f16789b2ee0073fb20999610c9ecefa606b7edd Mon Sep 17 00:00:00 2001 From: Chinmay Garde Date: Tue, 5 Mar 2019 20:07:10 -0800 Subject: [PATCH 1298/1537] Remove redundant thread checker in FML. (#8053) There is already fml/memory/thread_checker.h --- ci/licenses_golden/licenses_flutter | 2 - fml/BUILD.gn | 2 - fml/synchronization/thread_checker.h | 71 ------------------- .../thread_checker_unittest.cc | 37 ---------- 4 files changed, 112 deletions(-) delete mode 100644 fml/synchronization/thread_checker.h delete mode 100644 fml/synchronization/thread_checker_unittest.cc diff --git a/ci/licenses_golden/licenses_flutter b/ci/licenses_golden/licenses_flutter index f04bcef39103b..038903489a3f8 100644 --- a/ci/licenses_golden/licenses_flutter +++ b/ci/licenses_golden/licenses_flutter @@ -219,8 +219,6 @@ FILE: ../../../flutter/fml/synchronization/shared_mutex_std.cc FILE: ../../../flutter/fml/synchronization/shared_mutex_std.h FILE: ../../../flutter/fml/synchronization/thread_annotations.h FILE: ../../../flutter/fml/synchronization/thread_annotations_unittest.cc -FILE: ../../../flutter/fml/synchronization/thread_checker.h -FILE: ../../../flutter/fml/synchronization/thread_checker_unittest.cc FILE: ../../../flutter/fml/synchronization/waitable_event.cc FILE: ../../../flutter/fml/synchronization/waitable_event.h FILE: ../../../flutter/fml/synchronization/waitable_event_unittest.cc diff --git a/fml/BUILD.gn b/fml/BUILD.gn index 6c442c779f62d..ca0b9ad9fec77 100644 --- a/fml/BUILD.gn +++ b/fml/BUILD.gn @@ -50,7 +50,6 @@ source_set("fml") { "synchronization/count_down_latch.h", "synchronization/shared_mutex.h", "synchronization/thread_annotations.h", - "synchronization/thread_checker.h", "synchronization/waitable_event.cc", "synchronization/waitable_event.h", "task_runner.cc", @@ -188,7 +187,6 @@ executable("fml_unittests") { "string_view_unittest.cc", "synchronization/count_down_latch_unittests.cc", "synchronization/thread_annotations_unittest.cc", - "synchronization/thread_checker_unittest.cc", "synchronization/waitable_event_unittest.cc", "thread_local_unittests.cc", "thread_unittests.cc", diff --git a/fml/synchronization/thread_checker.h b/fml/synchronization/thread_checker.h deleted file mode 100644 index 3501ac5d4a9e5..0000000000000 --- a/fml/synchronization/thread_checker.h +++ /dev/null @@ -1,71 +0,0 @@ -// 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. - -// A class for checking that the current thread is/isn't the same as an initial -// thread. - -#ifndef FLUTTER_FML_SYNCHRONIZATION_THREAD_CHECKER_H_ -#define FLUTTER_FML_SYNCHRONIZATION_THREAD_CHECKER_H_ - -#include "flutter/fml/build_config.h" - -#if defined(OS_WIN) -#include -#else -#include -#endif - -#include "flutter/fml/logging.h" -#include "flutter/fml/macros.h" - -namespace fml { - -// A simple class that records the identity of the thread that it was created -// on, and at later points can tell if the current thread is the same as its -// creation thread. This class is thread-safe. -// -// Note: Unlike Chromium's |base::ThreadChecker|, this is *not* Debug-only (so -// #ifdef it out if you want something Debug-only). (Rationale: Having a -// |CalledOnValidThread()| that lies in Release builds seems bad. Moreover, -// there's a small space cost to having even an empty class. ) -class ThreadChecker final { - public: -#if defined(OS_WIN) - ThreadChecker() : self_(GetCurrentThreadId()) {} - ~ThreadChecker() {} - - bool IsCreationThreadCurrent() const { return GetCurrentThreadId() == self_; } - - private: - const DWORD self_; - -#else - ThreadChecker() : self_(pthread_self()) {} - ~ThreadChecker() {} - - // Returns true if the current thread is the thread this object was created - // on and false otherwise. - bool IsCreationThreadCurrent() const { - return !!pthread_equal(pthread_self(), self_); - } - - private: - const pthread_t self_; -#endif - - FML_DISALLOW_COPY_AND_ASSIGN(ThreadChecker); -}; - -#ifndef NDEBUG -#define FML_DECLARE_THREAD_CHECKER(c) fml::ThreadChecker c -#define FML_DCHECK_CREATION_THREAD_IS_CURRENT(c) \ - FML_DCHECK((c).IsCreationThreadCurrent()) -#else -#define FML_DECLARE_THREAD_CHECKER(c) -#define FML_DCHECK_CREATION_THREAD_IS_CURRENT(c) ((void)0) -#endif - -} // namespace fml - -#endif // FLUTTER_FML_SYNCHRONIZATION_THREAD_CHECKER_H_ diff --git a/fml/synchronization/thread_checker_unittest.cc b/fml/synchronization/thread_checker_unittest.cc deleted file mode 100644 index 92eb34f166157..0000000000000 --- a/fml/synchronization/thread_checker_unittest.cc +++ /dev/null @@ -1,37 +0,0 @@ -// 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/fml/synchronization/thread_checker.h" - -#include - -#include "gtest/gtest.h" - -namespace fml { -namespace { - -TEST(ThreadCheckerTest, SameThread) { - ThreadChecker checker; - EXPECT_TRUE(checker.IsCreationThreadCurrent()); -} - -// Note: This test depends on |std::thread| being compatible with -// |pthread_self()|. -TEST(ThreadCheckerTest, DifferentThreads) { - ThreadChecker checker1; - EXPECT_TRUE(checker1.IsCreationThreadCurrent()); - - std::thread thread([&checker1]() { - ThreadChecker checker2; - EXPECT_TRUE(checker2.IsCreationThreadCurrent()); - EXPECT_FALSE(checker1.IsCreationThreadCurrent()); - }); - thread.join(); - - // Note: Without synchronization, we can't look at |checker2| from the main - // thread. -} - -} // namespace -} // namespace fml From 3335764ae903efe253e33725efce6b64cdcca1bd Mon Sep 17 00:00:00 2001 From: liyuqian Date: Wed, 6 Mar 2019 08:39:00 -0800 Subject: [PATCH 1299/1537] Skip skp files in license check (#8050) * Skip skp files in license check This fixes https://bugs.chromium.org/p/skia/issues/detail?id=8828 * Update signature --- ci/licenses_golden/tool_signature | 2 +- tools/licenses/lib/filesystem.dart | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/ci/licenses_golden/tool_signature b/ci/licenses_golden/tool_signature index 2189010017a26..e6f18498d5dbb 100644 --- a/ci/licenses_golden/tool_signature +++ b/ci/licenses_golden/tool_signature @@ -1,2 +1,2 @@ -Signature: 91b3b5b8c1ef9e911fd65b636d009be8 +Signature: e7b89482e4ea9fef22a33ad9fcc34961 diff --git a/tools/licenses/lib/filesystem.dart b/tools/licenses/lib/filesystem.dart index cf1cddbb31f27..dc5cd9d1be122 100644 --- a/tools/licenses/lib/filesystem.dart +++ b/tools/licenses/lib/filesystem.dart @@ -200,6 +200,7 @@ FileType identifyFile(String name, Reader reader) { case '.webp': return FileType.binary; // WEBP case '.pdf': return FileType.binary; // PDF case '.emf': return FileType.binary; // Windows enhanced metafile format + case '.skp': return FileType.binary; // Skia picture format // Videos case '.ogg': return FileType.binary; // Ogg media case '.mp4': return FileType.binary; // MPEG media From 2fe9c9b5fd24b998c81d9156d5716131c1597f18 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Wed, 6 Mar 2019 13:47:15 -0500 Subject: [PATCH 1300/1537] Roll src/third_party/skia 72542816cadb..801a9c16d81e (46 commits) (#8060) https://skia.googlesource.com/skia.git/%2Blog/72542816cadb..801a9c16d81e git log 72542816cadbc3d18a19725f6f6aecf45ffc188c..801a9c16d81ef848eb8c9ae2e94fa458eb7a681c --date=short --no-merges --format=%ad %ae %s 2019-03-06 recipe-roller@chromium.org Roll recipe dependencies (trivial). 2019-03-05 herb@google.com Move process* closures into the GrTextBlob 2019-02-20 halcanary@google.com SkPDF: Add experimental Harfbuzz font subsetter 2019-03-06 mtklein@google.com also tag DM results with color and alpha type 2019-03-06 kjlubick@google.com [canvaskit] Remove additional copies of CanvasKit when testing 2019-03-06 borenet@google.com [infra] Remove bookmaker bots 2019-03-06 reed@google.com change gm to use srgb (not linear) so srgb and legacy draw the same 2019-03-05 jvanverth@google.com Fix stencil setup in Metal 2019-03-06 kjlubick@google.com [canvaskit] Add particles integration 2019-03-05 egdaniel@google.com Add ddl support to drawing to wrapped vulkan secondary command buffers. 2019-03-05 nifong@google.com Basic wasm skp debugger unit test 2019-03-06 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/angle2 a8300e56b550..e397949ec2db (1 commits) 2019-02-27 nigeltao@google.com SkWuffsCodec: replace memset+check_wuffs_version 2019-03-06 kjlubick@google.com [canvaskit] Add some APIs for speed and clients 2019-03-05 robertphillips@google.com Update YUVA mipmap generation path to take a GrRecordingContext 2019-03-06 skia-recreate-skps@skia-swarming-bots.iam.gserviceaccount.com Update go_deps asset 2019-03-06 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/angle2 55959b0bb19f..a8300e56b550 (3 commits) 2019-03-05 recipe-roller@chromium.org Roll recipe dependencies (trivial). 2019-03-05 khushalsagar@chromium.org remote fonts: Ensure consistent gamma usage with remote and gpu fonts. 2019-03-05 skia-autoroll@skia-public.iam.gserviceaccount.com Roll ../src 8e3cddfd5a43..2f034a6e32fc (426 commits) 2019-03-05 michaelludwig@google.com Support per-entry transforms in image-set API 2019-03-05 csmartdalton@google.com Make mixed samples detection automatic 2019-03-05 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader e57f10e4041d..4c84dbdce271 (1 commits) 2019-03-04 herb@google.com Pointer to GrStrikeCache on GrTextBlob 2019-03-04 halcanary@google.com SkQP: from skqp_gn_args import SkqpGnArgs 2019-03-05 kjlubick@google.com [particles] Clean up build - remove test deps 2019-03-05 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/angle2 b8cff9e9347c..55959b0bb19f (3 commits) 2019-03-05 skia-autoroll@skia-public.iam.gserviceaccount.com Roll skia/third_party/skcms 7efede6c3d35..10736f2da359 (2 commits) 2019-03-05 recipe-roller@chromium.org Roll recipe dependencies (trivial). 2019-03-05 reed@google.com array of unique verts 2019-03-05 skia-autoroll@skia-public.iam.gserviceaccount.com Roll skia/third_party/skcms b7157d764389..7efede6c3d35 (1 commits) 2019-03-05 robertphillips@google.com Make SkImage_Base::asTextureProxyRef take a GrRecordingContext parameter 2019-03-05 bsalomon@google.com Distinguish between "flushed" and "finished" idle state callbacks on GrTexture. 2019-03-05 robertphillips@google.com Clean up logic in fontregen GM 2019-03-05 bsalomon@google.com Use GrSurface::setRelease helper that creates ref-counted wrapper 2019-03-05 recipe-roller@chromium.org Roll recipe dependencies (trivial). 2019-03-04 egdaniel@google.com Add unit test to check if we can create a VkDevice using global priority extension. 2019-03-04 scroggo@google.com Fix Android host-side Windows build 2019-03-05 csmartdalton@google.com Make sure to apply the stencil settings for GrDashOp 2019-03-04 benjaminwagner@google.com [infra] Upgrade Debian GCE bots to 9.8. 2019-03-04 herb@google.com Have SkGlyphRunListPainter close over SkStrikeCacheInterface 2019-03-05 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader e95eeb19a770..e57f10e4041d (1 commits) 2019-03-04 bungeman@google.com Clarify ownership of typefaces in implementation. 2019-03-05 nifong@google.com Initial wasm debugger 2019-03-04 benjaminwagner@google.com Add fetch-gn to canvaskit and cmake compile scripts 2019-03-04 ethannicholas@google.com Add support for runtime color filters written in SkSL. The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (reed@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 21 +++++++++++++-------- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/DEPS b/DEPS index 00ee27c83be41..c9920d648718d 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '72542816cadbc3d18a19725f6f6aecf45ffc188c', + 'skia_revision': '801a9c16d81ef848eb8c9ae2e94fa458eb7a681c', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index e9e85586b9d13..656f655385a1f 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: cf0991f5443f916cde12c3bc27ba049f +Signature: 171d209ab2e2243f9d0472e568158ad1 UNUSED LICENSES: @@ -2110,6 +2110,14 @@ FILE: ../../../third_party/skia/experimental/docs/jsonbaseddoc.htm FILE: ../../../third_party/skia/experimental/docs/svgBackend.js FILE: ../../../third_party/skia/experimental/docs/svgbaseddoc.htm FILE: ../../../third_party/skia/experimental/docs/utilities.js +FILE: ../../../third_party/skia/experimental/wasm-skp-debugger/cpu.js +FILE: ../../../third_party/skia/experimental/wasm-skp-debugger/debugger/index.html +FILE: ../../../third_party/skia/experimental/wasm-skp-debugger/externs.js +FILE: ../../../third_party/skia/experimental/wasm-skp-debugger/fonts/NotoMono-Regular.ttf +FILE: ../../../third_party/skia/experimental/wasm-skp-debugger/karma.conf.js +FILE: ../../../third_party/skia/experimental/wasm-skp-debugger/package.json +FILE: ../../../third_party/skia/experimental/wasm-skp-debugger/ready.js +FILE: ../../../third_party/skia/experimental/wasm-skp-debugger/sample.skp FILE: ../../../third_party/skia/infra/bots/assets.isolate FILE: ../../../third_party/skia/infra/bots/assets/android_ndk_darwin/VERSION FILE: ../../../third_party/skia/infra/bots/assets/android_ndk_linux/VERSION @@ -2255,13 +2263,6 @@ FILE: ../../../third_party/skia/infra/bots/recipes/android_compile.expected/andr FILE: ../../../third_party/skia/infra/bots/recipes/android_compile.expected/android_compile_trybot.json FILE: ../../../third_party/skia/infra/bots/recipes/android_compile.expected/android_compile_trybot_failure.json FILE: ../../../third_party/skia/infra/bots/recipes/android_compile.expected/android_compile_unrecognized_target.json -FILE: ../../../third_party/skia/infra/bots/recipes/bookmaker.expected/nightly_bookmaker.json -FILE: ../../../third_party/skia/infra/bots/recipes/bookmaker.expected/nightly_failed_extract_fiddles.json -FILE: ../../../third_party/skia/infra/bots/recipes/bookmaker.expected/nightly_failed_fiddlecli.json -FILE: ../../../third_party/skia/infra/bots/recipes/bookmaker.expected/nightly_failed_fiddles.json -FILE: ../../../third_party/skia/infra/bots/recipes/bookmaker.expected/nightly_failed_upload.json -FILE: ../../../third_party/skia/infra/bots/recipes/bookmaker.expected/percommit_bookmaker.json -FILE: ../../../third_party/skia/infra/bots/recipes/bookmaker.expected/percommit_failed_validation.json FILE: ../../../third_party/skia/infra/bots/recipes/calmbench.expected/Calmbench-Debian9-Clang-GCE-CPU-AVX2-x86_64-Release-All.json FILE: ../../../third_party/skia/infra/bots/recipes/calmbench.expected/Calmbench-Ubuntu17-Clang-Golo-GPU-QuadroP400-x86_64-Release-All.json FILE: ../../../third_party/skia/infra/bots/recipes/check_generated_files.expected/Housekeeper-PerCommit-CheckGeneratedFiles.json @@ -4652,7 +4653,10 @@ LIBRARY: skia ORIGIN: ../../../third_party/skia/experimental/canvaskit/WasmAliases.h + ../../../third_party/skia/LICENSE TYPE: LicenseType.bsd FILE: ../../../third_party/skia/experimental/canvaskit/WasmAliases.h +FILE: ../../../third_party/skia/experimental/canvaskit/particles_bindings.cpp FILE: ../../../third_party/skia/experimental/canvaskit/skottie_bindings.cpp +FILE: ../../../third_party/skia/experimental/wasm-skp-debugger/debugger_bindings.cpp +FILE: ../../../third_party/skia/gm/runtimecolorfilter.cpp FILE: ../../../third_party/skia/modules/particles/include/SkCurve.h FILE: ../../../third_party/skia/modules/particles/include/SkParticleAffector.h FILE: ../../../third_party/skia/modules/particles/include/SkParticleData.h @@ -4665,6 +4669,7 @@ FILE: ../../../third_party/skia/modules/particles/src/SkParticleAffector.cpp FILE: ../../../third_party/skia/modules/particles/src/SkParticleDrawable.cpp FILE: ../../../third_party/skia/modules/particles/src/SkParticleEffect.cpp FILE: ../../../third_party/skia/modules/particles/src/SkReflected.cpp +FILE: ../../../third_party/skia/src/core/SkColorFilterPriv.h ---------------------------------------------------------------------------------------------------- Copyright 2019 Google LLC From 471a2c89a689ff1d5c70a5deb4565f646380bce6 Mon Sep 17 00:00:00 2001 From: stuartmorgan Date: Wed, 6 Mar 2019 13:15:01 -0800 Subject: [PATCH 1301/1537] Send scroll events from the macOS shell (#8056) Adds scroll event handling to the macOS shell, sending them using the new embedding API. Currently, trackpad scrolling is just handled like scrollwheel scrolling, since the trackpad-gesture-based scroll handling in Flutter is still in progress. Adds code to synthesize Add events if mouse tracking isn't enabled, so that it doesn't rely on Flutter being lenient about handling events from pointers that have never been added. --- .../framework/Source/FLEViewController.mm | 54 ++++++++++++++++++- 1 file changed, 53 insertions(+), 1 deletion(-) diff --git a/shell/platform/darwin/macos/framework/Source/FLEViewController.mm b/shell/platform/darwin/macos/framework/Source/FLEViewController.mm index ac901423ee1b6..76a1e08557004 100644 --- a/shell/platform/darwin/macos/framework/Source/FLEViewController.mm +++ b/shell/platform/darwin/macos/framework/Source/FLEViewController.mm @@ -39,6 +39,14 @@ @interface FLEViewController () */ @property(nonatomic) NSTrackingArea* trackingArea; +/** + * Whether or not a kAdd event has been sent for the mouse (or sent again since + * the last kRemove was sent if tracking is enabled). Used to determine whether + * to send an Add event before sending an incoming mouse event, since Flutter + * expects a pointers to be added before events are sent for them. + */ +@property(nonatomic) BOOL mouseCurrentlyAdded; + /** * Updates |trackingArea| for the current tracking settings, creating it with * the correct mode if tracking is enabled, or removing it if not. @@ -416,16 +424,54 @@ - (void)handlePlatformMessage:(const FlutterPlatformMessage*)message { } - (void)dispatchMouseEvent:(NSEvent*)event phase:(FlutterPointerPhase)phase { + // If a pointer added event hasn't been sent, synthesize one using this event for the basic + // information. + if (!_mouseCurrentlyAdded && phase != kAdd) { + // Only the values extracted for use in flutterEvent below matter, the rest are dummy values. + NSEvent* addEvent = [NSEvent enterExitEventWithType:NSEventTypeMouseEntered + location:event.locationInWindow + modifierFlags:0 + timestamp:event.timestamp + windowNumber:event.windowNumber + context:nil + eventNumber:0 + trackingNumber:0 + userData:NULL]; + [self dispatchMouseEvent:addEvent phase:kAdd]; + } + NSPoint locationInView = [self.view convertPoint:event.locationInWindow fromView:nil]; NSPoint locationInBackingCoordinates = [self.view convertPointToBacking:locationInView]; - const FlutterPointerEvent flutterEvent = { + FlutterPointerEvent flutterEvent = { .struct_size = sizeof(flutterEvent), .phase = phase, .x = locationInBackingCoordinates.x, .y = -locationInBackingCoordinates.y, // convertPointToBacking makes this negative. .timestamp = static_cast(event.timestamp * NSEC_PER_MSEC), }; + + if (event.type == NSEventTypeScrollWheel) { + flutterEvent.signal_kind = kFlutterPointerSignalKindScroll; + + double pixelsPerLine = 1.0; + if (!event.hasPreciseScrollingDeltas) { + CGEventSourceRef source = CGEventCreateSourceFromEvent(event.CGEvent); + pixelsPerLine = CGEventSourceGetPixelsPerLine(source); + if (source) { + CFRelease(source); + } + } + double scaleFactor = self.view.layer.contentsScale; + flutterEvent.scroll_delta_x = event.scrollingDeltaX * pixelsPerLine * scaleFactor; + flutterEvent.scroll_delta_y = -event.scrollingDeltaY * pixelsPerLine * scaleFactor; + } FlutterEngineSendPointerEvent(_engine, &flutterEvent, 1); + + if (phase == kAdd) { + _mouseCurrentlyAdded = YES; + } else if (phase == kRemove) { + _mouseCurrentlyAdded = NO; + } } - (void)dispatchKeyEvent:(NSEvent*)event ofType:(NSString*)type { @@ -539,4 +585,10 @@ - (void)mouseMoved:(NSEvent*)event { [self dispatchMouseEvent:event phase:kHover]; } +- (void)scrollWheel:(NSEvent*)event { + // TODO: Add gesture-based (trackpad) scroll support once it's supported by the engine rather + // than always using kHover. + [self dispatchMouseEvent:event phase:kHover]; +} + @end From 3661d5e43b83106498e3a4ce2226f976cebed021 Mon Sep 17 00:00:00 2001 From: Gary Qian Date: Wed, 6 Mar 2019 15:38:34 -0800 Subject: [PATCH 1302/1537] Re-land "Buffer lifecycle in WindowData" (#8032) --- lib/stub_ui/hooks.dart | 4 ++++ lib/stub_ui/window.dart | 9 +++++++++ lib/ui/hooks.dart | 7 +++++++ lib/ui/window.dart | 9 +++++++++ lib/ui/window/window.cc | 12 ++++++++++++ lib/ui/window/window.h | 1 + runtime/runtime_controller.cc | 14 +++++++++++++- runtime/runtime_controller.h | 3 +++ shell/common/engine.cc | 2 ++ 9 files changed, 60 insertions(+), 1 deletion(-) diff --git a/lib/stub_ui/hooks.dart b/lib/stub_ui/hooks.dart index 6e0820832939b..4ea381bfb8d34 100644 --- a/lib/stub_ui/hooks.dart +++ b/lib/stub_ui/hooks.dart @@ -84,6 +84,10 @@ void _updateUserSettingsData(String jsonData) { _updateAlwaysUse24HourFormat(data['alwaysUse24HourFormat']); } +void _updateLifecycleState(String state) { + window._initialLifecycleState ??= state; +} + void _updateTextScaleFactor(double textScaleFactor) { window._textScaleFactor = textScaleFactor; _invoke(window.onTextScaleFactorChanged, window._onTextScaleFactorChangedZone); diff --git a/lib/stub_ui/window.dart b/lib/stub_ui/window.dart index bc08ca95c3313..f3dedc642887e 100644 --- a/lib/stub_ui/window.dart +++ b/lib/stub_ui/window.dart @@ -551,6 +551,15 @@ class Window { _onLocaleChangedZone = Zone.current; } + /// The lifecycle state immediately after dart isolate initialization. + /// + /// This property will not be updated as the lifecycle changes. + /// + /// It is used to initialize [SchedulerBinding.lifecycleState] at startup + /// with any buffered lifecycle state events. + String get initialLifecycleState => _initialLifecycleState; + String _initialLifecycleState; + /// The setting indicating the current brightness mode of the host platform. /// If the platform has no preference, [platformBrightness] defaults to [Brightness.light]. Brightness get platformBrightness => _platformBrightness; diff --git a/lib/ui/hooks.dart b/lib/ui/hooks.dart index e88580a95ce06..4d299c91a24ed 100644 --- a/lib/ui/hooks.dart +++ b/lib/ui/hooks.dart @@ -89,6 +89,13 @@ void _updateUserSettingsData(String jsonData) { _updatePlatformBrightness(data['platformBrightness']); } +@pragma('vm:entry-point') +// ignore: unused_element +void _updateLifecycleState(String state) { + window._initialLifecycleState ??= state; +} + + void _updateTextScaleFactor(double textScaleFactor) { window._textScaleFactor = textScaleFactor; _invoke(window.onTextScaleFactorChanged, window._onTextScaleFactorChangedZone); diff --git a/lib/ui/window.dart b/lib/ui/window.dart index d89b668b7037d..6abceceb0261c 100644 --- a/lib/ui/window.dart +++ b/lib/ui/window.dart @@ -556,6 +556,15 @@ class Window { _onLocaleChangedZone = Zone.current; } + /// The lifecycle state immediately after dart isolate initialization. + /// + /// This property will not be updated as the lifecycle changes. + /// + /// It is used to initialize [SchedulerBinding.lifecycleState] at startup + /// with any buffered lifecycle state events. + String get initialLifecycleState => _initialLifecycleState; + String _initialLifecycleState; + /// The system-reported text scale. /// /// This establishes the text scaling factor to use when rendering text, diff --git a/lib/ui/window/window.cc b/lib/ui/window/window.cc index 0a90d6fcbf2d9..bfeb86cef66f4 100644 --- a/lib/ui/window/window.cc +++ b/lib/ui/window/window.cc @@ -217,6 +217,18 @@ void Window::UpdateUserSettingsData(const std::string& data) { })); } +void Window::UpdateLifecycleState(const std::string& data) { + std::shared_ptr dart_state = library_.dart_state().lock(); + if (!dart_state) + return; + tonic::DartState::Scope scope(dart_state); + tonic::LogIfError(tonic::DartInvokeField(library_.value(), + "_updateLifecycleState", + { + tonic::StdStringToDart(data), + })); +} + void Window::UpdateSemanticsEnabled(bool enabled) { std::shared_ptr dart_state = library_.dart_state().lock(); if (!dart_state) diff --git a/lib/ui/window/window.h b/lib/ui/window/window.h index 94a506fb5fa4d..f5624e4bad6af 100644 --- a/lib/ui/window/window.h +++ b/lib/ui/window/window.h @@ -65,6 +65,7 @@ class Window final { void UpdateWindowMetrics(const ViewportMetrics& metrics); void UpdateLocales(const std::vector& locales); void UpdateUserSettingsData(const std::string& data); + void UpdateLifecycleState(const std::string& data); void UpdateSemanticsEnabled(bool enabled); void UpdateAccessibilityFeatures(int32_t flags); void DispatchPlatformMessage(fml::RefPtr message); diff --git a/runtime/runtime_controller.cc b/runtime/runtime_controller.cc index b57f2232acc47..83a848e87955c 100644 --- a/runtime/runtime_controller.cc +++ b/runtime/runtime_controller.cc @@ -128,7 +128,8 @@ bool RuntimeController::FlushRuntimeStateToIsolate() { SetLocales(window_data_.locale_data) && SetSemanticsEnabled(window_data_.semantics_enabled) && SetAccessibilityFeatures(window_data_.accessibility_feature_flags_) && - SetUserSettingsData(window_data_.user_settings_data); + SetUserSettingsData(window_data_.user_settings_data) && + SetLifecycleState(window_data_.lifecycle_state); } bool RuntimeController::SetViewportMetrics(const ViewportMetrics& metrics) { @@ -164,6 +165,17 @@ bool RuntimeController::SetUserSettingsData(const std::string& data) { return false; } +bool RuntimeController::SetLifecycleState(const std::string& data) { + window_data_.lifecycle_state = data; + + if (auto* window = GetWindowIfAvailable()) { + window->UpdateLifecycleState(window_data_.lifecycle_state); + return true; + } + + return false; +} + bool RuntimeController::SetSemanticsEnabled(bool enabled) { window_data_.semantics_enabled = enabled; diff --git a/runtime/runtime_controller.h b/runtime/runtime_controller.h index c913795b8eba2..03f1389d8c613 100644 --- a/runtime/runtime_controller.h +++ b/runtime/runtime_controller.h @@ -49,6 +49,8 @@ class RuntimeController final : public WindowClient { bool SetUserSettingsData(const std::string& data); + bool SetLifecycleState(const std::string& data); + bool SetSemanticsEnabled(bool enabled); bool SetAccessibilityFeatures(int32_t flags); @@ -111,6 +113,7 @@ class RuntimeController final : public WindowClient { std::string variant_code; std::vector locale_data; std::string user_settings_data = "{}"; + std::string lifecycle_state; bool semantics_enabled = false; bool assistive_technology_enabled = false; int32_t accessibility_feature_flags_ = 0; diff --git a/shell/common/engine.cc b/shell/common/engine.cc index 084216072e988..5b2d5a5c3dd37 100644 --- a/shell/common/engine.cc +++ b/shell/common/engine.cc @@ -291,6 +291,8 @@ bool Engine::HandleLifecyclePlatformMessage(blink::PlatformMessage* message) { if (state == "AppLifecycleState.resumed" && have_surface_) { ScheduleFrame(); } + runtime_controller_->SetLifecycleState(state); + // Always forward these messages to the framework by returning false. return false; } From a93d99db98d42403ec83f5f7b3b8b4897578c328 Mon Sep 17 00:00:00 2001 From: Dan Field Date: Wed, 6 Mar 2019 16:53:14 -0800 Subject: [PATCH 1303/1537] A11y callback (#8005) * implement callback for a11y readiness * use FlutterSemanticsUpdateNotification from header, move to VC header --- .../ios/framework/Headers/FlutterEngine.h | 20 +++++++++++++++++++ .../framework/Headers/FlutterViewController.h | 8 ++++++++ .../ios/framework/Source/FlutterEngine.mm | 4 ++++ shell/platform/darwin/ios/platform_view_ios.h | 6 +++--- .../platform/darwin/ios/platform_view_ios.mm | 7 +++++-- 5 files changed, 40 insertions(+), 5 deletions(-) diff --git a/shell/platform/darwin/ios/framework/Headers/FlutterEngine.h b/shell/platform/darwin/ios/framework/Headers/FlutterEngine.h index 262a97a1dc2d3..c7a4836a9f50c 100644 --- a/shell/platform/darwin/ios/framework/Headers/FlutterEngine.h +++ b/shell/platform/darwin/ios/framework/Headers/FlutterEngine.h @@ -133,6 +133,26 @@ FLUTTER_EXPORT */ - (void)destroyContext; +/** + * Ensures that Flutter will generate a semantics tree. + * + * This is enabled by default if certain accessibility services are turned on by + * the user, or when using a Simulator. This method allows a user to turn + * semantics on when they would not ordinarily be generated and the performance + * overhead is not a concern, e.g. for UI testing. Note that semantics should + * never be programatically turned off, as it would potentially disable + * accessibility services an end user has requested. + * + * This method must only be called after launching the engine via + * `-runWithEntrypoint:` or `-runWithEntryPoint:libraryURI`. + * + * You can subscribe to semantics updates via `NSNotificationCenter` by adding + * an observer for the name `FlutterSemanticsUpdateNotification`. The `object` + * parameter will be the `FlutterViewController` associated with the semantics + * update. + */ +- (void)ensureSemanticsEnabled; + /** * Sets the `FlutterViewController` for this instance. The FlutterEngine must be * running (e.g. a successful call to `-runWithEntrypoint:` or `-runWithEntrypoint:libraryURI`) diff --git a/shell/platform/darwin/ios/framework/Headers/FlutterViewController.h b/shell/platform/darwin/ios/framework/Headers/FlutterViewController.h index 371a888c88394..1ac7d61c5e614 100644 --- a/shell/platform/darwin/ios/framework/Headers/FlutterViewController.h +++ b/shell/platform/darwin/ios/framework/Headers/FlutterViewController.h @@ -17,6 +17,14 @@ @class FlutterEngine; +/** + * The name used for semantic update nofications via `NSNotificationCenter`. + * + * The object passed as the sender is the `FlutterViewController` associated + * with the update. + */ +const NSNotificationName FlutterSemanticsUpdateNotification = @"FlutterSemanticsUpdate"; + /** * A `UIViewController` implementation for Flutter views. * diff --git a/shell/platform/darwin/ios/framework/Source/FlutterEngine.mm b/shell/platform/darwin/ios/framework/Source/FlutterEngine.mm index 8b8bd33fdba2a..a90e49c7085fa 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterEngine.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterEngine.mm @@ -146,6 +146,10 @@ - (void)dispatchPointerDataPacket:(std::unique_ptr)pac return _shell->GetTaskRunners().GetPlatformTaskRunner(); } +- (void)ensureSemanticsEnabled { + self.iosPlatformView->SetSemanticsEnabled(true); +} + - (void)setViewController:(FlutterViewController*)viewController { FML_DCHECK(self.iosPlatformView); _viewController = [viewController getWeakPtr]; diff --git a/shell/platform/darwin/ios/platform_view_ios.h b/shell/platform/darwin/ios/platform_view_ios.h index a0d85a7ffd0f9..b7495b90fec51 100644 --- a/shell/platform/darwin/ios/platform_view_ios.h +++ b/shell/platform/darwin/ios/platform_view_ios.h @@ -40,6 +40,9 @@ class PlatformViewIOS final : public PlatformView { void SetTextInputPlugin(fml::scoped_nsprotocol plugin); + // |shell::PlatformView| + void SetSemanticsEnabled(bool enabled) override; + private: fml::WeakPtr owner_controller_; std::unique_ptr ios_surface_; @@ -57,9 +60,6 @@ class PlatformViewIOS final : public PlatformView { // |shell::PlatformView| sk_sp CreateResourceContext() const override; - // |shell::PlatformView| - void SetSemanticsEnabled(bool enabled) override; - // |shell::PlatformView| void SetAccessibilityFeatures(int32_t flags) override; diff --git a/shell/platform/darwin/ios/platform_view_ios.mm b/shell/platform/darwin/ios/platform_view_ios.mm index 4bcb08d21afe6..6f138edcfdd11 100644 --- a/shell/platform/darwin/ios/platform_view_ios.mm +++ b/shell/platform/darwin/ios/platform_view_ios.mm @@ -90,8 +90,8 @@ // |shell::PlatformView| void PlatformViewIOS::SetSemanticsEnabled(bool enabled) { if (!owner_controller_) { - FML_DLOG(WARNING) << "Could not set semantics to enabled, this " - "PlatformViewIOS has no ViewController."; + FML_LOG(WARNING) << "Could not set semantics to enabled, this " + "PlatformViewIOS has no ViewController."; return; } if (enabled && !accessibility_bridge_) { @@ -111,8 +111,11 @@ // |shell::PlatformView| void PlatformViewIOS::UpdateSemantics(blink::SemanticsNodeUpdates update, blink::CustomAccessibilityActionUpdates actions) { + FML_DCHECK(owner_controller_); if (accessibility_bridge_) { accessibility_bridge_->UpdateSemantics(std::move(update), std::move(actions)); + [[NSNotificationCenter defaultCenter] postNotificationName:FlutterSemanticsUpdateNotification + object:owner_controller_.get()]; } } From 5a06afa2a0b812b07c6e33743aff5bcbafbe4b1e Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Wed, 6 Mar 2019 20:48:24 -0500 Subject: [PATCH 1304/1537] Roll src/third_party/skia 801a9c16d81e..3c957d575c58 (19 commits) (#8063) https://skia.googlesource.com/skia.git/%2Blog/801a9c16d81e..3c957d575c58 git log 801a9c16d81ef848eb8c9ae2e94fa458eb7a681c..3c957d575c584bdebbdff79129f48b4c5877e158 --date=short --no-merges --format=%ad %ae %s 2019-03-06 skia-autoroll@skia-public.iam.gserviceaccount.com Roll ../src 2f034a6e32fc..ca7eff86b174 (489 commits) 2019-03-06 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader 2c25b14c34c1..76e9bc066b28 (1 commits) 2019-03-06 recipe-roller@chromium.org Roll recipe dependencies (trivial). 2019-03-06 fmalita@chromium.org Make SkCubicMap immutable 2019-03-06 brianosman@google.com Particle cleanup: IWYU 2019-03-06 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader 9584fe43a9c2..2c25b14c34c1 (1 commits) 2019-03-06 brianosman@google.com SkReflected - avoid double registration, auto register base types, etc. 2019-02-28 fmalita@chromium.org Make SkCubicMap public 2019-03-06 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader 4c84dbdce271..9584fe43a9c2 (1 commits) 2019-03-06 jvanverth@google.com Another stab at MTLRenderCommandEncoder memory leak. 2019-03-06 mtklein@google.com encode F16Norm as rec2020 2019-03-06 reed@google.com change gradients4f to use srgb 2019-03-06 herb@google.com Fix: set SDFT if there is only fallback 2019-03-06 brianosman@google.com Add glf16norm config to DM 2019-03-06 nifong@google.com Interface for passing skp file from JS to WASM 2019-03-06 skia-autoroll@skia-public.iam.gserviceaccount.com Roll skia/third_party/skcms 10736f2da359..5e67e5c19fd3 (1 commits) 2019-03-06 recipe-roller@chromium.org Roll recipe dependencies (trivial). 2019-03-06 brianosman@google.com Particles: Cleanup and better UI 2019-03-06 mtklein@google.com rework colorImage testing The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (reed@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/DEPS b/DEPS index c9920d648718d..040b28815489c 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '801a9c16d81ef848eb8c9ae2e94fa458eb7a681c', + 'skia_revision': '3c957d575c584bdebbdff79129f48b4c5877e158', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 656f655385a1f..958a8f2feacd3 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 171d209ab2e2243f9d0472e568158ad1 +Signature: 657b81661adc356ab79d52cbc9b249f4 UNUSED LICENSES: @@ -1575,6 +1575,7 @@ FILE: ../../../third_party/skia/include/c/sk_imageinfo.h FILE: ../../../third_party/skia/include/core/SkCanvasVirtualEnforcer.h FILE: ../../../third_party/skia/include/core/SkContourMeasure.h FILE: ../../../third_party/skia/include/core/SkCoverageMode.h +FILE: ../../../third_party/skia/include/core/SkCubicMap.h FILE: ../../../third_party/skia/include/core/SkFontMetrics.h FILE: ../../../third_party/skia/include/core/SkFontParameters.h FILE: ../../../third_party/skia/include/core/SkFontTypes.h @@ -1686,7 +1687,6 @@ FILE: ../../../third_party/skia/src/core/SkColorSpaceXformSteps.h FILE: ../../../third_party/skia/src/core/SkContourMeasure.cpp FILE: ../../../third_party/skia/src/core/SkCoverageModePriv.h FILE: ../../../third_party/skia/src/core/SkCubicMap.cpp -FILE: ../../../third_party/skia/src/core/SkCubicMap.h FILE: ../../../third_party/skia/src/core/SkDeferredDisplayList.cpp FILE: ../../../third_party/skia/src/core/SkDeferredDisplayListPriv.h FILE: ../../../third_party/skia/src/core/SkDraw_text.cpp @@ -2112,12 +2112,12 @@ FILE: ../../../third_party/skia/experimental/docs/svgbaseddoc.htm FILE: ../../../third_party/skia/experimental/docs/utilities.js FILE: ../../../third_party/skia/experimental/wasm-skp-debugger/cpu.js FILE: ../../../third_party/skia/experimental/wasm-skp-debugger/debugger/index.html +FILE: ../../../third_party/skia/experimental/wasm-skp-debugger/debugger/sample.skp FILE: ../../../third_party/skia/experimental/wasm-skp-debugger/externs.js FILE: ../../../third_party/skia/experimental/wasm-skp-debugger/fonts/NotoMono-Regular.ttf FILE: ../../../third_party/skia/experimental/wasm-skp-debugger/karma.conf.js FILE: ../../../third_party/skia/experimental/wasm-skp-debugger/package.json FILE: ../../../third_party/skia/experimental/wasm-skp-debugger/ready.js -FILE: ../../../third_party/skia/experimental/wasm-skp-debugger/sample.skp FILE: ../../../third_party/skia/infra/bots/assets.isolate FILE: ../../../third_party/skia/infra/bots/assets/android_ndk_darwin/VERSION FILE: ../../../third_party/skia/infra/bots/assets/android_ndk_linux/VERSION From 3fb627f2c06a8c41d1e236518237fe4ee0a0d8d0 Mon Sep 17 00:00:00 2001 From: Jonah Williams Date: Wed, 6 Mar 2019 18:45:01 -0800 Subject: [PATCH 1305/1537] add signal to pointer kinds (#8065) --- lib/ui/pointer.dart | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/ui/pointer.dart b/lib/ui/pointer.dart index fd5f3a13e25aa..b9a32cb56c1b5 100644 --- a/lib/ui/pointer.dart +++ b/lib/ui/pointer.dart @@ -50,6 +50,9 @@ enum PointerDeviceKind { /// A pointer device with a stylus that has been inverted. invertedStylus, + /// A pointer device that uses a pointer signal. + signal, + /// An unknown pointer device. unknown } From ca0bac4fb02778aba6d935d98e3acbae5180fdf5 Mon Sep 17 00:00:00 2001 From: Jonah Williams Date: Wed, 6 Mar 2019 20:55:34 -0800 Subject: [PATCH 1306/1537] Revert "add signal to pointer kinds" (#8066) --- lib/ui/pointer.dart | 3 --- lib/ui/window/pointer_data.h | 1 - shell/platform/android/io/flutter/view/FlutterView.java | 3 +-- 3 files changed, 1 insertion(+), 6 deletions(-) diff --git a/lib/ui/pointer.dart b/lib/ui/pointer.dart index b9a32cb56c1b5..fd5f3a13e25aa 100644 --- a/lib/ui/pointer.dart +++ b/lib/ui/pointer.dart @@ -50,9 +50,6 @@ enum PointerDeviceKind { /// A pointer device with a stylus that has been inverted. invertedStylus, - /// A pointer device that uses a pointer signal. - signal, - /// An unknown pointer device. unknown } diff --git a/lib/ui/window/pointer_data.h b/lib/ui/window/pointer_data.h index 56fd6067a1b35..f58c377044d3d 100644 --- a/lib/ui/window/pointer_data.h +++ b/lib/ui/window/pointer_data.h @@ -28,7 +28,6 @@ struct alignas(8) PointerData { kMouse, kStylus, kInvertedStylus, - kSignal, }; // Must match the PointerSignalKind enum in pointer.dart. diff --git a/shell/platform/android/io/flutter/view/FlutterView.java b/shell/platform/android/io/flutter/view/FlutterView.java index 6c42dc152d739..8df25207422ba 100644 --- a/shell/platform/android/io/flutter/view/FlutterView.java +++ b/shell/platform/android/io/flutter/view/FlutterView.java @@ -378,8 +378,7 @@ public InputConnection onCreateInputConnection(EditorInfo outAttrs) { private static final int kPointerDeviceKindMouse = 1; private static final int kPointerDeviceKindStylus = 2; private static final int kPointerDeviceKindInvertedStylus = 3; - private static final int kPointerDeviceKindSignal = 4; - private static final int kPointerDeviceKindUnknown = 5; + private static final int kPointerDeviceKindUnknown = 4; // Must match the PointerSignalKind enum in pointer.dart. private static final int kPointerSignalKindNone = 0; From 68ed654ea99b59ca711c149f018f54e39f607b2e Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Thu, 7 Mar 2019 01:35:34 -0500 Subject: [PATCH 1307/1537] Roll src/third_party/skia 3c957d575c58..692122e3ef23 (6 commits) (#8067) https://skia.googlesource.com/skia.git/%2Blog/3c957d575c58..692122e3ef23 git log 3c957d575c584bdebbdff79129f48b4c5877e158..692122e3ef2335ae7569d73960375743bb9af989 --date=short --no-merges --format=%ad %ae %s 2019-03-06 herb@google.com Don't apply the view matrix twice for complicated fallback 2019-03-07 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader bf943f67daa4..2995dc2a67c7 (2 commits) 2019-03-06 bungeman@google.com Correct argument order for blobs in viewer. 2019-03-06 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader 76e9bc066b28..bf943f67daa4 (2 commits) 2019-03-06 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/angle2 e397949ec2db..14126505b237 (4 commits) 2019-03-06 recipe-roller@chromium.org Roll recipe dependencies (trivial). The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (reed@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 040b28815489c..07203f0821690 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '3c957d575c584bdebbdff79129f48b4c5877e158', + 'skia_revision': '692122e3ef2335ae7569d73960375743bb9af989', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 958a8f2feacd3..852aedbaf67e4 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 657b81661adc356ab79d52cbc9b249f4 +Signature: bab11cccef86d46bab1376a56023393b UNUSED LICENSES: From 80c6dd2864bc32487d09f3508b3038a06b224ff0 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Thu, 7 Mar 2019 07:32:30 -0500 Subject: [PATCH 1308/1537] Roll src/third_party/skia 692122e3ef23..4c1ea43a79b5 (3 commits) (#8069) https://skia.googlesource.com/skia.git/%2Blog/692122e3ef23..4c1ea43a79b5 git log 692122e3ef2335ae7569d73960375743bb9af989..4c1ea43a79b5be7522adeac2e1e0d9ae21f26193 --date=short --no-merges --format=%ad %ae %s 2019-03-07 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader 952d27384a7e..45faa0849352 (1 commits) 2019-03-07 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader 2995dc2a67c7..952d27384a7e (1 commits) 2019-03-07 skia-recreate-skps@skia-swarming-bots.iam.gserviceaccount.com Update go_deps asset The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (reed@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 07203f0821690..2b2ba40f54d66 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '692122e3ef2335ae7569d73960375743bb9af989', + 'skia_revision': '4c1ea43a79b5be7522adeac2e1e0d9ae21f26193', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 852aedbaf67e4..50b5bd7ab4252 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: bab11cccef86d46bab1376a56023393b +Signature: ea74b6b2903e553ca56be5bff0a607a6 UNUSED LICENSES: From ff46dd38f276e52d75074978ed5f7b48dc38b14d Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Thu, 7 Mar 2019 12:05:23 -0500 Subject: [PATCH 1309/1537] Roll src/third_party/skia 4c1ea43a79b5..88b8d1124b72 (8 commits) (#8070) https://skia.googlesource.com/skia.git/%2Blog/4c1ea43a79b5..88b8d1124b72 git log 4c1ea43a79b5be7522adeac2e1e0d9ae21f26193..88b8d1124b7280d379f7545eda4b9097a4d8a292 --date=short --no-merges --format=%ad %ae %s 2019-03-07 bsalomon@google.com Revert "Distinguish between "flushed" and "finished" idle state callbacks on GrTexture." 2019-03-07 fmalita@chromium.org [skottie] Use std::chrono for load time stats 2019-03-07 bsalomon@google.com Revert "Change promise image contract to for when Release and Done are called." 2019-03-06 herb@google.com Removed unused fallback code 2019-03-07 kjlubick@google.com [canvaskit] Increase timeout and add logging to further diagnose test flakiness 2019-03-06 mtklein@google.com fix f16norm mips 2019-03-06 bsalomon@google.com Change promise image contract to for when Release and Done are called. 2019-03-06 reed@google.com remove dead SK_SUPPORT_LEGACY_CHOOSERASTERPIPELINE code The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (reed@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 2b2ba40f54d66..d682b445b74a8 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '4c1ea43a79b5be7522adeac2e1e0d9ae21f26193', + 'skia_revision': '88b8d1124b7280d379f7545eda4b9097a4d8a292', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 50b5bd7ab4252..96a293f5e1329 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: ea74b6b2903e553ca56be5bff0a607a6 +Signature: 5499bdd90e967369cfc64f95ffd6b6d7 UNUSED LICENSES: From de90dbff7d0e27a81e78d11322e232c90022b108 Mon Sep 17 00:00:00 2001 From: Jonah Williams Date: Thu, 7 Mar 2019 11:03:39 -0800 Subject: [PATCH 1310/1537] Refactor web configuration/ Add dartdevc (#7978) --- BUILD.gn | 3 +- ci/licenses_golden/licenses_flutter | 2 +- lib/snapshot/libraries.json | 117 -------------- lib/snapshot/libraries.yaml | 115 ------------- lib/stub_ui/BUILD.gn | 41 ----- lib/stub_ui/libraries.json | 122 -------------- lib/stub_ui/libraries.yaml | 128 --------------- web_sdk/BUILD.gn | 66 ++++++++ web_sdk/libraries.json | 236 +++++++++++++++++++++++++++ web_sdk/libraries.yaml | 240 ++++++++++++++++++++++++++++ web_sdk/make_combined_sdk.sh | 16 ++ 11 files changed, 560 insertions(+), 526 deletions(-) delete mode 100644 lib/stub_ui/BUILD.gn delete mode 100644 lib/stub_ui/libraries.json delete mode 100644 lib/stub_ui/libraries.yaml create mode 100644 web_sdk/BUILD.gn create mode 100644 web_sdk/libraries.json create mode 100644 web_sdk/libraries.yaml create mode 100755 web_sdk/make_combined_sdk.sh diff --git a/BUILD.gn b/BUILD.gn index a320299636089..248524f872551 100644 --- a/BUILD.gn +++ b/BUILD.gn @@ -3,7 +3,6 @@ # found in the LICENSE file. import("$flutter_root/common/config.gni") -import("//third_party/dart/build/dart/dart_action.gni") group("flutter") { testonly = true @@ -24,7 +23,7 @@ group("flutter") { public_deps += [ "$flutter_root/frontend_server", "//third_party/dart:create_sdk", - "$flutter_root/lib/stub_ui:stub_ui", + "$flutter_root/web_sdk", ] } } diff --git a/ci/licenses_golden/licenses_flutter b/ci/licenses_golden/licenses_flutter index 038903489a3f8..a73eae28ef67d 100644 --- a/ci/licenses_golden/licenses_flutter +++ b/ci/licenses_golden/licenses_flutter @@ -251,7 +251,6 @@ FILE: ../../../flutter/lib/stub_ui/hash_codes.dart FILE: ../../../flutter/lib/stub_ui/hooks.dart FILE: ../../../flutter/lib/stub_ui/isolate_name_server.dart FILE: ../../../flutter/lib/stub_ui/lerp.dart -FILE: ../../../flutter/lib/stub_ui/libraries.json FILE: ../../../flutter/lib/stub_ui/natives.dart FILE: ../../../flutter/lib/stub_ui/painting.dart FILE: ../../../flutter/lib/stub_ui/plugins.dart @@ -704,6 +703,7 @@ FILE: ../../../flutter/vulkan/vulkan_utilities.cc FILE: ../../../flutter/vulkan/vulkan_utilities.h FILE: ../../../flutter/vulkan/vulkan_window.cc FILE: ../../../flutter/vulkan/vulkan_window.h +FILE: ../../../flutter/web_sdk/libraries.json ---------------------------------------------------------------------------------------------------- Copyright 2013 The Flutter Authors. All rights reserved. diff --git a/lib/snapshot/libraries.json b/lib/snapshot/libraries.json index bc3d0d832c952..99ef4cd778f8c 100644 --- a/lib/snapshot/libraries.json +++ b/lib/snapshot/libraries.json @@ -1,123 +1,6 @@ { "comment:0": "NOTE: THIS FILE IS GENERATED. DO NOT EDIT.", "comment:1": "Instead modify 'flutter/lib/snapshot/libraries.yaml' and follow the instructions therein.", - "none": { - "libraries": {} - }, - "dartdevc": { - "libraries": { - "async": { - "patches": "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/patch/async_patch.dart", - "uri": "../../../third_party/dart/sdk/lib/async/async.dart" - }, - "_runtime": { - "uri": "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/private/ddc_runtime/runtime.dart" - }, - "_interceptors": { - "uri": "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/private/interceptors.dart" - }, - "mirrors": { - "patches": "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/patch/mirrors_patch.dart", - "supported": false, - "uri": "../../../third_party/dart/sdk/lib/mirrors/mirrors.dart" - }, - "_debugger": { - "uri": "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/private/debugger.dart" - }, - "io": { - "patches": "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/patch/io_patch.dart", - "supported": false, - "uri": "../../../third_party/dart/sdk/lib/io/io.dart" - }, - "_internal": { - "patches": "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/patch/internal_patch.dart", - "uri": "../../../third_party/dart/sdk/lib/internal/internal.dart" - }, - "_metadata": { - "uri": "../../../third_party/dart/sdk/lib/html/html_common/metadata.dart" - }, - "_http": { - "uri": "../../../third_party/dart/sdk/lib/_http/http.dart" - }, - "_js_primitives": { - "uri": "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/private/js_primitives.dart" - }, - "_js_helper": { - "uri": "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/private/js_helper.dart" - }, - "ui": { - "uri": "flutter/lib/stub_ui/ui.dart" - }, - "js": { - "uri": "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/lib/js/dart2js/js_dart2js.dart" - }, - "_js_mirrors": { - "uri": "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/private/js_mirrors.dart" - }, - "html_common": { - "uri": "../../../third_party/dart/sdk/lib/html/html_common/html_common_dart2js.dart" - }, - "_native_typed_data": { - "uri": "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/private/native_typed_data.dart" - }, - "core": { - "patches": "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/patch/core_patch.dart", - "uri": "../../../third_party/dart/sdk/lib/core/core.dart" - }, - "js_util": { - "uri": "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/lib/js_util/dart2js/js_util_dart2js.dart" - }, - "collection": { - "patches": "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/patch/collection_patch.dart", - "uri": "../../../third_party/dart/sdk/lib/collection/collection.dart" - }, - "typed_data": { - "patches": "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/patch/typed_data_patch.dart", - "uri": "../../../third_party/dart/sdk/lib/typed_data/typed_data.dart" - }, - "web_audio": { - "uri": "../../../third_party/dart/sdk/lib/web_audio/dart2js/web_audio_dart2js.dart" - }, - "html": { - "uri": "../../../third_party/dart/sdk/lib/html/dart2js/html_dart2js.dart" - }, - "developer": { - "patches": "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/patch/developer_patch.dart", - "uri": "../../../third_party/dart/sdk/lib/developer/developer.dart" - }, - "isolate": { - "patches": "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/patch/isolate_patch.dart", - "supported": false, - "uri": "../../../third_party/dart/sdk/lib/isolate/isolate.dart" - }, - "web_gl": { - "uri": "../../../third_party/dart/sdk/lib/web_gl/dart2js/web_gl_dart2js.dart" - }, - "indexed_db": { - "uri": "../../../third_party/dart/sdk/lib/indexed_db/dart2js/indexed_db_dart2js.dart" - }, - "convert": { - "patches": "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/patch/convert_patch.dart", - "uri": "../../../third_party/dart/sdk/lib/convert/convert.dart" - }, - "_isolate_helper": { - "uri": "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/private/isolate_helper.dart" - }, - "math": { - "patches": "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/patch/math_patch.dart", - "uri": "../../../third_party/dart/sdk/lib/math/math.dart" - }, - "_foreign_helper": { - "uri": "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/private/foreign_helper.dart" - }, - "web_sql": { - "uri": "../../../third_party/dart/sdk/lib/web_sql/dart2js/web_sql_dart2js.dart" - }, - "svg": { - "uri": "../../../third_party/dart/sdk/lib/svg/dart2js/svg_dart2js.dart" - } - } - }, "flutter": { "libraries": { "_builtin": { diff --git a/lib/snapshot/libraries.yaml b/lib/snapshot/libraries.yaml index cb65d57bd7b8b..c4244eaff8719 100644 --- a/lib/snapshot/libraries.yaml +++ b/lib/snapshot/libraries.yaml @@ -11,9 +11,6 @@ # changing libraries, sources, and patch files. See # https://github.com/dart-lang/sdk/issues/28836. -none: - libraries: {} - flutter: libraries: _builtin: @@ -150,115 +147,3 @@ flutter: vmservice_io: uri: "../../../third_party/dart/runtime/bin/vmservice/vmservice_io.dart" - -dartdevc: - libraries: - _runtime: - uri: "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/private/ddc_runtime/runtime.dart" - - _debugger: - uri: "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/private/debugger.dart" - - _foreign_helper: - uri: "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/private/foreign_helper.dart" - - _http: - uri: "../../../third_party/dart/sdk/lib/_http/http.dart" - - _interceptors: - uri: "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/private/interceptors.dart" - - _internal: - uri: "../../../third_party/dart/sdk/lib/internal/internal.dart" - patches: "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/patch/internal_patch.dart" - - _isolate_helper: - uri: "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/private/isolate_helper.dart" - - _js_helper: - uri: "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/private/js_helper.dart" - - _js_mirrors: - uri: "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/private/js_mirrors.dart" - - _js_primitives: - uri: "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/private/js_primitives.dart" - - _metadata: - uri: "../../../third_party/dart/sdk/lib/html/html_common/metadata.dart" - - _native_typed_data: - uri: "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/private/native_typed_data.dart" - - async: - uri: "../../../third_party/dart/sdk/lib/async/async.dart" - patches: "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/patch/async_patch.dart" - - collection: - uri: "../../../third_party/dart/sdk/lib/collection/collection.dart" - patches: "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/patch/collection_patch.dart" - - convert: - uri: "../../../third_party/dart/sdk/lib/convert/convert.dart" - patches: "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/patch/convert_patch.dart" - - core: - uri: "../../../third_party/dart/sdk/lib/core/core.dart" - patches: "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/patch/core_patch.dart" - - developer: - uri: "../../../third_party/dart/sdk/lib/developer/developer.dart" - patches: "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/patch/developer_patch.dart" - - io: - uri: "../../../third_party/dart/sdk/lib/io/io.dart" - patches: "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/patch/io_patch.dart" - supported: false - - isolate: - uri: "../../../third_party/dart/sdk/lib/isolate/isolate.dart" - patches: "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/patch/isolate_patch.dart" - supported: false - - mirrors: - uri: "../../../third_party/dart/sdk/lib/mirrors/mirrors.dart" - patches: "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/patch/mirrors_patch.dart" - supported: false - - math: - uri: "../../../third_party/dart/sdk/lib/math/math.dart" - patches: "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/patch/math_patch.dart" - - typed_data: - uri: "../../../third_party/dart/sdk/lib/typed_data/typed_data.dart" - patches: "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/patch/typed_data_patch.dart" - - html: - uri: "../../../third_party/dart/sdk/lib/html/dart2js/html_dart2js.dart" - - html_common: - uri: "../../../third_party/dart/sdk/lib/html/html_common/html_common_dart2js.dart" - - indexed_db: - uri: "../../../third_party/dart/sdk/lib/indexed_db/dart2js/indexed_db_dart2js.dart" - - js: - uri: "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/lib/js/dart2js/js_dart2js.dart" - - js_util: - uri: "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/lib/js_util/dart2js/js_util_dart2js.dart" - - svg: - uri: "../../../third_party/dart/sdk/lib/svg/dart2js/svg_dart2js.dart" - - web_audio: - uri: "../../../third_party/dart/sdk/lib/web_audio/dart2js/web_audio_dart2js.dart" - - web_gl: - uri: "../../../third_party/dart/sdk/lib/web_gl/dart2js/web_gl_dart2js.dart" - - web_sql: - uri: "../../../third_party/dart/sdk/lib/web_sql/dart2js/web_sql_dart2js.dart" - - ui: - uri: "flutter/lib/stub_ui/ui.dart" diff --git a/lib/stub_ui/BUILD.gn b/lib/stub_ui/BUILD.gn deleted file mode 100644 index 218f0344083df..0000000000000 --- a/lib/stub_ui/BUILD.gn +++ /dev/null @@ -1,41 +0,0 @@ -# Copyright 2019 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. - -copy("stub_ui") { - sources = [ - "compositing.dart", - "geometry.dart", - "hash_codes.dart", - "hooks.dart", - "isolate_name_server.dart", - "lerp.dart", - "natives.dart", - "painting.dart", - "plugins.dart", - "pointer.dart", - "semantics.dart", - "text.dart", - "ui.dart", - "versions.dart", - "window.dart", - ] - - deps = [ - ":stub_libraries", - ] - - outputs = [ - "$root_out_dir/flutter_patched_sdk/stub_ui/{{source_file_part}}" - ] -} - -copy("stub_libraries") { - sources = [ - "$flutter_root/lib/stub_ui/libraries.json" - ] - - outputs = [ - "$root_out_dir/flutter_patched_sdk/libraries.json" - ] -} diff --git a/lib/stub_ui/libraries.json b/lib/stub_ui/libraries.json deleted file mode 100644 index 60313c4ce6cbc..0000000000000 --- a/lib/stub_ui/libraries.json +++ /dev/null @@ -1,122 +0,0 @@ -{ - "comment:0": "NOTE: THIS FILE IS GENERATED. DO NOT EDIT.", - "comment:1": "Instead modify 'flutter/lib/stub_ui/libraries.yaml' and follow the instructions therein.", - "dart2js": { - "libraries": { - "async": { - "patches": "../../../../dart-sdk/lib/_internal/js_runtime/lib/async_patch.dart", - "uri": "../../../../dart-sdk/lib/async/async.dart" - }, - "_interceptors": { - "uri": "../../../../dart-sdk/lib/_internal/js_runtime/lib/interceptors.dart" - }, - "mirrors": { - "patches": "../../../../dart-sdk/lib/_internal/js_runtime/lib/mirrors_patch_cfe.dart", - "supported": false, - "uri": "../../../../dart-sdk/lib/mirrors/mirrors.dart" - }, - "_js_embedded_names": { - "uri": "../../../../dart-sdk/lib/_internal/js_runtime/lib/shared/embedded_names.dart" - }, - "io": { - "patches": "../../../../dart-sdk/lib/_internal/js_runtime/lib/io_patch.dart", - "supported": false, - "uri": "../../../../dart-sdk/lib/io/io.dart" - }, - "_internal": { - "patches": "../../../../dart-sdk/lib/_internal/js_runtime/lib/internal_patch.dart", - "uri": "../../../../dart-sdk/lib/internal/internal.dart" - }, - "_metadata": { - "uri": "../../../../dart-sdk/lib/html/html_common/metadata.dart" - }, - "_async_await_error_codes": { - "uri": "../../../../dart-sdk/lib/_internal/js_runtime/lib/shared/async_await_error_codes.dart" - }, - "_http": { - "uri": "../../../../dart-sdk/lib/_http/http.dart" - }, - "_js_primitives": { - "uri": "../../../../dart-sdk/lib/_internal/js_runtime/lib/js_primitives.dart" - }, - "_js_helper": { - "uri": "../../../../dart-sdk/lib/_internal/js_runtime/lib/js_helper.dart" - }, - "_chrome": { - "uri": "../../../../dart-sdk/lib/_chrome/dart2js/chrome_dart2js.dart" - }, - "html_common": { - "uri": "../../../../dart-sdk/lib/html/html_common/html_common_dart2js.dart" - }, - "ui": { - "uri": "stub_ui/ui.dart" - }, - "js": { - "uri": "../../../../dart-sdk/lib/js/dart2js/js_dart2js.dart" - }, - "_native_typed_data": { - "uri": "../../../../dart-sdk/lib/_internal/js_runtime/lib/native_typed_data.dart" - }, - "_js_names": { - "uri": "../../../../dart-sdk/lib/_internal/js_runtime/lib/js_names.dart" - }, - "core": { - "patches": "../../../../dart-sdk/lib/_internal/js_runtime/lib/core_patch.dart", - "uri": "../../../../dart-sdk/lib/core/core.dart" - }, - "collection": { - "patches": "../../../../dart-sdk/lib/_internal/js_runtime/lib/collection_patch.dart", - "uri": "../../../../dart-sdk/lib/collection/collection.dart" - }, - "js_util": { - "uri": "../../../../dart-sdk/lib/js_util/dart2js/js_util_dart2js.dart" - }, - "typed_data": { - "patches": "../../../../dart-sdk/lib/_internal/js_runtime/lib/typed_data_patch.dart", - "uri": "../../../../dart-sdk/lib/typed_data/typed_data.dart" - }, - "web_audio": { - "uri": "../../../../dart-sdk/lib/web_audio/dart2js/web_audio_dart2js.dart" - }, - "html": { - "uri": "../../../../dart-sdk/lib/html/dart2js/html_dart2js.dart" - }, - "isolate": { - "patches": "../../../../dart-sdk/lib/_internal/js_runtime/lib/isolate_patch.dart", - "supported": false, - "uri": "../../../../dart-sdk/lib/isolate/isolate.dart" - }, - "developer": { - "patches": "../../../../dart-sdk/lib/_internal/js_runtime/lib/developer_patch.dart", - "uri": "../../../../dart-sdk/lib/developer/developer.dart" - }, - "web_gl": { - "uri": "../../../../dart-sdk/lib/web_gl/dart2js/web_gl_dart2js.dart" - }, - "indexed_db": { - "uri": "../../../../dart-sdk/lib/indexed_db/dart2js/indexed_db_dart2js.dart" - }, - "_js": { - "patches": "../../../../dart-sdk/lib/js/_js_client.dart", - "uri": "../../../../dart-sdk/lib/js/_js.dart" - }, - "convert": { - "patches": "../../../../dart-sdk/lib/_internal/js_runtime/lib/convert_patch.dart", - "uri": "../../../../dart-sdk/lib/convert/convert.dart" - }, - "math": { - "patches": "../../../../dart-sdk/lib/_internal/js_runtime/lib/math_patch.dart", - "uri": "../../../../dart-sdk/lib/math/math.dart" - }, - "_foreign_helper": { - "uri": "../../../../dart-sdk/lib/_internal/js_runtime/lib/foreign_helper.dart" - }, - "web_sql": { - "uri": "../../../../dart-sdk/lib/web_sql/dart2js/web_sql_dart2js.dart" - }, - "svg": { - "uri": "../../../../dart-sdk/lib/svg/dart2js/svg_dart2js.dart" - } - } - } -} \ No newline at end of file diff --git a/lib/stub_ui/libraries.yaml b/lib/stub_ui/libraries.yaml deleted file mode 100644 index aded84171f6e5..0000000000000 --- a/lib/stub_ui/libraries.yaml +++ /dev/null @@ -1,128 +0,0 @@ -# Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file -# for details. All rights reserved. Use of this source code is governed by a -# BSD-style license that can be found in the LICENSE file. - -# Note: if you edit this file, you must also edit libraries.json in this -# directory: -# -#. python third_party/dart/tools/yaml2json.py flutter/lib/snapshot/libraries.yaml flutter/lib/snapshot/libraries.json -# -# We currently have several different files that needs to be updated when -# changing libraries, sources, and patch files. See -# https://github.com/dart-lang/sdk/issues/28836. - -dart2js: - libraries: - ui: - uri: "stub_ui/ui.dart" - - async: - uri: "../../../../dart-sdk/lib/async/async.dart" - patches: "../../../../dart-sdk/lib/_internal/js_runtime/lib/async_patch.dart" - - _chrome: - uri: "../../../../dart-sdk/lib/_chrome/dart2js/chrome_dart2js.dart" - - collection: - uri: "../../../../dart-sdk/lib/collection/collection.dart" - patches: "../../../../dart-sdk/lib/_internal/js_runtime/lib/collection_patch.dart" - - convert: - uri: "../../../../dart-sdk/lib/convert/convert.dart" - patches: "../../../../dart-sdk/lib/_internal/js_runtime/lib/convert_patch.dart" - - core: - uri: "../../../../dart-sdk/lib/core/core.dart" - patches: "../../../../dart-sdk/lib/_internal/js_runtime/lib/core_patch.dart" - - developer: - uri: "../../../../dart-sdk/lib/developer/developer.dart" - patches: "../../../../dart-sdk/lib/_internal/js_runtime/lib/developer_patch.dart" - - html: - uri: "../../../../dart-sdk/lib/html/dart2js/html_dart2js.dart" - - html_common: - uri: "../../../../dart-sdk/lib/html/html_common/html_common_dart2js.dart" - - indexed_db: - uri: "../../../../dart-sdk/lib/indexed_db/dart2js/indexed_db_dart2js.dart" - - _http: - uri: "../../../../dart-sdk/lib/_http/http.dart" - - io: - uri: "../../../../dart-sdk/lib/io/io.dart" - patches: "../../../../dart-sdk/lib/_internal/js_runtime/lib/io_patch.dart" - supported: false - - isolate: - uri: "../../../../dart-sdk/lib/isolate/isolate.dart" - patches: "../../../../dart-sdk/lib/_internal/js_runtime/lib/isolate_patch.dart" - supported: false - - js: - uri: "../../../../dart-sdk/lib/js/dart2js/js_dart2js.dart" - - _js: - uri: "../../../../dart-sdk/lib/js/_js.dart" - patches: "../../../../dart-sdk/lib/js/_js_client.dart" - - js_util: - uri: "../../../../dart-sdk/lib/js_util/dart2js/js_util_dart2js.dart" - - math: - uri: "../../../../dart-sdk/lib/math/math.dart" - patches: "../../../../dart-sdk/lib/_internal/js_runtime/lib/math_patch.dart" - - mirrors: - uri: "../../../../dart-sdk/lib/mirrors/mirrors.dart" - patches: "../../../../dart-sdk/lib/_internal/js_runtime/lib/mirrors_patch_cfe.dart" - supported: false - - typed_data: - uri: "../../../../dart-sdk/lib/typed_data/typed_data.dart" - patches: "../../../../dart-sdk/lib/_internal/js_runtime/lib/typed_data_patch.dart" - - _native_typed_data: - uri: "../../../../dart-sdk/lib/_internal/js_runtime/lib/native_typed_data.dart" - - svg: - uri: "../../../../dart-sdk/lib/svg/dart2js/svg_dart2js.dart" - - web_audio: - uri: "../../../../dart-sdk/lib/web_audio/dart2js/web_audio_dart2js.dart" - - web_gl: - uri: "../../../../dart-sdk/lib/web_gl/dart2js/web_gl_dart2js.dart" - - web_sql: - uri: "../../../../dart-sdk/lib/web_sql/dart2js/web_sql_dart2js.dart" - - _internal: - uri: "../../../../dart-sdk/lib/internal/internal.dart" - patches: "../../../../dart-sdk/lib/_internal/js_runtime/lib/internal_patch.dart" - - _js_helper: - uri: "../../../../dart-sdk/lib/_internal/js_runtime/lib/js_helper.dart" - - _interceptors: - uri: "../../../../dart-sdk/lib/_internal/js_runtime/lib/interceptors.dart" - - _foreign_helper: - uri: "../../../../dart-sdk/lib/_internal/js_runtime/lib/foreign_helper.dart" - - _js_names: - uri: "../../../../dart-sdk/lib/_internal/js_runtime/lib/js_names.dart" - - _js_primitives: - uri: "../../../../dart-sdk/lib/_internal/js_runtime/lib/js_primitives.dart" - - _js_embedded_names: - uri: "../../../../dart-sdk/lib/_internal/js_runtime/lib/shared/embedded_names.dart" - - _async_await_error_codes: - uri: "../../../../dart-sdk/lib/_internal/js_runtime/lib/shared/async_await_error_codes.dart" - - _metadata: - uri: "../../../../dart-sdk/lib/html/html_common/metadata.dart" \ No newline at end of file diff --git a/web_sdk/BUILD.gn b/web_sdk/BUILD.gn new file mode 100644 index 0000000000000..507afb3d6816f --- /dev/null +++ b/web_sdk/BUILD.gn @@ -0,0 +1,66 @@ +# Copyright 2019 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. + +group("web_sdk") { + sdk_copy_deps = [] + + deps = [ + ":web_ui_sources", + ":web_libraries_json", + ":dart_sdk_internal", + ] + sdk_copy_deps +} + +copy("web_ui_sources") { + sources = [ + "$flutter_root/lib/stub_ui/compositing.dart", + "$flutter_root/lib/stub_ui/geometry.dart", + "$flutter_root/lib/stub_ui/hash_codes.dart", + "$flutter_root/lib/stub_ui/hooks.dart", + "$flutter_root/lib/stub_ui/isolate_name_server.dart", + "$flutter_root/lib/stub_ui/lerp.dart", + "$flutter_root/lib/stub_ui/natives.dart", + "$flutter_root/lib/stub_ui/painting.dart", + "$flutter_root/lib/stub_ui/plugins.dart", + "$flutter_root/lib/stub_ui/pointer.dart", + "$flutter_root/lib/stub_ui/semantics.dart", + "$flutter_root/lib/stub_ui/text.dart", + "$flutter_root/lib/stub_ui/ui.dart", + "$flutter_root/lib/stub_ui/versions.dart", + "$flutter_root/lib/stub_ui/window.dart", + ] + + outputs = [ + "$root_out_dir/flutter_web_sdk/lib/ui/{{source_file_part}}" + ] +} + +copy("web_libraries_json") { + sources = [ + "libraries.json" + ] + + outputs = [ + "$root_out_dir/flutter_web_sdk/lib/libraries.json" + ] +} + +copy("dart_sdk_internal") { + deps = [ + "//third_party/dart:create_sdk" + ] + + sources = [ + "$root_out_dir/dart-sdk/lib/_internal/ddc_sdk.dill", + "$root_out_dir/dart-sdk/lib/_internal/dart2js_platform.dill", + "$root_out_dir/dart-sdk/lib/_internal/dart2js_server_platform.dill", + "$root_out_dir/dart-sdk/lib/_internal/ddc_sdk.sum", + "$root_out_dir/dart-sdk/lib/_internal/strong.sum", + "$root_out_dir/dart-sdk/lib/_internal/vm_platform_strong.dill", + ] + + outputs = [ + "$root_out_dir/flutter_web_sdk/lib/_internal/{{source_file_part}}" + ] +} diff --git a/web_sdk/libraries.json b/web_sdk/libraries.json new file mode 100644 index 0000000000000..a9203707e82f4 --- /dev/null +++ b/web_sdk/libraries.json @@ -0,0 +1,236 @@ +{ + "comment:0": "NOTE: THIS FILE IS GENERATED. DO NOT EDIT.", + "comment:1": "Instead modify 'flutter/flutter_web/libraries.yaml' and follow the instructions therein.", + "dart2js": { + "libraries": { + "async": { + "patches": "lib/_internal/js_runtime/lib/async_patch.dart", + "uri": "lib/async/async.dart" + }, + "_interceptors": { + "uri": "lib/_internal/js_runtime/lib/interceptors.dart" + }, + "mirrors": { + "patches": "lib/_internal/js_runtime/lib/mirrors_patch_cfe.dart", + "supported": false, + "uri": "lib/mirrors/mirrors.dart" + }, + "_js_embedded_names": { + "uri": "lib/_internal/js_runtime/lib/shared/embedded_names.dart" + }, + "io": { + "patches": "lib/_internal/js_runtime/lib/io_patch.dart", + "supported": false, + "uri": "lib/io/io.dart" + }, + "_internal": { + "patches": "lib/_internal/js_runtime/lib/internal_patch.dart", + "uri": "lib/internal/internal.dart" + }, + "_metadata": { + "uri": "lib/html/html_common/metadata.dart" + }, + "_async_await_error_codes": { + "uri": "lib/_internal/js_runtime/lib/shared/async_await_error_codes.dart" + }, + "_http": { + "uri": "lib/_http/http.dart" + }, + "_js_primitives": { + "uri": "lib/_internal/js_runtime/lib/js_primitives.dart" + }, + "_js_helper": { + "uri": "lib/_internal/js_runtime/lib/js_helper.dart" + }, + "_chrome": { + "uri": "lib/_chrome/dart2js/chrome_dart2js.dart" + }, + "html_common": { + "uri": "lib/html/html_common/html_common_dart2js.dart" + }, + "ui": { + "uri": "../lib/ui/ui.dart" + }, + "js": { + "uri": "lib/js/dart2js/js_dart2js.dart" + }, + "_native_typed_data": { + "uri": "lib/_internal/js_runtime/lib/native_typed_data.dart" + }, + "_js_names": { + "uri": "lib/_internal/js_runtime/lib/js_names.dart" + }, + "core": { + "patches": "lib/_internal/js_runtime/lib/core_patch.dart", + "uri": "lib/core/core.dart" + }, + "collection": { + "patches": "lib/_internal/js_runtime/lib/collection_patch.dart", + "uri": "lib/collection/collection.dart" + }, + "js_util": { + "uri": "lib/js_util/dart2js/js_util_dart2js.dart" + }, + "typed_data": { + "patches": "lib/_internal/js_runtime/lib/typed_data_patch.dart", + "uri": "lib/typed_data/typed_data.dart" + }, + "web_audio": { + "uri": "lib/web_audio/dart2js/web_audio_dart2js.dart" + }, + "html": { + "uri": "lib/html/dart2js/html_dart2js.dart" + }, + "isolate": { + "patches": "lib/_internal/js_runtime/lib/isolate_patch.dart", + "supported": false, + "uri": "lib/isolate/isolate.dart" + }, + "developer": { + "patches": "lib/_internal/js_runtime/lib/developer_patch.dart", + "uri": "lib/developer/developer.dart" + }, + "web_gl": { + "uri": "lib/web_gl/dart2js/web_gl_dart2js.dart" + }, + "indexed_db": { + "uri": "lib/indexed_db/dart2js/indexed_db_dart2js.dart" + }, + "_js": { + "patches": "lib/js/_js_client.dart", + "uri": "lib/js/_js.dart" + }, + "convert": { + "patches": "lib/_internal/js_runtime/lib/convert_patch.dart", + "uri": "lib/convert/convert.dart" + }, + "math": { + "patches": "lib/_internal/js_runtime/lib/math_patch.dart", + "uri": "lib/math/math.dart" + }, + "_foreign_helper": { + "uri": "lib/_internal/js_runtime/lib/foreign_helper.dart" + }, + "web_sql": { + "uri": "lib/web_sql/dart2js/web_sql_dart2js.dart" + }, + "svg": { + "uri": "lib/svg/dart2js/svg_dart2js.dart" + } + } + }, + "dartdevc": { + "libraries": { + "async": { + "patches": "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/patch/async_patch.dart", + "uri": "lib/async/async.dart" + }, + "_runtime": { + "uri": "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/private/ddc_runtime/runtime.dart" + }, + "_interceptors": { + "uri": "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/private/interceptors.dart" + }, + "mirrors": { + "patches": "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/patch/mirrors_patch.dart", + "supported": false, + "uri": "lib/mirrors/mirrors.dart" + }, + "_debugger": { + "uri": "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/private/debugger.dart" + }, + "io": { + "patches": "io_patch.dart", + "supported": false, + "uri": "lib/io/io.dart" + }, + "_internal": { + "patches": "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/patch/internal_patch.dart", + "uri": "lib/internal/internal.dart" + }, + "_metadata": { + "uri": "lib/html/html_common/metadata.dart" + }, + "_http": { + "uri": "lib/_http/http.dart" + }, + "_js_primitives": { + "uri": "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/private/js_primitives.dart" + }, + "_js_helper": { + "uri": "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/private/js_helper.dart" + }, + "ui": { + "uri": "../lib/ui/ui.dart" + }, + "js": { + "uri": "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/lib/js/dart2js/js_dart2js.dart" + }, + "_js_mirrors": { + "uri": "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/private/js_mirrors.dart" + }, + "html_common": { + "uri": "lib/html/html_common/html_common_dart2js.dart" + }, + "_native_typed_data": { + "uri": "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/private/native_typed_data.dart" + }, + "core": { + "patches": "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/patch/core_patch.dart", + "uri": "lib/core/core.dart" + }, + "js_util": { + "uri": "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/lib/js_util/dart2js/js_util_dart2js.dart" + }, + "collection": { + "patches": "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/patch/collection_patch.dart", + "uri": "lib/collection/collection.dart" + }, + "typed_data": { + "patches": "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/patch/typed_data_patch.dart", + "uri": "lib/typed_data/typed_data.dart" + }, + "web_audio": { + "uri": "lib/web_audio/dart2js/web_audio_dart2js.dart" + }, + "html": { + "uri": "lib/html/dart2js/html_dart2js.dart" + }, + "developer": { + "patches": "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/patch/developer_patch.dart", + "uri": "lib/developer/developer.dart" + }, + "isolate": { + "patches": "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/patch/isolate_patch.dart", + "supported": false, + "uri": "lib/isolate/isolate.dart" + }, + "web_gl": { + "uri": "lib/web_gl/dart2js/web_gl_dart2js.dart" + }, + "indexed_db": { + "uri": "lib/indexed_db/dart2js/indexed_db_dart2js.dart" + }, + "convert": { + "patches": "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/patch/convert_patch.dart", + "uri": "lib/convert/convert.dart" + }, + "_isolate_helper": { + "uri": "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/private/isolate_helper.dart" + }, + "math": { + "patches": "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/patch/math_patch.dart", + "uri": "lib/math/math.dart" + }, + "_foreign_helper": { + "uri": "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/private/foreign_helper.dart" + }, + "web_sql": { + "uri": "lib/web_sql/dart2js/web_sql_dart2js.dart" + }, + "svg": { + "uri": "lib/svg/dart2js/svg_dart2js.dart" + } + } + } +} \ No newline at end of file diff --git a/web_sdk/libraries.yaml b/web_sdk/libraries.yaml new file mode 100644 index 0000000000000..2516e18d4fdbf --- /dev/null +++ b/web_sdk/libraries.yaml @@ -0,0 +1,240 @@ +# Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file +# for details. All rights reserved. Use of this source code is governed by a +# BSD-style license that can be found in the LICENSE file. + +# Note: if you edit this file, you must also edit libraries.json in this +# directory: +# +#. python third_party/dart/tools/yaml2json.py flutter/lib/snapshot/libraries.yaml flutter/lib/snapshot/libraries.json +# +# We currently have several different files that needs to be updated when +# changing libraries, sources, and patch files. See +# https://github.com/dart-lang/sdk/issues/28836. + +dartdevc: + libraries: + _runtime: + uri: "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/private/ddc_runtime/runtime.dart" + + _debugger: + uri: "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/private/debugger.dart" + + _foreign_helper: + uri: "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/private/foreign_helper.dart" + + _http: + uri: "lib/_http/http.dart" + + _interceptors: + uri: "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/private/interceptors.dart" + + _internal: + uri: "lib/internal/internal.dart" + patches: "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/patch/internal_patch.dart" + + _isolate_helper: + uri: "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/private/isolate_helper.dart" + + _js_helper: + uri: "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/private/js_helper.dart" + + _js_mirrors: + uri: "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/private/js_mirrors.dart" + + _js_primitives: + uri: "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/private/js_primitives.dart" + + _metadata: + uri: "lib/html/html_common/metadata.dart" + + _native_typed_data: + uri: "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/private/native_typed_data.dart" + + async: + uri: "lib/async/async.dart" + patches: "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/patch/async_patch.dart" + + collection: + uri: "lib/collection/collection.dart" + patches: "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/patch/collection_patch.dart" + + convert: + uri: "lib/convert/convert.dart" + patches: "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/patch/convert_patch.dart" + + core: + uri: "lib/core/core.dart" + patches: "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/patch/core_patch.dart" + + developer: + uri: "lib/developer/developer.dart" + patches: "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/patch/developer_patch.dart" + + io: + uri: "lib/io/io.dart" + patches: "io_patch.dart" + supported: false + + isolate: + uri: "lib/isolate/isolate.dart" + patches: "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/patch/isolate_patch.dart" + supported: false + + mirrors: + uri: "lib/mirrors/mirrors.dart" + patches: "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/patch/mirrors_patch.dart" + supported: false + + math: + uri: "lib/math/math.dart" + patches: "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/patch/math_patch.dart" + + typed_data: + uri: "lib/typed_data/typed_data.dart" + patches: "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/patch/typed_data_patch.dart" + + html: + uri: "lib/html/dart2js/html_dart2js.dart" + + html_common: + uri: "lib/html/html_common/html_common_dart2js.dart" + + indexed_db: + uri: "lib/indexed_db/dart2js/indexed_db_dart2js.dart" + + js: + uri: "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/lib/js/dart2js/js_dart2js.dart" + + js_util: + uri: "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/lib/js_util/dart2js/js_util_dart2js.dart" + + svg: + uri: "lib/svg/dart2js/svg_dart2js.dart" + + web_audio: + uri: "lib/web_audio/dart2js/web_audio_dart2js.dart" + + web_gl: + uri: "lib/web_gl/dart2js/web_gl_dart2js.dart" + + web_sql: + uri: "lib/web_sql/dart2js/web_sql_dart2js.dart" + + ui: + uri: "../lib/ui/ui.dart" + +dart2js: + libraries: + ui: + uri: "../lib/ui/ui.dart" + + async: + uri: "lib/async/async.dart" + patches: "lib/_internal/js_runtime/lib/async_patch.dart" + + _chrome: + uri: "lib/_chrome/dart2js/chrome_dart2js.dart" + + collection: + uri: "lib/collection/collection.dart" + patches: "lib/_internal/js_runtime/lib/collection_patch.dart" + + convert: + uri: "lib/convert/convert.dart" + patches: "lib/_internal/js_runtime/lib/convert_patch.dart" + + core: + uri: "lib/core/core.dart" + patches: "lib/_internal/js_runtime/lib/core_patch.dart" + + developer: + uri: "lib/developer/developer.dart" + patches: "lib/_internal/js_runtime/lib/developer_patch.dart" + + html: + uri: "lib/html/dart2js/html_dart2js.dart" + + html_common: + uri: "lib/html/html_common/html_common_dart2js.dart" + + indexed_db: + uri: "lib/indexed_db/dart2js/indexed_db_dart2js.dart" + + _http: + uri: "lib/_http/http.dart" + + io: + uri: "lib/io/io.dart" + patches: "io_patch.dart" + supported: false + + isolate: + uri: "lib/isolate/isolate.dart" + patches: "lib/_internal/js_runtime/lib/isolate_patch.dart" + supported: false + + js: + uri: "lib/js/dart2js/js_dart2js.dart" + + _js: + uri: "lib/js/_js.dart" + patches: "lib/js/_js_client.dart" + + js_util: + uri: "lib/js_util/dart2js/js_util_dart2js.dart" + + math: + uri: "lib/math/math.dart" + patches: "lib/_internal/js_runtime/lib/math_patch.dart" + + mirrors: + uri: "lib/mirrors/mirrors.dart" + patches: "lib/_internal/js_runtime/lib/mirrors_patch_cfe.dart" + supported: false + + typed_data: + uri: "lib/typed_data/typed_data.dart" + patches: "lib/_internal/js_runtime/lib/typed_data_patch.dart" + + _native_typed_data: + uri: "lib/_internal/js_runtime/lib/native_typed_data.dart" + + svg: + uri: "lib/svg/dart2js/svg_dart2js.dart" + + web_audio: + uri: "lib/web_audio/dart2js/web_audio_dart2js.dart" + + web_gl: + uri: "lib/web_gl/dart2js/web_gl_dart2js.dart" + + web_sql: + uri: "lib/web_sql/dart2js/web_sql_dart2js.dart" + + _internal: + uri: "lib/internal/internal.dart" + patches: "lib/_internal/js_runtime/lib/internal_patch.dart" + + _js_helper: + uri: "lib/_internal/js_runtime/lib/js_helper.dart" + + _interceptors: + uri: "lib/_internal/js_runtime/lib/interceptors.dart" + + _foreign_helper: + uri: "lib/_internal/js_runtime/lib/foreign_helper.dart" + + _js_names: + uri: "lib/_internal/js_runtime/lib/js_names.dart" + + _js_primitives: + uri: "lib/_internal/js_runtime/lib/js_primitives.dart" + + _js_embedded_names: + uri: "lib/_internal/js_runtime/lib/shared/embedded_names.dart" + + _async_await_error_codes: + uri: "lib/_internal/js_runtime/lib/shared/async_await_error_codes.dart" + + _metadata: + uri: "lib/html/html_common/metadata.dart" \ No newline at end of file diff --git a/web_sdk/make_combined_sdk.sh b/web_sdk/make_combined_sdk.sh new file mode 100755 index 0000000000000..06b673baba8a2 --- /dev/null +++ b/web_sdk/make_combined_sdk.sh @@ -0,0 +1,16 @@ +#!/bin/bash + +# Reference script for creating patched sdk locally. +# Copy normal dart sources into flutter_patched sdk +mkdir -p out/host_debug_unopt/flutter_patched_sdk/lib +cp -RL out/host_debug_unopt/dart-sdk/lib/ out/host_debug_unopt/flutter_patched_sdk/lib + +# Copy stub ui dart sources into flutter_patched sdk +mkdir -p out/host_debug_unopt/flutter_patched_sdk/lib/ui +cp -RL flutter/lib/stub_ui/ out/host_debug_unopt/flutter_patched_sdk/lib/ui + +# Copy libraries.json into flutter patched sdk. +cp -RL flutter/flutter_web/libraries.json out/host_debug_unopt/flutter_patched_sdk/lib/libraries.json + +# Copy libraries.dart into flutter patched sdk +cp -RL flutter/flutter_web/libraries.dart out/host_debug_unopt/flutter_patched_sdk/lib/_internal/libraries.dart From d71bfe58dd20fced2f6776d636a9dc32c502e67e Mon Sep 17 00:00:00 2001 From: Jason Simmons Date: Thu, 7 Mar 2019 11:44:00 -0800 Subject: [PATCH 1311/1537] Only build a full Dart SDK when building for the host system (#8071) --- tools/gn | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tools/gn b/tools/gn index 8cf8af92d3166..ee784e5300d33 100755 --- a/tools/gn +++ b/tools/gn @@ -232,8 +232,9 @@ def to_gn_args(args): if args.arm_float_abi: gn_args['arm_float_abi'] = args.arm_float_abi - # Switch flutter to full Dart SDK. - gn_args['dart_platform_sdk'] = False + # Switch flutter to full Dart SDK when building for the host system. + if args.target_os is None: + gn_args['dart_platform_sdk'] = False return gn_args From d3f6d7a21d1a866e39cc114c788db99d119d2c12 Mon Sep 17 00:00:00 2001 From: Jonah Williams Date: Thu, 7 Mar 2019 15:07:50 -0800 Subject: [PATCH 1312/1537] only partial rule revert (#8078) --- web_sdk/BUILD.gn | 38 ++++++++++++++++++-------------------- 1 file changed, 18 insertions(+), 20 deletions(-) diff --git a/web_sdk/BUILD.gn b/web_sdk/BUILD.gn index 507afb3d6816f..47d8121cbec45 100644 --- a/web_sdk/BUILD.gn +++ b/web_sdk/BUILD.gn @@ -3,13 +3,11 @@ # found in the LICENSE file. group("web_sdk") { - sdk_copy_deps = [] - deps = [ ":web_ui_sources", ":web_libraries_json", - ":dart_sdk_internal", - ] + sdk_copy_deps + #":dart_sdk_internal", + ] } copy("web_ui_sources") { @@ -46,21 +44,21 @@ copy("web_libraries_json") { ] } -copy("dart_sdk_internal") { - deps = [ - "//third_party/dart:create_sdk" - ] +# copy("dart_sdk_internal") { +# deps = [ +# "//third_party/dart:create_sdk" +# ] - sources = [ - "$root_out_dir/dart-sdk/lib/_internal/ddc_sdk.dill", - "$root_out_dir/dart-sdk/lib/_internal/dart2js_platform.dill", - "$root_out_dir/dart-sdk/lib/_internal/dart2js_server_platform.dill", - "$root_out_dir/dart-sdk/lib/_internal/ddc_sdk.sum", - "$root_out_dir/dart-sdk/lib/_internal/strong.sum", - "$root_out_dir/dart-sdk/lib/_internal/vm_platform_strong.dill", - ] +# sources = [ +# "$root_out_dir/dart-sdk/lib/_internal/ddc_sdk.dill", +# "$root_out_dir/dart-sdk/lib/_internal/dart2js_platform.dill", +# "$root_out_dir/dart-sdk/lib/_internal/dart2js_server_platform.dill", +# "$root_out_dir/dart-sdk/lib/_internal/ddc_sdk.sum", +# "$root_out_dir/dart-sdk/lib/_internal/strong.sum", +# "$root_out_dir/dart-sdk/lib/_internal/vm_platform_strong.dill", +# ] - outputs = [ - "$root_out_dir/flutter_web_sdk/lib/_internal/{{source_file_part}}" - ] -} +# outputs = [ +# "$root_out_dir/flutter_web_sdk/lib/_internal/{{source_file_part}}" +# ] +# } From 7426305f5d7fd6d8a2d1ebddb67e1330b3728082 Mon Sep 17 00:00:00 2001 From: Dan Field Date: Thu, 7 Mar 2019 16:10:03 -0800 Subject: [PATCH 1313/1537] Mark const extern (#8077) * Mark const extern * fix build --- .cirrus.yml | 4 ++-- .../darwin/ios/framework/Headers/FlutterViewController.h | 2 +- .../darwin/ios/framework/Source/FlutterViewController.mm | 2 ++ 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/.cirrus.yml b/.cirrus.yml index d55ef85f89ad5..4ea101ac93b66 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -11,7 +11,7 @@ gke_container: task: env: CIRRUS_WORKING_DIR: "/tmp/github_repo" - + DEPOT_TOOLS_UPDATE: 0 replace_engine_script: | cd $ENGINE_PATH/src rm -r flutter @@ -88,7 +88,7 @@ format_and_dart_test_task: env: CIRRUS_WORKING_DIR: "/tmp/github_repo" - + DEPOT_TOOLS_UPDATE: 0 replace_engine_script: | cd $ENGINE_PATH/src rm -r flutter diff --git a/shell/platform/darwin/ios/framework/Headers/FlutterViewController.h b/shell/platform/darwin/ios/framework/Headers/FlutterViewController.h index 1ac7d61c5e614..5881b3c1aeff6 100644 --- a/shell/platform/darwin/ios/framework/Headers/FlutterViewController.h +++ b/shell/platform/darwin/ios/framework/Headers/FlutterViewController.h @@ -23,7 +23,7 @@ * The object passed as the sender is the `FlutterViewController` associated * with the update. */ -const NSNotificationName FlutterSemanticsUpdateNotification = @"FlutterSemanticsUpdate"; +extern NSNotificationName const FlutterSemanticsUpdateNotification; /** * A `UIViewController` implementation for Flutter views. diff --git a/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm b/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm index 2e4a265d17f0e..076e3bec3402b 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm @@ -22,6 +22,8 @@ #include "flutter/shell/platform/darwin/ios/framework/Source/platform_message_response_darwin.h" #include "flutter/shell/platform/darwin/ios/platform_view_ios.h" +NSNotificationName const FlutterSemanticsUpdateNotification = @"FlutterSemanticsUpdate"; + @implementation FlutterViewController { std::unique_ptr> _weakFactory; fml::scoped_nsobject _engine; From b5f59ed89dbcea6db7492b9e22f841cc785262b9 Mon Sep 17 00:00:00 2001 From: Chinmay Garde Date: Thu, 7 Mar 2019 16:28:22 -0800 Subject: [PATCH 1314/1537] Delay the vsync callback till the frame start time specified by embedder. (#8072) The current assumption is that the embedder will wait till the vsync event and then fire the callback. However, some embedders have that information upfront. Since the time point has already been specified by the embedder, there is no reason to burden the embedder with having to setup a wait either. --- shell/common/vsync_waiter.cc | 5 +++-- shell/platform/embedder/embedder.h | 26 ++++++++++++++++++-------- 2 files changed, 21 insertions(+), 10 deletions(-) diff --git a/shell/common/vsync_waiter.cc b/shell/common/vsync_waiter.cc index 9443fa8a55791..a117c7fff5142 100644 --- a/shell/common/vsync_waiter.cc +++ b/shell/common/vsync_waiter.cc @@ -35,7 +35,7 @@ void VsyncWaiter::FireCallback(fml::TimePoint frame_start_time, return; } - task_runners_.GetUITaskRunner()->PostTask( + task_runners_.GetUITaskRunner()->PostTaskForTime( [callback, frame_start_time, frame_target_time]() { #if defined(OS_FUCHSIA) // In general, traces on Fuchsia are recorded across the whole system. @@ -49,7 +49,8 @@ void VsyncWaiter::FireCallback(fml::TimePoint frame_start_time, TRACE_EVENT0("flutter", "VSYNC"); #endif callback(frame_start_time, frame_target_time); - }); + }, + frame_start_time); } float VsyncWaiter::GetDisplayRefreshRate() const { diff --git a/shell/platform/embedder/embedder.h b/shell/platform/embedder/embedder.h index 103da739a2147..bbb1a9161bc43 100644 --- a/shell/platform/embedder/embedder.h +++ b/shell/platform/embedder/embedder.h @@ -549,13 +549,15 @@ typedef struct { // Flutter application (such as compiled shader programs used by Skia). // This is optional. The string must be NULL terminated. const char* persistent_cache_path; - // A callback that gets invoked by the engine when it attempts to wait for - // a platform vsync event. The engine will give the platform a baton that - // needs to be returned back to the engine via |FlutterEngineOnVsync|. All - // vsync operations must occur on the thread that made the call to - // |FlutterEngineRun|. All batons must be retured to the engine before - // initializing a |FlutterEngineShutdown|. Not doing the same will result in a - // memory leak. + // A callback that gets invoked by the engine when it attempts to wait for a + // platform vsync event. The engine will give the platform a baton that needs + // to be returned back to the engine via |FlutterEngineOnVsync|. All batons + // must be retured to the engine before initializing a + // |FlutterEngineShutdown|. Not doing the same will result in a memory leak. + // While the call to |FlutterEngineOnVsync| must occur on the thread that made + // the call to |FlutterEngineRun|, the engine will make this callback on an + // internal engine-managed thread. If the components accessed on the embedder + // are not thread safe, the appropriate re-threading must be done. VsyncCallback vsync_callback; } FlutterProjectArgs; @@ -645,7 +647,15 @@ FlutterEngineResult FlutterEngineDispatchSemanticsAction( size_t data_length); // Notify the engine that a vsync event occurred. A baton passed to the -// platform via the vsync callback must be returned. +// platform via the vsync callback must be returned. This call must be made on +// the thread on which the call to |FlutterEngineRun| was made. +// +// |frame_start_time_nanos| is the point at which the vsync event occurred. +// |frame_target_time_nanos| is the point at which the embedder anticipates the +// next vsync to occur. This is a hint the engine uses to schedule Dart VM +// garbage collection in periods in which the various threads are most likely to +// be idle. For example, for a 60Hz display, embedders should add 16.6 * 1e6 to +// the frame time field. FLUTTER_EXPORT FlutterEngineResult FlutterEngineOnVsync(FlutterEngine engine, intptr_t baton, From a48cd16e077778a7aa5908e4faa4da07714260f2 Mon Sep 17 00:00:00 2001 From: Chris Bracken Date: Thu, 7 Mar 2019 16:46:44 -0800 Subject: [PATCH 1315/1537] Update a11y word forward/back enum names (#8073) This updates the FlutterSemanticsAction enumerator identifiers for the 'move cursor forward/back one word' actions (added in flutter/engine#8033) for consistency with the 'move cusor forward/back on character' identifiers. ABI compatibility is unaffected, but this with require the following change in any embedder making use of these fields: Rename: kFlutterSemanticsActionMoveCursorForwardByWordIndex to: kFlutterSemanticsActionMoveCursorForwardByWord Rename: kFlutterSemanticsActionMoveCursorBackwardByWordIndex to: kFlutterSemanticsActionMoveCursorBackwardByWord --- shell/platform/embedder/embedder.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/shell/platform/embedder/embedder.h b/shell/platform/embedder/embedder.h index bbb1a9161bc43..bfc3002a1da3d 100644 --- a/shell/platform/embedder/embedder.h +++ b/shell/platform/embedder/embedder.h @@ -98,9 +98,9 @@ typedef enum { // A request that the node should be dismissed. kFlutterSemanticsActionDismiss = 1 << 18, // Move the cursor forward by one word. - kFlutterSemanticsActionMoveCursorForwardByWordIndex = 1 << 19, + kFlutterSemanticsActionMoveCursorForwardByWord = 1 << 19, // Move the cursor backward by one word. - kFlutterSemanticsActionMoveCursorBackwardByWordIndex = 1 << 20, + kFlutterSemanticsActionMoveCursorBackwardByWord = 1 << 20, } FlutterSemanticsAction; // The set of properties that may be associated with a semantics node. From 95ef58cf484c0883c90dfce51532e20fd9cbb6fd Mon Sep 17 00:00:00 2001 From: Dan Field Date: Thu, 7 Mar 2019 16:56:46 -0800 Subject: [PATCH 1316/1537] Add script to help generate PR messages (#8074) * Add script to help generate PR messages * newline --- tools/engine_roll_pr_desc.sh | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100755 tools/engine_roll_pr_desc.sh diff --git a/tools/engine_roll_pr_desc.sh b/tools/engine_roll_pr_desc.sh new file mode 100755 index 0000000000000..6965301a327c9 --- /dev/null +++ b/tools/engine_roll_pr_desc.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +if [[ $1 == '' ]]; then + echo 'Usage: engine_roll_pr_desc.sh ..' + exit 1 +fi +git log --oneline --no-merges --no-color $1 | sed 's/^/flutter\/engine@/g' | sed -e 's/(\(#[0-9]*)\)/\(flutter\/engine\1/g' From 60314077846c123f45c5aaef911c5ea48343d569 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Fri, 8 Mar 2019 09:23:21 -0500 Subject: [PATCH 1317/1537] Roll src/third_party/skia 88b8d1124b72..3d1b941f3a7d (27 commits) (#8082) https://skia.googlesource.com/skia.git/%2Blog/88b8d1124b72..3d1b941f3a7d git log 88b8d1124b7280d379f7545eda4b9097a4d8a292..3d1b941f3a7d84d9bc83cf2ad1050bc608193c56 --date=short --no-merges --format=%ad %ae %s 2019-03-08 skia-recreate-skps@skia-swarming-bots.iam.gserviceaccount.com Update go_deps asset 2019-03-08 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader b12437300c1a..3ed33cee5e61 (1 commits) 2019-03-07 recipe-roller@chromium.org Roll recipe dependencies (trivial). 2019-03-07 skia-autoroll@skia-public.iam.gserviceaccount.com Roll ../src ca7eff86b174..7ddffe6a4a5e (485 commits) 2019-03-07 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader efec1b9fa6c7..b12437300c1a (2 commits) 2019-03-07 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader 7273a4b3863e..efec1b9fa6c7 (4 commits) 2019-03-07 brianosman@google.com Fix two SkPathRef bugs 2019-03-07 csmartdalton@google.com Restore support for multisample locations 2019-03-07 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader 71008d880f75..7273a4b3863e (1 commits) 2019-03-07 mtklein@google.com add color_depth field in DM/Gold 2019-03-07 recipe-roller@chromium.org Roll recipe dependencies (trivial). 2019-03-07 jvanverth@google.com Add Autorelease pools to clear out no longer needed Metal objects. 2019-03-07 ethannicholas@google.com added constant swizzle support for Metal 2019-03-07 ethannicholas@google.com Got RelaxedPrecision decorations working again in SPIR-V, and removed no-longer-needed old-style precision handling code. 2019-03-07 brianosman@google.com Add F16Norm support to a few more pixmap helpers 2019-03-07 brianosman@google.com Fix bit-depth selection for picture shader playback with F16Norm 2019-03-07 bungeman@google.com Add filter quality to paint overrides in viewer. 2019-03-07 recipe-roller@chromium.org Roll recipe dependencies (trivial). 2019-03-07 mtklein@google.com treat F16Norm like F16 as far as SW tranfer functions go 2019-03-07 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader ec255730a818..71008d880f75 (1 commits) 2019-03-07 fmalita@chromium.org [canvaskit] Clean up Skottie sources list 2019-03-07 mtklein@google.com add pause to SkSpinlock::contendedAcquire on Intel 2019-03-07 kjlubick@google.com [canvaskit] more testing logs 2019-03-07 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader 45faa0849352..ec255730a818 (1 commits) 2019-03-07 hcm@google.com Update Skia milestone to 75 2019-03-07 recipe-roller@chromium.org Roll recipe dependencies (trivial). 2019-03-07 reed@google.com undo old colorspace hacks related to savelayers The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (reed@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index d682b445b74a8..b193361e99bfe 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '88b8d1124b7280d379f7545eda4b9097a4d8a292', + 'skia_revision': '3d1b941f3a7d84d9bc83cf2ad1050bc608193c56', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 96a293f5e1329..f76858f6f911f 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 5499bdd90e967369cfc64f95ffd6b6d7 +Signature: 8bdb80f9946ca01423af71f6555e5c39 UNUSED LICENSES: @@ -4838,6 +4838,7 @@ FILE: ../../../third_party/skia/gm/backdrop.cpp FILE: ../../../third_party/skia/gm/compositor_quads.cpp FILE: ../../../third_party/skia/gm/mac_aa_explorer.cpp FILE: ../../../third_party/skia/gm/mixercolorfilter.cpp +FILE: ../../../third_party/skia/gm/samplelocations.cpp FILE: ../../../third_party/skia/gm/skbug_8664.cpp FILE: ../../../third_party/skia/include/gpu/GrContextThreadSafeProxy.h FILE: ../../../third_party/skia/include/private/GrContext_Base.h @@ -4865,6 +4866,8 @@ FILE: ../../../third_party/skia/src/gpu/GrImageContext.cpp FILE: ../../../third_party/skia/src/gpu/GrImageContextPriv.h FILE: ../../../third_party/skia/src/gpu/GrRecordingContext.cpp FILE: ../../../third_party/skia/src/gpu/GrRecordingContextPriv.h +FILE: ../../../third_party/skia/src/gpu/GrSamplePatternDictionary.cpp +FILE: ../../../third_party/skia/src/gpu/GrSamplePatternDictionary.h FILE: ../../../third_party/skia/src/gpu/effects/GrMixerEffect.cpp FILE: ../../../third_party/skia/src/gpu/effects/GrMixerEffect.fp FILE: ../../../third_party/skia/src/gpu/effects/GrMixerEffect.h From 260669c65e9e74a74540fce168285de2b1f46839 Mon Sep 17 00:00:00 2001 From: Core Date: Sat, 9 Mar 2019 01:47:06 +0700 Subject: [PATCH 1318/1537] Fix deleting text when the last character is some special characters on IOS (#7982) --- .../Source/FlutterTextInputPlugin.mm | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/shell/platform/darwin/ios/framework/Source/FlutterTextInputPlugin.mm b/shell/platform/darwin/ios/framework/Source/FlutterTextInputPlugin.mm index d6b8873adc6bc..dd8971f402e58 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterTextInputPlugin.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterTextInputPlugin.mm @@ -621,6 +621,27 @@ - (void)insertText:(NSString*)text { - (void)deleteBackward { _selectionAffinity = _kTextAffinityDownstream; + + // When deleting Thai vowel, _selectedTextRange has location + // but does not have length, so we have to manually set it. + // In addition, we needed to delete only a part of grapheme cluster + // because it is the expected behavior of Thai input. + // https://github.com/flutter/flutter/issues/24203 + // https://github.com/flutter/flutter/issues/21745 + // + // This is needed for correct handling of the deletion of Thai vowel input. + // TODO(cbracken): Get a good understanding of expected behaviour of Thai + // input and ensure that this is the correct solution. + // https://github.com/flutter/flutter/issues/28962 + if (_selectedTextRange.isEmpty && [self hasText]) { + NSRange oldRange = ((FlutterTextRange*)_selectedTextRange).range; + if (oldRange.location > 0) { + NSRange newRange = NSMakeRange(oldRange.location - 1, 1); + [self setSelectedTextRange:[FlutterTextRange rangeWithNSRange:newRange] + updateEditingState:false]; + } + } + if (!_selectedTextRange.isEmpty) [self replaceRange:_selectedTextRange withText:@""]; } From 7cbd9d8b474f79ca4b6ad61286d49d662d81fa6e Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Fri, 8 Mar 2019 14:38:38 -0500 Subject: [PATCH 1319/1537] Roll src/third_party/skia 3d1b941f3a7d..bea1f94f341e (7 commits) (#8083) https://skia.googlesource.com/skia.git/%2Blog/3d1b941f3a7d..bea1f94f341e git log 3d1b941f3a7d84d9bc83cf2ad1050bc608193c56..bea1f94f341e8b0466ea2bfbda3f3ba44a2fda5c --date=short --no-merges --format=%ad %ae %s 2019-03-08 mtklein@google.com remove platform_font_manager() 2019-03-08 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader 620334064f47..d2b1d2f936ee (1 commits) 2019-03-08 reed@google.com change load/store_rgba to have src and dst variants 2019-03-07 jcgregorio@google.com Get doxygen working again. 2019-03-07 ethannicholas@google.com Fixed a couple of Vulkan bugs 2019-03-08 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader 3ed33cee5e61..620334064f47 (1 commits) 2019-03-07 benjaminwagner@google.com Add CMake asset for macOS. The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (reed@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/DEPS b/DEPS index b193361e99bfe..2b0d5106bcb03 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '3d1b941f3a7d84d9bc83cf2ad1050bc608193c56', + 'skia_revision': 'bea1f94f341e8b0466ea2bfbda3f3ba44a2fda5c', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index f76858f6f911f..3892e2013e360 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 8bdb80f9946ca01423af71f6555e5c39 +Signature: 9107ca6e7b9595ef1a2eff8ea828c5c4 UNUSED LICENSES: @@ -2005,7 +2005,6 @@ TYPE: LicenseType.bsd FILE: ../../../third_party/skia/.clang-tidy FILE: ../../../third_party/skia/CQ_COMMITTERS FILE: ../../../third_party/skia/DEPS -FILE: ../../../third_party/skia/Doxyfile FILE: ../../../third_party/skia/animations/checkbox.xml FILE: ../../../third_party/skia/animations/chest#1.jpg FILE: ../../../third_party/skia/animations/fire#1.jpg @@ -2131,6 +2130,7 @@ FILE: ../../../third_party/skia/infra/bots/assets/chromebook_x86_64_gles/VERSION FILE: ../../../third_party/skia/infra/bots/assets/clang_linux/VERSION FILE: ../../../third_party/skia/infra/bots/assets/clang_win/VERSION FILE: ../../../third_party/skia/infra/bots/assets/cmake_linux/VERSION +FILE: ../../../third_party/skia/infra/bots/assets/cmake_mac/VERSION FILE: ../../../third_party/skia/infra/bots/assets/gcloud_linux/VERSION FILE: ../../../third_party/skia/infra/bots/assets/go/VERSION FILE: ../../../third_party/skia/infra/bots/assets/go_deps/VERSION From 4c94049502064a630954b5fb7a071aee92e942a8 Mon Sep 17 00:00:00 2001 From: Dan Field Date: Fri, 8 Mar 2019 12:10:53 -0800 Subject: [PATCH 1320/1537] Move android_sdk_downloader so I can more easily deprecate it (#8084) --- DEPS | 4 +- tools/android_sdk_downloader/.gitignore | 7 + tools/android_sdk_downloader/LICENSE | 27 ++ tools/android_sdk_downloader/README.md | 31 ++ .../analysis_options.yaml | 155 +++++++ tools/android_sdk_downloader/lib/main.dart | 220 +++++++++ .../lib/src/android_repository.dart | 416 ++++++++++++++++++ .../lib/src/checksums.dart | 31 ++ .../android_sdk_downloader/lib/src/http.dart | 130 ++++++ .../lib/src/options.dart | 129 ++++++ tools/android_sdk_downloader/lib/src/zip.dart | 41 ++ tools/android_sdk_downloader/pubspec.yaml | 12 + 12 files changed, 1201 insertions(+), 2 deletions(-) create mode 100644 tools/android_sdk_downloader/.gitignore create mode 100644 tools/android_sdk_downloader/LICENSE create mode 100644 tools/android_sdk_downloader/README.md create mode 100644 tools/android_sdk_downloader/analysis_options.yaml create mode 100644 tools/android_sdk_downloader/lib/main.dart create mode 100644 tools/android_sdk_downloader/lib/src/android_repository.dart create mode 100644 tools/android_sdk_downloader/lib/src/checksums.dart create mode 100644 tools/android_sdk_downloader/lib/src/http.dart create mode 100644 tools/android_sdk_downloader/lib/src/options.dart create mode 100644 tools/android_sdk_downloader/lib/src/zip.dart create mode 100644 tools/android_sdk_downloader/pubspec.yaml diff --git a/DEPS b/DEPS index 2b0d5106bcb03..47ef330849766 100644 --- a/DEPS +++ b/DEPS @@ -418,7 +418,7 @@ hooks = [ 'name': 'prepare_android_downloader', 'pattern': '.', 'condition': 'download_android_deps', - 'cwd': 'src/tools/android/android_sdk_downloader', + 'cwd': 'src/flutter/tools/android_sdk_downloader', 'action': [ '../../../third_party/dart/tools/sdks/dart-sdk/bin/pub', # this hook _must_ be run _after_ the dart hook. 'get' @@ -431,7 +431,7 @@ hooks = [ 'action': [ 'src/third_party/dart/tools/sdks/dart-sdk/bin/dart', # this hook _must_ be run _after_ the dart hook. '--enable-asserts', - 'src/tools/android/android_sdk_downloader/lib/main.dart', + 'src/flutter/tools/android_sdk_downloader/lib/main.dart', '-y', # Accept licenses '--out=src/third_party/android_tools', '--platform=28', diff --git a/tools/android_sdk_downloader/.gitignore b/tools/android_sdk_downloader/.gitignore new file mode 100644 index 0000000000000..d6a35f97f7659 --- /dev/null +++ b/tools/android_sdk_downloader/.gitignore @@ -0,0 +1,7 @@ +.DS_Store +.atom/ +.idea +.packages +.pub/ +.dart_tool/ +pubspec.lock \ No newline at end of file diff --git a/tools/android_sdk_downloader/LICENSE b/tools/android_sdk_downloader/LICENSE new file mode 100644 index 0000000000000..58ab87f9b99b9 --- /dev/null +++ b/tools/android_sdk_downloader/LICENSE @@ -0,0 +1,27 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file diff --git a/tools/android_sdk_downloader/README.md b/tools/android_sdk_downloader/README.md new file mode 100644 index 0000000000000..c705ee214278f --- /dev/null +++ b/tools/android_sdk_downloader/README.md @@ -0,0 +1,31 @@ +# Android SDK Downloader + +This program assists with downloading the Android SDK and NDK artifacts for +Flutter engine development. + +## Usage + +``` +-r, --repository-xml Specifies the location of the Android Repository XML file. + (defaults to "https://dl.google.com/android/repository/repository2-1.xml") + +-p, --platform Specifies the Android platform version, e.g. 28 + + --platform-revision Specifies the Android platform revision, e.g. 6 for 28_r06 + +-o, --out The directory to write downloaded files to. + + --os The OS type to download for. Defaults to current platform. + (defaults to current platform), accepts: [windows, macos, linux] + + --build-tools-version The build-tools version to download. Must be in format of .., e.g. 28.0.3; or ..., e.g. 28.0.0.2 + + --platform-tools-version The platform-tools version to download. Must be in format of .., e.g. 28.0.1; or ..., e.g. 28.0.0.2 + + --tools-version The tools version to download. Must be in format of .., e.g. 26.1.1; or ..., e.g. 28.1.1.2 + + --ndk-version The ndk version to download. Must be in format of .., e.g. 28.0.3; or ..., e.g. 28.0.0.2 + +-y, --[no-]accept-licenses Automatically accept Android SDK licenses. + --[no-]overwrite Skip download if the target directory exists. +``` \ No newline at end of file diff --git a/tools/android_sdk_downloader/analysis_options.yaml b/tools/android_sdk_downloader/analysis_options.yaml new file mode 100644 index 0000000000000..2023b29bda9fe --- /dev/null +++ b/tools/android_sdk_downloader/analysis_options.yaml @@ -0,0 +1,155 @@ +# Specify analysis options. +# +# Copied from https://github.com/flutter/flutter/blob/master/analysis_options.yaml + +analyzer: + strong-mode: + implicit-dynamic: false + errors: + # treat missing required parameters as a warning (not a hint) + missing_required_param: warning + # treat missing returns as a warning (not a hint) + missing_return: warning + # allow having TODOs in the code + todo: ignore + exclude: + - 'bin/cache/**' + # the following two are relative to the stocks example and the flutter package respectively + # see https://github.com/dart-lang/sdk/issues/28463 + - 'lib/i18n/stock_messages_*.dart' + - 'lib/src/http/**' + +linter: + rules: + # these rules are documented on and in the same order as + # the Dart Lint rules page to make maintenance easier + # https://github.com/dart-lang/linter/blob/master/example/all.yaml + - always_declare_return_types + - always_put_control_body_on_new_line + # - always_put_required_named_parameters_first # we prefer having parameters in the same order as fields https://github.com/flutter/flutter/issues/10219 + - always_require_non_null_named_parameters + - always_specify_types + - annotate_overrides + # - avoid_annotating_with_dynamic # conflicts with always_specify_types + - avoid_as + # - avoid_bool_literals_in_conditional_expressions # not yet tested + # - avoid_catches_without_on_clauses # we do this commonly + # - avoid_catching_errors # we do this commonly + - avoid_classes_with_only_static_members + # - avoid_double_and_int_checks # only useful when targeting JS runtime + - avoid_empty_else + - avoid_field_initializers_in_const_classes + - avoid_function_literals_in_foreach_calls + # - avoid_implementing_value_types # not yet tested + - avoid_init_to_null + # - avoid_js_rounded_ints # only useful when targeting JS runtime + - avoid_null_checks_in_equality_operators + # - avoid_positional_boolean_parameters # not yet tested + # - avoid_private_typedef_functions # we prefer having typedef (discussion in https://github.com/flutter/flutter/pull/16356) + - avoid_relative_lib_imports + - avoid_renaming_method_parameters + - avoid_return_types_on_setters + # - avoid_returning_null # there are plenty of valid reasons to return null + - avoid_returning_null_for_void + # - avoid_returning_this # there are plenty of valid reasons to return this + # - avoid_setters_without_getters # not yet tested + # - avoid_single_cascade_in_expression_statements # not yet tested + - avoid_slow_async_io + - avoid_types_as_parameter_names + # - avoid_types_on_closure_parameters # conflicts with always_specify_types + - avoid_unused_constructor_parameters + - avoid_void_async + - await_only_futures + - camel_case_types + - cancel_subscriptions + # - cascade_invocations # not yet tested + # - close_sinks # not reliable enough + # - comment_references # blocked on https://github.com/flutter/flutter/issues/20765 + # - constant_identifier_names # needs an opt-out https://github.com/dart-lang/linter/issues/204 + - control_flow_in_finally + # - curly_braces_in_flow_control_structures # not yet tested + - directives_ordering + - empty_catches + - empty_constructor_bodies + - empty_statements + # - file_names # not yet tested + - flutter_style_todos + - hash_and_equals + - implementation_imports + # - invariant_booleans # too many false positives: https://github.com/dart-lang/linter/issues/811 + - iterable_contains_unrelated_type + # - join_return_with_assignment # not yet tested + - library_names + - library_prefixes + # - lines_longer_than_80_chars # not yet tested + - list_remove_unrelated_type + # - literal_only_boolean_expressions # too many false positives: https://github.com/dart-lang/sdk/issues/34181 + - no_adjacent_strings_in_list + - no_duplicate_case_values + - non_constant_identifier_names + # - null_closures # not yet tested + # - omit_local_variable_types # opposite of always_specify_types + # - one_member_abstracts # too many false positives + # - only_throw_errors # https://github.com/flutter/flutter/issues/5792 + - overridden_fields + - package_api_docs + - package_names + - package_prefixed_library_names + # - parameter_assignments # we do this commonly + - prefer_adjacent_string_concatenation + - prefer_asserts_in_initializer_lists + - prefer_collection_literals + - prefer_conditional_assignment + - prefer_const_constructors + - prefer_const_constructors_in_immutables + - prefer_const_declarations + - prefer_const_literals_to_create_immutables + # - prefer_constructors_over_static_methods # not yet tested + - prefer_contains + - prefer_equal_for_default_values + # - prefer_expression_function_bodies # conflicts with https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo#consider-using--for-short-functions-and-methods + - prefer_final_fields + - prefer_final_locals + - prefer_foreach + # - prefer_function_declarations_over_variables # not yet tested + - prefer_generic_function_type_aliases + - prefer_initializing_formals + # - prefer_int_literals # not yet tested + # - prefer_interpolation_to_compose_strings # not yet tested + - prefer_is_empty + - prefer_is_not_empty + - prefer_iterable_whereType + # - prefer_mixin # https://github.com/dart-lang/language/issues/32 + - prefer_single_quotes + - prefer_typing_uninitialized_variables + - prefer_void_to_null + # - public_member_api_docs # enabled on a case-by-case basis; see e.g. packages/analysis_options.yaml + - recursive_getters + - slash_for_doc_comments + - sort_constructors_first + - sort_pub_dependencies + - sort_unnamed_constructors_first + - super_goes_last + - test_types_in_equals + - throw_in_finally + # - type_annotate_public_apis # subset of always_specify_types + - type_init_formals + # - unawaited_futures # too many false positives + - unnecessary_brace_in_string_interps + - unnecessary_const + - unnecessary_getters_setters + # - unnecessary_lambdas # has false positives: https://github.com/dart-lang/linter/issues/498 + - unnecessary_new + - unnecessary_null_aware_assignments + - unnecessary_null_in_if_null_operators + - unnecessary_overrides + - unnecessary_parenthesis + - unnecessary_statements + - unnecessary_this + - unrelated_type_equality_checks + - use_rethrow_when_possible + # - use_setters_to_change_properties # not yet tested + # - use_string_buffers # has false positives: https://github.com/dart-lang/sdk/issues/34182 + # - use_to_and_as_if_applicable # has false positives, so we prefer to catch this by code-review + - valid_regexps + # - void_checks # not yet tested diff --git a/tools/android_sdk_downloader/lib/main.dart b/tools/android_sdk_downloader/lib/main.dart new file mode 100644 index 0000000000000..f563889c82b29 --- /dev/null +++ b/tools/android_sdk_downloader/lib/main.dart @@ -0,0 +1,220 @@ +// 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. + +import 'dart:convert'; +import 'dart:io'; + +import 'package:args/args.dart'; +import 'package:path/path.dart' as path; + +import 'src/android_repository.dart'; +import 'src/checksums.dart'; +import 'src/http.dart'; +import 'src/options.dart'; +import 'src/zip.dart'; + +const String _kAndroidRepositoryXml = 'https://dl.google.com/android/repository/repository2-1.xml'; + + +Future main(List args) async { + final ArgParser argParser = ArgParser() + ..addOption( + 'repository-xml', + abbr: 'r', + help: 'Specifies the location of the Android Repository XML file.', + defaultsTo: _kAndroidRepositoryXml, + ) + ..addOption( + 'platform', + abbr: 'p', + help: 'Specifies the Android platform version, e.g. 28', + ) + ..addOption( + 'platform-revision', + help: 'Specifies the Android platform revision, e.g. 6 for 28_r06', + ) + ..addOption( + 'out', + abbr: 'o', + help: 'The directory to write downloaded files to.', + defaultsTo: '.', + ) + ..addOption( + 'os', + help: 'The OS type to download for. Defaults to current platform.', + defaultsTo: Platform.operatingSystem, + allowed: osTypeMap.keys, + ) + ..addOption( + 'build-tools-version', + help: 'The build-tools version to download. Must be in format of ' + '.., e.g. 28.0.3; ' + 'or ..., e.g. 28.0.0.2', + ) + ..addOption( + 'platform-tools-version', + help: 'The platform-tools version to download. Must be in format of ' + '.., e.g. 28.0.1; ' + 'or ..., e.g. 28.0.0.2', + ) + ..addOption( + 'tools-version', + help: 'The tools version to download. Must be in format of ' + '.., e.g. 26.1.1; ' + 'or ..., e.g. 28.1.1.2', + ) + ..addOption( + 'ndk-version', + help: 'The ndk version to download. Must be in format of ' + '.., e.g. 28.0.3; ' + 'or ..., e.g. 28.0.0.2', + ) + ..addFlag('accept-licenses', + abbr: 'y', + defaultsTo: false, + help: 'Automatically accept Android SDK licenses.') + ..addFlag( + 'overwrite', + defaultsTo: false, + help: 'Skip download if the target directory exists.', + ); + + final bool help = args.contains('-h') + || args.contains('--help') + || (args.isNotEmpty && args.first == 'help'); + if (help) { + print(argParser.usage); + return; + } + + final Options options = Options.parseAndValidate(args, argParser); + + final AndroidRepository androidRepository = await _getAndroidRepository(options.repositoryXmlUri); + assert(androidRepository.platforms.isNotEmpty); + assert(androidRepository.buildTools.isNotEmpty); + + if (!options.acceptLicenses) { + for (final AndroidRepositoryLicense license in androidRepository.licenses) { + print('================================================================================\n\n'); + print(license.text); + stdout.write('Do you accept? (Y/n): '); + final String result = stdin.readLineSync().trim().toLowerCase(); + if (result != '' && result.startsWith('y') == false) { + print('Ending.'); + exit(-1); + } + } + } + + await options.outDirectory.create(recursive: true); + + final Directory tempDir = await Directory(options.outDirectory.path).createTemp(); + await tempDir.create(recursive: true); + + final Directory ndkDir = Directory(path.join(options.outDirectory.path, 'ndk')); + final Directory sdkDir = Directory(path.join(options.outDirectory.path, 'sdk')); + final Directory platformDir = Directory(path.join(sdkDir.path, 'platforms', 'android-${options.platformApiLevel}')); + final Directory buildToolsDir = Directory(path.join(sdkDir.path, 'build-tools', options.buildToolsRevision.raw)); + final Directory platformToolsDir = Directory(path.join(sdkDir.path, 'platform-tools')); + final Directory toolsDir = Directory(path.join(sdkDir.path, 'tools')); + + final Map checksums = + await loadChecksums(options.outDirectory); + + print('Downloading Android SDK and NDK artifacts...'); + final List> futures = >[]; + + futures.add(downloadArchive( + androidRepository.platforms, + OptionsRevision(null, options.platformRevision), + options.repositoryBase, + tempDir, + checksumToSkip: options.overwrite ? null : checksums[platformDir.path], + ).then((ArchiveDownloadResult result) { + if (result != ArchiveDownloadResult.empty) { + return unzipFile(result.zipFileName, platformDir).then((_) { + checksums[platformDir.path] = result.checksum; + return writeChecksums(checksums, options.outDirectory); + }); + } + return null; + })); + futures.add(downloadArchive( + androidRepository.buildTools, + options.buildToolsRevision, + options.repositoryBase, + tempDir, + osType: options.osType, + checksumToSkip: options.overwrite ? null : checksums[buildToolsDir.path], + ).then((ArchiveDownloadResult result) { + if (result != ArchiveDownloadResult.empty) { + return unzipFile(result.zipFileName, buildToolsDir).then((_) { + checksums[buildToolsDir.path] = result.checksum; + return writeChecksums(checksums, options.outDirectory); + }); + } + return null; + })); + futures.add(downloadArchive( + androidRepository.platformTools, + options.platformToolsRevision, + options.repositoryBase, + tempDir, + osType: options.osType, + checksumToSkip: options.overwrite ? null : checksums[platformToolsDir.path], + ).then((ArchiveDownloadResult result) { + if (result != ArchiveDownloadResult.empty) { + return unzipFile(result.zipFileName, platformToolsDir).then((_) { + checksums[platformToolsDir.path] = result.checksum; + return writeChecksums(checksums, options.outDirectory); + }); + } + return null; + })); + futures.add(downloadArchive( + androidRepository.tools, + options.toolsRevision, + options.repositoryBase, + tempDir, + osType: options.osType, + checksumToSkip: options.overwrite ? null : checksums[toolsDir.path], + ).then((ArchiveDownloadResult result) { + if (result != ArchiveDownloadResult.empty) { + return unzipFile(result.zipFileName, toolsDir).then((_) { + checksums[toolsDir.path] = result.checksum; + return writeChecksums(checksums, options.outDirectory); + }); + } + return null; + })); + futures.add(downloadArchive( + androidRepository.ndkBundles, + options.ndkRevision, + options.repositoryBase, + tempDir, + osType: options.osType, + checksumToSkip: options.overwrite ? null : checksums[ndkDir.path], + ).then((ArchiveDownloadResult result) { + if (result != ArchiveDownloadResult.empty) { + return unzipFile(result.zipFileName, ndkDir).then((_) { + checksums[ndkDir.path] = result.checksum; + return writeChecksums(checksums, options.outDirectory); + }); + } + return null; + })); + await Future.wait(futures); + await tempDir.delete(recursive: true); +} + +Future _getAndroidRepository(Uri repositoryXmlUri) async { + final StringBuffer repoXmlBuffer = StringBuffer(); + Future _repositoryXmlHandler(HttpClientResponse response) async { + await response.transform(utf8.decoder).forEach(repoXmlBuffer.write); + } + + await httpGet(repositoryXmlUri, _repositoryXmlHandler); + + return parseAndroidRepositoryXml(repoXmlBuffer.toString()); +} diff --git a/tools/android_sdk_downloader/lib/src/android_repository.dart b/tools/android_sdk_downloader/lib/src/android_repository.dart new file mode 100644 index 0000000000000..3490d02e95c3c --- /dev/null +++ b/tools/android_sdk_downloader/lib/src/android_repository.dart @@ -0,0 +1,416 @@ +// 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. + +import 'package:xml/xml.dart' as xml show parse; +import 'package:xml/xml.dart'; + +// see https://android.googlesource.com/platform/tools/base/+/master/sdklib/src/main/java/com/android/sdklib/repository/sdk-repository-10.xsd + +const String _kXsi = 'http://www.w3.org/2001/XMLSchema-instance'; +const String _kSdk = 'http://schemas.android.com/sdk/android/repo/repository2/01'; + +void _debugCheckElement( + XmlElement element, + String name, { + String namespace, +}) { + assert(element != null); + assert(element.name.local == name, '${element.name.local} != $name'); + assert(element.name.namespaceUri == namespace, + '${element.name.namespaceUri} != $namespace'); +} + +XmlElement _firstOrDefault(Iterable list) { + if (list?.isEmpty == true) { + return null; + } + return list.first; +} + +String _getChildText( + XmlElement parent, + String childName, { + String def = '', + String namespace, +}) { + final String value = _firstOrDefault( + parent.findElements( + childName, + namespace: namespace, + ), + )?.text; + return value ?? def; +} + +OSType _parseHostType(String value) { + switch (value) { + case 'linux': + return OSType.linux; + case 'windows': + return OSType.windows; + case 'macosx': + return OSType.mac; + default: + return OSType.any; + } +} + +/// Parses a the Android SDK's https://dl.google.com/android/repository/repository2-1.xml +/// into an [AndroidRepository] object. +AndroidRepository parseAndroidRepositoryXml(String rawXml) { + final XmlDocument doc = xml.parse(rawXml); + return AndroidRepository.fromXml(doc.rootElement); +} + +XmlElement _getTypeDetails(XmlElement parent) { + final XmlElement typeDetails = + _firstOrDefault(parent.findAllElements('type-details')); + if (typeDetails == null) { + throw StateError('Missing .'); + } + return typeDetails; +} + +String _getTypeDetailsType(XmlElement typeDetails) { + return typeDetails.getAttribute('type', namespace: _kXsi); +} + +Iterable _getArchives(XmlElement parent) { + assert(parent != null); + final XmlElement archives = + _firstOrDefault(parent.findAllElements('archives')); + if (archives == null) { + return null; + } + return archives.findElements('archive'); +} + +/// Object class for https://dl.google.com/android/repository/repository2-1.xml. +class AndroidRepository { + const AndroidRepository( + this.licenses, + this.platforms, + this.buildTools, + this.platformTools, + this.tools, + this.ndkBundles, + ) : assert(licenses != null), + assert(platforms != null), + assert(buildTools != null), + assert(platformTools != null), + assert(tools != null), + assert(ndkBundles != null); + + /// Parses the `` element. + factory AndroidRepository.fromXml(XmlElement element) { + _debugCheckElement(element, 'sdk-repository', namespace: _kSdk); + final List licenses = + []; + final List platforms = + []; + final List buildTools = + []; + final List platformTools = + []; + final List tools = + []; + + final List ndkBundles = + []; + for (final XmlElement child in element.children.whereType()) { + switch (child.name.local) { + case 'license': + licenses.add(AndroidRepositoryLicense.fromXml(child)); + break; + case 'remotePackage': + final XmlElement typeDetails = _getTypeDetails(child); + switch (_getTypeDetailsType(typeDetails)) { + case 'sdk:platformDetailsType': + platforms.add( + AndroidRepositoryPlatform.fromXml(child, typeDetails), + ); + break; + case 'generic:genericDetailsType': + final String path = child.getAttribute('path'); + if (path.startsWith('build-tools;')) { + buildTools.add(AndroidRepositoryRemotePackage.fromXml(child)); + } else if (path.startsWith('platform-tools')) { + platformTools + .add(AndroidRepositoryRemotePackage.fromXml(child)); + } else if (path.startsWith('tools')) { + tools.add(AndroidRepositoryRemotePackage.fromXml(child)); + } else if (path.startsWith('ndk-bundle')) { + ndkBundles.add(AndroidRepositoryRemotePackage.fromXml(child)); + } + break; + default: + break; + } + break; + default: + break; + } + } + return AndroidRepository( + licenses, + platforms, + buildTools, + platformTools, + tools, + ndkBundles, + ); + } + + /// Licenses from the repository XML. + final List licenses; + + /// Platform information from the repository XML. + final List platforms; + + /// Build tools information from the repostiory XML. + final List buildTools; + + /// Platform tools information from the repostiory XML. + final List platformTools; + + /// Tools information from the repostiory XML. + final List tools; + + /// Tools information from the repostiory XML. + final List ndkBundles; +} + +/// Object class for the `` element in the Android repo XML. +/// +/// This node contains license information for the packages in the SDK. +class AndroidRepositoryLicense { + /// Creates a new RepositoryLicense holder. + const AndroidRepositoryLicense(this.id, this.text) + : assert(id != null), + assert(text != null); + + /// Parses a `` element. + factory AndroidRepositoryLicense.fromXml(XmlElement element) { + _debugCheckElement(element, 'license'); + return AndroidRepositoryLicense(element.getAttribute('id'), element.text); + } + + /// The identifier for this license. + final String id; + + /// The text of the license. + final String text; +} + +/// Object class for the `` nodes in the repo XML. +/// +/// These nodes contain information about where to download the zipped +/// binaries for various components of the SDK. +class AndroidRepositoryRemotePackage { + const AndroidRepositoryRemotePackage( + this.revision, + this.displayName, + this.archives, { + this.isObsolete = false, + }) : assert(revision != null), + assert(displayName != null), + assert(archives != null), + assert(isObsolete != null); + + factory AndroidRepositoryRemotePackage.fromXml(XmlElement element) { + _debugCheckElement(element, 'remotePackage'); + + return AndroidRepositoryRemotePackage( + AndroidRepositoryRevision.fromXml( + _firstOrDefault(element.findElements('revision'))), + _getChildText(element, 'display-name'), + _getArchives(element) + .map( + (XmlElement archive) => AndroidRepositoryArchive.fromXml(archive), + ) + .toList(), + isObsolete: element.getAttribute('obsolete') == 'true', + ); + } + + /// The `` element, if any. + final AndroidRepositoryRevision revision; + + /// The `` element. + final String displayName; + + /// The list of archives available for this package. + final List archives; + + /// Whether this package is marked as obsolete. + final bool isObsolete; + + @override + String toString() => '$runtimeType{revision: $revision, displayName: $displayName, archives: $archives}'; +} + +/// Object class for instances of `` elements that are for the +/// platform package. +class AndroidRepositoryPlatform extends AndroidRepositoryRemotePackage { + const AndroidRepositoryPlatform( + AndroidRepositoryRevision revision, + String displayName, + List archives, + this.apiLevel, { + bool isObsolete = false, + }) : assert(apiLevel != null), + super(revision, displayName, archives, isObsolete: isObsolete); + + /// Parses an platform from a `` element. + factory AndroidRepositoryPlatform.fromXml( + XmlElement element, + XmlElement typeDetails, + ) { + _debugCheckElement(element, 'remotePackage'); + assert(typeDetails != null); + + return AndroidRepositoryPlatform( + AndroidRepositoryRevision.fromXml( + _firstOrDefault(element.findElements('revision'))), + _getChildText(element, 'display-name'), + _getArchives(element) + .map( + (XmlElement archive) => AndroidRepositoryArchive.fromXml(archive), + ) + .toList(), + int.parse(_getChildText(typeDetails, 'api-level', def: '0')), + isObsolete: element.getAttribute('obsolete') == 'true', + ); + } + + /// The API level for this Platform. + final int apiLevel; + + @override + String toString() => '$runtimeType{revision: $revision, displayName: $displayName, archives: $archives, apiLevel: $apiLevel}'; +} + +/// The OS types supported by Android. +enum OSType { + /// Any OS is supported. + any, + + /// Suppoorts Linux only. + linux, + + /// Supports macOS only. + mac, + + /// Supports windows only. + windows, +} + +/// Object class for the `` element in the Android repo XML. +/// +/// Contains information about the size, checksum, and location of a binary +/// zip archive. Optionally contains information about what host OS is +/// supported. +class AndroidRepositoryArchive { + /// Creates a new AndroidRepositoryArchive. + const AndroidRepositoryArchive( + this.size, + this.checksum, + this.url, { + this.hostOS = OSType.any, + }) : assert(size != null), + assert(checksum != null), + assert(url != null), + assert(hostOS != null); + + /// Parses an `` element. + factory AndroidRepositoryArchive.fromXml(XmlElement element) { + _debugCheckElement(element, 'archive'); + final XmlElement complete = + _firstOrDefault(element.findElements('complete')); + if (complete == null) { + throw StateError('Found element without a node!'); + } + + return AndroidRepositoryArchive( + int.parse(_getChildText(complete, 'size', def: '0')), + _getChildText(complete, 'checksum'), + _getChildText(complete, 'url'), + hostOS: _parseHostType(_getChildText(element, 'host-os')), + ); + } + + /// The download size in bytes of the archive. + final int size; + + /// The SHA-1 checksum of the archive. + final String checksum; + + /// The absolute or relative URL of the file. + final String url; + + /// The OS type, if applicable, for this archive. + final OSType hostOS; + + @override + String toString() => '$runtimeType{size: $size, checksum: $checksum, url: $url, hostOS: $hostOS}'; +} + +/// Object class for a `` node in the Android repo XML. +/// +/// Contains information about the revision of the archive. +/// +/// In the case of the platform package, this is the revision of the platform. +/// +/// In all other cases, this basically works like semver. +class AndroidRepositoryRevision { + /// Creates a new Android repository revision object. All values are required. + const AndroidRepositoryRevision( + this.major, [ + this.minor = 0, + this.micro = 0, + this.preview = 0, + ]) : assert(major != null), + assert(minor != null), + assert(micro != null), + assert(preview != null); + + /// Parses a `` element from the Android repository XML. + factory AndroidRepositoryRevision.fromXml(XmlElement element) { + if (element == null) { + return const AndroidRepositoryRevision(0); + } + _debugCheckElement(element, 'revision'); + return AndroidRepositoryRevision( + int.tryParse(_getChildText(element, 'major', def: '0')), + int.tryParse(_getChildText(element, 'minor', def: '0')), + int.tryParse(_getChildText(element, 'micro', def: '0')), + ); + } + + /// The major revision value. + final int major; + + /// The minor revision value. + final int minor; + + /// The micro revision. + final int micro; + + /// Preview/Release candidate version. A value of 0 indicates that + /// this is not a preview. + final int preview; + + /// Whether this revision represents a preview or release. + bool get isPreview => preview > 0; + + bool matches(int major, int minor, int micro, [int preview = 0]) { + return this.major == major && + this.minor == minor && + this.micro == micro && + this.preview == preview; + } + + @override + String toString() => '$runtimeType:{$major.$minor.$micro.$preview}'; +} diff --git a/tools/android_sdk_downloader/lib/src/checksums.dart b/tools/android_sdk_downloader/lib/src/checksums.dart new file mode 100644 index 0000000000000..37e376217e9b6 --- /dev/null +++ b/tools/android_sdk_downloader/lib/src/checksums.dart @@ -0,0 +1,31 @@ +// 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. + +import 'dart:convert'; +import 'dart:io'; + +import 'package:path/path.dart' as path; + +Future> loadChecksums(Directory directory) async { + final File checksumFile = File(path.join(directory.path, 'checksums.json')); + if (!checksumFile.existsSync()) { + return {}; + } + final Map result = {}; + final Map jsonResult = + json.decode(await checksumFile.readAsString()); + for (final String key in jsonResult.keys) { + result[key] = jsonResult[key]; + } + return result; +} + +Future writeChecksums( + Map checksums, + Directory directory, +) async { + final File checksumFile = File(path.join(directory.path, 'checksums.json')); + const JsonEncoder encoder = JsonEncoder.withIndent(' '); + await checksumFile.writeAsString(encoder.convert(checksums)); +} diff --git a/tools/android_sdk_downloader/lib/src/http.dart b/tools/android_sdk_downloader/lib/src/http.dart new file mode 100644 index 0000000000000..4b2fa6cc29cd5 --- /dev/null +++ b/tools/android_sdk_downloader/lib/src/http.dart @@ -0,0 +1,130 @@ +// 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. + +import 'dart:io'; + +import 'package:path/path.dart' as path; + +import 'android_repository.dart'; +import 'options.dart'; + +typedef HttpResponseHandler = Future Function(HttpClientResponse); + +Future httpGet( + Uri url, + HttpResponseHandler handler, +) async { + assert(url != null); + assert(handler != null); + + final HttpClient httpClient = HttpClient(); + + try { + final HttpClientRequest request = await httpClient.getUrl(url); + final HttpClientResponse response = await request.close(); + await handler(response); + } finally { + httpClient.close(); + } +} + +class DownloadTracker { + DownloadTracker(this.name, this.total) : received = 0; + + final String name; + final int total; + int received; + + String get percent => '${((received / total) * 100).round()}'.padLeft(3) + '%'; + + @override + String toString() => '$name: $received/$total ($percent).'; +} + +final Map _downloadTrackers = + {}; +void _printDownloadTrackers() { + for (final DownloadTracker tracker in _downloadTrackers.values) { + stdout.write( + '${tracker.name.replaceAll('Android ', '')}: ${tracker.percent} '); + } + + if (_downloadTrackers.values + .every((DownloadTracker tracker) => tracker.received == tracker.total)) { + stdout.writeln(); + print('Downloads complete.'); + } else { + stdout.write('\r'); + } +} + +class ArchiveDownloadResult { + const ArchiveDownloadResult(this.zipFileName, this.checksum); + + static const ArchiveDownloadResult empty = ArchiveDownloadResult(null, null); + + final String zipFileName; + final String checksum; +} + +Future downloadArchive( + List packages, + OptionsRevision revision, + String repositoryBase, + Directory outDirectory, { + OSType osType, + int apiLevel, + String checksumToSkip, +}) async { + AndroidRepositoryRemotePackage package; + for (final AndroidRepositoryRemotePackage p in packages) { + if (apiLevel != null && p is AndroidRepositoryPlatform) { + if (p.apiLevel != apiLevel) { + continue; + } + } + if (p.revision.matches( + revision.major, revision.minor, revision.micro, revision.preview)) { + package = p; + break; + } + } + if (package == null) { + throw StateError('Could not find package matching arguments: ' + '$revision, $osType, $apiLevel'); + } + + final String displayName = package.displayName; + final AndroidRepositoryArchive archive = osType == null + ? package.archives.first + : package.archives.firstWhere( + (AndroidRepositoryArchive archive) => archive.hostOS == osType, + ); + + if (archive.checksum == checksumToSkip) { + print('Skipping $displayName, checksum matches current asset.'); + return ArchiveDownloadResult.empty; + } + + Uri uri = Uri.parse(archive.url); + if (!uri.isAbsolute) { + uri = Uri.parse(repositoryBase + archive.url); + } + + _downloadTrackers[displayName] = DownloadTracker(displayName, archive.size); + final String outFileName = path.join(outDirectory.path, archive.url); + final IOSink tempFileSink = File(outFileName).openWrite(); + + Future _handlePlatformZip(HttpClientResponse response) async { + await for (List data in response) { + _downloadTrackers[displayName].received += data.length; + tempFileSink.add(data); + _printDownloadTrackers(); + } + await tempFileSink.close(); + } + + await httpGet(uri, _handlePlatformZip); + return ArchiveDownloadResult(outFileName, archive.checksum); +} diff --git a/tools/android_sdk_downloader/lib/src/options.dart b/tools/android_sdk_downloader/lib/src/options.dart new file mode 100644 index 0000000000000..73e3a2f210b35 --- /dev/null +++ b/tools/android_sdk_downloader/lib/src/options.dart @@ -0,0 +1,129 @@ +// 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. + +import 'dart:io'; + +import 'package:args/args.dart'; +import 'package:meta/meta.dart'; + +import 'android_repository.dart'; + +const Map osTypeMap = { + 'windows': OSType.windows, + 'macos': OSType.mac, + 'linux': OSType.linux, +}; + +class OptionsRevision { + const OptionsRevision( + this.raw, [ + this.major = 0, + this.minor = 0, + this.micro = 0, + this.preview = 0, + ]); + + /// Accepted formats: 1.2.3 or 1.2.3.4 + factory OptionsRevision.fromRaw(String raw) { + final List rawParts = raw.split('.'); + if (rawParts == null || (rawParts.length != 3 && rawParts.length != 4)) { + throw ArgumentError('Invalid revision string $raw.'); + } + return OptionsRevision( + raw, + int.parse(rawParts[0]), + int.parse(rawParts[1]), + int.parse(rawParts[2]), + rawParts.length == 4 ? int.parse(rawParts[3]) : 0, + ); + } + + final String raw; + final int major; + final int minor; + final int micro; + final int preview; +} + +class Options { + const Options({ + @required this.platformApiLevel, + @required this.platformRevision, + @required this.repositoryXml, + @required this.repositoryXmlUri, + @required this.buildToolsRevision, + @required this.platformToolsRevision, + @required this.toolsRevision, + @required this.ndkRevision, + @required this.outDirectory, + @required this.repositoryBase, + @required this.osType, + this.acceptLicenses = false, + this.overwrite = false, + }); + + static Options parseAndValidate(List args, ArgParser argParser) { + final ArgResults argResults = argParser.parse(args); + final int platformApiLevel = int.parse(argResults['platform']); + final int platformRevision = int.parse(argResults['platform-revision']); + final Directory outDirectory = Directory(argResults['out']); + + final String rawRepositoryXmlUri = argResults['repository-xml']; + final Uri repositoryXmlUri = Uri.tryParse(rawRepositoryXmlUri); + final int lastSlash = rawRepositoryXmlUri.lastIndexOf('/'); + final String repositoryBase = + rawRepositoryXmlUri.substring(0, lastSlash + 1); + + if (repositoryXmlUri == null) { + throw ArgumentError( + 'Error: could not parse $rawRepositoryXmlUri as a valid URL.'); + } + + String getRawVersion(String argName) { + final String raw = argResults[argName]; + if (raw?.isEmpty == true) { + print('Could not parse required argument $argName.'); + print(argParser.usage); + exit(-1); + } + return raw; + } + + final String rawBuildToolsVersion = getRawVersion('build-tools-version'); + final String rawPlatformToolsVersion = + getRawVersion('platform-tools-version'); + final String rawToolsVersion = getRawVersion('tools-version'); + final String rawNdkVersion = getRawVersion('ndk-version'); + + return Options( + platformApiLevel: platformApiLevel, + platformRevision: platformRevision, + outDirectory: outDirectory, + repositoryXml: rawRepositoryXmlUri, + repositoryXmlUri: repositoryXmlUri, + repositoryBase: repositoryBase, + buildToolsRevision: OptionsRevision.fromRaw(rawBuildToolsVersion), + platformToolsRevision: OptionsRevision.fromRaw(rawPlatformToolsVersion), + toolsRevision: OptionsRevision.fromRaw(rawToolsVersion), + ndkRevision: OptionsRevision.fromRaw(rawNdkVersion), + osType: osTypeMap[argResults['os']], + acceptLicenses: argResults['accept-licenses'], + overwrite: argResults['overwrite'], + ); + } + + final int platformApiLevel; + final String repositoryXml; + final Uri repositoryXmlUri; + final int platformRevision; + final OptionsRevision buildToolsRevision; + final OptionsRevision platformToolsRevision; + final OptionsRevision toolsRevision; + final OptionsRevision ndkRevision; + final String repositoryBase; + final Directory outDirectory; + final OSType osType; + final bool acceptLicenses; + final bool overwrite; +} diff --git a/tools/android_sdk_downloader/lib/src/zip.dart b/tools/android_sdk_downloader/lib/src/zip.dart new file mode 100644 index 0000000000000..488cb9b29b512 --- /dev/null +++ b/tools/android_sdk_downloader/lib/src/zip.dart @@ -0,0 +1,41 @@ +// 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. + +import 'dart:async'; +import 'dart:io'; + +// TODO(dnfield): if/when a streaming unzip routine is available for Dart, use that instead. + +Future unzipFile(String file, Directory outDir) async { + await outDir.parent.create(recursive: true); + final Directory tempDir = await outDir.parent.createTemp(); + + String command; + List args; + if (Platform.isWindows) { + command = 'powershell.exe -nologo -noprofile -command ' + '"& { ' + 'Add-Type -A \'System.IO.Compression.FileSystem\'; ' + '[IO.Compression.ZipFile]::ExtractToDirectory(\'$file\', \'${tempDir.path}\'); ' + '}"'; + args = []; + } else { + command = 'unzip'; + args = [ + file, + '-d', + tempDir.path, + ]; + } + final ProcessResult result = await Process.run(command, args); + if (result.exitCode != 0) { + throw Exception('Failed to unzip archive!'); + } + final Directory dir = await tempDir.list().first; + if (await outDir.exists()) { + await outDir.delete(recursive: true); + } + await dir.rename(outDir.path); + await tempDir.delete(); +} diff --git a/tools/android_sdk_downloader/pubspec.yaml b/tools/android_sdk_downloader/pubspec.yaml new file mode 100644 index 0000000000000..ef1b304818da9 --- /dev/null +++ b/tools/android_sdk_downloader/pubspec.yaml @@ -0,0 +1,12 @@ +name: 'android_sdk_downloader' +publish_to: none + +environment: + # The pub client defaults to an <2.0.0 sdk constraint which we need to explicitly overwrite. + sdk: ">=2.0.0-dev.68.0 <3.0.0" + +dependencies: + args: ^1.5.1 + meta: ^1.1.6 + path: ^1.6.2 + xml: ^3.2.3 From 87edd94e9cc751a0de72c0828d41793b9f740062 Mon Sep 17 00:00:00 2001 From: liyuqian Date: Fri, 8 Mar 2019 12:15:45 -0800 Subject: [PATCH 1321/1537] Add read-only persistent cache (#8049) Some clients (e.g., embedded devices) prefer generating persistent cache files for the specific device beforehand, and ship them as readonly files in OTA packages. --- shell/common/persistent_cache.cc | 14 +++++++++++--- shell/common/persistent_cache.h | 11 ++++++++++- shell/platform/embedder/embedder.cc | 4 ++++ shell/platform/embedder/embedder.h | 4 ++++ 4 files changed, 29 insertions(+), 4 deletions(-) diff --git a/shell/common/persistent_cache.cc b/shell/common/persistent_cache.cc index bab0e7ac1beee..6e52a810e59ec 100644 --- a/shell/common/persistent_cache.cc +++ b/shell/common/persistent_cache.cc @@ -35,10 +35,13 @@ static std::string SkKeyToFilePath(const SkData& data) { return encode_result.second; } +bool PersistentCache::gIsReadOnly = false; + PersistentCache* PersistentCache::GetCacheForProcess() { static std::unique_ptr gPersistentCache; static std::once_flag once = {}; - std::call_once(once, []() { gPersistentCache.reset(new PersistentCache()); }); + std::call_once( + once, []() { gPersistentCache.reset(new PersistentCache(gIsReadOnly)); }); return gPersistentCache.get(); } @@ -46,7 +49,7 @@ void PersistentCache::SetCacheDirectoryPath(std::string path) { cache_base_path_ = path; } -PersistentCache::PersistentCache() { +PersistentCache::PersistentCache(bool read_only) : is_read_only_(read_only) { fml::UniqueFD cache_base_dir; if (cache_base_path_.length()) { cache_base_dir = fml::OpenDirectory(cache_base_path_.c_str(), false, @@ -60,7 +63,8 @@ PersistentCache::PersistentCache() { CreateDirectory(cache_base_dir, {"flutter_engine", blink::GetFlutterEngineVersion(), "skia", blink::GetSkiaVersion()}, - fml::FilePermission::kReadWrite)); + read_only ? fml::FilePermission::kRead + : fml::FilePermission::kReadWrite)); } if (!IsValid()) { FML_LOG(WARNING) << "Could not acquire the persistent cache directory. " @@ -130,6 +134,10 @@ static void PersistentCacheStore(fml::RefPtr worker, // |GrContextOptions::PersistentCache| void PersistentCache::store(const SkData& key, const SkData& data) { + if (is_read_only_) { + return; + } + if (!IsValid()) { return; } diff --git a/shell/common/persistent_cache.h b/shell/common/persistent_cache.h index cc65d6ad621c3..51662994dde70 100644 --- a/shell/common/persistent_cache.h +++ b/shell/common/persistent_cache.h @@ -19,6 +19,13 @@ namespace shell { class PersistentCache : public GrContextOptions::PersistentCache { public: + // Mutable static switch that can be set before GetCacheForProcess. If true, + // we'll only read existing caches but not generate new ones. Some clients + // (e.g., embedded devices) prefer generating persistent cache files for the + // specific device beforehand, and ship them as readonly files in OTA + // packages. + static bool gIsReadOnly; + static PersistentCache* GetCacheForProcess(); static void SetCacheDirectoryPath(std::string path); @@ -31,6 +38,8 @@ class PersistentCache : public GrContextOptions::PersistentCache { private: static std::string cache_base_path_; + + const bool is_read_only_; std::shared_ptr cache_directory_; mutable std::mutex worker_task_runners_mutex_; std::multiset> worker_task_runners_ @@ -38,7 +47,7 @@ class PersistentCache : public GrContextOptions::PersistentCache { bool IsValid() const; - PersistentCache(); + PersistentCache(bool read_only = false); // |GrContextOptions::PersistentCache| sk_sp load(const SkData& key) override; diff --git a/shell/platform/embedder/embedder.cc b/shell/platform/embedder/embedder.cc index c4d0546474411..aa397938bb957 100644 --- a/shell/platform/embedder/embedder.cc +++ b/shell/platform/embedder/embedder.cc @@ -348,6 +348,10 @@ FlutterEngineResult FlutterEngineRun(size_t version, shell::PersistentCache::SetCacheDirectoryPath(persistent_cache_path); } + if (SAFE_ACCESS(args, is_persistent_cache_read_only, false)) { + shell::PersistentCache::gIsReadOnly = true; + } + fml::CommandLine command_line; if (SAFE_ACCESS(args, command_line_argc, 0) != 0 && SAFE_ACCESS(args, command_line_argv, nullptr) != nullptr) { diff --git a/shell/platform/embedder/embedder.h b/shell/platform/embedder/embedder.h index bfc3002a1da3d..0be1fae740ad2 100644 --- a/shell/platform/embedder/embedder.h +++ b/shell/platform/embedder/embedder.h @@ -549,6 +549,10 @@ typedef struct { // Flutter application (such as compiled shader programs used by Skia). // This is optional. The string must be NULL terminated. const char* persistent_cache_path; + + // If true, we'll only read the existing cache, but not write new ones. + bool is_persistent_cache_read_only; + // A callback that gets invoked by the engine when it attempts to wait for a // platform vsync event. The engine will give the platform a baton that needs // to be returned back to the engine via |FlutterEngineOnVsync|. All batons From 1d10e0eb67fa76e4d5f5764b12468ef1c6f604c2 Mon Sep 17 00:00:00 2001 From: Michael Klimushyn Date: Fri, 8 Mar 2019 13:33:58 -0800 Subject: [PATCH 1322/1537] Guard against NewAPI failures (#8048) Adds minimum SDK checks around minimum APIs. flutter/flutter#28848 --- .../engine/android/FlutterSurfaceView.java | 2 +- .../engine/android/FlutterTextureView.java | 2 +- .../embedding/engine/android/FlutterView.java | 4 + .../plugin/platform/PlatformPlugin.java | 15 +- .../io/flutter/view/AccessibilityBridge.java | 59 ++- .../android/io/flutter/view/FlutterView.java | 14 +- .../io/flutter/view/ResourceExtractor.java | 19 +- tools/android_lint/baseline.xml | 482 +----------------- tools/android_lint/lint.xml | 11 + 9 files changed, 122 insertions(+), 486 deletions(-) create mode 100644 tools/android_lint/lint.xml diff --git a/shell/platform/android/io/flutter/embedding/engine/android/FlutterSurfaceView.java b/shell/platform/android/io/flutter/embedding/engine/android/FlutterSurfaceView.java index dc52f9e6d46f9..cbff0b4ac828c 100644 --- a/shell/platform/android/io/flutter/embedding/engine/android/FlutterSurfaceView.java +++ b/shell/platform/android/io/flutter/embedding/engine/android/FlutterSurfaceView.java @@ -134,7 +134,7 @@ public void detachFromRenderer() { if (flutterRenderer != null) { // If we're attached to an Android window then we were rendering a Flutter UI. Now that // this FlutterSurfaceView is detached from the FlutterRenderer, we need to stop rendering. - if (isAttachedToWindow()) { + if (getWindowToken() != null) { disconnectSurfaceFromRenderer(); } diff --git a/shell/platform/android/io/flutter/embedding/engine/android/FlutterTextureView.java b/shell/platform/android/io/flutter/embedding/engine/android/FlutterTextureView.java index c12c2fa4274fc..f39c6d4e77a82 100644 --- a/shell/platform/android/io/flutter/embedding/engine/android/FlutterTextureView.java +++ b/shell/platform/android/io/flutter/embedding/engine/android/FlutterTextureView.java @@ -145,7 +145,7 @@ public void detachFromRenderer() { if (flutterRenderer != null) { // If we're attached to an Android window then we were rendering a Flutter UI. Now that // this FlutterTextureView is detached from the FlutterRenderer, we need to stop rendering. - if (isAttachedToWindow()) { + if (getWindowToken() != null) { disconnectSurfaceFromRenderer(); } diff --git a/shell/platform/android/io/flutter/embedding/engine/android/FlutterView.java b/shell/platform/android/io/flutter/embedding/engine/android/FlutterView.java index c7d86cbf2e6ab..7e586670e477f 100644 --- a/shell/platform/android/io/flutter/embedding/engine/android/FlutterView.java +++ b/shell/platform/android/io/flutter/embedding/engine/android/FlutterView.java @@ -4,6 +4,7 @@ package io.flutter.embedding.engine.android; +import android.annotation.TargetApi; import android.content.Context; import android.content.res.Configuration; import android.graphics.Rect; @@ -12,6 +13,7 @@ import android.provider.Settings; import android.support.annotation.NonNull; import android.support.annotation.Nullable; +import android.support.annotation.RequiresApi; import android.text.format.DateFormat; import android.util.AttributeSet; import android.util.Log; @@ -179,6 +181,8 @@ protected void onSizeChanged(int width, int height, int oldWidth, int oldHeight) * the wider than expected padding when the status and navigation bars are hidden. */ @Override + @TargetApi(20) + @RequiresApi(20) public final WindowInsets onApplyWindowInsets(WindowInsets insets) { WindowInsets newInsets = super.onApplyWindowInsets(insets); diff --git a/shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java b/shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java index e9d44001ef0f5..e1e5f9f9cdbaa 100644 --- a/shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java +++ b/shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java @@ -132,12 +132,15 @@ private void setSystemChromeApplicationSwitcherDescription(PlatformChannel.AppSw return; } - @SuppressWarnings("deprecation") - TaskDescription taskDescription = (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) - ? new TaskDescription(description.label, 0, description.color) - : new TaskDescription(description.label, null, description.color); - - activity.setTaskDescription(taskDescription); + // Linter refuses to believe we're only executing this code in API 28 unless we use distinct if blocks and + // hardcode the API 28 constant. + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.P && Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP) { + activity.setTaskDescription(new TaskDescription(description.label)); + } + if (Build.VERSION.SDK_INT >= 28) { + TaskDescription taskDescription = new TaskDescription(description.label, 0, description.color); + activity.setTaskDescription(taskDescription); + } } private void setSystemChromeEnabledSystemUIOverlays(List overlaysToShow) { diff --git a/shell/platform/android/io/flutter/view/AccessibilityBridge.java b/shell/platform/android/io/flutter/view/AccessibilityBridge.java index ac5e2f8f3d995..add434080c054 100644 --- a/shell/platform/android/io/flutter/view/AccessibilityBridge.java +++ b/shell/platform/android/io/flutter/view/AccessibilityBridge.java @@ -4,12 +4,15 @@ package io.flutter.view; +import android.annotation.TargetApi; import android.app.Activity; import android.graphics.Rect; import android.opengl.Matrix; import android.os.Build; import android.os.Bundle; import android.support.annotation.NonNull; +import android.support.annotation.NonNull; +import android.support.annotation.RequiresApi; import android.util.Log; import android.view.View; import android.view.accessibility.AccessibilityEvent; @@ -84,10 +87,12 @@ enum Action { SHOW_ON_SCREEN(1 << 8), MOVE_CURSOR_FORWARD_BY_CHARACTER(1 << 9), MOVE_CURSOR_BACKWARD_BY_CHARACTER(1 << 10), + /** These actions are only supported on Android 4.3 and above. */ SET_SELECTION(1 << 11), COPY(1 << 12), CUT(1 << 13), PASTE(1 << 14), + /** End 4.3 only supported actions. */ DID_GAIN_ACCESSIBILITY_FOCUS(1 << 15), DID_LOSE_ACCESSIBILITY_FOCUS(1 << 16), CUSTOM_ACTION(1 << 17), @@ -233,17 +238,22 @@ public AccessibilityNodeInfo createAccessibilityNodeInfo(int virtualViewId) { } result.setMovementGranularities(granularities); } - if (object.hasAction(Action.SET_SELECTION)) { - result.addAction(AccessibilityNodeInfo.ACTION_SET_SELECTION); - } - if (object.hasAction(Action.COPY)) { - result.addAction(AccessibilityNodeInfo.ACTION_COPY); - } - if (object.hasAction(Action.CUT)) { - result.addAction(AccessibilityNodeInfo.ACTION_CUT); - } - if (object.hasAction(Action.PASTE)) { - result.addAction(AccessibilityNodeInfo.ACTION_PASTE); + + // These are non-ops on older devices. Attempting to interact with the text will cause Talkback to read the + // contents of the text box instead. + if (Build.VERSION.SDK_INT > Build.VERSION_CODES.JELLY_BEAN_MR2) { + if (object.hasAction(Action.SET_SELECTION)) { + result.addAction(AccessibilityNodeInfo.ACTION_SET_SELECTION); + } + if (object.hasAction(Action.COPY)) { + result.addAction(AccessibilityNodeInfo.ACTION_COPY); + } + if (object.hasAction(Action.CUT)) { + result.addAction(AccessibilityNodeInfo.ACTION_CUT); + } + if (object.hasAction(Action.PASTE)) { + result.addAction(AccessibilityNodeInfo.ACTION_PASTE); + } } if (object.hasFlag(Flag.IS_BUTTON)) { @@ -312,11 +322,14 @@ public AccessibilityNodeInfo createAccessibilityNodeInfo(int virtualViewId) { // We should prefer setCollectionInfo to the class names, as this way we get "In List" // and "Out of list" announcements. But we don't always know the counts, so we // can fallback to the generic scroll view class names. + // + // On older APIs, we always fall back to the generic scroll view class names here. + // // TODO(dnfield): We should add semantics properties for rows and columns in 2 dimensional lists, e.g. // GridView. Right now, we're only supporting ListViews and only if they have scroll children. if (object.hasFlag(Flag.HAS_IMPLICIT_SCROLLING)) { if (object.hasAction(Action.SCROLL_LEFT) || object.hasAction(Action.SCROLL_RIGHT)) { - if (shouldSetCollectionInfo(object)) { + if (Build.VERSION.SDK_INT > Build.VERSION_CODES.KITKAT && shouldSetCollectionInfo(object)) { result.setCollectionInfo(AccessibilityNodeInfo.CollectionInfo.obtain( 0, // rows object.scrollChildren, // columns @@ -325,7 +338,7 @@ public AccessibilityNodeInfo createAccessibilityNodeInfo(int virtualViewId) { result.setClassName("android.widget.HorizontalScrollView"); } } else { - if (shouldSetCollectionInfo(object)) { + if (Build.VERSION.SDK_INT > Build.VERSION_CODES.JELLY_BEAN_MR2 && shouldSetCollectionInfo(object)) { result.setCollectionInfo(AccessibilityNodeInfo.CollectionInfo.obtain( object.scrollChildren, // rows 0, // columns @@ -465,9 +478,21 @@ public boolean performAction(int virtualViewId, int action, Bundle arguments) { return true; } case AccessibilityNodeInfo.ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY: { + // Text selection APIs aren't available until API 18. We can't handle the case here so return false + // instead. It's extremely unlikely that this case would ever be triggered in the first place in API < + // 18. + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN_MR2) { + return false; + } return performCursorMoveAction(object, virtualViewId, arguments, false); } case AccessibilityNodeInfo.ACTION_NEXT_AT_MOVEMENT_GRANULARITY: { + // Text selection APIs aren't available until API 18. We can't handle the case here so return false + // instead. It's extremely unlikely that this case would ever be triggered in the first place in API < + // 18. + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN_MR2) { + return false; + } return performCursorMoveAction(object, virtualViewId, arguments, true); } case AccessibilityNodeInfo.ACTION_CLEAR_ACCESSIBILITY_FOCUS: { @@ -502,6 +527,12 @@ public boolean performAction(int virtualViewId, int action, Bundle arguments) { return true; } case AccessibilityNodeInfo.ACTION_SET_SELECTION: { + // Text selection APIs aren't available until API 18. We can't handle the case here so return false + // instead. It's extremely unlikely that this case would ever be triggered in the first place in API < + // 18. + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN_MR2) { + return false; + } final Map selection = new HashMap<>(); final boolean hasSelection = arguments != null && arguments.containsKey( @@ -553,6 +584,8 @@ public boolean performAction(int virtualViewId, int action, Bundle arguments) { return false; } + @RequiresApi(18) + @TargetApi(18) boolean performCursorMoveAction( SemanticsObject object, int virtualViewId, Bundle arguments, boolean forward) { final int granularity = diff --git a/shell/platform/android/io/flutter/view/FlutterView.java b/shell/platform/android/io/flutter/view/FlutterView.java index 8df25207422ba..6161a23c5f4af 100644 --- a/shell/platform/android/io/flutter/view/FlutterView.java +++ b/shell/platform/android/io/flutter/view/FlutterView.java @@ -4,6 +4,7 @@ package io.flutter.view; +import android.annotation.TargetApi; import android.app.Activity; import android.content.Context; import android.content.res.Configuration; @@ -17,6 +18,7 @@ import android.os.Handler; import android.os.LocaleList; import android.provider.Settings; +import android.support.annotation.RequiresApi; import android.text.format.DateFormat; import android.util.AttributeSet; import android.util.Log; @@ -654,6 +656,8 @@ else if (rotation == Surface.ROTATION_0 || rotation == Surface.ROTATION_180) { // be padded. When the on-screen keyboard is detected, we want to include the full inset // but when the inset is just the hidden nav bar, we want to provide a zero inset so the space // can be used. + @TargetApi(20) + @RequiresApi(20) int calculateBottomKeyboardInset(WindowInsets insets) { int screenHeight = getRootView().getHeight(); // Magic number due to this being a heuristic. This should be replaced, but we have not @@ -672,6 +676,8 @@ int calculateBottomKeyboardInset(WindowInsets insets) { // This callback is not present in API < 20, which means lower API devices will see // the wider than expected padding when the status and navigation bars are hidden. @Override + @TargetApi(20) + @RequiresApi(20) public final WindowInsets onApplyWindowInsets(WindowInsets insets) { boolean statusBarHidden = (SYSTEM_UI_FLAG_FULLSCREEN & getWindowSystemUiVisibility()) != 0; @@ -963,8 +969,9 @@ public void onChange(boolean selfChange) { @Override public void onChange(boolean selfChange, Uri uri) { - String value = Settings.Global.getString(getContext().getContentResolver(), - Settings.Global.TRANSITION_ANIMATION_SCALE); + String value = Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN_MR1 ? null + : Settings.Global.getString(getContext().getContentResolver(), + Settings.Global.TRANSITION_ANIMATION_SCALE); if (value != null && value.equals("0")) { mAccessibilityFeatureFlags |= AccessibilityFeature.DISABLE_ANIMATIONS.value; } else { @@ -974,6 +981,9 @@ public void onChange(boolean selfChange, Uri uri) { } } + // This is guarded at instantiation time. + @TargetApi(19) + @RequiresApi(19) class TouchExplorationListener implements AccessibilityManager.TouchExplorationStateChangeListener { @Override public void onTouchExplorationStateChanged(boolean enabled) { diff --git a/shell/platform/android/io/flutter/view/ResourceExtractor.java b/shell/platform/android/io/flutter/view/ResourceExtractor.java index 40fc75982a972..ecbd026c9db09 100644 --- a/shell/platform/android/io/flutter/view/ResourceExtractor.java +++ b/shell/platform/android/io/flutter/view/ResourceExtractor.java @@ -4,6 +4,8 @@ package io.flutter.view; +import static java.util.Arrays.asList; + import android.content.Context; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; @@ -16,6 +18,7 @@ import org.json.JSONObject; import java.io.*; +import java.util.ArrayList; import java.util.Collection; import java.util.HashSet; import java.util.concurrent.CancellationException; @@ -30,10 +33,12 @@ class ResourceExtractor { private static final String TAG = "ResourceExtractor"; private static final String TIMESTAMP_PREFIX = "res_timestamp-"; + private static final String[] SUPPORTED_ABIS = getSupportedAbis(); @SuppressWarnings("deprecation") static long getVersionCode(PackageInfo packageInfo) { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { + // Linter needs P (28) hardcoded or else it will fail these lines. + if (Build.VERSION.SDK_INT >= 28) { return packageInfo.getLongVersionCode(); } else { return packageInfo.versionCode; @@ -244,7 +249,7 @@ private boolean extractUpdate(File dataDir) { ZipEntry entry = null; if (asset.endsWith(".so")) { // Replicate library lookup logic. - for (String abi : Build.SUPPORTED_ABIS) { + for (String abi : SUPPORTED_ABIS) { resource = "lib/" + abi + "/" + asset; entry = zipFile.getEntry(resource); if (entry == null) { @@ -403,4 +408,14 @@ private String getAPKPath() { return null; } } + + private static String[] getSupportedAbis() { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP && Build.SUPPORTED_ABIS.length > 0) { + return Build.SUPPORTED_ABIS; + } else { + ArrayList cpuAbis = new ArrayList(asList(Build.CPU_ABI, Build.CPU_ABI2)); + cpuAbis.removeAll(asList(null, "")); + return cpuAbis.toArray(new String[0]); + } + } } diff --git a/tools/android_lint/baseline.xml b/tools/android_lint/baseline.xml index 2a81ee20380c5..93bc535f5737d 100644 --- a/tools/android_lint/baseline.xml +++ b/tools/android_lint/baseline.xml @@ -8,7 +8,7 @@ errorLine2=" ~~~~~~"> @@ -19,7 +19,7 @@ errorLine2=" ~~~~~~"> @@ -30,7 +30,7 @@ errorLine2=" ~~~~~~"> @@ -41,7 +41,7 @@ errorLine2=" ~~~~~~"> @@ -52,7 +52,7 @@ errorLine2=" ~~~~~~"> @@ -63,7 +63,7 @@ errorLine2=" ~~~~~~"> @@ -74,7 +74,7 @@ errorLine2=" ~~~~~~"> @@ -85,7 +85,7 @@ errorLine2=" ~~~~~~"> @@ -96,7 +96,7 @@ errorLine2=" ~~~~~~"> @@ -107,7 +107,7 @@ errorLine2=" ~~~~~~"> @@ -118,7 +118,7 @@ errorLine2=" ~~~~~~"> @@ -129,7 +129,7 @@ errorLine2=" ~~~~~~"> @@ -155,116 +155,6 @@ column="9"/> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -342,336 +232,6 @@ column="71"/> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -767,7 +327,7 @@ errorLine2=" ^"> @@ -800,7 +360,7 @@ errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> @@ -811,7 +371,7 @@ errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> @@ -877,7 +437,7 @@ errorLine2=" ~~~~~~~~~~~~~~~"> @@ -888,7 +448,7 @@ errorLine2=" ~~~~~~~~~~~~~~~"> @@ -921,7 +481,7 @@ errorLine2=" ~~~~~~~~~~~~"> @@ -932,7 +492,7 @@ errorLine2=" ~~~~~~~~~~~~"> diff --git a/tools/android_lint/lint.xml b/tools/android_lint/lint.xml new file mode 100644 index 0000000000000..241207161d5d6 --- /dev/null +++ b/tools/android_lint/lint.xml @@ -0,0 +1,11 @@ + + + + + + + \ No newline at end of file From 3c8ef04e910675eab5530c5ac4a3bcb1be84f6db Mon Sep 17 00:00:00 2001 From: Chinmay Garde Date: Fri, 8 Mar 2019 16:30:48 -0800 Subject: [PATCH 1323/1537] Allow embedders to post tasks onto the render thread. (#8089) Some embedders may have to wait on fences asynchronously before committing contents. This allows them to post a task onto the engine managed thread used for rendering. --- shell/platform/embedder/embedder.cc | 15 +++++++++++++++ shell/platform/embedder/embedder.h | 8 ++++++++ shell/platform/embedder/embedder_engine.cc | 9 +++++++++ shell/platform/embedder/embedder_engine.h | 2 ++ 4 files changed, 34 insertions(+) diff --git a/shell/platform/embedder/embedder.cc b/shell/platform/embedder/embedder.cc index aa397938bb957..8e56920a32868 100644 --- a/shell/platform/embedder/embedder.cc +++ b/shell/platform/embedder/embedder.cc @@ -902,3 +902,18 @@ void FlutterEngineTraceEventDurationEnd(const char* name) { void FlutterEngineTraceEventInstant(const char* name) { fml::tracing::TraceEventInstant0("flutter", name); } + +FlutterEngineResult FlutterEnginePostRenderThreadTask(FlutterEngine engine, + VoidCallback callback, + void* baton) { + if (engine == nullptr || callback == nullptr) { + return kInvalidArguments; + } + + auto task = [callback, baton]() { callback(baton); }; + + return reinterpret_cast(engine)->PostRenderThreadTask( + task) + ? kSuccess + : kInternalInconsistency; +} diff --git a/shell/platform/embedder/embedder.h b/shell/platform/embedder/embedder.h index 0be1fae740ad2..bf2343ec6e728 100644 --- a/shell/platform/embedder/embedder.h +++ b/shell/platform/embedder/embedder.h @@ -688,6 +688,14 @@ void FlutterEngineTraceEventDurationEnd(const char* name); FLUTTER_EXPORT void FlutterEngineTraceEventInstant(const char* name); +// Posts a task onto the Flutter render thread. Typically, this may be called +// from any thread as long as a |FlutterEngineShutdown| on the specific engine +// has not already been initiated. +FLUTTER_EXPORT +FlutterEngineResult FlutterEnginePostRenderThreadTask(FlutterEngine engine, + VoidCallback callback, + void* callback_data); + #if defined(__cplusplus) } // extern "C" #endif diff --git a/shell/platform/embedder/embedder_engine.cc b/shell/platform/embedder/embedder_engine.cc index 559840bb8d5f0..63083bcef1b4d 100644 --- a/shell/platform/embedder/embedder_engine.cc +++ b/shell/platform/embedder/embedder_engine.cc @@ -203,4 +203,13 @@ bool EmbedderEngine::OnVsyncEvent(intptr_t baton, frame_target_time); } +bool EmbedderEngine::PostRenderThreadTask(fml::closure task) { + if (!IsValid()) { + return false; + } + + shell_->GetTaskRunners().GetGPUTaskRunner()->PostTask(task); + return true; +} + } // namespace shell diff --git a/shell/platform/embedder/embedder_engine.h b/shell/platform/embedder/embedder_engine.h index 9975eea25d5a1..52b528e3a2ec3 100644 --- a/shell/platform/embedder/embedder_engine.h +++ b/shell/platform/embedder/embedder_engine.h @@ -63,6 +63,8 @@ class EmbedderEngine { fml::TimePoint frame_start_time, fml::TimePoint frame_target_time); + bool PostRenderThreadTask(fml::closure task); + private: const ThreadHost thread_host_; std::unique_ptr shell_; From c48774cfe09b7f286defb9e457a74c7e7028e11c Mon Sep 17 00:00:00 2001 From: Siva Date: Fri, 8 Mar 2019 16:31:23 -0800 Subject: [PATCH 1324/1537] Roll src/third_party/dart 571ea80e11..2fb6cd9f5f (122 commits) (#8086) 2fb6cd9f5f [vm] Fix Service::RequestAssets 585eb7f507 [ VM / Service ] Added `disableBreakpoints` parameter to `evaluate`, `evaluateInFrame` and `invoke` RPCs 9b0ac9ee03 Extract diagnostic tests in preparation for supporting ui-as-code features 93d42679f0 [vm, arm64, fuchsia] Check for stack overflow / interrupts based on DSP instead of CSP. 05be278603 Split MISSING_RETURN tests 1dd4559271 [vm] Add Native->VM transitions when dereferencing API handles. 34953ffd7d Cleanup some NNBD flags a47ffd2b50 Fix some errors in the control flow collections tests e1dfad1f2c Attempt 4 at the upload abi dills script 4b609422e9 Make AVAILABLE_SUGGESTION_SETS and related APIs non-experimental. 8332fb0631 [vm] Adds an API call to dump the CPU profile to the timeline ccf756dae5 Integration testing to ensure server lint name representations are correct. 34e1c93906 add prefer_null_aware_operators error code association 5c7b07f783 [dart/vm] Fix bug in kernel binary flow graph builder 07b2f82203 [fuchsia] Remove unused header a6a5a2b635 [dart/fuzzer] Added more Dart constructs 48ac0bdd72 Revert "Attempt 3 at the upload abi dill script" bc02b6ce7d Split DEAD_CODE tests into their own file 6c1a05a388 update non-nullable flag in ErrorVerifier for angular plugin da831bda20 fix lint name for unnecessary_overrides f2a8e71ff9 [vm] Decouple flow graph building of implicit closure functions from kernel reading f44fecbe39 Fix the way type arguments for iterable and map are accessed 94a382bfb8 Attempt 3 at the upload abi dill script 924a934fe1 Shrink the stack headroom if the stack is very small e5a833b06b Comment out test that unexpectedly passes on Windows. 72548cde13 Revert "[vm, gc] The mutator's TLAB and the interpreter's lookup cache must be visited even if the mutator is unscheduled." bdb07f4a1f [vm/ffi] Fix garbage collection of ffi.Pointer subtypes. cab4a7b48d fix lint name for unnecessary_brace_in_string_interps 00aeae4ca8 add fix for no_duplicate_case_values 593405afda add fix for use_rethrow 1551d9c660 Include correct stack during error with Stream.join 309140693c Revise non-nullable flag from AstBuilder to ErrorVerifier 2d3b1055d3 [vm/ffi] remove RuntimeError/Fail expectation from status files b4e9e46f81 [Gardening] Add tools/diff_results.dart which can query the test results database and report a diff in test results from two commits f1cc9c7cf1 [cfe] Classes for if, for and for-in elements. e3f0ca80e5 [cfe] Compile null-aware spreads in non-const lists and sets e8fa9a019b [ddc] Fix a front end test failure b71f6afd2c [vm/ffi] enable function stress test on macos 4ec72c1eb1 [VM-Runtime]Fix source report coverage to not include field without function initializer 253499fe68 [vm, gc] The mutator's TLAB and the interpreter's lookup cache must be visited even if the mutator is unscheduled. 980e5c7b57 [vm] Mark VM isolate objects at heap finalization instead of allocation. e48ad45fbd [vm, interpreter] Enable field guards. a7d790bbbe Fix cast exception in resolution 2f53b7913c [dartdevc] Including the current library for members from within an InstanceConstant 0124541d5f Deprecate AST data structures that will be obseleted by the "UI as code" feature 1751135fc3 [infra] Increase number of shards on app-* builders 6988347b53 [fuchsia] Migrate to lib/sys/cpp 995b1c9adc FE Server shouldn't try to invalidate other file schemes 975cc65c17 [vm, interpreter] Implement interpreter stubs for IA32. 85dec3423c add fix for unnecessary_new lint 17bf9d13b1 Delay disambiguating maps and sets until we know whether there are any conflicts 079309fcd6 Create curly braces when resynthesizing map and set literals 68c9909ef8 Re-apply workaround for bug fixed by closures containing type promotions in variables with inferred types. 68946df573 [vm] Also print version information in assertion failures, not just faults. 0c231060f4 Revert "Another attempt to fix the upload script." d1e60e0f3d Remove @failingTest from a test that stopped failing. 825d03c585 [vm] Remove malloc_hooks support for jemalloc 8bb8d11859 Prepare to publish analyzer_plugin version 0.0.1-alpha.7 0e578056e9 Another attempt to fix the upload script. 90b61e2fde Start implementing linker and resynthesizing. a1226b1490 Write and read almost all nodes. ba5644b76c Fix handling of closures containing type promotions in variables with inferred types. 7a98559781 [vm/ffi] make Pointer.toString() uniform on all operating systems 12fcb9136c [cfe] Make resolveInputUri available for pkg/vm 5441ff672b add fix for unnecessary_const lints 9645b19060 [infra] Link to the documentation in the new workflow tools. 150c58c13f [infra] Shard app-kernel tests that were causing timeouts 105912339c [cfe] Inherit SpreadElement from Expression, not ExpressionJudgment a85e481d3d [vm/gardening] Fix status file for entrypoints_verification_test. fa0d99156f Remove task model initialization 3712235e0e Remove the task graph and the tool that produces it 99d028be77 [infra] Make promote.py work with newer versions of gsutil 9d9f599ca9 [cfe] Compile spread in sets b5a1f6c36b Reland "[CFE] Move constant evaluation number semantics handling to front end." ea6e83004b Use @pragma instead of package:meta/dart2js in tests 2448445826 Make IfStatementImpl use IfMixin. 7ba8995917 Download ABI dills during gclient sync dc1f2bd087 [vm] Avoid assertion for non-finalized type parameter of expression evaluation function ef969c8c7e Revert "Update the build bot name restriction in upload_abi_dills.sh" 57f16820cd Add tests for "await" inside spread, if, and for. cbc404b6de [VM] Cleanup status files some more dc02d859f4 Ensure all SetConstantValues are JavaScriptSetConstants. f112b672e7 Use ListLiteral.elements2 instead of ListLiteral.elements. 4a7f9d7c11 Remove FindNode.setLiteral method. 2922878ce9 [vm, compiler] Fix GuardFieldTypeInstr to update the original field. 4eedef85a3 Update the build bot name restriction in upload_abi_dills.sh 60de5b4983 [vm] Avoid quadratic growth in (Malloc)TextBuffer and ZoneTextBuffer. c921716a30 Add upload_abi_dills.sh to dart-sdk-linux in test_matrix.json 47b417c88e Remove FindNode methods related to AST data structures that will be removed. c793038137 Identify flutter_web in Flutter. 1da7c0d472 [cfe] Fix type checks in spreads within lists and sets 09a1cf67e6 [cfe] Don't replace spreads with invalid expressions after inference 51a334caa7 [vm] Remove kernel reading from BuildArgumentTypeChecks 927e758e96 Stop using package:html in analyzer. 53438199a4 Tweak version numbers in LSP readme 58a0487125 more tests for 34610 and 36009 2071d1284d [vm/ffi] Fix crash on toString for dart:ffi trampoline functions aacd8c7711 de-dup machine format errors cc455ecc1d Add use_abi_version flag, and plumb ABI version to version.h 96e982f054 Improve await-outside-async error recovery e033b676dd fix parser crash in unterminated string literal inside unterminated interpolation ed8357cf83 Re-land "[vm/ffi] Stress tests for FFI functions."" 6227ab0b97 Replace @ForceInline with @pragma in dart:html 204651f3ab Replace package:expect annotations with @pragma 45e6f83cd6 gitignore visual studio project files ca24e7aa10 [vm] Allow no main method when doing type flow analysis c769743f67 [CFE] Transform constants in annotations on all parameters. 718b36ed73 [cfe] Use for-in instead of List.addAll for list spread 99093c0610 [fasta] Required but not inferred constant context. 822ebdd1e0 [fasta] Wrap non-const variable accesses inside const expressions. 013cf68624 Replace js_helper annotations with @pragma 1a88421d39 Allow to change .package uri in incremental compiler 2695cdfbb1 Change incremental compiler to take entry points (plural) 3124125008 Move Flutter utility methods into a class, which can be instantiated either with regular package:flutter, or with package_flutter_web. 5a8bdc7f34 [dartdevc] fix #36052, missing key in map should result in null 643895befc Fix two failing tests on the bots (TBR) 24d28e8f48 Write SetOrMapLiteral instead of MapLiteral or SetLiteral. c86a9ece5f First cut at upward inference for the ui-as-code features 2329fccdb9 Use visitForStatement2() and read as ForStatement2 and its parts. a7a4c95df7 Summarize SetOrMapLiteral 1abcbe1318 Eliminate uses of old AST node types from parts of the analyzer 1c27b817fc New protocol to inspect analysis server state at code completion time --- DEPS | 2 +- ci/licenses_golden/licenses_third_party | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/DEPS b/DEPS index 47ef330849766..cfe925bba5579 100644 --- a/DEPS +++ b/DEPS @@ -31,7 +31,7 @@ vars = { # Dart is: https://github.com/dart-lang/sdk/blob/master/DEPS. # You can use //tools/dart/create_updated_flutter_deps.py to produce # updated revision list of existing dependencies. - 'dart_revision': '571ea80e1101e706980ea8aefa7fc18a0c8ba2ec', + 'dart_revision': '2fb6cd9f5ff78fb347795f383a748a1e37d23275', # WARNING: DO NOT EDIT MANUALLY # The lines between blank lines above and below are generated by a script. See create_updated_flutter_deps.py diff --git a/ci/licenses_golden/licenses_third_party b/ci/licenses_golden/licenses_third_party index 1e1b8c898d1c0..80fa218d1863e 100644 --- a/ci/licenses_golden/licenses_third_party +++ b/ci/licenses_golden/licenses_third_party @@ -1,4 +1,4 @@ -Signature: 4a8dfa2afe659f0a6057032c092f7496 +Signature: aeb3ef2d086ef58fb819d6902a51acb5 UNUSED LICENSES: @@ -5230,7 +5230,6 @@ FILE: ../../../third_party/dart/runtime/vm/malloc_hooks.h FILE: ../../../third_party/dart/runtime/vm/malloc_hooks_arm.cc FILE: ../../../third_party/dart/runtime/vm/malloc_hooks_arm64.cc FILE: ../../../third_party/dart/runtime/vm/malloc_hooks_ia32.cc -FILE: ../../../third_party/dart/runtime/vm/malloc_hooks_jemalloc.cc FILE: ../../../third_party/dart/runtime/vm/malloc_hooks_tcmalloc.cc FILE: ../../../third_party/dart/runtime/vm/malloc_hooks_test.cc FILE: ../../../third_party/dart/runtime/vm/malloc_hooks_unsupported.cc From edfc0cfaaf6d812ab3d28f6ad912601b6abe53ec Mon Sep 17 00:00:00 2001 From: Matt Carroll Date: Fri, 8 Mar 2019 18:08:26 -0800 Subject: [PATCH 1325/1537] Android Embedding PR 16: Add touch support to FlutterView. (#8034) --- .../engine/android/AndroidTouchProcessor.java | 146 ++++++++++++------ .../embedding/engine/android/FlutterView.java | 6 +- 2 files changed, 104 insertions(+), 48 deletions(-) diff --git a/shell/platform/android/io/flutter/embedding/engine/android/AndroidTouchProcessor.java b/shell/platform/android/io/flutter/embedding/engine/android/AndroidTouchProcessor.java index 9bf0848d68661..94c4f7525c51b 100644 --- a/shell/platform/android/io/flutter/embedding/engine/android/AndroidTouchProcessor.java +++ b/shell/platform/android/io/flutter/embedding/engine/android/AndroidTouchProcessor.java @@ -1,6 +1,8 @@ package io.flutter.embedding.engine.android; +import android.support.annotation.IntDef; import android.support.annotation.NonNull; +import android.view.InputDevice; import android.view.MotionEvent; import java.nio.ByteBuffer; @@ -15,26 +17,47 @@ public class AndroidTouchProcessor { // Must match the PointerChange enum in pointer.dart. - // TODO(mattcarroll): convert these to an IntDef - private static final int POINTER_CHANGE_CANCEL = 0; - private static final int POINTER_CHANGE_ADD = 1; - private static final int POINTER_CHANGE_REMOVE = 2; - private static final int POINTER_CHANGE_HOVER = 3; - private static final int POINTER_CHANGE_DOWN = 4; - private static final int POINTER_CHANGE_MOVE = 5; - private static final int POINTER_CHANGE_UP = 6; + @IntDef({ + PointerChange.CANCEL, + PointerChange.ADD, + PointerChange.REMOVE, + PointerChange.HOVER, + PointerChange.DOWN, + PointerChange.MOVE, + PointerChange.UP + }) + private @interface PointerChange { + int CANCEL = 0; + int ADD = 1; + int REMOVE = 2; + int HOVER = 3; + int DOWN = 4; + int MOVE = 5; + int UP = 6; + } + // Must match the PointerDeviceKind enum in pointer.dart. - // TODO(mattcarroll): convert these to an IntDef - private static final int POINTER_DEVICE_KIND_TOUCH = 0; - private static final int POINTER_DEVICE_KIND_MOUSE = 1; - private static final int POINTER_DEVICE_KIND_STYLUS = 2; - private static final int POINTER_DEVICE_KIND_INVERTED_STYLUS = 3; - private static final int POINTER_DEVICE_KIND_UNKNOWN = 4; + @IntDef({ + PointerDeviceKind.TOUCH, + PointerDeviceKind.MOUSE, + PointerDeviceKind.STYLUS, + PointerDeviceKind.INVERTED_STYLUS, + PointerDeviceKind.UNKNOWN + }) + private @interface PointerDeviceKind { + int TOUCH = 0; + int MOUSE = 1; + int STYLUS = 2; + int INVERTED_STYLUS = 3; + int UNKNOWN = 4; + } // Must match the unpacking code in hooks.dart. - private static final int POINTER_DATA_FIELD_COUNT = 19; - private static final int BYTE_PER_FIELD = 8; + // TODO(mattcarroll): Update with additional fields for scroll wheel support + private static final int POINTER_DATA_FIELD_COUNT = 21; + private static final int BYTES_PER_FIELD = 8; + private static final int POINTER_DATA_FLAG_BATCHED = 1; @NonNull private final FlutterRenderer renderer; @@ -57,27 +80,41 @@ public boolean onTouchEvent(MotionEvent event) { // Prepare a data packet of the appropriate size and order. ByteBuffer packet = ByteBuffer.allocateDirect( - pointerCount * POINTER_DATA_FIELD_COUNT * BYTE_PER_FIELD + pointerCount * POINTER_DATA_FIELD_COUNT * BYTES_PER_FIELD ); packet.order(ByteOrder.LITTLE_ENDIAN); int maskedAction = event.getActionMasked(); - // ACTION_UP, ACTION_POINTER_UP, ACTION_DOWN, and ACTION_POINTER_DOWN - // only apply to a single pointer, other events apply to all pointers. - if (maskedAction == MotionEvent.ACTION_UP || maskedAction == MotionEvent.ACTION_POINTER_UP - || maskedAction == MotionEvent.ACTION_DOWN || maskedAction == MotionEvent.ACTION_POINTER_DOWN) { - addPointerForIndex(event, event.getActionIndex(), packet); + int pointerChange = getPointerChangeForAction(event.getActionMasked()); + boolean updateForSinglePointer = maskedAction == MotionEvent.ACTION_DOWN || maskedAction == MotionEvent.ACTION_POINTER_DOWN; + boolean updateForMultiplePointers = !updateForSinglePointer && (maskedAction == MotionEvent.ACTION_UP || maskedAction == MotionEvent.ACTION_POINTER_UP); + if (updateForSinglePointer) { + // ACTION_DOWN and ACTION_POINTER_DOWN always apply to a single pointer only. + addPointerForIndex(event, event.getActionIndex(), pointerChange, 0, packet); + } else if (updateForMultiplePointers) { + // ACTION_UP and ACTION_POINTER_UP may contain position updates for other pointers. + // We are converting these updates to move events here in order to preserve this data. + // We also mark these events with a flag in order to help the framework reassemble + // the original Android event later, should it need to forward it to a PlatformView. + for (int p = 0; p < pointerCount; p++) { + if (p != event.getActionIndex() && event.getToolType(p) == MotionEvent.TOOL_TYPE_FINGER) { + addPointerForIndex(event, p, PointerChange.MOVE, POINTER_DATA_FLAG_BATCHED, packet); + } + } + // It's important that we're sending the UP event last. This allows PlatformView + // to correctly batch everything back into the original Android event if needed. + addPointerForIndex(event, event.getActionIndex(), pointerChange, 0, packet); } else { // ACTION_MOVE may not actually mean all pointers have moved // but it's the responsibility of a later part of the system to // ignore 0-deltas if desired. for (int p = 0; p < pointerCount; p++) { - addPointerForIndex(event, p, packet); + addPointerForIndex(event, p, pointerChange, 0, packet); } } // Verify that the packet is the expected size. - assert packet.position() % (POINTER_DATA_FIELD_COUNT * BYTE_PER_FIELD) == 0; + assert packet.position() % (POINTER_DATA_FIELD_COUNT * BYTES_PER_FIELD) == 0; // Send the packet to Flutter. renderer.dispatchPointerDataPacket(packet, packet.position()); @@ -86,8 +123,13 @@ public boolean onTouchEvent(MotionEvent event) { } // TODO(mattcarroll): consider creating a PointerPacket class instead of using a procedure that mutates inputs. - private void addPointerForIndex(MotionEvent event, int pointerIndex, ByteBuffer packet) { - int pointerChange = getPointerChangeForAction(event.getActionMasked()); + private void addPointerForIndex( + MotionEvent event, + int pointerIndex, + int pointerChange, + int pointerData, + ByteBuffer packet + ) { if (pointerChange == -1) { return; } @@ -103,9 +145,9 @@ private void addPointerForIndex(MotionEvent event, int pointerIndex, ByteBuffer packet.putDouble(event.getX(pointerIndex)); // physical_x packet.putDouble(event.getY(pointerIndex)); // physical_y - if (pointerKind == POINTER_DEVICE_KIND_MOUSE) { + if (pointerKind == PointerDeviceKind.MOUSE) { packet.putLong(event.getButtonState() & 0x1F); // buttons - } else if (pointerKind == POINTER_DEVICE_KIND_STYLUS) { + } else if (pointerKind == PointerDeviceKind.STYLUS) { packet.putLong((event.getButtonState() >> 4) & 0xF); // buttons } else { packet.putLong(0); // buttons @@ -113,13 +155,20 @@ private void addPointerForIndex(MotionEvent event, int pointerIndex, ByteBuffer packet.putLong(0); // obscured - // TODO(eseidel): Could get the calibrated range if necessary: - // event.getDevice().getMotionRange(MotionEvent.AXIS_PRESSURE) packet.putDouble(event.getPressure(pointerIndex)); // pressure - packet.putDouble(0.0); // pressure_min - packet.putDouble(1.0); // pressure_max + double pressureMin = 0.0; + double pressureMax = 1.0; + if (event.getDevice() != null) { + InputDevice.MotionRange pressureRange = event.getDevice().getMotionRange(MotionEvent.AXIS_PRESSURE); + if (pressureRange != null) { + pressureMin = pressureRange.getMin(); + pressureMax = pressureRange.getMax(); + } + } + packet.putDouble(pressureMin); // pressure_min + packet.putDouble(pressureMax); // pressure_max - if (pointerKind == POINTER_DEVICE_KIND_STYLUS) { + if (pointerKind == PointerDeviceKind.STYLUS) { packet.putDouble(event.getAxisValue(MotionEvent.AXIS_DISTANCE, pointerIndex)); // distance packet.putDouble(0.0); // distance_max } else { @@ -127,6 +176,8 @@ private void addPointerForIndex(MotionEvent event, int pointerIndex, ByteBuffer packet.putDouble(0.0); // distance_max } + packet.putDouble(event.getSize(pointerIndex)); // size + packet.putDouble(event.getToolMajor(pointerIndex)); // radius_major packet.putDouble(event.getToolMinor(pointerIndex)); // radius_minor @@ -135,52 +186,55 @@ private void addPointerForIndex(MotionEvent event, int pointerIndex, ByteBuffer packet.putDouble(event.getAxisValue(MotionEvent.AXIS_ORIENTATION, pointerIndex)); // orientation - if (pointerKind == POINTER_DEVICE_KIND_STYLUS) { + if (pointerKind == PointerDeviceKind.STYLUS) { packet.putDouble(event.getAxisValue(MotionEvent.AXIS_TILT, pointerIndex)); // tilt } else { packet.putDouble(0.0); // tilt } + + packet.putLong(pointerData); } + @PointerChange private int getPointerChangeForAction(int maskedAction) { // Primary pointer: if (maskedAction == MotionEvent.ACTION_DOWN) { - return POINTER_CHANGE_DOWN; + return PointerChange.DOWN; } if (maskedAction == MotionEvent.ACTION_UP) { - return POINTER_CHANGE_UP; + return PointerChange.UP; } // Secondary pointer: if (maskedAction == MotionEvent.ACTION_POINTER_DOWN) { - return POINTER_CHANGE_DOWN; + return PointerChange.DOWN; } if (maskedAction == MotionEvent.ACTION_POINTER_UP) { - return POINTER_CHANGE_UP; + return PointerChange.UP; } // All pointers: if (maskedAction == MotionEvent.ACTION_MOVE) { - return POINTER_CHANGE_MOVE; + return PointerChange.MOVE; } if (maskedAction == MotionEvent.ACTION_CANCEL) { - return POINTER_CHANGE_CANCEL; + return PointerChange.CANCEL; } return -1; } - // TODO(mattcarroll): introduce IntDef for toolType. + @PointerDeviceKind private int getPointerDeviceTypeForToolType(int toolType) { switch (toolType) { case MotionEvent.TOOL_TYPE_FINGER: - return POINTER_DEVICE_KIND_TOUCH; + return PointerDeviceKind.TOUCH; case MotionEvent.TOOL_TYPE_STYLUS: - return POINTER_DEVICE_KIND_STYLUS; + return PointerDeviceKind.STYLUS; case MotionEvent.TOOL_TYPE_MOUSE: - return POINTER_DEVICE_KIND_MOUSE; + return PointerDeviceKind.MOUSE; case MotionEvent.TOOL_TYPE_ERASER: - return POINTER_DEVICE_KIND_INVERTED_STYLUS; + return PointerDeviceKind.INVERTED_STYLUS; default: // MotionEvent.TOOL_TYPE_UNKNOWN will reach here. - return POINTER_DEVICE_KIND_UNKNOWN; + return PointerDeviceKind.UNKNOWN; } } } diff --git a/shell/platform/android/io/flutter/embedding/engine/android/FlutterView.java b/shell/platform/android/io/flutter/embedding/engine/android/FlutterView.java index 7e586670e477f..1f507cecb3c13 100644 --- a/shell/platform/android/io/flutter/embedding/engine/android/FlutterView.java +++ b/shell/platform/android/io/flutter/embedding/engine/android/FlutterView.java @@ -79,6 +79,8 @@ public class FlutterView extends FrameLayout { private TextInputPlugin textInputPlugin; @Nullable private AndroidKeyProcessor androidKeyProcessor; + @Nullable + private AndroidTouchProcessor androidTouchProcessor; // Directly implemented View behavior that communicates with Flutter. private final FlutterRenderer.ViewportMetrics viewportMetrics = new FlutterRenderer.ViewportMetrics(); @@ -313,8 +315,7 @@ public boolean onTouchEvent(MotionEvent event) { return false; } - // TODO(mattcarroll): forward event to touch processore when it's merged in. - return false; + return androidTouchProcessor.onTouchEvent(event); } /** @@ -388,6 +389,7 @@ public void attachToFlutterEngine(@NonNull FlutterEngine flutterEngine) { this.flutterEngine.getKeyEventChannel(), textInputPlugin ); + androidTouchProcessor = new AndroidTouchProcessor(this.flutterEngine.getRenderer()); // Inform the Android framework that it should retrieve a new InputConnection // now that an engine is attached. From 718329ce6e8b66970ae198804f43abf647c6f24e Mon Sep 17 00:00:00 2001 From: Matt Carroll Date: Fri, 8 Mar 2019 18:09:04 -0800 Subject: [PATCH 1326/1537] Android Embedding PR 17: Clarify AccessibilityBridge and move logic out of FlutterView. (#8061) --- .../flutter/embedding/engine/FlutterJNI.java | 18 + .../systemchannels/AccessibilityChannel.java | 6 +- .../io/flutter/view/AccessibilityBridge.java | 1423 ++++++++++++----- .../android/io/flutter/view/FlutterView.java | 228 +-- tools/android_lint/baseline.xml | 62 +- 5 files changed, 1103 insertions(+), 634 deletions(-) diff --git a/shell/platform/android/io/flutter/embedding/engine/FlutterJNI.java b/shell/platform/android/io/flutter/embedding/engine/FlutterJNI.java index f2d194275c3d4..41e128ecd63f7 100644 --- a/shell/platform/android/io/flutter/embedding/engine/FlutterJNI.java +++ b/shell/platform/android/io/flutter/embedding/engine/FlutterJNI.java @@ -20,6 +20,8 @@ import io.flutter.embedding.engine.FlutterEngine.EngineLifecycleListener; import io.flutter.embedding.engine.renderer.FlutterRenderer; import io.flutter.embedding.engine.renderer.OnFirstFrameRenderedListener; +import io.flutter.plugin.common.StandardMessageCodec; +import io.flutter.view.AccessibilityBridge; /** * Interface between Flutter embedding's Java code and Flutter engine's C/C++ code. @@ -323,6 +325,22 @@ private native void nativeDispatchPointerDataPacket(long nativePlatformViewId, ByteBuffer buffer, int position); + public void dispatchSemanticsAction(int id, @NonNull AccessibilityBridge.Action action) { + dispatchSemanticsAction(id, action, null); + } + + public void dispatchSemanticsAction(int id, @NonNull AccessibilityBridge.Action action, @Nullable Object args) { + ensureAttachedToNative(); + + ByteBuffer encodedArgs = null; + int position = 0; + if (args != null) { + encodedArgs = StandardMessageCodec.INSTANCE.encodeMessage(args); + position = encodedArgs.position(); + } + dispatchSemanticsAction(id, action.value, encodedArgs, position); + } + @UiThread public void dispatchSemanticsAction(int id, int action, ByteBuffer args, int argsPosition) { ensureAttachedToNative(); diff --git a/shell/platform/android/io/flutter/embedding/engine/systemchannels/AccessibilityChannel.java b/shell/platform/android/io/flutter/embedding/engine/systemchannels/AccessibilityChannel.java index 4bfcd37973b58..7eed2619bebda 100644 --- a/shell/platform/android/io/flutter/embedding/engine/systemchannels/AccessibilityChannel.java +++ b/shell/platform/android/io/flutter/embedding/engine/systemchannels/AccessibilityChannel.java @@ -103,17 +103,17 @@ public interface AccessibilityMessageHandler { void announce(@NonNull String message); /** - * The user has tapped on the artifact with the given {@code nodeId}. + * The user has tapped on the widget with the given {@code nodeId}. */ void onTap(int nodeId); /** - * The user has long pressed on the artifact with the given {@code nodeId}. + * The user has long pressed on the widget with the given {@code nodeId}. */ void onLongPress(int nodeId); /** - * The user has opened a popup window, menu, dialog, etc. + * The user has opened a tooltip. */ void onTooltip(@NonNull String message); } diff --git a/shell/platform/android/io/flutter/view/AccessibilityBridge.java b/shell/platform/android/io/flutter/view/AccessibilityBridge.java index add434080c054..812170155ec75 100644 --- a/shell/platform/android/io/flutter/view/AccessibilityBridge.java +++ b/shell/platform/android/io/flutter/view/AccessibilityBridge.java @@ -6,28 +6,69 @@ import android.annotation.TargetApi; import android.app.Activity; +import android.content.ContentResolver; +import android.database.ContentObserver; import android.graphics.Rect; +import android.net.Uri; import android.opengl.Matrix; import android.os.Build; import android.os.Bundle; +import android.os.Handler; +import android.provider.Settings; import android.support.annotation.NonNull; +import android.support.annotation.Nullable; import android.support.annotation.NonNull; import android.support.annotation.RequiresApi; import android.util.Log; +import android.view.MotionEvent; import android.view.View; import android.view.accessibility.AccessibilityEvent; +import android.view.accessibility.AccessibilityManager; import android.view.accessibility.AccessibilityNodeInfo; import android.view.accessibility.AccessibilityNodeProvider; +import io.flutter.embedding.engine.FlutterJNI; import io.flutter.embedding.engine.systemchannels.AccessibilityChannel; import io.flutter.util.Predicate; import java.nio.ByteBuffer; import java.util.*; -class AccessibilityBridge - extends AccessibilityNodeProvider { - private static final String TAG = "FlutterView"; +/** + * Bridge between Android's OS accessibility system and Flutter's accessibility system. + * + * An {@code AccessibilityBridge} requires: + *
      + *
    • A real Android {@link View}, called the {@link #rootAccessibilityView}, which contains a + * Flutter UI. The {@link #rootAccessibilityView} is required at the time of + * {@code AccessibilityBridge}'s instantiation and is held for the duration of + * {@code AccessibilityBridge}'s lifespan. {@code AccessibilityBridge} invokes various + * accessibility methods on the {@link #rootAccessibilityView}, e.g., + * {@link View#onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo)}. The + * {@link #rootAccessibilityView} is expected to notify the {@code AccessibilityBridge} of + * relevant interactions: {@link #onAccessibilityHoverEvent(MotionEvent)}, {@link #reset()}, + * {@link #updateSemantics(ByteBuffer, String[])}, and {@link #updateCustomAccessibilityActions(ByteBuffer, String[])}
    • + *
    • A {@link FlutterJNI} instance, corresponding to the running Flutter app.
    • + *
    • An {@link AccessibilityChannel} that is connected to the running Flutter app.
    • + *
    • Android's {@link AccessibilityManager} to query and listen for accessibility settings.
    • + *
    • Android's {@link ContentResolver} to listen for changes to system animation settings.
    • + *
    + * + * The {@code AccessibilityBridge} causes Android to treat Flutter {@code SemanticsNode}s as if + * they were accessible Android {@link View}s. Accessibility requests may be sent from + * a Flutter widget to the Android OS, as if it were an Android {@link View}, and + * accessibility events may be consumed by a Flutter widget, as if it were an Android + * {@link View}. {@code AccessibilityBridge} refers to Flutter's accessible widgets as + * "virtual views" and identifies them with "virtual view IDs". + * + * Most communication between the Android OS accessibility system and Flutter's accessibility + * system is achieved via the {@link AccessibilityChannel} system channel. However, some + * information is exchanged directly between the Android embedding and Flutter framework + * via {@link FlutterJNI}. + * TODO(mattcarroll): consider moving FlutterJNI calls over to AccessibilityChannel + */ +public class AccessibilityBridge extends AccessibilityNodeProvider { + private static final String TAG = "AccessibilityBridge"; // Constants from higher API levels. // TODO(goderbauer): Get these from Android Support Library when @@ -38,35 +79,160 @@ class AccessibilityBridge private static final float SCROLL_POSITION_CAP_FOR_INFINITY = 70000.0f; private static final int ROOT_NODE_ID = 0; - private final FlutterView owner; + /// Value is derived from ACTION_TYPE_MASK in AccessibilityNodeInfo.java + private static int FIRST_RESOURCE_ID = 267386881; + + // Real Android View, which internally holds a Flutter UI. + @NonNull + private final View rootAccessibilityView; + + // Direct interface between Flutter's Android embedding and the Flutter framework. + @NonNull + private final FlutterJNI flutterJNI; + + // The accessibility communication API between Flutter's Android embedding and + // the Flutter framework. + @NonNull private final AccessibilityChannel accessibilityChannel; + + // Android's {@link AccessibilityManager}, which we can query to see if accessibility is + // turned on, as well as listen for changes to accessibility's activation. + @NonNull + private final AccessibilityManager accessibilityManager; + + // Android's {@link ContentResolver}, which is used to observe the global TRANSITION_ANIMATION_SCALE, + // which determines whether Flutter's animations should be enabled or disabled for accessibility + // purposes. + @NonNull + private final ContentResolver contentResolver; + + // The top-level Android View within the containing Window. + // TODO(mattcarroll): Move communication with the decorView out to FlutterView, or even FlutterActivity. + // The reason this is here is because when the device is in reverse-landscape + // orientation, Android has a bug where it assumes the OS nav bar is on the + // right side of the screen, not the left. As a result, accessibility borders + // are drawn too far to the left. The AccessibilityBridge directly adjusts + // for this Android bug. We still need to adjust, but this is the wrong place + // to access a decorView. What if the FlutterView is only part of the UI + // hierarchy, like a list item? We shouldn't touch the decor view. + // https://github.com/flutter/flutter/issues/19967 + @NonNull private final View decorView; - private Map objects; - private Map customAccessibilityActions; - private boolean accessibilityEnabled = false; - private SemanticsObject a11yFocusedObject; - private SemanticsObject inputFocusedObject; - private SemanticsObject hoveredObject; + + // The entire Flutter semantics tree of the running Flutter app, stored as a Map + // from each SemanticsNode's ID to a Java representation of a Flutter SemanticsNode. + // + // Flutter's semantics tree is cached here because Android might ask for information about + // a given SemanticsNode at any moment in time. Caching the tree allows for immediate + // response to Android's request. + // + // The structure of flutterSemanticsTree may be 1 or 2 frames behind the Flutter app + // due to the time required to communicate tree changes from Flutter to Android. + // + // See the Flutter docs on SemanticsNode: + // https://docs.flutter.io/flutter/semantics/SemanticsNode-class.html + @NonNull + private final Map flutterSemanticsTree = new HashMap<>(); + + // The set of all custom Flutter accessibility actions that are present in the running + // Flutter app, stored as a Map from each action's ID to the definition of the custom accessibility + // action. + // + // Flutter and Android support a number of built-in accessibility actions. However, these + // predefined actions are not always sufficient for a desired interaction. Android facilitates + // custom accessibility actions, https://developer.android.com/reference/android/view/accessibility/AccessibilityNodeInfo.AccessibilityAction. + // Flutter supports custom accessibility actions via {@code customSemanticsActions} within + // a {@code Semantics} widget, https://docs.flutter.io/flutter/widgets/Semantics-class.html. + // {@code customAccessibilityActions} are an Android-side cache of all custom accessibility + // types declared within the running Flutter app. + // + // Custom accessibility actions are comprised of only a few fields, and therefore it is likely + // that a given app may define the same custom accessibility action many times. Identical + // custom accessibility actions are de-duped such that {@code customAccessibilityActions} only + // caches unique custom accessibility actions. + // + // See the Android documentation for custom accessibility actions: + // https://developer.android.com/reference/android/view/accessibility/AccessibilityNodeInfo.AccessibilityAction + // + // See the Flutter documentation for the Semantics widget: + // https://docs.flutter.io/flutter/widgets/Semantics-class.html + @NonNull + private final Map customAccessibilityActions = new HashMap<>(); + + // The {@code SemanticsNode} within Flutter that currently has the focus of Android's + // accessibility system. + @Nullable + private SemanticsNode accessibilityFocusedSemanticsNode; + + // The accessibility features that should currently be active within Flutter, represented as + // a bitmask whose values comes from {@link AccessibilityFeature}. + private int accessibilityFeatureFlags = 0; + + // The {@code SemanticsNode} within Flutter that currently has the focus of Android's input + // system. + // + // Input focus is independent of accessibility focus. It is possible that accessibility focus + // and input focus target the same {@code SemanticsNode}, but it is also possible that one + // {@code SemanticsNode} has input focus while a different {@code SemanticsNode} has + // accessibility focus. For example, a user may use a D-Pad to navigate to a text field, giving + // it accessibility focus, and then enable input on that text field, giving it input focus. Then + // the user moves the accessibility focus to a nearby label to get info about the label, while + // maintaining input focus on the original text field. + @Nullable + private SemanticsNode inputFocusedSemanticsNode; + + // The widget within Flutter that currently sits beneath a cursor, e.g, + // beneath a stylus or mouse cursor. + @Nullable + private SemanticsNode hoveredObject; + + // A Java/Android cached representation of the Flutter app's navigation stack. The Flutter + // navigation stack is tracked so that accessibility announcements can be made during Flutter's + // navigation changes. + // TODO(mattcarroll): take this cache into account for new routing solution so accessibility does + // not get left behind. + @NonNull + private final List flutterNavigationStack = new ArrayList<>(); + + // TODO(mattcarroll): why do we need previouseRouteId if we have flutterNavigationStack private int previousRouteId = ROOT_NODE_ID; - private List previousRoutes; + + // TODO(mattcarroll): is this for the decor view adjustment? + @NonNull private Integer lastLeftFrameInset = 0; + @Nullable + private OnAccessibilityChangeListener onAccessibilityChangeListener; + + // Handler for all messages received from Flutter via the {@code accessibilityChannel} private final AccessibilityChannel.AccessibilityMessageHandler accessibilityMessageHandler = new AccessibilityChannel.AccessibilityMessageHandler() { + /** + * The Dart application would like the given {@code message} to be announced. + */ @Override public void announce(@NonNull String message) { - owner.announceForAccessibility(message); + rootAccessibilityView.announceForAccessibility(message); } + /** + * The user has tapped on the widget with the given {@code nodeId}. + */ @Override public void onTap(int nodeId) { sendAccessibilityEvent(nodeId, AccessibilityEvent.TYPE_VIEW_CLICKED); } + /** + * The user has long pressed on the widget with the given {@code nodeId}. + */ @Override public void onLongPress(int nodeId) { sendAccessibilityEvent(nodeId, AccessibilityEvent.TYPE_VIEW_LONG_CLICKED); } + /** + * The user has opened a tooltip. + */ @Override public void onTooltip(@NonNull String message) { AccessibilityEvent e = obtainAccessibilityEvent(ROOT_NODE_ID, AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED); @@ -75,164 +241,262 @@ public void onTooltip(@NonNull String message) { } }; - enum Action { - TAP(1 << 0), - LONG_PRESS(1 << 1), - SCROLL_LEFT(1 << 2), - SCROLL_RIGHT(1 << 3), - SCROLL_UP(1 << 4), - SCROLL_DOWN(1 << 5), - INCREASE(1 << 6), - DECREASE(1 << 7), - SHOW_ON_SCREEN(1 << 8), - MOVE_CURSOR_FORWARD_BY_CHARACTER(1 << 9), - MOVE_CURSOR_BACKWARD_BY_CHARACTER(1 << 10), - /** These actions are only supported on Android 4.3 and above. */ - SET_SELECTION(1 << 11), - COPY(1 << 12), - CUT(1 << 13), - PASTE(1 << 14), - /** End 4.3 only supported actions. */ - DID_GAIN_ACCESSIBILITY_FOCUS(1 << 15), - DID_LOSE_ACCESSIBILITY_FOCUS(1 << 16), - CUSTOM_ACTION(1 << 17), - DISMISS(1 << 18), - MOVE_CURSOR_FORWARD_BY_WORD(1 << 19), - MOVE_CURSOR_BACKWARD_BY_WORD(1 << 20); + // Listener that is notified when accessibility is turned on/off. + private final AccessibilityManager.AccessibilityStateChangeListener accessibilityStateChangeListener = new AccessibilityManager.AccessibilityStateChangeListener() { + @Override + public void onAccessibilityStateChanged(boolean accessibilityEnabled) { + if (accessibilityEnabled) { + accessibilityChannel.setAccessibilityMessageHandler(accessibilityMessageHandler); + flutterJNI.setSemanticsEnabled(true); + } else { + accessibilityChannel.setAccessibilityMessageHandler(null); + flutterJNI.setSemanticsEnabled(false); + } - Action(int value) { - this.value = value; + if (onAccessibilityChangeListener != null) { + onAccessibilityChangeListener.onAccessibilityChanged( + accessibilityEnabled, + accessibilityManager.isTouchExplorationEnabled() + ); + } } + }; - final int value; - } + // Listener that is notified when accessibility touch exploration is turned on/off. + // This is guarded at instantiation time. + @TargetApi(19) + @RequiresApi(19) + private final AccessibilityManager.TouchExplorationStateChangeListener touchExplorationStateChangeListener = new AccessibilityManager.TouchExplorationStateChangeListener() { + @Override + public void onTouchExplorationStateChanged(boolean isTouchExplorationEnabled) { + if (isTouchExplorationEnabled) { + accessibilityFeatureFlags |= AccessibilityFeature.ACCESSIBLE_NAVIGATION.value; + } else { + onTouchExplorationExit(); + accessibilityFeatureFlags &= ~AccessibilityFeature.ACCESSIBLE_NAVIGATION.value; + } + sendLatestAccessibilityFlagsToFlutter(); - enum Flag { - HAS_CHECKED_STATE(1 << 0), - IS_CHECKED(1 << 1), - IS_SELECTED(1 << 2), - IS_BUTTON(1 << 3), - IS_TEXT_FIELD(1 << 4), - IS_FOCUSED(1 << 5), - HAS_ENABLED_STATE(1 << 6), - IS_ENABLED(1 << 7), - IS_IN_MUTUALLY_EXCLUSIVE_GROUP(1 << 8), - IS_HEADER(1 << 9), - IS_OBSCURED(1 << 10), - SCOPES_ROUTE(1 << 11), - NAMES_ROUTE(1 << 12), - IS_HIDDEN(1 << 13), - IS_IMAGE(1 << 14), - IS_LIVE_REGION(1 << 15), - HAS_TOGGLED_STATE(1 << 16), - IS_TOGGLED(1 << 17), - HAS_IMPLICIT_SCROLLING(1 << 18); + if (onAccessibilityChangeListener != null) { + onAccessibilityChangeListener.onAccessibilityChanged( + accessibilityManager.isEnabled(), + isTouchExplorationEnabled + ); + } + } + }; - Flag(int value) { - this.value = value; + // Listener that is notified when the global TRANSITION_ANIMATION_SCALE. When this scale goes + // to zero, we instruct Flutter to disable animations. + private final ContentObserver animationScaleObserver = new ContentObserver(new Handler()) { + @Override + public void onChange(boolean selfChange) { + this.onChange(selfChange, null); } - final int value; - } + @Override + public void onChange(boolean selfChange, Uri uri) { + // Retrieve the current value of TRANSITION_ANIMATION_SCALE from the OS. + String value = Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN_MR1 ? null + : Settings.Global.getString( + contentResolver, + Settings.Global.TRANSITION_ANIMATION_SCALE + ); + + boolean shouldAnimationsBeDisabled = value != null && value.equals("0"); + if (shouldAnimationsBeDisabled) { + accessibilityFeatureFlags |= AccessibilityFeature.DISABLE_ANIMATIONS.value; + } else { + accessibilityFeatureFlags &= ~AccessibilityFeature.DISABLE_ANIMATIONS.value; + } + sendLatestAccessibilityFlagsToFlutter(); + } + }; - AccessibilityBridge(@NonNull FlutterView owner, @NonNull AccessibilityChannel accessibilityChannel) { - this.owner = owner; + AccessibilityBridge( + @NonNull View rootAccessibilityView, + @NonNull FlutterJNI flutterJNI, + @NonNull AccessibilityChannel accessibilityChannel, + @NonNull AccessibilityManager accessibilityManager, + @NonNull ContentResolver contentResolver + ) { + this.rootAccessibilityView = rootAccessibilityView; + this.flutterJNI = flutterJNI; this.accessibilityChannel = accessibilityChannel; - decorView = ((Activity) owner.getContext()).getWindow().getDecorView(); - objects = new HashMap<>(); - customAccessibilityActions = new HashMap<>(); - previousRoutes = new ArrayList<>(); - } + this.accessibilityManager = accessibilityManager; + this.contentResolver = contentResolver; - void setAccessibilityEnabled(boolean accessibilityEnabled) { - this.accessibilityEnabled = accessibilityEnabled; - if (accessibilityEnabled) { - this.accessibilityChannel.setAccessibilityMessageHandler(accessibilityMessageHandler); - } else { - this.accessibilityChannel.setAccessibilityMessageHandler(null); + decorView = ((Activity) rootAccessibilityView.getContext()).getWindow().getDecorView(); + + // Tell Flutter whether accessibility is initially active or not. Then register a listener + // to be notified of changes in the future. + accessibilityStateChangeListener.onAccessibilityStateChanged(accessibilityManager.isEnabled()); + this.accessibilityManager.addAccessibilityStateChangeListener(accessibilityStateChangeListener); + + // Tell Flutter whether touch exploration is initially active or not. Then register a listener + // to be notified of changes in the future. + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { + touchExplorationStateChangeListener.onTouchExplorationStateChanged(accessibilityManager.isTouchExplorationEnabled()); + this.accessibilityManager.addTouchExplorationStateChangeListener(touchExplorationStateChangeListener); + } + + // Tell Flutter whether animations should initially be enabled or disabled. Then register a + // listener to be notified of changes in the future. + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { + animationScaleObserver.onChange(false); + Uri transitionUri = Settings.Global.getUriFor(Settings.Global.TRANSITION_ANIMATION_SCALE); + this.contentResolver.registerContentObserver(transitionUri, false, animationScaleObserver); } } - private boolean shouldSetCollectionInfo(final SemanticsObject object) { + /** + * Disconnects any listeners and/or delegates that were initialized in {@code AccessibilityBridge}'s + * constructor, or added after. + * + * Do not use this instance after invoking {@code release}. The behavior of any method invoked + * on this {@code AccessibilityBridge} after invoking {@code release()} is undefined. + */ + public void release() { + setOnAccessibilityChangeListener(null); + accessibilityManager.removeAccessibilityStateChangeListener(accessibilityStateChangeListener); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { + accessibilityManager.removeTouchExplorationStateChangeListener(touchExplorationStateChangeListener); + } + contentResolver.unregisterContentObserver(animationScaleObserver); + } + + /** + * Returns true if the Android OS currently has accessibility enabled, false otherwise. + */ + public boolean isAccessibilityEnabled() { + return accessibilityManager.isEnabled(); + } + + /** + * Returns true if the Android OS currently has touch exploration enabled, false otherwise. + */ + public boolean isTouchExplorationEnabled() { + return accessibilityManager.isTouchExplorationEnabled(); + } + + /** + * Sets a listener on this {@code AccessibilityBridge}, which is notified whenever accessibility + * activation, or touch exploration activation changes. + */ + public void setOnAccessibilityChangeListener(@Nullable OnAccessibilityChangeListener listener) { + this.onAccessibilityChangeListener = listener; + } + + /** + * Sends the current value of {@link #accessibilityFeatureFlags} to Flutter via {@link FlutterJNI}. + */ + private void sendLatestAccessibilityFlagsToFlutter() { + flutterJNI.setAccessibilityFeatures(accessibilityFeatureFlags); + } + + private boolean shouldSetCollectionInfo(final SemanticsNode semanticsNode) { // TalkBack expects a number of rows and/or columns greater than 0 to announce // in list and out of list. For an infinite or growing list, you have to // specify something > 0 to get "in list" announcements. // TalkBack will also only track one list at a time, so we only want to set this - // for a list that contains the current a11y focused object - otherwise, if there + // for a list that contains the current a11y focused semanticsNode - otherwise, if there // are two lists or nested lists, we may end up with announcements for only the last // one that is currently available in the semantics tree. However, we also want // to set it if we're exiting a list to a non-list, so that we can get the "out of list" // announcement when A11y focus moves out of a list and not into another list. - return object.scrollChildren > 0 - && (hasSemanticsObjectAncestor(a11yFocusedObject, o -> o == object) - || !hasSemanticsObjectAncestor(a11yFocusedObject, o -> o.hasFlag(Flag.HAS_IMPLICIT_SCROLLING))); + return semanticsNode.scrollChildren > 0 + && (SemanticsNode.nullableHasAncestor(accessibilityFocusedSemanticsNode, o -> o == semanticsNode) + || !SemanticsNode.nullableHasAncestor(accessibilityFocusedSemanticsNode, o -> o.hasFlag(Flag.HAS_IMPLICIT_SCROLLING))); } + /** + * Returns {@link AccessibilityNodeInfo} for the view corresponding to the given {@code virtualViewId}. + * + * This method is invoked by Android's accessibility system when Android needs accessibility info + * for a given view. + * + * When a {@code virtualViewId} of {@link View#NO_ID} is requested, accessibility node info is + * returned for our {@link #rootAccessibilityView}. Otherwise, Flutter's semantics tree, + * represented by {@link #flutterSemanticsTree}, is searched for a {@link SemanticsNode} with + * the given {@code virtualViewId}. If no such {@link SemanticsNode} is found, then this method + * returns null. If the desired {@link SemanticsNode} is found, then an {@link AccessibilityNodeInfo} + * is obtained from the {@link #rootAccessibilityView}, filled with appropriate info, and then + * returned. + * + * Depending on the type of Flutter {@code SemanticsNode} that is requested, the returned + * {@link AccessibilityNodeInfo} pretends that the {@code SemanticsNode} in question comes from + * a specialize Android view, e.g., {@link Flag#IS_TEXT_FIELD} maps to {@code android.widget.EditText}, + * {@link Flag#IS_BUTTON} maps to {@code android.widget.Button}, and {@link Flag#IS_IMAGE} maps + * to {@code android.widget.ImageView}. In the case that no specialized view applies, the + * returned {@link AccessibilityNodeInfo} pretends that it represents a {@code android.view.View}. + */ @Override @SuppressWarnings("deprecation") public AccessibilityNodeInfo createAccessibilityNodeInfo(int virtualViewId) { if (virtualViewId == View.NO_ID) { - AccessibilityNodeInfo result = AccessibilityNodeInfo.obtain(owner); - owner.onInitializeAccessibilityNodeInfo(result); - if (objects.containsKey(ROOT_NODE_ID)) { - result.addChild(owner, ROOT_NODE_ID); + AccessibilityNodeInfo result = AccessibilityNodeInfo.obtain(rootAccessibilityView); + rootAccessibilityView.onInitializeAccessibilityNodeInfo(result); + // TODO(mattcarroll): what does it mean for the semantics tree to contain or not contain + // the root node ID? + if (flutterSemanticsTree.containsKey(ROOT_NODE_ID)) { + result.addChild(rootAccessibilityView, ROOT_NODE_ID); } return result; } - SemanticsObject object = objects.get(virtualViewId); - if (object == null) { + SemanticsNode semanticsNode = flutterSemanticsTree.get(virtualViewId); + if (semanticsNode == null) { return null; } - AccessibilityNodeInfo result = AccessibilityNodeInfo.obtain(owner, virtualViewId); + AccessibilityNodeInfo result = AccessibilityNodeInfo.obtain(rootAccessibilityView, virtualViewId); // Work around for https://github.com/flutter/flutter/issues/2101 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) { result.setViewIdResourceName(""); } - result.setPackageName(owner.getContext().getPackageName()); + result.setPackageName(rootAccessibilityView.getContext().getPackageName()); result.setClassName("android.view.View"); - result.setSource(owner, virtualViewId); - result.setFocusable(object.isFocusable()); - if (inputFocusedObject != null) { - result.setFocused(inputFocusedObject.id == virtualViewId); + result.setSource(rootAccessibilityView, virtualViewId); + result.setFocusable(semanticsNode.isFocusable()); + if (inputFocusedSemanticsNode != null) { + result.setFocused(inputFocusedSemanticsNode.id == virtualViewId); } - if (a11yFocusedObject != null) { - result.setAccessibilityFocused(a11yFocusedObject.id == virtualViewId); + if (accessibilityFocusedSemanticsNode != null) { + result.setAccessibilityFocused(accessibilityFocusedSemanticsNode.id == virtualViewId); } - if (object.hasFlag(Flag.IS_TEXT_FIELD)) { - result.setPassword(object.hasFlag(Flag.IS_OBSCURED)); + if (semanticsNode.hasFlag(Flag.IS_TEXT_FIELD)) { + result.setPassword(semanticsNode.hasFlag(Flag.IS_OBSCURED)); result.setClassName("android.widget.EditText"); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) { result.setEditable(true); - if (object.textSelectionBase != -1 && object.textSelectionExtent != -1) { - result.setTextSelection(object.textSelectionBase, object.textSelectionExtent); + if (semanticsNode.textSelectionBase != -1 && semanticsNode.textSelectionExtent != -1) { + result.setTextSelection(semanticsNode.textSelectionBase, semanticsNode.textSelectionExtent); } // Text fields will always be created as a live region when they have input focus, // so that updates to the label trigger polite announcements. This makes it easy to // follow a11y guidelines for text fields on Android. - if (Build.VERSION.SDK_INT > Build.VERSION_CODES.JELLY_BEAN_MR2 && a11yFocusedObject != null && a11yFocusedObject.id == virtualViewId) { + if (Build.VERSION.SDK_INT > Build.VERSION_CODES.JELLY_BEAN_MR2 && accessibilityFocusedSemanticsNode != null && accessibilityFocusedSemanticsNode.id == virtualViewId) { result.setLiveRegion(View.ACCESSIBILITY_LIVE_REGION_POLITE); } } // Cursor movements int granularities = 0; - if (object.hasAction(Action.MOVE_CURSOR_FORWARD_BY_CHARACTER)) { + if (semanticsNode.hasAction(Action.MOVE_CURSOR_FORWARD_BY_CHARACTER)) { result.addAction(AccessibilityNodeInfo.ACTION_NEXT_AT_MOVEMENT_GRANULARITY); granularities |= AccessibilityNodeInfo.MOVEMENT_GRANULARITY_CHARACTER; } - if (object.hasAction(Action.MOVE_CURSOR_BACKWARD_BY_CHARACTER)) { + if (semanticsNode.hasAction(Action.MOVE_CURSOR_BACKWARD_BY_CHARACTER)) { result.addAction(AccessibilityNodeInfo.ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY); granularities |= AccessibilityNodeInfo.MOVEMENT_GRANULARITY_CHARACTER; } - if (object.hasAction(Action.MOVE_CURSOR_FORWARD_BY_WORD)) { + if (semanticsNode.hasAction(Action.MOVE_CURSOR_FORWARD_BY_WORD)) { result.addAction(AccessibilityNodeInfo.ACTION_NEXT_AT_MOVEMENT_GRANULARITY); granularities |= AccessibilityNodeInfo.MOVEMENT_GRANULARITY_WORD; } - if (object.hasAction(Action.MOVE_CURSOR_BACKWARD_BY_WORD)) { + if (semanticsNode.hasAction(Action.MOVE_CURSOR_BACKWARD_BY_WORD)) { result.addAction(AccessibilityNodeInfo.ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY); granularities |= AccessibilityNodeInfo.MOVEMENT_GRANULARITY_WORD; } @@ -242,44 +506,44 @@ public AccessibilityNodeInfo createAccessibilityNodeInfo(int virtualViewId) { // These are non-ops on older devices. Attempting to interact with the text will cause Talkback to read the // contents of the text box instead. if (Build.VERSION.SDK_INT > Build.VERSION_CODES.JELLY_BEAN_MR2) { - if (object.hasAction(Action.SET_SELECTION)) { + if (semanticsNode.hasAction(Action.SET_SELECTION)) { result.addAction(AccessibilityNodeInfo.ACTION_SET_SELECTION); } - if (object.hasAction(Action.COPY)) { + if (semanticsNode.hasAction(Action.COPY)) { result.addAction(AccessibilityNodeInfo.ACTION_COPY); } - if (object.hasAction(Action.CUT)) { + if (semanticsNode.hasAction(Action.CUT)) { result.addAction(AccessibilityNodeInfo.ACTION_CUT); } - if (object.hasAction(Action.PASTE)) { + if (semanticsNode.hasAction(Action.PASTE)) { result.addAction(AccessibilityNodeInfo.ACTION_PASTE); } } - if (object.hasFlag(Flag.IS_BUTTON)) { + if (semanticsNode.hasFlag(Flag.IS_BUTTON)) { result.setClassName("android.widget.Button"); } - if (object.hasFlag(Flag.IS_IMAGE)) { + if (semanticsNode.hasFlag(Flag.IS_IMAGE)) { result.setClassName("android.widget.ImageView"); // TODO(jonahwilliams): Figure out a way conform to the expected id from TalkBack's // CustomLabelManager. talkback/src/main/java/labeling/CustomLabelManager.java#L525 } - if (Build.VERSION.SDK_INT > Build.VERSION_CODES.JELLY_BEAN_MR2 && object.hasAction(Action.DISMISS)) { + if (Build.VERSION.SDK_INT > Build.VERSION_CODES.JELLY_BEAN_MR2 && semanticsNode.hasAction(Action.DISMISS)) { result.setDismissable(true); result.addAction(AccessibilityNodeInfo.ACTION_DISMISS); } - if (object.parent != null) { - assert object.id > ROOT_NODE_ID; - result.setParent(owner, object.parent.id); + if (semanticsNode.parent != null) { + assert semanticsNode.id > ROOT_NODE_ID; + result.setParent(rootAccessibilityView, semanticsNode.parent.id); } else { - assert object.id == ROOT_NODE_ID; - result.setParent(owner); + assert semanticsNode.id == ROOT_NODE_ID; + result.setParent(rootAccessibilityView); } - Rect bounds = object.getGlobalRect(); - if (object.parent != null) { - Rect parentBounds = object.parent.getGlobalRect(); + Rect bounds = semanticsNode.getGlobalRect(); + if (semanticsNode.parent != null) { + Rect parentBounds = semanticsNode.parent.getGlobalRect(); Rect boundsInParent = new Rect(bounds); boundsInParent.offset(-parentBounds.left, -parentBounds.top); result.setBoundsInParent(boundsInParent); @@ -289,30 +553,35 @@ public AccessibilityNodeInfo createAccessibilityNodeInfo(int virtualViewId) { result.setBoundsInScreen(bounds); result.setVisibleToUser(true); result.setEnabled( - !object.hasFlag(Flag.HAS_ENABLED_STATE) || object.hasFlag(Flag.IS_ENABLED)); + !semanticsNode.hasFlag(Flag.HAS_ENABLED_STATE) || semanticsNode.hasFlag(Flag.IS_ENABLED) + ); - if (object.hasAction(Action.TAP)) { - if (Build.VERSION.SDK_INT >= 21 && object.onTapOverride != null) { + if (semanticsNode.hasAction(Action.TAP)) { + if (Build.VERSION.SDK_INT >= 21 && semanticsNode.onTapOverride != null) { result.addAction(new AccessibilityNodeInfo.AccessibilityAction( - AccessibilityNodeInfo.ACTION_CLICK, object.onTapOverride.hint)); + AccessibilityNodeInfo.ACTION_CLICK, + semanticsNode.onTapOverride.hint + )); result.setClickable(true); } else { result.addAction(AccessibilityNodeInfo.ACTION_CLICK); result.setClickable(true); } } - if (object.hasAction(Action.LONG_PRESS)) { - if (Build.VERSION.SDK_INT >= 21 && object.onLongPressOverride != null) { - result.addAction(new AccessibilityNodeInfo.AccessibilityAction(AccessibilityNodeInfo.ACTION_LONG_CLICK, - object.onLongPressOverride.hint)); + if (semanticsNode.hasAction(Action.LONG_PRESS)) { + if (Build.VERSION.SDK_INT >= 21 && semanticsNode.onLongPressOverride != null) { + result.addAction(new AccessibilityNodeInfo.AccessibilityAction( + AccessibilityNodeInfo.ACTION_LONG_CLICK, + semanticsNode.onLongPressOverride.hint + )); result.setLongClickable(true); } else { result.addAction(AccessibilityNodeInfo.ACTION_LONG_CLICK); result.setLongClickable(true); } } - if (object.hasAction(Action.SCROLL_LEFT) || object.hasAction(Action.SCROLL_UP) - || object.hasAction(Action.SCROLL_RIGHT) || object.hasAction(Action.SCROLL_DOWN)) { + if (semanticsNode.hasAction(Action.SCROLL_LEFT) || semanticsNode.hasAction(Action.SCROLL_UP) + || semanticsNode.hasAction(Action.SCROLL_RIGHT) || semanticsNode.hasAction(Action.SCROLL_DOWN)) { result.setScrollable(true); // This tells Android's a11y to send scroll events when reaching the end of @@ -327,22 +596,24 @@ public AccessibilityNodeInfo createAccessibilityNodeInfo(int virtualViewId) { // // TODO(dnfield): We should add semantics properties for rows and columns in 2 dimensional lists, e.g. // GridView. Right now, we're only supporting ListViews and only if they have scroll children. - if (object.hasFlag(Flag.HAS_IMPLICIT_SCROLLING)) { - if (object.hasAction(Action.SCROLL_LEFT) || object.hasAction(Action.SCROLL_RIGHT)) { - if (Build.VERSION.SDK_INT > Build.VERSION_CODES.KITKAT && shouldSetCollectionInfo(object)) { + if (semanticsNode.hasFlag(Flag.HAS_IMPLICIT_SCROLLING)) { + if (semanticsNode.hasAction(Action.SCROLL_LEFT) || semanticsNode.hasAction(Action.SCROLL_RIGHT)) { + if (Build.VERSION.SDK_INT > Build.VERSION_CODES.KITKAT && shouldSetCollectionInfo(semanticsNode)) { result.setCollectionInfo(AccessibilityNodeInfo.CollectionInfo.obtain( 0, // rows - object.scrollChildren, // columns - false)); // hierarchical + semanticsNode.scrollChildren, // columns + false // hierarchical + )); } else { result.setClassName("android.widget.HorizontalScrollView"); } } else { - if (Build.VERSION.SDK_INT > Build.VERSION_CODES.JELLY_BEAN_MR2 && shouldSetCollectionInfo(object)) { + if (Build.VERSION.SDK_INT > Build.VERSION_CODES.JELLY_BEAN_MR2 && shouldSetCollectionInfo(semanticsNode)) { result.setCollectionInfo(AccessibilityNodeInfo.CollectionInfo.obtain( - object.scrollChildren, // rows + semanticsNode.scrollChildren, // rows 0, // columns - false)); // hierarchical + false // hierarchical + )); } else { result.setClassName("android.widget.ScrollView"); } @@ -351,53 +622,54 @@ public AccessibilityNodeInfo createAccessibilityNodeInfo(int virtualViewId) { // TODO(ianh): Once we're on SDK v23+, call addAction to // expose AccessibilityAction.ACTION_SCROLL_LEFT, _RIGHT, // _UP, and _DOWN when appropriate. - if (object.hasAction(Action.SCROLL_LEFT) || object.hasAction(Action.SCROLL_UP)) { + if (semanticsNode.hasAction(Action.SCROLL_LEFT) || semanticsNode.hasAction(Action.SCROLL_UP)) { result.addAction(AccessibilityNodeInfo.ACTION_SCROLL_FORWARD); } - if (object.hasAction(Action.SCROLL_RIGHT) || object.hasAction(Action.SCROLL_DOWN)) { + if (semanticsNode.hasAction(Action.SCROLL_RIGHT) || semanticsNode.hasAction(Action.SCROLL_DOWN)) { result.addAction(AccessibilityNodeInfo.ACTION_SCROLL_BACKWARD); } } - if (object.hasAction(Action.INCREASE) || object.hasAction(Action.DECREASE)) { + if (semanticsNode.hasAction(Action.INCREASE) || semanticsNode.hasAction(Action.DECREASE)) { // TODO(jonahwilliams): support AccessibilityAction.ACTION_SET_PROGRESS once SDK is // updated. result.setClassName("android.widget.SeekBar"); - if (object.hasAction(Action.INCREASE)) { + if (semanticsNode.hasAction(Action.INCREASE)) { result.addAction(AccessibilityNodeInfo.ACTION_SCROLL_FORWARD); } - if (object.hasAction(Action.DECREASE)) { + if (semanticsNode.hasAction(Action.DECREASE)) { result.addAction(AccessibilityNodeInfo.ACTION_SCROLL_BACKWARD); } } - if (object.hasFlag(Flag.IS_LIVE_REGION) && Build.VERSION.SDK_INT > Build.VERSION_CODES.JELLY_BEAN_MR2) { + if (semanticsNode.hasFlag(Flag.IS_LIVE_REGION) && Build.VERSION.SDK_INT > Build.VERSION_CODES.JELLY_BEAN_MR2) { result.setLiveRegion(View.ACCESSIBILITY_LIVE_REGION_POLITE); } - boolean hasCheckedState = object.hasFlag(Flag.HAS_CHECKED_STATE); - boolean hasToggledState = object.hasFlag(Flag.HAS_TOGGLED_STATE); + boolean hasCheckedState = semanticsNode.hasFlag(Flag.HAS_CHECKED_STATE); + boolean hasToggledState = semanticsNode.hasFlag(Flag.HAS_TOGGLED_STATE); assert !(hasCheckedState && hasToggledState); result.setCheckable(hasCheckedState || hasToggledState); if (hasCheckedState) { - result.setChecked(object.hasFlag(Flag.IS_CHECKED)); - result.setContentDescription(object.getValueLabelHint()); - if (object.hasFlag(Flag.IS_IN_MUTUALLY_EXCLUSIVE_GROUP)) + result.setChecked(semanticsNode.hasFlag(Flag.IS_CHECKED)); + result.setContentDescription(semanticsNode.getValueLabelHint()); + if (semanticsNode.hasFlag(Flag.IS_IN_MUTUALLY_EXCLUSIVE_GROUP)) { result.setClassName("android.widget.RadioButton"); - else + } else { result.setClassName("android.widget.CheckBox"); + } } else if (hasToggledState) { - result.setChecked(object.hasFlag(Flag.IS_TOGGLED)); + result.setChecked(semanticsNode.hasFlag(Flag.IS_TOGGLED)); result.setClassName("android.widget.Switch"); - result.setContentDescription(object.getValueLabelHint()); + result.setContentDescription(semanticsNode.getValueLabelHint()); } else { // Setting the text directly instead of the content description // will replace the "checked" or "not-checked" label. - result.setText(object.getValueLabelHint()); + result.setText(semanticsNode.getValueLabelHint()); } - result.setSelected(object.hasFlag(Flag.IS_SELECTED)); + result.setSelected(semanticsNode.hasFlag(Flag.IS_SELECTED)); // Accessibility Focus - if (a11yFocusedObject != null && a11yFocusedObject.id == virtualViewId) { + if (accessibilityFocusedSemanticsNode != null && accessibilityFocusedSemanticsNode.id == virtualViewId) { result.addAction(AccessibilityNodeInfo.ACTION_CLEAR_ACCESSIBILITY_FOCUS); } else { result.addAction(AccessibilityNodeInfo.ACTION_ACCESSIBILITY_FOCUS); @@ -405,18 +677,20 @@ public AccessibilityNodeInfo createAccessibilityNodeInfo(int virtualViewId) { // Actions on the local context menu if (Build.VERSION.SDK_INT >= 21) { - if (object.customAccessibilityActions != null) { - for (CustomAccessibilityAction action : object.customAccessibilityActions) { + if (semanticsNode.customAccessibilityActions != null) { + for (CustomAccessibilityAction action : semanticsNode.customAccessibilityActions) { result.addAction(new AccessibilityNodeInfo.AccessibilityAction( - action.resourceId, action.label)); + action.resourceId, + action.label + )); } } } - if (object.childrenInTraversalOrder != null) { - for (SemanticsObject child : object.childrenInTraversalOrder) { + if (semanticsNode.childrenInTraversalOrder != null) { + for (SemanticsNode child : semanticsNode.childrenInTraversalOrder) { if (!child.hasFlag(Flag.IS_HIDDEN)) { - result.addChild(owner, child.id); + result.addChild(rootAccessibilityView, child.id); } } } @@ -424,54 +698,68 @@ public AccessibilityNodeInfo createAccessibilityNodeInfo(int virtualViewId) { return result; } + /** + * Instructs the view represented by {@code virtualViewId} to carry out the desired {@code accessibilityAction}, + * perhaps configured by additional {@code arguments}. + * + * This method is invoked by Android's accessibility system. This method returns true if the + * desired {@code SemanticsNode} was found and was capable of performing the desired action, + * false otherwise. + * + * In a traditional Android app, the given view ID refers to a {@link View} within an Android + * {@link View} hierarchy. Flutter does not have an Android {@link View} hierarchy, therefore + * the given view ID is a {@code virtualViewId} that refers to a {@code SemanticsNode} within + * a Flutter app. The given arguments of this method are forwarded from Android to Flutter + * via {@link FlutterJNI}. + */ @Override - public boolean performAction(int virtualViewId, int action, Bundle arguments) { - SemanticsObject object = objects.get(virtualViewId); - if (object == null) { + public boolean performAction(int virtualViewId, int accessibilityAction, @Nullable Bundle arguments) { + SemanticsNode semanticsNode = flutterSemanticsTree.get(virtualViewId); + if (semanticsNode == null) { return false; } - switch (action) { + switch (accessibilityAction) { case AccessibilityNodeInfo.ACTION_CLICK: { // Note: TalkBack prior to Oreo doesn't use this handler and instead simulates a // click event at the center of the SemanticsNode. Other a11y services might go // through this handler though. - owner.dispatchSemanticsAction(virtualViewId, Action.TAP); + flutterJNI.dispatchSemanticsAction(virtualViewId, Action.TAP); return true; } case AccessibilityNodeInfo.ACTION_LONG_CLICK: { // Note: TalkBack doesn't use this handler and instead simulates a long click event // at the center of the SemanticsNode. Other a11y services might go through this // handler though. - owner.dispatchSemanticsAction(virtualViewId, Action.LONG_PRESS); + flutterJNI.dispatchSemanticsAction(virtualViewId, Action.LONG_PRESS); return true; } case AccessibilityNodeInfo.ACTION_SCROLL_FORWARD: { - if (object.hasAction(Action.SCROLL_UP)) { - owner.dispatchSemanticsAction(virtualViewId, Action.SCROLL_UP); - } else if (object.hasAction(Action.SCROLL_LEFT)) { + if (semanticsNode.hasAction(Action.SCROLL_UP)) { + flutterJNI.dispatchSemanticsAction(virtualViewId, Action.SCROLL_UP); + } else if (semanticsNode.hasAction(Action.SCROLL_LEFT)) { // TODO(ianh): bidi support using textDirection - owner.dispatchSemanticsAction(virtualViewId, Action.SCROLL_LEFT); - } else if (object.hasAction(Action.INCREASE)) { - object.value = object.increasedValue; + flutterJNI.dispatchSemanticsAction(virtualViewId, Action.SCROLL_LEFT); + } else if (semanticsNode.hasAction(Action.INCREASE)) { + semanticsNode.value = semanticsNode.increasedValue; // Event causes Android to read out the updated value. sendAccessibilityEvent(virtualViewId, AccessibilityEvent.TYPE_VIEW_SELECTED); - owner.dispatchSemanticsAction(virtualViewId, Action.INCREASE); + flutterJNI.dispatchSemanticsAction(virtualViewId, Action.INCREASE); } else { return false; } return true; } case AccessibilityNodeInfo.ACTION_SCROLL_BACKWARD: { - if (object.hasAction(Action.SCROLL_DOWN)) { - owner.dispatchSemanticsAction(virtualViewId, Action.SCROLL_DOWN); - } else if (object.hasAction(Action.SCROLL_RIGHT)) { + if (semanticsNode.hasAction(Action.SCROLL_DOWN)) { + flutterJNI.dispatchSemanticsAction(virtualViewId, Action.SCROLL_DOWN); + } else if (semanticsNode.hasAction(Action.SCROLL_RIGHT)) { // TODO(ianh): bidi support using textDirection - owner.dispatchSemanticsAction(virtualViewId, Action.SCROLL_RIGHT); - } else if (object.hasAction(Action.DECREASE)) { - object.value = object.decreasedValue; + flutterJNI.dispatchSemanticsAction(virtualViewId, Action.SCROLL_RIGHT); + } else if (semanticsNode.hasAction(Action.DECREASE)) { + semanticsNode.value = semanticsNode.decreasedValue; // Event causes Android to read out the updated value. sendAccessibilityEvent(virtualViewId, AccessibilityEvent.TYPE_VIEW_SELECTED); - owner.dispatchSemanticsAction(virtualViewId, Action.DECREASE); + flutterJNI.dispatchSemanticsAction(virtualViewId, Action.DECREASE); } else { return false; } @@ -484,7 +772,7 @@ public boolean performAction(int virtualViewId, int action, Bundle arguments) { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN_MR2) { return false; } - return performCursorMoveAction(object, virtualViewId, arguments, false); + return performCursorMoveAction(semanticsNode, virtualViewId, arguments, false); } case AccessibilityNodeInfo.ACTION_NEXT_AT_MOVEMENT_GRANULARITY: { // Text selection APIs aren't available until API 18. We can't handle the case here so return false @@ -493,29 +781,39 @@ public boolean performAction(int virtualViewId, int action, Bundle arguments) { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN_MR2) { return false; } - return performCursorMoveAction(object, virtualViewId, arguments, true); + return performCursorMoveAction(semanticsNode, virtualViewId, arguments, true); } case AccessibilityNodeInfo.ACTION_CLEAR_ACCESSIBILITY_FOCUS: { - owner.dispatchSemanticsAction(virtualViewId, Action.DID_LOSE_ACCESSIBILITY_FOCUS); + flutterJNI.dispatchSemanticsAction( + virtualViewId, + Action.DID_LOSE_ACCESSIBILITY_FOCUS + ); sendAccessibilityEvent( - virtualViewId, AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUS_CLEARED); - a11yFocusedObject = null; + virtualViewId, + AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUS_CLEARED + ); + accessibilityFocusedSemanticsNode = null; return true; } case AccessibilityNodeInfo.ACTION_ACCESSIBILITY_FOCUS: { - owner.dispatchSemanticsAction(virtualViewId, Action.DID_GAIN_ACCESSIBILITY_FOCUS); + flutterJNI.dispatchSemanticsAction( + virtualViewId, + Action.DID_GAIN_ACCESSIBILITY_FOCUS + ); sendAccessibilityEvent( - virtualViewId, AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUSED); + virtualViewId, + AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUSED + ); - if (a11yFocusedObject == null) { + if (accessibilityFocusedSemanticsNode == null) { // When Android focuses a node, it doesn't invalidate the view. // (It does when it sends ACTION_CLEAR_ACCESSIBILITY_FOCUS, so // we only have to worry about this when the focused node is null.) - owner.invalidate(); + rootAccessibilityView.invalidate(); } - a11yFocusedObject = object; + accessibilityFocusedSemanticsNode = semanticsNode; - if (object.hasAction(Action.INCREASE) || object.hasAction(Action.DECREASE)) { + if (semanticsNode.hasAction(Action.INCREASE) || semanticsNode.hasAction(Action.DECREASE)) { // SeekBars only announce themselves after this event. sendAccessibilityEvent(virtualViewId, AccessibilityEvent.TYPE_VIEW_SELECTED); } @@ -523,7 +821,7 @@ public boolean performAction(int virtualViewId, int action, Bundle arguments) { return true; } case ACTION_SHOW_ON_SCREEN: { - owner.dispatchSemanticsAction(virtualViewId, Action.SHOW_ON_SCREEN); + flutterJNI.dispatchSemanticsAction(virtualViewId, Action.SHOW_ON_SCREEN); return true; } case AccessibilityNodeInfo.ACTION_SET_SELECTION: { @@ -535,86 +833,110 @@ public boolean performAction(int virtualViewId, int action, Bundle arguments) { } final Map selection = new HashMap<>(); final boolean hasSelection = arguments != null - && arguments.containsKey( - AccessibilityNodeInfo.ACTION_ARGUMENT_SELECTION_START_INT) - && arguments.containsKey( - AccessibilityNodeInfo.ACTION_ARGUMENT_SELECTION_END_INT); + && arguments.containsKey(AccessibilityNodeInfo.ACTION_ARGUMENT_SELECTION_START_INT) + && arguments.containsKey(AccessibilityNodeInfo.ACTION_ARGUMENT_SELECTION_END_INT); if (hasSelection) { - selection.put("base", - arguments.getInt( - AccessibilityNodeInfo.ACTION_ARGUMENT_SELECTION_START_INT)); - selection.put("extent", - arguments.getInt( - AccessibilityNodeInfo.ACTION_ARGUMENT_SELECTION_END_INT)); + selection.put( + "base", + arguments.getInt(AccessibilityNodeInfo.ACTION_ARGUMENT_SELECTION_START_INT) + ); + selection.put( + "extent", + arguments.getInt(AccessibilityNodeInfo.ACTION_ARGUMENT_SELECTION_END_INT) + ); } else { // Clear the selection - selection.put("base", object.textSelectionExtent); - selection.put("extent", object.textSelectionExtent); + selection.put("base", semanticsNode.textSelectionExtent); + selection.put("extent", semanticsNode.textSelectionExtent); } - owner.dispatchSemanticsAction(virtualViewId, Action.SET_SELECTION, selection); + flutterJNI.dispatchSemanticsAction(virtualViewId, Action.SET_SELECTION, selection); return true; } case AccessibilityNodeInfo.ACTION_COPY: { - owner.dispatchSemanticsAction(virtualViewId, Action.COPY); + flutterJNI.dispatchSemanticsAction(virtualViewId, Action.COPY); return true; } case AccessibilityNodeInfo.ACTION_CUT: { - owner.dispatchSemanticsAction(virtualViewId, Action.CUT); + flutterJNI.dispatchSemanticsAction(virtualViewId, Action.CUT); return true; } case AccessibilityNodeInfo.ACTION_PASTE: { - owner.dispatchSemanticsAction(virtualViewId, Action.PASTE); + flutterJNI.dispatchSemanticsAction(virtualViewId, Action.PASTE); return true; } case AccessibilityNodeInfo.ACTION_DISMISS: { - owner.dispatchSemanticsAction(virtualViewId, Action.DISMISS); + flutterJNI.dispatchSemanticsAction(virtualViewId, Action.DISMISS); return true; } default: - // might be a custom accessibility action. - final int flutterId = action - firstResourceId; - CustomAccessibilityAction contextAction = - customAccessibilityActions.get(flutterId); + // might be a custom accessibility accessibilityAction. + final int flutterId = accessibilityAction - FIRST_RESOURCE_ID; + CustomAccessibilityAction contextAction = customAccessibilityActions.get(flutterId); if (contextAction != null) { - owner.dispatchSemanticsAction( - virtualViewId, Action.CUSTOM_ACTION, contextAction.id); + flutterJNI.dispatchSemanticsAction( + virtualViewId, + Action.CUSTOM_ACTION, + contextAction.id + ); return true; } } return false; } - @RequiresApi(18) + /** + * Handles the responsibilities of {@link #performAction(int, int, Bundle)} for the specific + * scenario of cursor movement. + */ @TargetApi(18) - boolean performCursorMoveAction( - SemanticsObject object, int virtualViewId, Bundle arguments, boolean forward) { - final int granularity = - arguments.getInt(AccessibilityNodeInfo.ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT); + @RequiresApi(18) + private boolean performCursorMoveAction( + @NonNull SemanticsNode semanticsNode, + int virtualViewId, + @NonNull Bundle arguments, + boolean forward + ) { + final int granularity = arguments.getInt( + AccessibilityNodeInfo.ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT + ); final boolean extendSelection = arguments.getBoolean( - AccessibilityNodeInfo.ACTION_ARGUMENT_EXTEND_SELECTION_BOOLEAN); + AccessibilityNodeInfo.ACTION_ARGUMENT_EXTEND_SELECTION_BOOLEAN + ); switch (granularity) { case AccessibilityNodeInfo.MOVEMENT_GRANULARITY_CHARACTER: { - if (forward && object.hasAction(Action.MOVE_CURSOR_FORWARD_BY_CHARACTER)) { - owner.dispatchSemanticsAction(virtualViewId, - Action.MOVE_CURSOR_FORWARD_BY_CHARACTER, extendSelection); + if (forward && semanticsNode.hasAction(Action.MOVE_CURSOR_FORWARD_BY_CHARACTER)) { + flutterJNI.dispatchSemanticsAction( + virtualViewId, + Action.MOVE_CURSOR_FORWARD_BY_CHARACTER, + extendSelection + ); return true; } - if (!forward && object.hasAction(Action.MOVE_CURSOR_BACKWARD_BY_CHARACTER)) { - owner.dispatchSemanticsAction(virtualViewId, - Action.MOVE_CURSOR_BACKWARD_BY_CHARACTER, extendSelection); + if (!forward && semanticsNode.hasAction(Action.MOVE_CURSOR_BACKWARD_BY_CHARACTER)) { + flutterJNI.dispatchSemanticsAction( + virtualViewId, + Action.MOVE_CURSOR_BACKWARD_BY_CHARACTER, + extendSelection + ); return true; } break; } case AccessibilityNodeInfo.MOVEMENT_GRANULARITY_WORD: - if (forward && object.hasAction(Action.MOVE_CURSOR_FORWARD_BY_WORD)) { - owner.dispatchSemanticsAction(virtualViewId, - Action.MOVE_CURSOR_FORWARD_BY_WORD, extendSelection); + if (forward && semanticsNode.hasAction(Action.MOVE_CURSOR_FORWARD_BY_WORD)) { + flutterJNI.dispatchSemanticsAction( + virtualViewId, + Action.MOVE_CURSOR_FORWARD_BY_WORD, + extendSelection + ); return true; } - if (!forward && object.hasAction(Action.MOVE_CURSOR_BACKWARD_BY_WORD)) { - owner.dispatchSemanticsAction(virtualViewId, - Action.MOVE_CURSOR_BACKWARD_BY_WORD, extendSelection); + if (!forward && semanticsNode.hasAction(Action.MOVE_CURSOR_BACKWARD_BY_WORD)) { + flutterJNI.dispatchSemanticsAction( + virtualViewId, + Action.MOVE_CURSOR_BACKWARD_BY_WORD, + extendSelection + ); return true; } break; @@ -624,76 +946,164 @@ boolean performCursorMoveAction( // TODO(ianh): implement findAccessibilityNodeInfosByText() + /** + * Finds the view in a hierarchy that currently has the given type of {@code focus}. + * + * This method is invoked by Android's accessibility system. + * + * Flutter does not have an Android {@link View} hierarchy. Therefore, Flutter conceptually + * handles this request by searching its semantics tree for the given {@code focus}, represented + * by {@link #flutterSemanticsTree}. In practice, this {@code AccessibilityBridge} always + * caches any active {@link #accessibilityFocusedSemanticsNode} and {@link #inputFocusedSemanticsNode}. + * Therefore, no searching is necessary. This method directly inspects the given {@code focus} + * type to return one of the cached nodes, null if the cached node is null, or null if a different + * {@code focus} type is requested. + */ @Override public AccessibilityNodeInfo findFocus(int focus) { switch (focus) { case AccessibilityNodeInfo.FOCUS_INPUT: { - if (inputFocusedObject != null) - return createAccessibilityNodeInfo(inputFocusedObject.id); + if (inputFocusedSemanticsNode != null) { + return createAccessibilityNodeInfo(inputFocusedSemanticsNode.id); + } } // Fall through to check FOCUS_ACCESSIBILITY case AccessibilityNodeInfo.FOCUS_ACCESSIBILITY: { - if (a11yFocusedObject != null) - return createAccessibilityNodeInfo(a11yFocusedObject.id); + if (accessibilityFocusedSemanticsNode != null) { + return createAccessibilityNodeInfo(accessibilityFocusedSemanticsNode.id); + } } } return null; } - private SemanticsObject getRootObject() { - assert objects.containsKey(0); - return objects.get(0); + /** + * Returns the {@link SemanticsNode} at the root of Flutter's semantics tree. + */ + private SemanticsNode getRootSemanticsNode() { + assert flutterSemanticsTree.containsKey(0); + return flutterSemanticsTree.get(0); } - private SemanticsObject getOrCreateObject(int id) { - SemanticsObject object = objects.get(id); - if (object == null) { - object = new SemanticsObject(); - object.id = id; - objects.put(id, object); - } - return object; + /** + * Returns an existing {@link SemanticsNode} with the given {@code id}, if it exists within + * {@link #flutterSemanticsTree}, or creates and returns a new {@link SemanticsNode} with the + * given {@code id}, adding the new {@link SemanticsNode} to the {@link #flutterSemanticsTree}. + * + * This method should only be invoked as a result of receiving new information from Flutter. + * The {@link #flutterSemanticsTree} is an Android cache of the last known state of a Flutter + * app's semantics tree, therefore, invoking this method in any other situation will result in + * a corrupt cache of Flutter's semantics tree. + */ + private SemanticsNode getOrCreateSemanticsNode(int id) { + SemanticsNode semanticsNode = flutterSemanticsTree.get(id); + if (semanticsNode == null) { + semanticsNode = new SemanticsNode(this); + semanticsNode.id = id; + flutterSemanticsTree.put(id, semanticsNode); + } + return semanticsNode; } - private CustomAccessibilityAction getOrCreateAction(int id) { + /** + * Returns an existing {@link CustomAccessibilityAction} with the given {@code id}, if it exists + * within {@link #customAccessibilityActions}, or creates and returns a new {@link CustomAccessibilityAction} + * with the given {@code id}, adding the new {@link CustomAccessibilityAction} to the + * {@link #customAccessibilityActions}. + * + * This method should only be invoked as a result of receiving new information from Flutter. + * The {@link #customAccessibilityActions} is an Android cache of the last known state of a Flutter + * app's registered custom accessibility actions, therefore, invoking this method in any other + * situation will result in a corrupt cache of Flutter's accessibility actions. + */ + private CustomAccessibilityAction getOrCreateAccessibilityAction(int id) { CustomAccessibilityAction action = customAccessibilityActions.get(id); if (action == null) { action = new CustomAccessibilityAction(); action.id = id; - action.resourceId = id + firstResourceId; + action.resourceId = id + FIRST_RESOURCE_ID; customAccessibilityActions.put(id, action); } return action; } - void handleTouchExplorationExit() { + /** + * A hover {@link MotionEvent} has occurred in the {@code View} that corresponds to this + * {@code AccessibilityBridge}. + * + * This method returns true if Flutter's accessibility system handled the hover event, false + * otherwise. + * + * This method should be invoked from the corresponding {@code View}'s + * {@link View#onHoverEvent(MotionEvent)}. + */ + public boolean onAccessibilityHoverEvent(MotionEvent event) { + if (!accessibilityManager.isTouchExplorationEnabled()) { + return false; + } + + if (event.getAction() == MotionEvent.ACTION_HOVER_ENTER || event.getAction() == MotionEvent.ACTION_HOVER_MOVE) { + handleTouchExploration(event.getX(), event.getY()); + } else if (event.getAction() == MotionEvent.ACTION_HOVER_EXIT) { + onTouchExplorationExit(); + } else { + Log.d("flutter", "unexpected accessibility hover event: " + event); + return false; + } + return true; + } + + /** + * This method should be invoked when a hover interaction has the cursor move off of a + * {@code SemanticsNode}. + * + * This method informs the Android accessibility system that a {@link AccessibilityEvent#TYPE_VIEW_HOVER_EXIT} + * has occurred. + */ + private void onTouchExplorationExit() { if (hoveredObject != null) { sendAccessibilityEvent(hoveredObject.id, AccessibilityEvent.TYPE_VIEW_HOVER_EXIT); hoveredObject = null; } } - void handleTouchExploration(float x, float y) { - if (objects.isEmpty()) { + /** + * This method should be invoked when a new hover interaction begins with a {@code SemanticsNode}, + * or when an existing hover interaction sees a movement of the cursor. + * + * This method checks to see if the cursor has moved from one {@code SemanticsNode} to another. + * If it has, this method informs the Android accessibility system of the change by first sending + * a {@link AccessibilityEvent#TYPE_VIEW_HOVER_ENTER} event for the new hover node, followed by + * a {@link AccessibilityEvent#TYPE_VIEW_HOVER_EXIT} event for the old hover node. + */ + private void handleTouchExploration(float x, float y) { + if (flutterSemanticsTree.isEmpty()) { return; } - SemanticsObject newObject = getRootObject().hitTest(new float[] {x, y, 0, 1}); - if (newObject != hoveredObject) { + SemanticsNode semanticsNodeUnderCursor = getRootSemanticsNode().hitTest(new float[] {x, y, 0, 1}); + if (semanticsNodeUnderCursor != hoveredObject) { // sending ENTER before EXIT is how Android wants it - if (newObject != null) { - sendAccessibilityEvent(newObject.id, AccessibilityEvent.TYPE_VIEW_HOVER_ENTER); + if (semanticsNodeUnderCursor != null) { + sendAccessibilityEvent(semanticsNodeUnderCursor.id, AccessibilityEvent.TYPE_VIEW_HOVER_ENTER); } if (hoveredObject != null) { sendAccessibilityEvent(hoveredObject.id, AccessibilityEvent.TYPE_VIEW_HOVER_EXIT); } - hoveredObject = newObject; + hoveredObject = semanticsNodeUnderCursor; } } - void updateCustomAccessibilityActions(ByteBuffer buffer, String[] strings) { + /** + * Updates the Android cache of Flutter's currently registered custom accessibility actions. + */ + // TODO(mattcarroll): Consider introducing ability to delete custom actions because they can + // probably come and go in Flutter, so we may want to reflect that here in + // the Android cache as well. + // TODO(mattcarroll): where is the encoding code for reference? + void updateCustomAccessibilityActions(@NonNull ByteBuffer buffer, @NonNull String[] strings) { while (buffer.hasRemaining()) { int id = buffer.getInt(); - CustomAccessibilityAction action = getOrCreateAction(id); + CustomAccessibilityAction action = getOrCreateAccessibilityAction(id); action.overrideId = buffer.getInt(); int stringIndex = buffer.getInt(); action.label = stringIndex == -1 ? null : strings[stringIndex]; @@ -702,26 +1112,32 @@ void updateCustomAccessibilityActions(ByteBuffer buffer, String[] strings) { } } - void updateSemantics(ByteBuffer buffer, String[] strings) { - ArrayList updated = new ArrayList<>(); + /** + * Updates {@link #flutterSemanticsTree} to reflect the latest state of Flutter's semantics tree. + * + * The latest state of Flutter's semantics tree is encoded in the given {@code buffer}. + */ + // TODO(mattcarroll): where is the encoding code for reference? + void updateSemantics(@NonNull ByteBuffer buffer, @NonNull String[] strings) { + ArrayList updated = new ArrayList<>(); while (buffer.hasRemaining()) { int id = buffer.getInt(); - SemanticsObject object = getOrCreateObject(id); - object.updateWith(buffer, strings); - if (object.hasFlag(Flag.IS_HIDDEN)) { + SemanticsNode semanticsNode = getOrCreateSemanticsNode(id); + semanticsNode.updateWith(buffer, strings); + if (semanticsNode.hasFlag(Flag.IS_HIDDEN)) { continue; } - if (object.hasFlag(Flag.IS_FOCUSED)) { - inputFocusedObject = object; + if (semanticsNode.hasFlag(Flag.IS_FOCUSED)) { + inputFocusedSemanticsNode = semanticsNode; } - if (object.hadPreviousConfig) { - updated.add(object); + if (semanticsNode.hadPreviousConfig) { + updated.add(semanticsNode); } } - Set visitedObjects = new HashSet<>(); - SemanticsObject rootObject = getRootObject(); - List newRoutes = new ArrayList<>(); + Set visitedObjects = new HashSet<>(); + SemanticsNode rootObject = getRootSemanticsNode(); + List newRoutes = new ArrayList<>(); if (rootObject != null) { final float[] identity = new float[16]; Matrix.setIdentityM(identity, 0); @@ -744,10 +1160,10 @@ void updateSemantics(ByteBuffer buffer, String[] strings) { // Dispatch a TYPE_WINDOW_STATE_CHANGED event if the most recent route id changed from the // previously cached route id. - SemanticsObject lastAdded = null; - for (SemanticsObject semanticsObject : newRoutes) { - if (!previousRoutes.contains(semanticsObject.id)) { - lastAdded = semanticsObject; + SemanticsNode lastAdded = null; + for (SemanticsNode semanticsNode : newRoutes) { + if (!flutterNavigationStack.contains(semanticsNode.id)) { + lastAdded = semanticsNode; } } if (lastAdded == null && newRoutes.size() > 0) { @@ -755,19 +1171,19 @@ void updateSemantics(ByteBuffer buffer, String[] strings) { } if (lastAdded != null && lastAdded.id != previousRouteId) { previousRouteId = lastAdded.id; - createWindowChangeEvent(lastAdded); + createAndSendWindowChangeEvent(lastAdded); } - previousRoutes.clear(); - for (SemanticsObject semanticsObject : newRoutes) { - previousRoutes.add(semanticsObject.id); + flutterNavigationStack.clear(); + for (SemanticsNode semanticsNode : newRoutes) { + flutterNavigationStack.add(semanticsNode.id); } - Iterator> it = objects.entrySet().iterator(); + Iterator> it = flutterSemanticsTree.entrySet().iterator(); while (it.hasNext()) { - Map.Entry entry = it.next(); - SemanticsObject object = entry.getValue(); + Map.Entry entry = it.next(); + SemanticsNode object = entry.getValue(); if (!visitedObjects.contains(object)) { - willRemoveSemanticsObject(object); + willRemoveSemanticsNode(object); it.remove(); } } @@ -776,7 +1192,7 @@ void updateSemantics(ByteBuffer buffer, String[] strings) { // see https://github.com/flutter/flutter/issues/14534 sendAccessibilityEvent(0, AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED); - for (SemanticsObject object : updated) { + for (SemanticsNode object : updated) { if (object.didScroll()) { AccessibilityEvent event = obtainAccessibilityEvent(object.id, AccessibilityEvent.TYPE_VIEW_SCROLLED); @@ -816,7 +1232,7 @@ void updateSemantics(ByteBuffer buffer, String[] strings) { event.setFromIndex(object.scrollIndex); int visibleChildren = 0; // handle hidden children at the beginning and end of the list. - for (SemanticsObject child : object.childrenInHitTestOrder) { + for (SemanticsNode child : object.childrenInHitTestOrder) { if (!child.hasFlag(Flag.IS_HIDDEN)) { visibleChildren += 1; } @@ -842,25 +1258,25 @@ void updateSemantics(ByteBuffer buffer, String[] strings) { sendAccessibilityEvent(object.id, AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED); } } else if (object.hasFlag(Flag.IS_TEXT_FIELD) && object.didChangeLabel() - && inputFocusedObject != null && inputFocusedObject.id == object.id) { + && inputFocusedSemanticsNode != null && inputFocusedSemanticsNode.id == object.id) { // Text fields should announce when their label changes while focused. We use a live // region tag to do so, and this event triggers that update. sendAccessibilityEvent(object.id, AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED); } - if (a11yFocusedObject != null && a11yFocusedObject.id == object.id + if (accessibilityFocusedSemanticsNode != null && accessibilityFocusedSemanticsNode.id == object.id && !object.hadFlag(Flag.IS_SELECTED) && object.hasFlag(Flag.IS_SELECTED)) { AccessibilityEvent event = obtainAccessibilityEvent(object.id, AccessibilityEvent.TYPE_VIEW_SELECTED); event.getText().add(object.label); sendAccessibilityEvent(event); } - if (inputFocusedObject != null && inputFocusedObject.id == object.id + if (inputFocusedSemanticsNode != null && inputFocusedSemanticsNode.id == object.id && object.hadFlag(Flag.IS_TEXT_FIELD) && object.hasFlag(Flag.IS_TEXT_FIELD) // If we have a TextField that has InputFocus, we should avoid announcing it if something // else we track has a11y focus. This needs to still work when, e.g., IME has a11y focus // or the "PASTE" popup is used though. // See more discussion at https://github.com/flutter/flutter/issues/23180 - && (a11yFocusedObject == null || (a11yFocusedObject.id == inputFocusedObject.id))) { + && (accessibilityFocusedSemanticsNode == null || (accessibilityFocusedSemanticsNode.id == inputFocusedSemanticsNode.id))) { String oldValue = object.previousValue != null ? object.previousValue : ""; String newValue = object.value != null ? object.value : ""; AccessibilityEvent event = createTextChangedEvent(object.id, oldValue, newValue); @@ -915,67 +1331,205 @@ private AccessibilityEvent createTextChangedEvent(int id, String oldValue, Strin return e; } - private AccessibilityEvent obtainAccessibilityEvent(int virtualViewId, int eventType) { - assert virtualViewId != ROOT_NODE_ID; - AccessibilityEvent event = AccessibilityEvent.obtain(eventType); - event.setPackageName(owner.getContext().getPackageName()); - event.setSource(owner, virtualViewId); - return event; - } - - private void sendAccessibilityEvent(int virtualViewId, int eventType) { - if (!accessibilityEnabled) { + /** + * Sends an accessibility event of the given {@code eventType} to Android's accessibility + * system with the given {@code viewId} represented as the source of the event. + * + * The given {@code viewId} may either belong to {@link #rootAccessibilityView}, or any + * Flutter {@link SemanticsNode}. + */ + private void sendAccessibilityEvent(int viewId, int eventType) { + if (!accessibilityManager.isEnabled()) { return; } - if (virtualViewId == ROOT_NODE_ID) { - owner.sendAccessibilityEvent(eventType); + if (viewId == ROOT_NODE_ID) { + rootAccessibilityView.sendAccessibilityEvent(eventType); } else { - sendAccessibilityEvent(obtainAccessibilityEvent(virtualViewId, eventType)); + sendAccessibilityEvent(obtainAccessibilityEvent(viewId, eventType)); } } - private void sendAccessibilityEvent(AccessibilityEvent event) { - if (!accessibilityEnabled) { + /** + * Sends the given {@link AccessibilityEvent} to Android's accessibility system for a given + * Flutter {@link SemanticsNode}. + * + * This method should only be called for a Flutter {@link SemanticsNode}, not a traditional + * Android {@code View}, i.e., {@link #rootAccessibilityView}. + */ + private void sendAccessibilityEvent(@NonNull AccessibilityEvent event) { + if (!accessibilityManager.isEnabled()) { return; } - owner.getParent().requestSendAccessibilityEvent(owner, event); + // TODO(mattcarroll): why are we explicitly talking to the root view's parent? + rootAccessibilityView.getParent().requestSendAccessibilityEvent(rootAccessibilityView, event); } - private void createWindowChangeEvent(SemanticsObject route) { - AccessibilityEvent e = - obtainAccessibilityEvent(route.id, AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED); + /** + * Factory method that creates a {@link AccessibilityEvent#TYPE_WINDOW_STATE_CHANGED} and sends + * the event to Android's accessibility system. + * + * The given {@code route} should be a {@link SemanticsNode} that represents a navigation route + * in the Flutter app. + */ + private void createAndSendWindowChangeEvent(@NonNull SemanticsNode route) { + AccessibilityEvent event = obtainAccessibilityEvent( + route.id, + AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED + ); String routeName = route.getRouteName(); - e.getText().add(routeName); - sendAccessibilityEvent(e); + event.getText().add(routeName); + sendAccessibilityEvent(event); } - private void willRemoveSemanticsObject(SemanticsObject object) { - assert objects.containsKey(object.id); - assert objects.get(object.id) == object; - object.parent = null; - if (a11yFocusedObject == object) { - sendAccessibilityEvent(a11yFocusedObject.id, - AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUS_CLEARED); - a11yFocusedObject = null; - } - if (inputFocusedObject == object) { - inputFocusedObject = null; - } - if (hoveredObject == object) { + /** + * Factory method that creates a new {@link AccessibilityEvent} that is configured to represent + * the Flutter {@link SemanticsNode} represented by the given {@code virtualViewId}, categorized + * as the given {@code eventType}. + * + * This method should *only* be called for Flutter {@link SemanticsNode}s. It should *not* be + * invoked to create an {@link AccessibilityEvent} for the {@link #rootAccessibilityView}. + */ + private AccessibilityEvent obtainAccessibilityEvent(int virtualViewId, int eventType) { + assert virtualViewId != ROOT_NODE_ID; + AccessibilityEvent event = AccessibilityEvent.obtain(eventType); + event.setPackageName(rootAccessibilityView.getContext().getPackageName()); + event.setSource(rootAccessibilityView, virtualViewId); + return event; + } + + /** + * Hook called just before a {@link SemanticsNode} is removed from the Android cache of Flutter's + * semantics tree. + */ + private void willRemoveSemanticsNode(SemanticsNode semanticsNodeToBeRemoved) { + assert flutterSemanticsTree.containsKey(semanticsNodeToBeRemoved.id); + assert flutterSemanticsTree.get(semanticsNodeToBeRemoved.id) == semanticsNodeToBeRemoved; + // TODO(mattcarroll): should parent be set to "null" here? Changing the parent seems like the + // behavior of a method called "removeSemanticsNode()". The same is true + // for null'ing accessibilityFocusedSemanticsNode, inputFocusedSemanticsNode, + // and hoveredObject. Is this a hook method or a command? + semanticsNodeToBeRemoved.parent = null; + if (accessibilityFocusedSemanticsNode == semanticsNodeToBeRemoved) { + sendAccessibilityEvent( + accessibilityFocusedSemanticsNode.id, + AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUS_CLEARED + ); + accessibilityFocusedSemanticsNode = null; + } + if (inputFocusedSemanticsNode == semanticsNodeToBeRemoved) { + inputFocusedSemanticsNode = null; + } + if (hoveredObject == semanticsNodeToBeRemoved) { hoveredObject = null; } } - void reset() { - objects.clear(); - if (a11yFocusedObject != null) - sendAccessibilityEvent(a11yFocusedObject.id, - AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUS_CLEARED); - a11yFocusedObject = null; + /** + * Resets the {@code AccessibilityBridge}: + *
      + *
    • Clears {@link #flutterSemanticsTree}, the Android cache of Flutter's semantics tree
    • + *
    • Releases focus on any active {@link #accessibilityFocusedSemanticsNode}
    • + *
    • Clears any hovered {@code SemanticsNode}
    • + *
    • Sends a {@link AccessibilityEvent#TYPE_WINDOW_CONTENT_CHANGED} event
    • + *
    + */ + // TODO(mattcarroll): under what conditions is this method expected to be invoked? + public void reset() { + flutterSemanticsTree.clear(); + if (accessibilityFocusedSemanticsNode != null) { + sendAccessibilityEvent( + accessibilityFocusedSemanticsNode.id, + AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUS_CLEARED + ); + } + accessibilityFocusedSemanticsNode = null; hoveredObject = null; sendAccessibilityEvent(0, AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED); } + /** + * Listener that can be set on a {@link AccessibilityBridge}, which is invoked any time + * accessibility is turned on/off, or touch exploration is turned on/off. + */ + public interface OnAccessibilityChangeListener { + void onAccessibilityChanged(boolean isAccessibilityEnabled, boolean isTouchExplorationEnabled); + } + + // Must match SemanticsActions in semantics.dart + // https://github.com/flutter/engine/blob/master/lib/ui/semantics.dart + public enum Action { + TAP(1 << 0), + LONG_PRESS(1 << 1), + SCROLL_LEFT(1 << 2), + SCROLL_RIGHT(1 << 3), + SCROLL_UP(1 << 4), + SCROLL_DOWN(1 << 5), + INCREASE(1 << 6), + DECREASE(1 << 7), + SHOW_ON_SCREEN(1 << 8), + MOVE_CURSOR_FORWARD_BY_CHARACTER(1 << 9), + MOVE_CURSOR_BACKWARD_BY_CHARACTER(1 << 10), + SET_SELECTION(1 << 11), + COPY(1 << 12), + CUT(1 << 13), + PASTE(1 << 14), + DID_GAIN_ACCESSIBILITY_FOCUS(1 << 15), + DID_LOSE_ACCESSIBILITY_FOCUS(1 << 16), + CUSTOM_ACTION(1 << 17), + DISMISS(1 << 18), + MOVE_CURSOR_FORWARD_BY_WORD(1 << 19), + MOVE_CURSOR_BACKWARD_BY_WORD(1 << 20); + + public final int value; + + Action(int value) { + this.value = value; + } + } + + // Must match SemanticsFlag in semantics.dart + // https://github.com/flutter/engine/blob/master/lib/ui/semantics.dart + private enum Flag { + HAS_CHECKED_STATE(1 << 0), + IS_CHECKED(1 << 1), + IS_SELECTED(1 << 2), + IS_BUTTON(1 << 3), + IS_TEXT_FIELD(1 << 4), + IS_FOCUSED(1 << 5), + HAS_ENABLED_STATE(1 << 6), + IS_ENABLED(1 << 7), + IS_IN_MUTUALLY_EXCLUSIVE_GROUP(1 << 8), + IS_HEADER(1 << 9), + IS_OBSCURED(1 << 10), + SCOPES_ROUTE(1 << 11), + NAMES_ROUTE(1 << 12), + IS_HIDDEN(1 << 13), + IS_IMAGE(1 << 14), + IS_LIVE_REGION(1 << 15), + HAS_TOGGLED_STATE(1 << 16), + IS_TOGGLED(1 << 17), + HAS_IMPLICIT_SCROLLING(1 << 18); + + final int value; + + Flag(int value) { + this.value = value; + } + } + + // Must match the enum defined in window.dart. + private enum AccessibilityFeature { + ACCESSIBLE_NAVIGATION(1 << 0), + INVERT_COLORS(1 << 1), // NOT SUPPORTED + DISABLE_ANIMATIONS(1 << 2); + + final int value; + + AccessibilityFeature(int value) { + this.value = value; + } + } + private enum TextDirection { UNKNOWN, LTR, @@ -992,64 +1546,95 @@ public static TextDirection fromInt(int value) { } } - private class CustomAccessibilityAction { + /** + * Accessibility action that is defined within a given Flutter application, as opposed to the + * standard accessibility actions that are available in the Flutter framework. + * + * Flutter and Android support a number of built-in accessibility actions. However, these + * predefined actions are not always sufficient for a desired interaction. Android facilitates + * custom accessibility actions, https://developer.android.com/reference/android/view/accessibility/AccessibilityNodeInfo.AccessibilityAction. + * Flutter supports custom accessibility actions via {@code customSemanticsActions} within + * a {@code Semantics} widget, https://docs.flutter.io/flutter/widgets/Semantics-class.html. + * + * See the Android documentation for custom accessibility actions: + * https://developer.android.com/reference/android/view/accessibility/AccessibilityNodeInfo.AccessibilityAction + * + * See the Flutter documentation for the Semantics widget: + * https://docs.flutter.io/flutter/widgets/Semantics-class.html + */ + private static class CustomAccessibilityAction { CustomAccessibilityAction() {} - /// Resource id is the id of the custom action plus a minimum value so that the identifier - /// does not collide with existing Android accessibility actions. - int resourceId = -1; - int id = -1; - int overrideId = -1; + // The ID of the custom action plus a minimum value so that the identifier + // does not collide with existing Android accessibility actions. This ID + // represents and Android resource ID, not a Flutter ID. + private int resourceId = -1; - /// The label is the user presented value which is displayed in the local context menu. - String label; + // The Flutter ID of this custom accessibility action. See Flutter's Semantics widget for + // custom accessibility action definitions: https://docs.flutter.io/flutter/widgets/Semantics-class.html + private int id = -1; - /// The hint is the text used in overriden standard actions. - String hint; - - boolean isStandardAction() { - return overrideId != -1; - } - } - /// Value is derived from ACTION_TYPE_MASK in AccessibilityNodeInfo.java - static int firstResourceId = 267386881; + // The ID of the standard Flutter accessibility action that this {@code CustomAccessibilityAction} + // overrides with a custom {@code label} and/or {@code hint}. + private int overrideId = -1; + // The user presented value which is displayed in the local context menu. + private String label; - static boolean hasSemanticsObjectAncestor(SemanticsObject target, Predicate tester) { - return target != null && target.getAncestor(tester) != null; + // The text used in overridden standard actions. + private String hint; } - private class SemanticsObject { - SemanticsObject() {} - - int id = -1; - - int flags; - int actions; - int textSelectionBase; - int textSelectionExtent; - int scrollChildren; - int scrollIndex; - float scrollPosition; - float scrollExtentMax; - float scrollExtentMin; - String label; - String value; - String increasedValue; - String decreasedValue; - String hint; - TextDirection textDirection; - - boolean hadPreviousConfig = false; - int previousFlags; - int previousActions; - int previousTextSelectionBase; - int previousTextSelectionExtent; - float previousScrollPosition; - float previousScrollExtentMax; - float previousScrollExtentMin; - String previousValue; - String previousLabel; + /** + * Flutter {@code SemanticsNode} represented in Java/Android. + * + * Flutter maintains a semantics tree that is controlled by, but is independent of Flutter's + * element tree, i.e., widgets/elements/render objects. Flutter's semantics tree must be cached + * on the Android side so that Android can query any {@code SemanticsNode} at any time. This + * class represents a single node in the semantics tree, and it is a Java representation of the + * analogous concept within Flutter. + * + * To see how this {@code SemanticsNode}'s fields correspond to Flutter's semantics system, see + * semantics.dart: https://github.com/flutter/engine/blob/master/lib/ui/semantics.dart + */ + private static class SemanticsNode { + private static boolean nullableHasAncestor(SemanticsNode target, Predicate tester) { + return target != null && target.getAncestor(tester) != null; + } + + final AccessibilityBridge accessibilityBridge; + + // Flutter ID of this {@code SemanticsNode}. + private int id = -1; + + private int flags; + private int actions; + private int textSelectionBase; + private int textSelectionExtent; + private int scrollChildren; + private int scrollIndex; + private float scrollPosition; + private float scrollExtentMax; + private float scrollExtentMin; + private String label; + private String value; + private String increasedValue; + private String decreasedValue; + private String hint; + + // See Flutter's {@code SemanticsNode#textDirection}. + private TextDirection textDirection; + + private boolean hadPreviousConfig = false; + private int previousFlags; + private int previousActions; + private int previousTextSelectionBase; + private int previousTextSelectionExtent; + private float previousScrollPosition; + private float previousScrollExtentMax; + private float previousScrollExtentMin; + private String previousValue; + private String previousLabel; private float left; private float top; @@ -1057,12 +1642,12 @@ private class SemanticsObject { private float bottom; private float[] transform; - SemanticsObject parent; - List childrenInTraversalOrder; - List childrenInHitTestOrder; - List customAccessibilityActions; - CustomAccessibilityAction onTapOverride; - CustomAccessibilityAction onLongPressOverride; + private SemanticsNode parent; + private List childrenInTraversalOrder; + private List childrenInHitTestOrder; + private List customAccessibilityActions; + private CustomAccessibilityAction onTapOverride; + private CustomAccessibilityAction onLongPressOverride; private boolean inverseTransformDirty = true; private float[] inverseTransform; @@ -1071,8 +1656,16 @@ private class SemanticsObject { private float[] globalTransform; private Rect globalRect; - SemanticsObject getAncestor(Predicate tester) { - SemanticsObject nextAncestor = parent; + SemanticsNode(@NonNull AccessibilityBridge accessibilityBridge) { + this.accessibilityBridge = accessibilityBridge; + } + + /** + * Returns the ancestor of this {@code SemanticsNode} for which {@link Predicate#test(Object)} + * returns true, or null if no such ancestor exists. + */ + private SemanticsNode getAncestor(Predicate tester) { + SemanticsNode nextAncestor = parent; while (nextAncestor != null) { if (tester.test(nextAncestor)) { return nextAncestor; @@ -1082,51 +1675,61 @@ SemanticsObject getAncestor(Predicate tester) { return null; } - boolean hasAction(Action action) { + /** + * Returns true if the given {@code action} is supported by this {@code SemanticsNode}. + * + * This method only applies to this {@code SemanticsNode} and does not implicitly search + * its children. + */ + private boolean hasAction(@NonNull Action action) { return (actions & action.value) != 0; } - boolean hadAction(Action action) { + /** + * Returns true if the given {@code action} was supported by the immediately previous + * version of this {@code SemanticsNode}. + */ + private boolean hadAction(@NonNull Action action) { return (previousActions & action.value) != 0; } - boolean hasFlag(Flag flag) { + private boolean hasFlag(@NonNull Flag flag) { return (flags & flag.value) != 0; } - boolean hadFlag(Flag flag) { + private boolean hadFlag(@NonNull Flag flag) { assert hadPreviousConfig; return (previousFlags & flag.value) != 0; } - boolean didScroll() { + private boolean didScroll() { return !Float.isNaN(scrollPosition) && !Float.isNaN(previousScrollPosition) && previousScrollPosition != scrollPosition; } - boolean didChangeLabel() { + private boolean didChangeLabel() { if (label == null && previousLabel == null) { return false; } return label == null || previousLabel == null || !label.equals(previousLabel); } - void log(String indent, boolean recursive) { + private void log(@NonNull String indent, boolean recursive) { Log.i(TAG, - indent + "SemanticsObject id=" + id + " label=" + label + " actions=" + actions + indent + "SemanticsNode id=" + id + " label=" + label + " actions=" + actions + " flags=" + flags + "\n" + indent + " +-- textDirection=" + textDirection + "\n" + indent + " +-- rect.ltrb=(" + left + ", " + top + ", " + right + ", " + bottom + ")\n" + indent + " +-- transform=" + Arrays.toString(transform) + "\n"); if (childrenInTraversalOrder != null && recursive) { String childIndent = indent + " "; - for (SemanticsObject child : childrenInTraversalOrder) { + for (SemanticsNode child : childrenInTraversalOrder) { child.log(childIndent, recursive); } } } - void updateWith(ByteBuffer buffer, String[] strings) { + private void updateWith(@NonNull ByteBuffer buffer, @NonNull String[] strings) { hadPreviousConfig = true; previousValue = value; previousLabel = label; @@ -1190,7 +1793,7 @@ void updateWith(ByteBuffer buffer, String[] strings) { childrenInTraversalOrder.clear(); for (int i = 0; i < childCount; ++i) { - SemanticsObject child = getOrCreateObject(buffer.getInt()); + SemanticsNode child = accessibilityBridge.getOrCreateSemanticsNode(buffer.getInt()); child.parent = this; childrenInTraversalOrder.add(child); } @@ -1201,7 +1804,7 @@ void updateWith(ByteBuffer buffer, String[] strings) { childrenInHitTestOrder.clear(); for (int i = 0; i < childCount; ++i) { - SemanticsObject child = getOrCreateObject(buffer.getInt()); + SemanticsNode child = accessibilityBridge.getOrCreateSemanticsNode(buffer.getInt()); child.parent = this; childrenInHitTestOrder.add(child); } @@ -1216,7 +1819,7 @@ void updateWith(ByteBuffer buffer, String[] strings) { customAccessibilityActions.clear(); for (int i = 0; i < actionCount; i++) { - CustomAccessibilityAction action = getOrCreateAction(buffer.getInt()); + CustomAccessibilityAction action = accessibilityBridge.getOrCreateAccessibilityAction(buffer.getInt()); if (action.overrideId == Action.TAP.value) { onTapOverride = action; } else if (action.overrideId == Action.LONG_PRESS.value) { @@ -1245,12 +1848,12 @@ private void ensureInverseTransform() { } } - Rect getGlobalRect() { + private Rect getGlobalRect() { assert !globalGeometryDirty; return globalRect; } - SemanticsObject hitTest(float[] point) { + private SemanticsNode hitTest(float[] point) { final float w = point[3]; final float x = point[0] / w; final float y = point[1] / w; @@ -1258,13 +1861,13 @@ SemanticsObject hitTest(float[] point) { if (childrenInHitTestOrder != null) { final float[] transformedPoint = new float[4]; for (int i = 0; i < childrenInHitTestOrder.size(); i += 1) { - final SemanticsObject child = childrenInHitTestOrder.get(i); + final SemanticsNode child = childrenInHitTestOrder.get(i); if (child.hasFlag(Flag.IS_HIDDEN)) { continue; } child.ensureInverseTransform(); Matrix.multiplyMV(transformedPoint, 0, child.inverseTransform, 0, point, 0); - final SemanticsObject result = child.hitTest(transformedPoint); + final SemanticsNode result = child.hitTest(transformedPoint); if (result != null) { return result; } @@ -1275,7 +1878,7 @@ SemanticsObject hitTest(float[] point) { // TODO(goderbauer): This should be decided by the framework once we have more information // about focusability there. - boolean isFocusable() { + private boolean isFocusable() { // We enforce in the framework that no other useful semantics are merged with these // nodes. if (hasFlag(Flag.SCOPES_ROUTE)) { @@ -1288,7 +1891,7 @@ boolean isFocusable() { || (hint != null && !hint.isEmpty()); } - void collectRoutes(List edges) { + private void collectRoutes(List edges) { if (hasFlag(Flag.SCOPES_ROUTE)) { edges.add(this); } @@ -1299,7 +1902,7 @@ void collectRoutes(List edges) { } } - String getRouteName() { + private String getRouteName() { // Returns the first non-null and non-empty semantic label of a child // with an NamesRoute flag. Otherwise returns null. if (hasFlag(Flag.NAMES_ROUTE)) { @@ -1318,7 +1921,7 @@ String getRouteName() { return null; } - void updateRecursively(float[] ancestorTransform, Set visitedObjects, + private void updateRecursively(float[] ancestorTransform, Set visitedObjects, boolean forceUpdate) { visitedObjects.add(this); diff --git a/shell/platform/android/io/flutter/view/FlutterView.java b/shell/platform/android/io/flutter/view/FlutterView.java index 6161a23c5f4af..18434c28924aa 100644 --- a/shell/platform/android/io/flutter/view/FlutterView.java +++ b/shell/platform/android/io/flutter/view/FlutterView.java @@ -8,12 +8,10 @@ import android.app.Activity; import android.content.Context; import android.content.res.Configuration; -import android.database.ContentObserver; import android.graphics.Bitmap; import android.graphics.PixelFormat; import android.graphics.Rect; import android.graphics.SurfaceTexture; -import android.net.Uri; import android.os.Build; import android.os.Handler; import android.os.LocaleList; @@ -52,8 +50,7 @@ /** * An Android view containing a Flutter app. */ -public class FlutterView extends SurfaceView - implements BinaryMessenger, TextureRegistry, AccessibilityManager.AccessibilityStateChangeListener { +public class FlutterView extends SurfaceView implements BinaryMessenger, TextureRegistry { /** * Interface for those objects that maintain and expose a reference to a * {@code FlutterView} (such as a full-screen Flutter activity). @@ -91,7 +88,6 @@ static final class ViewportMetrics { } private final DartExecutor dartExecutor; - private final AccessibilityChannel accessibilityChannel; private final NavigationChannel navigationChannel; private final KeyEventChannel keyEventChannel; private final LifecycleChannel lifecycleChannel; @@ -105,14 +101,19 @@ static final class ViewportMetrics { private AccessibilityBridge mAccessibilityNodeProvider; private final SurfaceHolder.Callback mSurfaceCallback; private final ViewportMetrics mMetrics; - private final AccessibilityManager mAccessibilityManager; private final List mActivityLifecycleListeners; private final List mFirstFrameListeners; private final AtomicLong nextTextureId = new AtomicLong(0L); private FlutterNativeView mNativeView; - private final AnimationScaleObserver mAnimationScaleObserver; private boolean mIsSoftwareRenderingEnabled = false; // using the software renderer or not + private final AccessibilityBridge.OnAccessibilityChangeListener onAccessibilityChangeListener = new AccessibilityBridge.OnAccessibilityChangeListener() { + @Override + public void onAccessibilityChanged(boolean isAccessibilityEnabled, boolean isTouchExplorationEnabled) { + resetWillNotDraw(isAccessibilityEnabled, isTouchExplorationEnabled); + } + }; + public FlutterView(Context context) { this(context, null); } @@ -133,7 +134,6 @@ public FlutterView(Context context, AttributeSet attrs, FlutterNativeView native dartExecutor = mNativeView.getDartExecutor(); mIsSoftwareRenderingEnabled = FlutterJNI.nativeGetIsSoftwareRenderingEnabled(); - mAnimationScaleObserver = new AnimationScaleObserver(new Handler()); mMetrics = new ViewportMetrics(); mMetrics.devicePixelRatio = context.getResources().getDisplayMetrics().density; setFocusable(true); @@ -162,13 +162,10 @@ public void surfaceDestroyed(SurfaceHolder holder) { }; getHolder().addCallback(mSurfaceCallback); - mAccessibilityManager = (AccessibilityManager) getContext().getSystemService(Context.ACCESSIBILITY_SERVICE); - mActivityLifecycleListeners = new ArrayList<>(); mFirstFrameListeners = new ArrayList<>(); // Create all platform channels - accessibilityChannel = new AccessibilityChannel(dartExecutor); navigationChannel = new NavigationChannel(dartExecutor); keyEventChannel = new KeyEventChannel(dartExecutor); lifecycleChannel = new LifecycleChannel(dartExecutor); @@ -236,7 +233,6 @@ public void onPause() { } public void onPostResume() { - updateAccessibilityFeatures(); for (ActivityLifecycleListener listener : mActivityLifecycleListeners) { listener.onPostResume(); } @@ -573,7 +569,7 @@ public boolean onHoverEvent(MotionEvent event) { return false; } - boolean handled = handleAccessibilityHoverEvent(event); + boolean handled = mAccessibilityNodeProvider.onAccessibilityHoverEvent(event); if (!handled) { // TODO(ianh): Expose hover events to the platform, // implementing ADD, REMOVE, etc. @@ -746,6 +742,12 @@ private void preRun() { resetAccessibilityTree(); } + void resetAccessibilityTree() { + if (mAccessibilityNodeProvider != null) { + mAccessibilityNodeProvider.reset(); + } + } + private void postRun() { } @@ -844,206 +846,52 @@ public void onFirstFrame() { } } - // ACCESSIBILITY - - private boolean mAccessibilityEnabled = false; - private boolean mTouchExplorationEnabled = false; - private int mAccessibilityFeatureFlags = 0; - private TouchExplorationListener mTouchExplorationListener; - - protected void dispatchSemanticsAction(int id, AccessibilityBridge.Action action) { - dispatchSemanticsAction(id, action, null); - } - - protected void dispatchSemanticsAction(int id, AccessibilityBridge.Action action, Object args) { - if (!isAttached()) - return; - ByteBuffer encodedArgs = null; - int position = 0; - if (args != null) { - encodedArgs = StandardMessageCodec.INSTANCE.encodeMessage(args); - position = encodedArgs.position(); - } - mNativeView.getFlutterJNI().dispatchSemanticsAction(id, action.value, encodedArgs, position); - } - @Override protected void onAttachedToWindow() { super.onAttachedToWindow(); - mAccessibilityEnabled = mAccessibilityManager.isEnabled(); - mTouchExplorationEnabled = mAccessibilityManager.isTouchExplorationEnabled(); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { - Uri transitionUri = Settings.Global.getUriFor(Settings.Global.TRANSITION_ANIMATION_SCALE); - getContext().getContentResolver().registerContentObserver(transitionUri, false, mAnimationScaleObserver); - } - if (mAccessibilityEnabled || mTouchExplorationEnabled) { - ensureAccessibilityEnabled(); - } - if (mTouchExplorationEnabled) { - mAccessibilityFeatureFlags |= AccessibilityFeature.ACCESSIBLE_NAVIGATION.value; - } else { - mAccessibilityFeatureFlags &= ~AccessibilityFeature.ACCESSIBLE_NAVIGATION.value; - } - // Apply additional accessibility settings - updateAccessibilityFeatures(); - resetWillNotDraw(); - mAccessibilityManager.addAccessibilityStateChangeListener(this); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { - if (mTouchExplorationListener == null) { - mTouchExplorationListener = new TouchExplorationListener(); - } - mAccessibilityManager.addTouchExplorationStateChangeListener(mTouchExplorationListener); - } - } + mAccessibilityNodeProvider = new AccessibilityBridge( + this, + getFlutterNativeView().getFlutterJNI(), + new AccessibilityChannel(dartExecutor), + (AccessibilityManager) getContext().getSystemService(Context.ACCESSIBILITY_SERVICE), + getContext().getContentResolver() + ); + mAccessibilityNodeProvider.setOnAccessibilityChangeListener(onAccessibilityChangeListener); - private void updateAccessibilityFeatures() { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { - String transitionAnimationScale = Settings.Global.getString(getContext().getContentResolver(), - Settings.Global.TRANSITION_ANIMATION_SCALE); - if (transitionAnimationScale != null && transitionAnimationScale.equals("0")) { - mAccessibilityFeatureFlags |= AccessibilityFeature.DISABLE_ANIMATIONS.value; - } else { - mAccessibilityFeatureFlags &= ~AccessibilityFeature.DISABLE_ANIMATIONS.value; - } - } - mNativeView.getFlutterJNI().setAccessibilityFeatures(mAccessibilityFeatureFlags); + resetWillNotDraw( + mAccessibilityNodeProvider.isAccessibilityEnabled(), + mAccessibilityNodeProvider.isTouchExplorationEnabled() + ); } @Override protected void onDetachedFromWindow() { super.onDetachedFromWindow(); - getContext().getContentResolver().unregisterContentObserver(mAnimationScaleObserver); - mAccessibilityManager.removeAccessibilityStateChangeListener(this); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { - mAccessibilityManager.removeTouchExplorationStateChangeListener(mTouchExplorationListener); - } + + mAccessibilityNodeProvider.release(); + mAccessibilityNodeProvider = null; } - private void resetWillNotDraw() { + // TODO(mattcarroll): Confer with Ian as to why we need this method. Delete if possible, otherwise add comments. + private void resetWillNotDraw(boolean isAccessibilityEnabled, boolean isTouchExplorationEnabled) { if (!mIsSoftwareRenderingEnabled) { - setWillNotDraw(!(mAccessibilityEnabled || mTouchExplorationEnabled)); + setWillNotDraw(!(isAccessibilityEnabled || isTouchExplorationEnabled)); } else { setWillNotDraw(false); } } - @Override - public void onAccessibilityStateChanged(boolean enabled) { - if (enabled) { - ensureAccessibilityEnabled(); - } else { - mAccessibilityEnabled = false; - if (mAccessibilityNodeProvider != null) { - mAccessibilityNodeProvider.setAccessibilityEnabled(false); - } - mNativeView.getFlutterJNI().setSemanticsEnabled(false); - } - resetWillNotDraw(); - } - - /// Must match the enum defined in window.dart. - private enum AccessibilityFeature { - ACCESSIBLE_NAVIGATION(1 << 0), - INVERT_COLORS(1 << 1), // NOT SUPPORTED - DISABLE_ANIMATIONS(1 << 2); - - AccessibilityFeature(int value) { - this.value = value; - } - - final int value; - } - - // Listens to the global TRANSITION_ANIMATION_SCALE property and notifies us so - // that we can disable animations in Flutter. - private class AnimationScaleObserver extends ContentObserver { - public AnimationScaleObserver(Handler handler) { - super(handler); - } - - @Override - public void onChange(boolean selfChange) { - this.onChange(selfChange, null); - } - - @Override - public void onChange(boolean selfChange, Uri uri) { - String value = Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN_MR1 ? null - : Settings.Global.getString(getContext().getContentResolver(), - Settings.Global.TRANSITION_ANIMATION_SCALE); - if (value != null && value.equals("0")) { - mAccessibilityFeatureFlags |= AccessibilityFeature.DISABLE_ANIMATIONS.value; - } else { - mAccessibilityFeatureFlags &= ~AccessibilityFeature.DISABLE_ANIMATIONS.value; - } - mNativeView.getFlutterJNI().setAccessibilityFeatures(mAccessibilityFeatureFlags); - } - } - - // This is guarded at instantiation time. - @TargetApi(19) - @RequiresApi(19) - class TouchExplorationListener implements AccessibilityManager.TouchExplorationStateChangeListener { - @Override - public void onTouchExplorationStateChanged(boolean enabled) { - if (enabled) { - mTouchExplorationEnabled = true; - ensureAccessibilityEnabled(); - mAccessibilityFeatureFlags |= AccessibilityFeature.ACCESSIBLE_NAVIGATION.value; - mNativeView.getFlutterJNI().setAccessibilityFeatures(mAccessibilityFeatureFlags); - } else { - mTouchExplorationEnabled = false; - if (mAccessibilityNodeProvider != null) { - mAccessibilityNodeProvider.handleTouchExplorationExit(); - } - mAccessibilityFeatureFlags &= ~AccessibilityFeature.ACCESSIBLE_NAVIGATION.value; - mNativeView.getFlutterJNI().setAccessibilityFeatures(mAccessibilityFeatureFlags); - } - resetWillNotDraw(); - } - } - @Override public AccessibilityNodeProvider getAccessibilityNodeProvider() { - if (mAccessibilityEnabled) + if (mAccessibilityNodeProvider.isAccessibilityEnabled()) { return mAccessibilityNodeProvider; - // TODO(goderbauer): when a11y is off this should return a one-off snapshot of - // the a11y - // tree. - return null; - } - - void ensureAccessibilityEnabled() { - if (!isAttached()) - return; - mAccessibilityEnabled = true; - if (mAccessibilityNodeProvider == null) { - mAccessibilityNodeProvider = new AccessibilityBridge(this, accessibilityChannel); - } - mNativeView.getFlutterJNI().setSemanticsEnabled(true); - mAccessibilityNodeProvider.setAccessibilityEnabled(true); - } - - void resetAccessibilityTree() { - if (mAccessibilityNodeProvider != null) { - mAccessibilityNodeProvider.reset(); - } - } - - private boolean handleAccessibilityHoverEvent(MotionEvent event) { - if (!mTouchExplorationEnabled) { - return false; - } - if (event.getAction() == MotionEvent.ACTION_HOVER_ENTER || event.getAction() == MotionEvent.ACTION_HOVER_MOVE) { - mAccessibilityNodeProvider.handleTouchExploration(event.getX(), event.getY()); - } else if (event.getAction() == MotionEvent.ACTION_HOVER_EXIT) { - mAccessibilityNodeProvider.handleTouchExplorationExit(); } else { - Log.d("flutter", "unexpected accessibility hover event: " + event); - return false; + // TODO(goderbauer): when a11y is off this should return a one-off snapshot of + // the a11y + // tree. + return null; } - return true; } @Override diff --git a/tools/android_lint/baseline.xml b/tools/android_lint/baseline.xml index 93bc535f5737d..8bf5af53ea8c0 100644 --- a/tools/android_lint/baseline.xml +++ b/tools/android_lint/baseline.xml @@ -4,22 +4,22 @@ @@ -30,18 +30,18 @@ errorLine2=" ~~~~~~"> @@ -52,7 +52,7 @@ errorLine2=" ~~~~~~"> @@ -63,7 +63,7 @@ errorLine2=" ~~~~~~"> @@ -74,29 +74,29 @@ errorLine2=" ~~~~~~"> @@ -107,7 +107,7 @@ errorLine2=" ~~~~~~"> @@ -118,7 +118,7 @@ errorLine2=" ~~~~~~"> @@ -129,7 +129,7 @@ errorLine2=" ~~~~~~"> @@ -305,7 +305,7 @@ errorLine2=" ~~~~~~~~~~~"> @@ -327,7 +327,7 @@ errorLine2=" ^"> @@ -360,7 +360,7 @@ errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> @@ -371,7 +371,7 @@ errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> @@ -432,24 +432,24 @@ + message="Use `new SparseArray<SemanticsNode>(...)` instead for better performance" + errorLine1=" private final Map<Integer, SemanticsNode> flutterSemanticsTree = new HashMap<>();" + errorLine2=" ~~~~~~~~~~~~~~~"> + line="135" + column="70"/> + errorLine1=" private final Map<Integer, CustomAccessibilityAction> customAccessibilityActions = new HashMap<>();" + errorLine2=" ~~~~~~~~~~~~~~~"> + line="160" + column="88"/> From 03d5f3c2d1e06e3949232d01233224fe18c196fb Mon Sep 17 00:00:00 2001 From: Chinmay Garde Date: Fri, 8 Mar 2019 18:09:17 -0800 Subject: [PATCH 1327/1537] Clarify arguments to FlutterEngineOnVsync (#8093) --- shell/platform/embedder/embedder.h | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/shell/platform/embedder/embedder.h b/shell/platform/embedder/embedder.h index bf2343ec6e728..2299650a68ebe 100644 --- a/shell/platform/embedder/embedder.h +++ b/shell/platform/embedder/embedder.h @@ -654,12 +654,16 @@ FlutterEngineResult FlutterEngineDispatchSemanticsAction( // platform via the vsync callback must be returned. This call must be made on // the thread on which the call to |FlutterEngineRun| was made. // -// |frame_start_time_nanos| is the point at which the vsync event occurred. +// |frame_start_time_nanos| is the point at which the vsync event occurred or +// will occur. If the time point is in the future, the engine will wait till +// that point to begin its frame workload. The system monotonic clock is used as +// the timebase. +// // |frame_target_time_nanos| is the point at which the embedder anticipates the // next vsync to occur. This is a hint the engine uses to schedule Dart VM // garbage collection in periods in which the various threads are most likely to // be idle. For example, for a 60Hz display, embedders should add 16.6 * 1e6 to -// the frame time field. +// the frame time field. The system monotonic clock is used as the timebase. FLUTTER_EXPORT FlutterEngineResult FlutterEngineOnVsync(FlutterEngine engine, intptr_t baton, From 24d990294e0c99b183673d82cd22bfd59a3e7b13 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Fri, 8 Mar 2019 23:46:19 -0500 Subject: [PATCH 1328/1537] Roll src/third_party/skia bea1f94f341e..a009d582e812 (18 commits) (#8097) https://skia.googlesource.com/skia.git/%2Blog/bea1f94f341e..a009d582e812 git log bea1f94f341e8b0466ea2bfbda3f3ba44a2fda5c..a009d582e812dba2ce1ba868852124ee4d8a182d --date=short --no-merges --format=%ad %ae %s 2019-03-09 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader dd172cc1eef2..856ebf878c71 (2 commits) 2019-03-09 skia-autoroll@skia-public.iam.gserviceaccount.com Roll ../src 7ddffe6a4a5e..a70166a5efb1 (458 commits) 2019-03-08 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/angle2 14126505b237..b6a2f6bcf657 (1 commits) 2019-03-08 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader 787b4468e49c..dd172cc1eef2 (1 commits) 2019-03-08 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader f955e638fb15..787b4468e49c (2 commits) 2019-03-08 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader 15dff3606ebf..f955e638fb15 (2 commits) 2019-03-08 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader 53733a68a49a..15dff3606ebf (3 commits) 2019-03-08 recipe-roller@chromium.org Roll recipe dependencies (trivial). 2019-03-08 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader 9d9315341c3e..53733a68a49a (1 commits) 2019-03-08 skia-autoroll@skia-public.iam.gserviceaccount.com Roll skia/third_party/skcms 5e67e5c19fd3..3b3522324e7b (1 commits) 2019-03-08 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader 653210718292..9d9315341c3e (2 commits) 2019-03-08 recipe-roller@chromium.org Roll recipe dependencies (trivial). 2019-03-08 brianosman@google.com Particles: Store stable randoms after spawn affectors 2019-03-08 robertphillips@google.com Make DDL contexts/drawing managers always sort opLists 2019-03-08 bungeman@google.com Move 'Tiling' out of 'Transform' in viewer. 2019-03-08 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader d2b1d2f936ee..653210718292 (3 commits) 2019-03-08 kjlubick@google.com [canvaskit] Expose more options for working with Surfaces and Contexts 2019-03-07 fmalita@chromium.org [skottie] Gaussian blur layer effect The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (reed@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index cfe925bba5579..d5d831402f237 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'bea1f94f341e8b0466ea2bfbda3f3ba44a2fda5c', + 'skia_revision': 'a009d582e812dba2ce1ba868852124ee4d8a182d', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 3892e2013e360..217bde0ca1309 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 9107ca6e7b9595ef1a2eff8ea828c5c4 +Signature: c2e41bb380014997917449637f4ea135 UNUSED LICENSES: From a63ff4632728c6386977dac95699021ee6018449 Mon Sep 17 00:00:00 2001 From: Michael Klimushyn Date: Fri, 8 Mar 2019 22:23:10 -0800 Subject: [PATCH 1329/1537] Android linter prints to the console by default (#8090) The HTML report can still be generated by passing in an `--html` flag to the tool. This will make errors easier to debug in CI. --- tools/android_lint/bin/main.dart | 53 +++++++++++++++++++------------- 1 file changed, 31 insertions(+), 22 deletions(-) diff --git a/tools/android_lint/bin/main.dart b/tools/android_lint/bin/main.dart index c96de9afc2226..f64b5a9e9e79f 100644 --- a/tools/android_lint/bin/main.dart +++ b/tools/android_lint/bin/main.dart @@ -14,8 +14,9 @@ const LocalProcessManager processManager = LocalProcessManager(); /// /// This script scans the flutter/shell/platform/android directory for Java /// files to build a `project.xml` file. This file is then passed to the lint -/// tool and HTML output is reqeusted in the directory for the `--out` -/// parameter, which defaults to `lint_report`. +/// tool. If an `--html` flag is also passed in, HTML output is reqeusted in the +/// directory for the optional `--out` parameter, which defaults to +/// `lint_report`. Otherwise the output is printed to STDOUT. /// /// The `--in` parameter may be specified to force this script to scan a /// specific location for the engine repository, and expects to be given the @@ -87,21 +88,21 @@ Future runLint(ArgParser argParser, ArgResults argResults) async { await projectXml.close(); print('Wrote project.xml, starting lint...'); - final Process lintProcess = await processManager.start( - [ - path.join(androidSdkDir.path, 'tools', 'bin', 'lint'), - '--project', - projectXmlPath, - '--html', - argResults['out'], - '--showall', - '--exitcode', // Set non-zero exit code on errors - '-Wall', - '-Werror', - '--baseline', - baselineXmlPath, - ], - ); + final List lintArgs = [ + path.join(androidSdkDir.path, 'tools', 'bin', 'lint'), + '--project', + projectXmlPath, + '--showall', + '--exitcode', // Set non-zero exit code on errors + '-Wall', + '-Werror', + '--baseline', + baselineXmlPath, + ]; + if (argResults['html']) { + lintArgs.addAll(['--html', argResults['out']]); + } + final Process lintProcess = await processManager.start(lintArgs); lintProcess.stdout.pipe(stdout); lintProcess.stderr.pipe(stderr); return await lintProcess.exitCode; @@ -123,11 +124,6 @@ ArgParser setupOptions() { ), ), ) - ..addOption( - 'out', - help: 'The path to write the generated the HTML report to.', - defaultsTo: path.join(projectDir, 'lint_report'), - ) ..addFlag( 'help', help: 'Print usage of the command.', @@ -140,6 +136,19 @@ ArgParser setupOptions() { 'in this project.', negatable: false, defaultsTo: false, + ) + ..addFlag( + 'html', + help: 'Creates an HTML output for this report instead of printing ' + 'command line output.', + negatable: false, + defaultsTo: false, + ) + ..addOption( + 'out', + help: 'The path to write the generated the HTML report to. Ignored if ' + '--html is not also true.', + defaultsTo: path.join(projectDir, 'lint_report'), ); return argParser; From e77337bb1c74bf0595513cc71072b717f8977251 Mon Sep 17 00:00:00 2001 From: Dan Field Date: Fri, 8 Mar 2019 23:38:59 -0800 Subject: [PATCH 1330/1537] Use right stream for Java, on mac try to autoselect Java 1.8 (#8099) * Use right stream for Java, on mac try to autoselect Java 1.8 --- tools/android_lint/bin/main.dart | 40 +++++++++++++++++++++++++++++--- 1 file changed, 37 insertions(+), 3 deletions(-) diff --git a/tools/android_lint/bin/main.dart b/tools/android_lint/bin/main.dart index f64b5a9e9e79f..f9a9e4359dc28 100644 --- a/tools/android_lint/bin/main.dart +++ b/tools/android_lint/bin/main.dart @@ -102,7 +102,15 @@ Future runLint(ArgParser argParser, ArgResults argResults) async { if (argResults['html']) { lintArgs.addAll(['--html', argResults['out']]); } - final Process lintProcess = await processManager.start(lintArgs); + final String javaHome = await getJavaHome(); + final Process lintProcess = await processManager.start( + lintArgs, + environment: javaHome != null + ? { + 'JAVA_HOME': javaHome, + } + : null, + ); lintProcess.stdout.pipe(stdout); lintProcess.stderr.pipe(stderr); return await lintProcess.exitCode; @@ -154,11 +162,36 @@ ArgParser setupOptions() { return argParser; } +/// On macOS, we can try to find Java 1.8. +/// +/// Otherwise, default to whatever JAVA_HOME is already. +Future getJavaHome() async { + if (Platform.isMacOS) { + final ProcessResult result = await processManager.run( + ['/usr/libexec/java_home', '-v', '1.8', '-F'], + ); + if (result.exitCode == 0) { + return result.stdout.trim(); + } + } + return Platform.environment['JAVA_HOME']; +} + /// Checks that `java` points to Java 1.8. /// /// The SDK lint tool may not work with Java > 1.8. Future checkJava1_8() async { print('Checking Java version...'); + + if (Platform.isMacOS) { + final ProcessResult result = await processManager.run( + ['/usr/libexec/java_home', '-v', '1.8', '-F'], + ); + if (result.exitCode != 0) { + print('Java 1.8 not available - the linter may not work properly.'); + } + return; + } final ProcessResult javaResult = await processManager.run( ['java', '-version'], ); @@ -167,8 +200,9 @@ Future checkJava1_8() async { 'Ensure Java is installed and available on your path.'); print(javaResult.stderr); } - final String javaVersionStdout = javaResult.stdout; - if (javaVersionStdout.contains('"1.8')) { + // `java -version` writes to stderr. + final String javaVersionStdout = javaResult.stderr; + if (!javaVersionStdout.contains('"1.8')) { print('The Android SDK tools may not work properly with your Java version. ' 'If this process fails, please retry using Java 1.8.'); } From 76ad08e7db6803a7a4c91c1eb19f645861d40520 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Sat, 9 Mar 2019 05:00:58 -0500 Subject: [PATCH 1331/1537] Roll src/third_party/skia a009d582e812..b45e5f1e810a (2 commits) (#8100) https://skia.googlesource.com/skia.git/%2Blog/a009d582e812..b45e5f1e810a git log a009d582e812dba2ce1ba868852124ee4d8a182d..b45e5f1e810ad29128556befccd79b7535998d8e --date=short --no-merges --format=%ad %ae %s 2019-03-09 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader 856ebf878c71..3c6dc555a004 (1 commits) 2019-03-09 skia-recreate-skps@skia-swarming-bots.iam.gserviceaccount.com Update go_deps asset The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (reed@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index d5d831402f237..ab59b021dad1b 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'a009d582e812dba2ce1ba868852124ee4d8a182d', + 'skia_revision': 'b45e5f1e810ad29128556befccd79b7535998d8e', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 217bde0ca1309..102c19f6cddbf 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: c2e41bb380014997917449637f4ea135 +Signature: 2578322d95bd2f57c45b5ff573a70466 UNUSED LICENSES: From 124fb1a054cdb9d4338b4b7602e795699dbc0108 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Sat, 9 Mar 2019 10:04:20 -0500 Subject: [PATCH 1332/1537] Roll src/third_party/skia b45e5f1e810a..29d5dec9a078 (1 commits) (#8101) https://skia.googlesource.com/skia.git/%2Blog/b45e5f1e810a..29d5dec9a078 git log b45e5f1e810ad29128556befccd79b7535998d8e..29d5dec9a0783a033b921dc483fb98d565d684f6 --date=short --no-merges --format=%ad %ae %s 2019-03-09 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader 3c6dc555a004..ebefaf7ce64a (4 commits) The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (reed@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index ab59b021dad1b..af289c6064cba 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'b45e5f1e810ad29128556befccd79b7535998d8e', + 'skia_revision': '29d5dec9a0783a033b921dc483fb98d565d684f6', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 102c19f6cddbf..3de349a7eed20 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 2578322d95bd2f57c45b5ff573a70466 +Signature: 0dd2b3de568e29ad48747dd78b7125d9 UNUSED LICENSES: From dc216bdcf0b3fbdf5a6ed2ccffa0e33f82c927c1 Mon Sep 17 00:00:00 2001 From: Dan Field Date: Sat, 9 Mar 2019 08:58:07 -0800 Subject: [PATCH 1333/1537] Fix typo (#8102) programatically -> programmatically --- shell/platform/darwin/ios/framework/Headers/FlutterEngine.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shell/platform/darwin/ios/framework/Headers/FlutterEngine.h b/shell/platform/darwin/ios/framework/Headers/FlutterEngine.h index c7a4836a9f50c..e70877609c032 100644 --- a/shell/platform/darwin/ios/framework/Headers/FlutterEngine.h +++ b/shell/platform/darwin/ios/framework/Headers/FlutterEngine.h @@ -140,7 +140,7 @@ FLUTTER_EXPORT * the user, or when using a Simulator. This method allows a user to turn * semantics on when they would not ordinarily be generated and the performance * overhead is not a concern, e.g. for UI testing. Note that semantics should - * never be programatically turned off, as it would potentially disable + * never be programmatically turned off, as it would potentially disable * accessibility services an end user has requested. * * This method must only be called after launching the engine via From 21342863aa6018af53c09af2a3e7aa432a6cc844 Mon Sep 17 00:00:00 2001 From: Dan Field Date: Sat, 9 Mar 2019 12:16:34 -0800 Subject: [PATCH 1334/1537] Do not cache gclient sync (#8098) --- .cirrus.yml | 35 ++++++++++++++++++++++++++--------- 1 file changed, 26 insertions(+), 9 deletions(-) diff --git a/.cirrus.yml b/.cirrus.yml index 4ea101ac93b66..2492afbd0fbf4 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -11,10 +11,17 @@ gke_container: task: env: CIRRUS_WORKING_DIR: "/tmp/github_repo" - DEPOT_TOOLS_UPDATE: 0 - replace_engine_script: | + ENGINE_PATH: "/tmp/clean_engine" + DEPOT_TOOLS: "/tmp/depot_tools" + PATH: "$DEPOT_TOOLS:$PATH" + depot_tools_script: + git clone --depth 1 https://chromium.googlesource.com/chromium/tools/depot_tools.git $DEPOT_TOOLS + gclient_sync_script: | + mkdir -p $ENGINE_PATH/src + echo 'solutions = [{"managed": False,"name": "src/flutter","url": "git@github.com:flutter/engine.git","deps_file": "DEPS", "custom_vars": {"download_android_deps" : False, "download_windows_deps" : False,},},]' > $ENGINE_PATH/.gclient cd $ENGINE_PATH/src - rm -r flutter + rm -rf flutter + rm -rf out mv $CIRRUS_WORKING_DIR flutter gclient sync @@ -38,6 +45,10 @@ task: ninja -C out/host_release test_host_script: cd $ENGINE_PATH/src && ./flutter/testing/run_tests.sh host_release - name: build_android + get_android_sdk_script: | + echo 'solutions = [{"managed": False,"name": "src/flutter","url": "git@github.com:flutter/engine.git","deps_file": "DEPS", "custom_vars": {"download_windows_deps" : False,},},]' > $ENGINE_PATH/.gclient + cd $ENGINE_PATH/src + gclient sync lint_host_script: | cd $ENGINE_PATH/src/flutter/tools/android_lint $ENGINE_PATH/src/third_party/dart/tools/sdks/dart-sdk/bin/pub get @@ -60,7 +71,7 @@ task: DEPOT_TOOLS: "/tmp/depot_tools" PATH: "$DEPOT_TOOLS:$PATH" depot_tools_script: - git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git $DEPOT_TOOLS + git clone --depth 1 https://chromium.googlesource.com/chromium/tools/depot_tools.git $DEPOT_TOOLS # jazzy_script: # sudo gem install jazzy@0.9.4 gclient_sync_script: | @@ -88,12 +99,18 @@ format_and_dart_test_task: env: CIRRUS_WORKING_DIR: "/tmp/github_repo" - DEPOT_TOOLS_UPDATE: 0 - replace_engine_script: | + DEPOT_TOOLS: "/tmp/depot_tools" + ENGINE_PATH: "/tmp/clean_engine" + PATH: "$DEPOT_TOOLS:$PATH" + depot_tools_script: + git clone --depth 1 https://chromium.googlesource.com/chromium/tools/depot_tools.git $DEPOT_TOOLS + gclient_sync_script: | + mkdir -p $ENGINE_PATH/src + echo 'solutions = [{"managed": False,"name": "src/flutter","url": "git@github.com:flutter/engine.git","deps_file": "DEPS", "custom_vars": {"download_android_deps" : False, "download_windows_deps" : False,},},]' > $ENGINE_PATH/.gclient cd $ENGINE_PATH/src - rm -r flutter - cp $CIRRUS_WORKING_DIR -r ./flutter + rm -rf flutter + rm -rf out + mv $CIRRUS_WORKING_DIR flutter gclient sync - format_script: cd $ENGINE_PATH/src/flutter && ./ci/format.sh build_script: cd $ENGINE_PATH/src/flutter && ./ci/build.sh From 9e8f8d0889ec04b54def0bf917321a27006623b0 Mon Sep 17 00:00:00 2001 From: Dan Field Date: Sat, 9 Mar 2019 12:39:16 -0800 Subject: [PATCH 1335/1537] Drop android_sdk_downloader in favor of cipd (#8087) * remove sdk downloader, use cipd * roll buildroot to drop android_sdk_downloader --- DEPS | 85 ++-- tools/android_sdk_downloader/.gitignore | 7 - tools/android_sdk_downloader/LICENSE | 27 -- tools/android_sdk_downloader/README.md | 31 -- .../analysis_options.yaml | 155 ------- tools/android_sdk_downloader/lib/main.dart | 220 --------- .../lib/src/android_repository.dart | 416 ------------------ .../lib/src/checksums.dart | 31 -- .../android_sdk_downloader/lib/src/http.dart | 130 ------ .../lib/src/options.dart | 129 ------ tools/android_sdk_downloader/lib/src/zip.dart | 41 -- tools/android_sdk_downloader/pubspec.yaml | 12 - tools/create_ndk_cipd_package.sh | 31 ++ tools/create_sdk_cipd_package.sh | 43 ++ 14 files changed, 130 insertions(+), 1228 deletions(-) delete mode 100644 tools/android_sdk_downloader/.gitignore delete mode 100644 tools/android_sdk_downloader/LICENSE delete mode 100644 tools/android_sdk_downloader/README.md delete mode 100644 tools/android_sdk_downloader/analysis_options.yaml delete mode 100644 tools/android_sdk_downloader/lib/main.dart delete mode 100644 tools/android_sdk_downloader/lib/src/android_repository.dart delete mode 100644 tools/android_sdk_downloader/lib/src/checksums.dart delete mode 100644 tools/android_sdk_downloader/lib/src/http.dart delete mode 100644 tools/android_sdk_downloader/lib/src/options.dart delete mode 100644 tools/android_sdk_downloader/lib/src/zip.dart delete mode 100644 tools/android_sdk_downloader/pubspec.yaml create mode 100755 tools/create_ndk_cipd_package.sh create mode 100755 tools/create_sdk_cipd_package.sh diff --git a/DEPS b/DEPS index af289c6064cba..1b9e0071fa060 100644 --- a/DEPS +++ b/DEPS @@ -122,7 +122,7 @@ allowed_hosts = [ ] deps = { - 'src': 'https://github.com/flutter/buildroot.git' + '@' + '4a12b0dfad16723b2190b697a669e3ae17b50b35', + 'src': 'https://github.com/flutter/buildroot.git' + '@' + '3f54d4f03112098e164ee62f015fcc54b19d1eda', # Fuchsia compatibility # @@ -387,6 +387,61 @@ deps = { 'src/third_party/pkg/when': Var('dart_git') + '/when.git' + '@' + '0.2.0', + + 'src/third_party/android_tools/ndk': { + 'packages': [ + { + 'package': 'flutter/android/ndk/${{platform}}', + 'version': 'version:r19b' + } + ], + 'condition': 'download_android_deps', + 'dep_type': 'cipd', + }, + + 'src/third_party/android_tools/sdk/build-tools': { + 'packages': [ + { + 'package': 'flutter/android/sdk/build-tools/${{platform}}', + 'version': 'version:28.0.3' + } + ], + 'condition': 'download_android_deps', + 'dep_type': 'cipd', + }, + + 'src/third_party/android_tools/sdk/platform-tools': { + 'packages': [ + { + 'package': 'flutter/android/sdk/platform-tools/${{platform}}', + 'version': 'version:28.0.1' + } + ], + 'condition': 'download_android_deps', + 'dep_type': 'cipd', + }, + + 'src/third_party/android_tools/sdk/platforms': { + 'packages': [ + { + 'package': 'flutter/android/sdk/platforms', + 'version': 'version:28r6' + } + ], + 'condition': 'download_android_deps', + 'dep_type': 'cipd', + }, + + 'src/third_party/android_tools/sdk/tools': { + 'packages': [ + { + 'package': 'flutter/android/sdk/tools/${{platform}}', + 'version': 'version:26.1.1' + } + ], + 'condition': 'download_android_deps', + 'dep_type': 'cipd', + }, } hooks = [ @@ -414,34 +469,6 @@ hooks = [ 'pattern': '.', 'action': ['python', 'src/tools/dart/update.py'], }, - { - 'name': 'prepare_android_downloader', - 'pattern': '.', - 'condition': 'download_android_deps', - 'cwd': 'src/flutter/tools/android_sdk_downloader', - 'action': [ - '../../../third_party/dart/tools/sdks/dart-sdk/bin/pub', # this hook _must_ be run _after_ the dart hook. - 'get' - ], - }, - { - 'name': 'download_android_tools', - 'pattern': '.', - 'condition': 'download_android_deps', - 'action': [ - 'src/third_party/dart/tools/sdks/dart-sdk/bin/dart', # this hook _must_ be run _after_ the dart hook. - '--enable-asserts', - 'src/flutter/tools/android_sdk_downloader/lib/main.dart', - '-y', # Accept licenses - '--out=src/third_party/android_tools', - '--platform=28', - '--platform-revision=6', - '--build-tools-version=28.0.3', - '--platform-tools-version=28.0.1', - '--tools-version=26.1.1', - '--ndk-version=19.1.5304403' - ], - }, { 'name': 'download_android_support', 'pattern': '.', diff --git a/tools/android_sdk_downloader/.gitignore b/tools/android_sdk_downloader/.gitignore deleted file mode 100644 index d6a35f97f7659..0000000000000 --- a/tools/android_sdk_downloader/.gitignore +++ /dev/null @@ -1,7 +0,0 @@ -.DS_Store -.atom/ -.idea -.packages -.pub/ -.dart_tool/ -pubspec.lock \ No newline at end of file diff --git a/tools/android_sdk_downloader/LICENSE b/tools/android_sdk_downloader/LICENSE deleted file mode 100644 index 58ab87f9b99b9..0000000000000 --- a/tools/android_sdk_downloader/LICENSE +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright 2013 The Flutter Authors. All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file diff --git a/tools/android_sdk_downloader/README.md b/tools/android_sdk_downloader/README.md deleted file mode 100644 index c705ee214278f..0000000000000 --- a/tools/android_sdk_downloader/README.md +++ /dev/null @@ -1,31 +0,0 @@ -# Android SDK Downloader - -This program assists with downloading the Android SDK and NDK artifacts for -Flutter engine development. - -## Usage - -``` --r, --repository-xml Specifies the location of the Android Repository XML file. - (defaults to "https://dl.google.com/android/repository/repository2-1.xml") - --p, --platform Specifies the Android platform version, e.g. 28 - - --platform-revision Specifies the Android platform revision, e.g. 6 for 28_r06 - --o, --out The directory to write downloaded files to. - - --os The OS type to download for. Defaults to current platform. - (defaults to current platform), accepts: [windows, macos, linux] - - --build-tools-version The build-tools version to download. Must be in format of .., e.g. 28.0.3; or ..., e.g. 28.0.0.2 - - --platform-tools-version The platform-tools version to download. Must be in format of .., e.g. 28.0.1; or ..., e.g. 28.0.0.2 - - --tools-version The tools version to download. Must be in format of .., e.g. 26.1.1; or ..., e.g. 28.1.1.2 - - --ndk-version The ndk version to download. Must be in format of .., e.g. 28.0.3; or ..., e.g. 28.0.0.2 - --y, --[no-]accept-licenses Automatically accept Android SDK licenses. - --[no-]overwrite Skip download if the target directory exists. -``` \ No newline at end of file diff --git a/tools/android_sdk_downloader/analysis_options.yaml b/tools/android_sdk_downloader/analysis_options.yaml deleted file mode 100644 index 2023b29bda9fe..0000000000000 --- a/tools/android_sdk_downloader/analysis_options.yaml +++ /dev/null @@ -1,155 +0,0 @@ -# Specify analysis options. -# -# Copied from https://github.com/flutter/flutter/blob/master/analysis_options.yaml - -analyzer: - strong-mode: - implicit-dynamic: false - errors: - # treat missing required parameters as a warning (not a hint) - missing_required_param: warning - # treat missing returns as a warning (not a hint) - missing_return: warning - # allow having TODOs in the code - todo: ignore - exclude: - - 'bin/cache/**' - # the following two are relative to the stocks example and the flutter package respectively - # see https://github.com/dart-lang/sdk/issues/28463 - - 'lib/i18n/stock_messages_*.dart' - - 'lib/src/http/**' - -linter: - rules: - # these rules are documented on and in the same order as - # the Dart Lint rules page to make maintenance easier - # https://github.com/dart-lang/linter/blob/master/example/all.yaml - - always_declare_return_types - - always_put_control_body_on_new_line - # - always_put_required_named_parameters_first # we prefer having parameters in the same order as fields https://github.com/flutter/flutter/issues/10219 - - always_require_non_null_named_parameters - - always_specify_types - - annotate_overrides - # - avoid_annotating_with_dynamic # conflicts with always_specify_types - - avoid_as - # - avoid_bool_literals_in_conditional_expressions # not yet tested - # - avoid_catches_without_on_clauses # we do this commonly - # - avoid_catching_errors # we do this commonly - - avoid_classes_with_only_static_members - # - avoid_double_and_int_checks # only useful when targeting JS runtime - - avoid_empty_else - - avoid_field_initializers_in_const_classes - - avoid_function_literals_in_foreach_calls - # - avoid_implementing_value_types # not yet tested - - avoid_init_to_null - # - avoid_js_rounded_ints # only useful when targeting JS runtime - - avoid_null_checks_in_equality_operators - # - avoid_positional_boolean_parameters # not yet tested - # - avoid_private_typedef_functions # we prefer having typedef (discussion in https://github.com/flutter/flutter/pull/16356) - - avoid_relative_lib_imports - - avoid_renaming_method_parameters - - avoid_return_types_on_setters - # - avoid_returning_null # there are plenty of valid reasons to return null - - avoid_returning_null_for_void - # - avoid_returning_this # there are plenty of valid reasons to return this - # - avoid_setters_without_getters # not yet tested - # - avoid_single_cascade_in_expression_statements # not yet tested - - avoid_slow_async_io - - avoid_types_as_parameter_names - # - avoid_types_on_closure_parameters # conflicts with always_specify_types - - avoid_unused_constructor_parameters - - avoid_void_async - - await_only_futures - - camel_case_types - - cancel_subscriptions - # - cascade_invocations # not yet tested - # - close_sinks # not reliable enough - # - comment_references # blocked on https://github.com/flutter/flutter/issues/20765 - # - constant_identifier_names # needs an opt-out https://github.com/dart-lang/linter/issues/204 - - control_flow_in_finally - # - curly_braces_in_flow_control_structures # not yet tested - - directives_ordering - - empty_catches - - empty_constructor_bodies - - empty_statements - # - file_names # not yet tested - - flutter_style_todos - - hash_and_equals - - implementation_imports - # - invariant_booleans # too many false positives: https://github.com/dart-lang/linter/issues/811 - - iterable_contains_unrelated_type - # - join_return_with_assignment # not yet tested - - library_names - - library_prefixes - # - lines_longer_than_80_chars # not yet tested - - list_remove_unrelated_type - # - literal_only_boolean_expressions # too many false positives: https://github.com/dart-lang/sdk/issues/34181 - - no_adjacent_strings_in_list - - no_duplicate_case_values - - non_constant_identifier_names - # - null_closures # not yet tested - # - omit_local_variable_types # opposite of always_specify_types - # - one_member_abstracts # too many false positives - # - only_throw_errors # https://github.com/flutter/flutter/issues/5792 - - overridden_fields - - package_api_docs - - package_names - - package_prefixed_library_names - # - parameter_assignments # we do this commonly - - prefer_adjacent_string_concatenation - - prefer_asserts_in_initializer_lists - - prefer_collection_literals - - prefer_conditional_assignment - - prefer_const_constructors - - prefer_const_constructors_in_immutables - - prefer_const_declarations - - prefer_const_literals_to_create_immutables - # - prefer_constructors_over_static_methods # not yet tested - - prefer_contains - - prefer_equal_for_default_values - # - prefer_expression_function_bodies # conflicts with https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo#consider-using--for-short-functions-and-methods - - prefer_final_fields - - prefer_final_locals - - prefer_foreach - # - prefer_function_declarations_over_variables # not yet tested - - prefer_generic_function_type_aliases - - prefer_initializing_formals - # - prefer_int_literals # not yet tested - # - prefer_interpolation_to_compose_strings # not yet tested - - prefer_is_empty - - prefer_is_not_empty - - prefer_iterable_whereType - # - prefer_mixin # https://github.com/dart-lang/language/issues/32 - - prefer_single_quotes - - prefer_typing_uninitialized_variables - - prefer_void_to_null - # - public_member_api_docs # enabled on a case-by-case basis; see e.g. packages/analysis_options.yaml - - recursive_getters - - slash_for_doc_comments - - sort_constructors_first - - sort_pub_dependencies - - sort_unnamed_constructors_first - - super_goes_last - - test_types_in_equals - - throw_in_finally - # - type_annotate_public_apis # subset of always_specify_types - - type_init_formals - # - unawaited_futures # too many false positives - - unnecessary_brace_in_string_interps - - unnecessary_const - - unnecessary_getters_setters - # - unnecessary_lambdas # has false positives: https://github.com/dart-lang/linter/issues/498 - - unnecessary_new - - unnecessary_null_aware_assignments - - unnecessary_null_in_if_null_operators - - unnecessary_overrides - - unnecessary_parenthesis - - unnecessary_statements - - unnecessary_this - - unrelated_type_equality_checks - - use_rethrow_when_possible - # - use_setters_to_change_properties # not yet tested - # - use_string_buffers # has false positives: https://github.com/dart-lang/sdk/issues/34182 - # - use_to_and_as_if_applicable # has false positives, so we prefer to catch this by code-review - - valid_regexps - # - void_checks # not yet tested diff --git a/tools/android_sdk_downloader/lib/main.dart b/tools/android_sdk_downloader/lib/main.dart deleted file mode 100644 index f563889c82b29..0000000000000 --- a/tools/android_sdk_downloader/lib/main.dart +++ /dev/null @@ -1,220 +0,0 @@ -// 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. - -import 'dart:convert'; -import 'dart:io'; - -import 'package:args/args.dart'; -import 'package:path/path.dart' as path; - -import 'src/android_repository.dart'; -import 'src/checksums.dart'; -import 'src/http.dart'; -import 'src/options.dart'; -import 'src/zip.dart'; - -const String _kAndroidRepositoryXml = 'https://dl.google.com/android/repository/repository2-1.xml'; - - -Future main(List args) async { - final ArgParser argParser = ArgParser() - ..addOption( - 'repository-xml', - abbr: 'r', - help: 'Specifies the location of the Android Repository XML file.', - defaultsTo: _kAndroidRepositoryXml, - ) - ..addOption( - 'platform', - abbr: 'p', - help: 'Specifies the Android platform version, e.g. 28', - ) - ..addOption( - 'platform-revision', - help: 'Specifies the Android platform revision, e.g. 6 for 28_r06', - ) - ..addOption( - 'out', - abbr: 'o', - help: 'The directory to write downloaded files to.', - defaultsTo: '.', - ) - ..addOption( - 'os', - help: 'The OS type to download for. Defaults to current platform.', - defaultsTo: Platform.operatingSystem, - allowed: osTypeMap.keys, - ) - ..addOption( - 'build-tools-version', - help: 'The build-tools version to download. Must be in format of ' - '.., e.g. 28.0.3; ' - 'or ..., e.g. 28.0.0.2', - ) - ..addOption( - 'platform-tools-version', - help: 'The platform-tools version to download. Must be in format of ' - '.., e.g. 28.0.1; ' - 'or ..., e.g. 28.0.0.2', - ) - ..addOption( - 'tools-version', - help: 'The tools version to download. Must be in format of ' - '.., e.g. 26.1.1; ' - 'or ..., e.g. 28.1.1.2', - ) - ..addOption( - 'ndk-version', - help: 'The ndk version to download. Must be in format of ' - '.., e.g. 28.0.3; ' - 'or ..., e.g. 28.0.0.2', - ) - ..addFlag('accept-licenses', - abbr: 'y', - defaultsTo: false, - help: 'Automatically accept Android SDK licenses.') - ..addFlag( - 'overwrite', - defaultsTo: false, - help: 'Skip download if the target directory exists.', - ); - - final bool help = args.contains('-h') - || args.contains('--help') - || (args.isNotEmpty && args.first == 'help'); - if (help) { - print(argParser.usage); - return; - } - - final Options options = Options.parseAndValidate(args, argParser); - - final AndroidRepository androidRepository = await _getAndroidRepository(options.repositoryXmlUri); - assert(androidRepository.platforms.isNotEmpty); - assert(androidRepository.buildTools.isNotEmpty); - - if (!options.acceptLicenses) { - for (final AndroidRepositoryLicense license in androidRepository.licenses) { - print('================================================================================\n\n'); - print(license.text); - stdout.write('Do you accept? (Y/n): '); - final String result = stdin.readLineSync().trim().toLowerCase(); - if (result != '' && result.startsWith('y') == false) { - print('Ending.'); - exit(-1); - } - } - } - - await options.outDirectory.create(recursive: true); - - final Directory tempDir = await Directory(options.outDirectory.path).createTemp(); - await tempDir.create(recursive: true); - - final Directory ndkDir = Directory(path.join(options.outDirectory.path, 'ndk')); - final Directory sdkDir = Directory(path.join(options.outDirectory.path, 'sdk')); - final Directory platformDir = Directory(path.join(sdkDir.path, 'platforms', 'android-${options.platformApiLevel}')); - final Directory buildToolsDir = Directory(path.join(sdkDir.path, 'build-tools', options.buildToolsRevision.raw)); - final Directory platformToolsDir = Directory(path.join(sdkDir.path, 'platform-tools')); - final Directory toolsDir = Directory(path.join(sdkDir.path, 'tools')); - - final Map checksums = - await loadChecksums(options.outDirectory); - - print('Downloading Android SDK and NDK artifacts...'); - final List> futures = >[]; - - futures.add(downloadArchive( - androidRepository.platforms, - OptionsRevision(null, options.platformRevision), - options.repositoryBase, - tempDir, - checksumToSkip: options.overwrite ? null : checksums[platformDir.path], - ).then((ArchiveDownloadResult result) { - if (result != ArchiveDownloadResult.empty) { - return unzipFile(result.zipFileName, platformDir).then((_) { - checksums[platformDir.path] = result.checksum; - return writeChecksums(checksums, options.outDirectory); - }); - } - return null; - })); - futures.add(downloadArchive( - androidRepository.buildTools, - options.buildToolsRevision, - options.repositoryBase, - tempDir, - osType: options.osType, - checksumToSkip: options.overwrite ? null : checksums[buildToolsDir.path], - ).then((ArchiveDownloadResult result) { - if (result != ArchiveDownloadResult.empty) { - return unzipFile(result.zipFileName, buildToolsDir).then((_) { - checksums[buildToolsDir.path] = result.checksum; - return writeChecksums(checksums, options.outDirectory); - }); - } - return null; - })); - futures.add(downloadArchive( - androidRepository.platformTools, - options.platformToolsRevision, - options.repositoryBase, - tempDir, - osType: options.osType, - checksumToSkip: options.overwrite ? null : checksums[platformToolsDir.path], - ).then((ArchiveDownloadResult result) { - if (result != ArchiveDownloadResult.empty) { - return unzipFile(result.zipFileName, platformToolsDir).then((_) { - checksums[platformToolsDir.path] = result.checksum; - return writeChecksums(checksums, options.outDirectory); - }); - } - return null; - })); - futures.add(downloadArchive( - androidRepository.tools, - options.toolsRevision, - options.repositoryBase, - tempDir, - osType: options.osType, - checksumToSkip: options.overwrite ? null : checksums[toolsDir.path], - ).then((ArchiveDownloadResult result) { - if (result != ArchiveDownloadResult.empty) { - return unzipFile(result.zipFileName, toolsDir).then((_) { - checksums[toolsDir.path] = result.checksum; - return writeChecksums(checksums, options.outDirectory); - }); - } - return null; - })); - futures.add(downloadArchive( - androidRepository.ndkBundles, - options.ndkRevision, - options.repositoryBase, - tempDir, - osType: options.osType, - checksumToSkip: options.overwrite ? null : checksums[ndkDir.path], - ).then((ArchiveDownloadResult result) { - if (result != ArchiveDownloadResult.empty) { - return unzipFile(result.zipFileName, ndkDir).then((_) { - checksums[ndkDir.path] = result.checksum; - return writeChecksums(checksums, options.outDirectory); - }); - } - return null; - })); - await Future.wait(futures); - await tempDir.delete(recursive: true); -} - -Future _getAndroidRepository(Uri repositoryXmlUri) async { - final StringBuffer repoXmlBuffer = StringBuffer(); - Future _repositoryXmlHandler(HttpClientResponse response) async { - await response.transform(utf8.decoder).forEach(repoXmlBuffer.write); - } - - await httpGet(repositoryXmlUri, _repositoryXmlHandler); - - return parseAndroidRepositoryXml(repoXmlBuffer.toString()); -} diff --git a/tools/android_sdk_downloader/lib/src/android_repository.dart b/tools/android_sdk_downloader/lib/src/android_repository.dart deleted file mode 100644 index 3490d02e95c3c..0000000000000 --- a/tools/android_sdk_downloader/lib/src/android_repository.dart +++ /dev/null @@ -1,416 +0,0 @@ -// 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. - -import 'package:xml/xml.dart' as xml show parse; -import 'package:xml/xml.dart'; - -// see https://android.googlesource.com/platform/tools/base/+/master/sdklib/src/main/java/com/android/sdklib/repository/sdk-repository-10.xsd - -const String _kXsi = 'http://www.w3.org/2001/XMLSchema-instance'; -const String _kSdk = 'http://schemas.android.com/sdk/android/repo/repository2/01'; - -void _debugCheckElement( - XmlElement element, - String name, { - String namespace, -}) { - assert(element != null); - assert(element.name.local == name, '${element.name.local} != $name'); - assert(element.name.namespaceUri == namespace, - '${element.name.namespaceUri} != $namespace'); -} - -XmlElement _firstOrDefault(Iterable list) { - if (list?.isEmpty == true) { - return null; - } - return list.first; -} - -String _getChildText( - XmlElement parent, - String childName, { - String def = '', - String namespace, -}) { - final String value = _firstOrDefault( - parent.findElements( - childName, - namespace: namespace, - ), - )?.text; - return value ?? def; -} - -OSType _parseHostType(String value) { - switch (value) { - case 'linux': - return OSType.linux; - case 'windows': - return OSType.windows; - case 'macosx': - return OSType.mac; - default: - return OSType.any; - } -} - -/// Parses a the Android SDK's https://dl.google.com/android/repository/repository2-1.xml -/// into an [AndroidRepository] object. -AndroidRepository parseAndroidRepositoryXml(String rawXml) { - final XmlDocument doc = xml.parse(rawXml); - return AndroidRepository.fromXml(doc.rootElement); -} - -XmlElement _getTypeDetails(XmlElement parent) { - final XmlElement typeDetails = - _firstOrDefault(parent.findAllElements('type-details')); - if (typeDetails == null) { - throw StateError('Missing .'); - } - return typeDetails; -} - -String _getTypeDetailsType(XmlElement typeDetails) { - return typeDetails.getAttribute('type', namespace: _kXsi); -} - -Iterable _getArchives(XmlElement parent) { - assert(parent != null); - final XmlElement archives = - _firstOrDefault(parent.findAllElements('archives')); - if (archives == null) { - return null; - } - return archives.findElements('archive'); -} - -/// Object class for https://dl.google.com/android/repository/repository2-1.xml. -class AndroidRepository { - const AndroidRepository( - this.licenses, - this.platforms, - this.buildTools, - this.platformTools, - this.tools, - this.ndkBundles, - ) : assert(licenses != null), - assert(platforms != null), - assert(buildTools != null), - assert(platformTools != null), - assert(tools != null), - assert(ndkBundles != null); - - /// Parses the `` element. - factory AndroidRepository.fromXml(XmlElement element) { - _debugCheckElement(element, 'sdk-repository', namespace: _kSdk); - final List licenses = - []; - final List platforms = - []; - final List buildTools = - []; - final List platformTools = - []; - final List tools = - []; - - final List ndkBundles = - []; - for (final XmlElement child in element.children.whereType()) { - switch (child.name.local) { - case 'license': - licenses.add(AndroidRepositoryLicense.fromXml(child)); - break; - case 'remotePackage': - final XmlElement typeDetails = _getTypeDetails(child); - switch (_getTypeDetailsType(typeDetails)) { - case 'sdk:platformDetailsType': - platforms.add( - AndroidRepositoryPlatform.fromXml(child, typeDetails), - ); - break; - case 'generic:genericDetailsType': - final String path = child.getAttribute('path'); - if (path.startsWith('build-tools;')) { - buildTools.add(AndroidRepositoryRemotePackage.fromXml(child)); - } else if (path.startsWith('platform-tools')) { - platformTools - .add(AndroidRepositoryRemotePackage.fromXml(child)); - } else if (path.startsWith('tools')) { - tools.add(AndroidRepositoryRemotePackage.fromXml(child)); - } else if (path.startsWith('ndk-bundle')) { - ndkBundles.add(AndroidRepositoryRemotePackage.fromXml(child)); - } - break; - default: - break; - } - break; - default: - break; - } - } - return AndroidRepository( - licenses, - platforms, - buildTools, - platformTools, - tools, - ndkBundles, - ); - } - - /// Licenses from the repository XML. - final List licenses; - - /// Platform information from the repository XML. - final List platforms; - - /// Build tools information from the repostiory XML. - final List buildTools; - - /// Platform tools information from the repostiory XML. - final List platformTools; - - /// Tools information from the repostiory XML. - final List tools; - - /// Tools information from the repostiory XML. - final List ndkBundles; -} - -/// Object class for the `` element in the Android repo XML. -/// -/// This node contains license information for the packages in the SDK. -class AndroidRepositoryLicense { - /// Creates a new RepositoryLicense holder. - const AndroidRepositoryLicense(this.id, this.text) - : assert(id != null), - assert(text != null); - - /// Parses a `` element. - factory AndroidRepositoryLicense.fromXml(XmlElement element) { - _debugCheckElement(element, 'license'); - return AndroidRepositoryLicense(element.getAttribute('id'), element.text); - } - - /// The identifier for this license. - final String id; - - /// The text of the license. - final String text; -} - -/// Object class for the `` nodes in the repo XML. -/// -/// These nodes contain information about where to download the zipped -/// binaries for various components of the SDK. -class AndroidRepositoryRemotePackage { - const AndroidRepositoryRemotePackage( - this.revision, - this.displayName, - this.archives, { - this.isObsolete = false, - }) : assert(revision != null), - assert(displayName != null), - assert(archives != null), - assert(isObsolete != null); - - factory AndroidRepositoryRemotePackage.fromXml(XmlElement element) { - _debugCheckElement(element, 'remotePackage'); - - return AndroidRepositoryRemotePackage( - AndroidRepositoryRevision.fromXml( - _firstOrDefault(element.findElements('revision'))), - _getChildText(element, 'display-name'), - _getArchives(element) - .map( - (XmlElement archive) => AndroidRepositoryArchive.fromXml(archive), - ) - .toList(), - isObsolete: element.getAttribute('obsolete') == 'true', - ); - } - - /// The `` element, if any. - final AndroidRepositoryRevision revision; - - /// The `` element. - final String displayName; - - /// The list of archives available for this package. - final List archives; - - /// Whether this package is marked as obsolete. - final bool isObsolete; - - @override - String toString() => '$runtimeType{revision: $revision, displayName: $displayName, archives: $archives}'; -} - -/// Object class for instances of `` elements that are for the -/// platform package. -class AndroidRepositoryPlatform extends AndroidRepositoryRemotePackage { - const AndroidRepositoryPlatform( - AndroidRepositoryRevision revision, - String displayName, - List archives, - this.apiLevel, { - bool isObsolete = false, - }) : assert(apiLevel != null), - super(revision, displayName, archives, isObsolete: isObsolete); - - /// Parses an platform from a `` element. - factory AndroidRepositoryPlatform.fromXml( - XmlElement element, - XmlElement typeDetails, - ) { - _debugCheckElement(element, 'remotePackage'); - assert(typeDetails != null); - - return AndroidRepositoryPlatform( - AndroidRepositoryRevision.fromXml( - _firstOrDefault(element.findElements('revision'))), - _getChildText(element, 'display-name'), - _getArchives(element) - .map( - (XmlElement archive) => AndroidRepositoryArchive.fromXml(archive), - ) - .toList(), - int.parse(_getChildText(typeDetails, 'api-level', def: '0')), - isObsolete: element.getAttribute('obsolete') == 'true', - ); - } - - /// The API level for this Platform. - final int apiLevel; - - @override - String toString() => '$runtimeType{revision: $revision, displayName: $displayName, archives: $archives, apiLevel: $apiLevel}'; -} - -/// The OS types supported by Android. -enum OSType { - /// Any OS is supported. - any, - - /// Suppoorts Linux only. - linux, - - /// Supports macOS only. - mac, - - /// Supports windows only. - windows, -} - -/// Object class for the `` element in the Android repo XML. -/// -/// Contains information about the size, checksum, and location of a binary -/// zip archive. Optionally contains information about what host OS is -/// supported. -class AndroidRepositoryArchive { - /// Creates a new AndroidRepositoryArchive. - const AndroidRepositoryArchive( - this.size, - this.checksum, - this.url, { - this.hostOS = OSType.any, - }) : assert(size != null), - assert(checksum != null), - assert(url != null), - assert(hostOS != null); - - /// Parses an `` element. - factory AndroidRepositoryArchive.fromXml(XmlElement element) { - _debugCheckElement(element, 'archive'); - final XmlElement complete = - _firstOrDefault(element.findElements('complete')); - if (complete == null) { - throw StateError('Found element without a node!'); - } - - return AndroidRepositoryArchive( - int.parse(_getChildText(complete, 'size', def: '0')), - _getChildText(complete, 'checksum'), - _getChildText(complete, 'url'), - hostOS: _parseHostType(_getChildText(element, 'host-os')), - ); - } - - /// The download size in bytes of the archive. - final int size; - - /// The SHA-1 checksum of the archive. - final String checksum; - - /// The absolute or relative URL of the file. - final String url; - - /// The OS type, if applicable, for this archive. - final OSType hostOS; - - @override - String toString() => '$runtimeType{size: $size, checksum: $checksum, url: $url, hostOS: $hostOS}'; -} - -/// Object class for a `` node in the Android repo XML. -/// -/// Contains information about the revision of the archive. -/// -/// In the case of the platform package, this is the revision of the platform. -/// -/// In all other cases, this basically works like semver. -class AndroidRepositoryRevision { - /// Creates a new Android repository revision object. All values are required. - const AndroidRepositoryRevision( - this.major, [ - this.minor = 0, - this.micro = 0, - this.preview = 0, - ]) : assert(major != null), - assert(minor != null), - assert(micro != null), - assert(preview != null); - - /// Parses a `` element from the Android repository XML. - factory AndroidRepositoryRevision.fromXml(XmlElement element) { - if (element == null) { - return const AndroidRepositoryRevision(0); - } - _debugCheckElement(element, 'revision'); - return AndroidRepositoryRevision( - int.tryParse(_getChildText(element, 'major', def: '0')), - int.tryParse(_getChildText(element, 'minor', def: '0')), - int.tryParse(_getChildText(element, 'micro', def: '0')), - ); - } - - /// The major revision value. - final int major; - - /// The minor revision value. - final int minor; - - /// The micro revision. - final int micro; - - /// Preview/Release candidate version. A value of 0 indicates that - /// this is not a preview. - final int preview; - - /// Whether this revision represents a preview or release. - bool get isPreview => preview > 0; - - bool matches(int major, int minor, int micro, [int preview = 0]) { - return this.major == major && - this.minor == minor && - this.micro == micro && - this.preview == preview; - } - - @override - String toString() => '$runtimeType:{$major.$minor.$micro.$preview}'; -} diff --git a/tools/android_sdk_downloader/lib/src/checksums.dart b/tools/android_sdk_downloader/lib/src/checksums.dart deleted file mode 100644 index 37e376217e9b6..0000000000000 --- a/tools/android_sdk_downloader/lib/src/checksums.dart +++ /dev/null @@ -1,31 +0,0 @@ -// 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. - -import 'dart:convert'; -import 'dart:io'; - -import 'package:path/path.dart' as path; - -Future> loadChecksums(Directory directory) async { - final File checksumFile = File(path.join(directory.path, 'checksums.json')); - if (!checksumFile.existsSync()) { - return {}; - } - final Map result = {}; - final Map jsonResult = - json.decode(await checksumFile.readAsString()); - for (final String key in jsonResult.keys) { - result[key] = jsonResult[key]; - } - return result; -} - -Future writeChecksums( - Map checksums, - Directory directory, -) async { - final File checksumFile = File(path.join(directory.path, 'checksums.json')); - const JsonEncoder encoder = JsonEncoder.withIndent(' '); - await checksumFile.writeAsString(encoder.convert(checksums)); -} diff --git a/tools/android_sdk_downloader/lib/src/http.dart b/tools/android_sdk_downloader/lib/src/http.dart deleted file mode 100644 index 4b2fa6cc29cd5..0000000000000 --- a/tools/android_sdk_downloader/lib/src/http.dart +++ /dev/null @@ -1,130 +0,0 @@ -// 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. - -import 'dart:io'; - -import 'package:path/path.dart' as path; - -import 'android_repository.dart'; -import 'options.dart'; - -typedef HttpResponseHandler = Future Function(HttpClientResponse); - -Future httpGet( - Uri url, - HttpResponseHandler handler, -) async { - assert(url != null); - assert(handler != null); - - final HttpClient httpClient = HttpClient(); - - try { - final HttpClientRequest request = await httpClient.getUrl(url); - final HttpClientResponse response = await request.close(); - await handler(response); - } finally { - httpClient.close(); - } -} - -class DownloadTracker { - DownloadTracker(this.name, this.total) : received = 0; - - final String name; - final int total; - int received; - - String get percent => '${((received / total) * 100).round()}'.padLeft(3) + '%'; - - @override - String toString() => '$name: $received/$total ($percent).'; -} - -final Map _downloadTrackers = - {}; -void _printDownloadTrackers() { - for (final DownloadTracker tracker in _downloadTrackers.values) { - stdout.write( - '${tracker.name.replaceAll('Android ', '')}: ${tracker.percent} '); - } - - if (_downloadTrackers.values - .every((DownloadTracker tracker) => tracker.received == tracker.total)) { - stdout.writeln(); - print('Downloads complete.'); - } else { - stdout.write('\r'); - } -} - -class ArchiveDownloadResult { - const ArchiveDownloadResult(this.zipFileName, this.checksum); - - static const ArchiveDownloadResult empty = ArchiveDownloadResult(null, null); - - final String zipFileName; - final String checksum; -} - -Future downloadArchive( - List packages, - OptionsRevision revision, - String repositoryBase, - Directory outDirectory, { - OSType osType, - int apiLevel, - String checksumToSkip, -}) async { - AndroidRepositoryRemotePackage package; - for (final AndroidRepositoryRemotePackage p in packages) { - if (apiLevel != null && p is AndroidRepositoryPlatform) { - if (p.apiLevel != apiLevel) { - continue; - } - } - if (p.revision.matches( - revision.major, revision.minor, revision.micro, revision.preview)) { - package = p; - break; - } - } - if (package == null) { - throw StateError('Could not find package matching arguments: ' - '$revision, $osType, $apiLevel'); - } - - final String displayName = package.displayName; - final AndroidRepositoryArchive archive = osType == null - ? package.archives.first - : package.archives.firstWhere( - (AndroidRepositoryArchive archive) => archive.hostOS == osType, - ); - - if (archive.checksum == checksumToSkip) { - print('Skipping $displayName, checksum matches current asset.'); - return ArchiveDownloadResult.empty; - } - - Uri uri = Uri.parse(archive.url); - if (!uri.isAbsolute) { - uri = Uri.parse(repositoryBase + archive.url); - } - - _downloadTrackers[displayName] = DownloadTracker(displayName, archive.size); - final String outFileName = path.join(outDirectory.path, archive.url); - final IOSink tempFileSink = File(outFileName).openWrite(); - - Future _handlePlatformZip(HttpClientResponse response) async { - await for (List data in response) { - _downloadTrackers[displayName].received += data.length; - tempFileSink.add(data); - _printDownloadTrackers(); - } - await tempFileSink.close(); - } - - await httpGet(uri, _handlePlatformZip); - return ArchiveDownloadResult(outFileName, archive.checksum); -} diff --git a/tools/android_sdk_downloader/lib/src/options.dart b/tools/android_sdk_downloader/lib/src/options.dart deleted file mode 100644 index 73e3a2f210b35..0000000000000 --- a/tools/android_sdk_downloader/lib/src/options.dart +++ /dev/null @@ -1,129 +0,0 @@ -// 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. - -import 'dart:io'; - -import 'package:args/args.dart'; -import 'package:meta/meta.dart'; - -import 'android_repository.dart'; - -const Map osTypeMap = { - 'windows': OSType.windows, - 'macos': OSType.mac, - 'linux': OSType.linux, -}; - -class OptionsRevision { - const OptionsRevision( - this.raw, [ - this.major = 0, - this.minor = 0, - this.micro = 0, - this.preview = 0, - ]); - - /// Accepted formats: 1.2.3 or 1.2.3.4 - factory OptionsRevision.fromRaw(String raw) { - final List rawParts = raw.split('.'); - if (rawParts == null || (rawParts.length != 3 && rawParts.length != 4)) { - throw ArgumentError('Invalid revision string $raw.'); - } - return OptionsRevision( - raw, - int.parse(rawParts[0]), - int.parse(rawParts[1]), - int.parse(rawParts[2]), - rawParts.length == 4 ? int.parse(rawParts[3]) : 0, - ); - } - - final String raw; - final int major; - final int minor; - final int micro; - final int preview; -} - -class Options { - const Options({ - @required this.platformApiLevel, - @required this.platformRevision, - @required this.repositoryXml, - @required this.repositoryXmlUri, - @required this.buildToolsRevision, - @required this.platformToolsRevision, - @required this.toolsRevision, - @required this.ndkRevision, - @required this.outDirectory, - @required this.repositoryBase, - @required this.osType, - this.acceptLicenses = false, - this.overwrite = false, - }); - - static Options parseAndValidate(List args, ArgParser argParser) { - final ArgResults argResults = argParser.parse(args); - final int platformApiLevel = int.parse(argResults['platform']); - final int platformRevision = int.parse(argResults['platform-revision']); - final Directory outDirectory = Directory(argResults['out']); - - final String rawRepositoryXmlUri = argResults['repository-xml']; - final Uri repositoryXmlUri = Uri.tryParse(rawRepositoryXmlUri); - final int lastSlash = rawRepositoryXmlUri.lastIndexOf('/'); - final String repositoryBase = - rawRepositoryXmlUri.substring(0, lastSlash + 1); - - if (repositoryXmlUri == null) { - throw ArgumentError( - 'Error: could not parse $rawRepositoryXmlUri as a valid URL.'); - } - - String getRawVersion(String argName) { - final String raw = argResults[argName]; - if (raw?.isEmpty == true) { - print('Could not parse required argument $argName.'); - print(argParser.usage); - exit(-1); - } - return raw; - } - - final String rawBuildToolsVersion = getRawVersion('build-tools-version'); - final String rawPlatformToolsVersion = - getRawVersion('platform-tools-version'); - final String rawToolsVersion = getRawVersion('tools-version'); - final String rawNdkVersion = getRawVersion('ndk-version'); - - return Options( - platformApiLevel: platformApiLevel, - platformRevision: platformRevision, - outDirectory: outDirectory, - repositoryXml: rawRepositoryXmlUri, - repositoryXmlUri: repositoryXmlUri, - repositoryBase: repositoryBase, - buildToolsRevision: OptionsRevision.fromRaw(rawBuildToolsVersion), - platformToolsRevision: OptionsRevision.fromRaw(rawPlatformToolsVersion), - toolsRevision: OptionsRevision.fromRaw(rawToolsVersion), - ndkRevision: OptionsRevision.fromRaw(rawNdkVersion), - osType: osTypeMap[argResults['os']], - acceptLicenses: argResults['accept-licenses'], - overwrite: argResults['overwrite'], - ); - } - - final int platformApiLevel; - final String repositoryXml; - final Uri repositoryXmlUri; - final int platformRevision; - final OptionsRevision buildToolsRevision; - final OptionsRevision platformToolsRevision; - final OptionsRevision toolsRevision; - final OptionsRevision ndkRevision; - final String repositoryBase; - final Directory outDirectory; - final OSType osType; - final bool acceptLicenses; - final bool overwrite; -} diff --git a/tools/android_sdk_downloader/lib/src/zip.dart b/tools/android_sdk_downloader/lib/src/zip.dart deleted file mode 100644 index 488cb9b29b512..0000000000000 --- a/tools/android_sdk_downloader/lib/src/zip.dart +++ /dev/null @@ -1,41 +0,0 @@ -// 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. - -import 'dart:async'; -import 'dart:io'; - -// TODO(dnfield): if/when a streaming unzip routine is available for Dart, use that instead. - -Future unzipFile(String file, Directory outDir) async { - await outDir.parent.create(recursive: true); - final Directory tempDir = await outDir.parent.createTemp(); - - String command; - List args; - if (Platform.isWindows) { - command = 'powershell.exe -nologo -noprofile -command ' - '"& { ' - 'Add-Type -A \'System.IO.Compression.FileSystem\'; ' - '[IO.Compression.ZipFile]::ExtractToDirectory(\'$file\', \'${tempDir.path}\'); ' - '}"'; - args = []; - } else { - command = 'unzip'; - args = [ - file, - '-d', - tempDir.path, - ]; - } - final ProcessResult result = await Process.run(command, args); - if (result.exitCode != 0) { - throw Exception('Failed to unzip archive!'); - } - final Directory dir = await tempDir.list().first; - if (await outDir.exists()) { - await outDir.delete(recursive: true); - } - await dir.rename(outDir.path); - await tempDir.delete(); -} diff --git a/tools/android_sdk_downloader/pubspec.yaml b/tools/android_sdk_downloader/pubspec.yaml deleted file mode 100644 index ef1b304818da9..0000000000000 --- a/tools/android_sdk_downloader/pubspec.yaml +++ /dev/null @@ -1,12 +0,0 @@ -name: 'android_sdk_downloader' -publish_to: none - -environment: - # The pub client defaults to an <2.0.0 sdk constraint which we need to explicitly overwrite. - sdk: ">=2.0.0-dev.68.0 <3.0.0" - -dependencies: - args: ^1.5.1 - meta: ^1.1.6 - path: ^1.6.2 - xml: ^3.2.3 diff --git a/tools/create_ndk_cipd_package.sh b/tools/create_ndk_cipd_package.sh new file mode 100755 index 0000000000000..7651b195735c4 --- /dev/null +++ b/tools/create_ndk_cipd_package.sh @@ -0,0 +1,31 @@ +#!/bin/bash + +# This script requires depot_tools to be on path. + +print_usage () { + echo "Usage: create_ndk_cipd_package.sh " + echo " where:" + echo " - PATH_TO_NDK_ASSETS is the path to the unzipped NDK folder" + echo " - PLATFORM_NAME is one of linux-amd64, mac-amd64, or windows-amd64" + echo " - VERSION_TAG is the version of the NDK, e.g. r19b" +} + +if [[ $3 == "" ]]; then + print_usage + exit 1 +fi + +if [[ ! -d "$1" ]]; then + echo "Directory $1 not found." + print_usage + exit 1 +fi + +if [[ $2 != "linux-amd64" && $2 != "mac-amd64" && $2 != "windows-amd64" ]]; then + echo "Unsupported platform $2." + echo "Valid options are linux-amd64, mac-amd64, windows-amd64." + print_usage + exit 1 +fi + +cipd create -in $1 -name flutter/android/ndk/$2 -install-mode copy -tag version:$3 diff --git a/tools/create_sdk_cipd_package.sh b/tools/create_sdk_cipd_package.sh new file mode 100755 index 0000000000000..7f1ed33ad9fb9 --- /dev/null +++ b/tools/create_sdk_cipd_package.sh @@ -0,0 +1,43 @@ +#!/bin/bash + +# This script requires depot_tools to be on path. + +print_usage () { + echo "Usage: create_ndk_cipd_package.sh " + echo " where:" + echo " - PACKAGE_TYPE is one of build-tools, platform-tools, platforms, or tools" + echo " - PATH_TO_ASSETS is the path to the unzipped asset folder" + echo " - PLATFORM_NAME is one of linux-amd64, mac-amd64, or windows-amd64" + echo " - VERSION_TAG is the version of the package, e.g. 28r6 or 28.0.3" +} + +if [[ $4 == "" ]]; then + print_usage + exit 1 +fi + +if [[ $1 != "build-tools" && $1 != "platform-tools" && $1 != "platforms" && $1 != "tools" ]]; then + echo "Unrecognized paackage type $1." + print_usage + exit 1 +fi + +if [[ ! -d "$2" ]]; then + echo "Directory $1 not found." + print_usage + exit 1 +fi + +if [[ $1 != "platforms" && $3 != "linux-amd64" && $3 != "mac-amd64" && $3 != "windows-amd64" ]]; then + echo "Unsupported platform $3." + echo "Valid options are linux-amd64, mac-amd64, windows-amd64." + print_usage + exit 1 +fi + +if [[ $1 == "platforms" ]]; then + echo "Ignoring PLATFORM_NAME - this package is cross-platform." + cipd create -in $2 -name flutter/android/sdk/$1 -install-mode copy -tag version:$4 +else + cipd create -in $2 -name flutter/android/sdk/$1/$3 -install-mode copy -tag version:$4 +fi From 4e54bc93ca9aaf2156fb06266c9fe509e8599a5f Mon Sep 17 00:00:00 2001 From: Jonah Williams Date: Sat, 9 Mar 2019 15:07:26 -0800 Subject: [PATCH 1336/1537] Guard initialization of touch exploration listener (#8103) --- .../io/flutter/view/AccessibilityBridge.java | 41 ++++++++++--------- 1 file changed, 22 insertions(+), 19 deletions(-) diff --git a/shell/platform/android/io/flutter/view/AccessibilityBridge.java b/shell/platform/android/io/flutter/view/AccessibilityBridge.java index 812170155ec75..7d4e5060aa130 100644 --- a/shell/platform/android/io/flutter/view/AccessibilityBridge.java +++ b/shell/platform/android/io/flutter/view/AccessibilityBridge.java @@ -266,25 +266,7 @@ public void onAccessibilityStateChanged(boolean accessibilityEnabled) { // This is guarded at instantiation time. @TargetApi(19) @RequiresApi(19) - private final AccessibilityManager.TouchExplorationStateChangeListener touchExplorationStateChangeListener = new AccessibilityManager.TouchExplorationStateChangeListener() { - @Override - public void onTouchExplorationStateChanged(boolean isTouchExplorationEnabled) { - if (isTouchExplorationEnabled) { - accessibilityFeatureFlags |= AccessibilityFeature.ACCESSIBLE_NAVIGATION.value; - } else { - onTouchExplorationExit(); - accessibilityFeatureFlags &= ~AccessibilityFeature.ACCESSIBLE_NAVIGATION.value; - } - sendLatestAccessibilityFlagsToFlutter(); - - if (onAccessibilityChangeListener != null) { - onAccessibilityChangeListener.onAccessibilityChanged( - accessibilityManager.isEnabled(), - isTouchExplorationEnabled - ); - } - } - }; + private final AccessibilityManager.TouchExplorationStateChangeListener touchExplorationStateChangeListener; // Listener that is notified when the global TRANSITION_ANIMATION_SCALE. When this scale goes // to zero, we instruct Flutter to disable animations. @@ -336,8 +318,29 @@ public void onChange(boolean selfChange, Uri uri) { // Tell Flutter whether touch exploration is initially active or not. Then register a listener // to be notified of changes in the future. if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { + touchExplorationStateChangeListener = new AccessibilityManager.TouchExplorationStateChangeListener() { + @Override + public void onTouchExplorationStateChanged(boolean isTouchExplorationEnabled) { + if (isTouchExplorationEnabled) { + accessibilityFeatureFlags |= AccessibilityFeature.ACCESSIBLE_NAVIGATION.value; + } else { + onTouchExplorationExit(); + accessibilityFeatureFlags &= ~AccessibilityFeature.ACCESSIBLE_NAVIGATION.value; + } + sendLatestAccessibilityFlagsToFlutter(); + + if (onAccessibilityChangeListener != null) { + onAccessibilityChangeListener.onAccessibilityChanged( + accessibilityManager.isEnabled(), + isTouchExplorationEnabled + ); + } + } + }; touchExplorationStateChangeListener.onTouchExplorationStateChanged(accessibilityManager.isTouchExplorationEnabled()); this.accessibilityManager.addTouchExplorationStateChangeListener(touchExplorationStateChangeListener); + } else { + touchExplorationStateChangeListener = null; } // Tell Flutter whether animations should initially be enabled or disabled. Then register a From 14d1584a22627e9a1eefc0e5f3de78caffcde09e Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Sat, 9 Mar 2019 22:51:47 -0500 Subject: [PATCH 1337/1537] Roll src/third_party/skia 29d5dec9a078..92ae09900456 (1 commits) (#8104) https://skia.googlesource.com/skia.git/%2Blog/29d5dec9a078..92ae09900456 git log 29d5dec9a0783a033b921dc483fb98d565d684f6..92ae09900456256ad9802d8c1c2eb674531cfba9 --date=short --no-merges --format=%ad %ae %s 2019-03-10 skia-autoroll@skia-public.iam.gserviceaccount.com Roll ../src a70166a5efb1..bc2c6257d015 (100 commits) The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (benjaminwagner@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 1b9e0071fa060..1ffe28e17c312 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '29d5dec9a0783a033b921dc483fb98d565d684f6', + 'skia_revision': '92ae09900456256ad9802d8c1c2eb674531cfba9', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 3de349a7eed20..2fd2788fb9ce2 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 0dd2b3de568e29ad48747dd78b7125d9 +Signature: 03a03b5889568186f6b1f8db9ff7dc92 UNUSED LICENSES: From a28b530073ed5ead7151b53f9bcb1afd529e2807 Mon Sep 17 00:00:00 2001 From: Chinmay Garde Date: Sat, 9 Mar 2019 20:04:16 -0800 Subject: [PATCH 1338/1537] Log non-kSuccess returns from embedder API calls. (#8096) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Embedders don’t realize that some calls to the API return an error and don’t handle the same. Log such erroneous returns. --- shell/platform/embedder/embedder.cc | 80 ++++++++++++++++------------- 1 file changed, 45 insertions(+), 35 deletions(-) diff --git a/shell/platform/embedder/embedder.cc b/shell/platform/embedder/embedder.cc index 8e56920a32868..8fb7ef07dea94 100644 --- a/shell/platform/embedder/embedder.cc +++ b/shell/platform/embedder/embedder.cc @@ -50,6 +50,16 @@ extern const intptr_t kPlatformStrongDillSize; return static_castmember)>((default_value)); \ })() +#define LOG_EMBEDDER_ERROR(code) \ + ({ \ + do { \ + FML_LOG(ERROR) << "Returning error '" << #code << "' (" << code \ + << ") from Flutter Embedder API call to '" \ + << __FUNCTION__ << "'."; \ + } while (0); \ + (code); \ + }) + static bool IsOpenGLRendererConfigValid(const FlutterRendererConfig* config) { if (config->type != kOpenGL) { return false; @@ -308,19 +318,19 @@ FlutterEngineResult FlutterEngineRun(size_t version, FlutterEngine* engine_out) { // Step 0: Figure out arguments for shell creation. if (version != FLUTTER_ENGINE_VERSION) { - return kInvalidLibraryVersion; + return LOG_EMBEDDER_ERROR(kInvalidLibraryVersion); } if (engine_out == nullptr) { - return kInvalidArguments; + return LOG_EMBEDDER_ERROR(kInvalidArguments); } if (args == nullptr) { - return kInvalidArguments; + return LOG_EMBEDDER_ERROR(kInvalidArguments); } if (SAFE_ACCESS(args, assets_path, nullptr) == nullptr) { - return kInvalidArguments; + return LOG_EMBEDDER_ERROR(kInvalidArguments); } if (SAFE_ACCESS(args, main_path__unused__, nullptr) != nullptr) { @@ -334,7 +344,7 @@ FlutterEngineResult FlutterEngineRun(size_t version, } if (!IsRendererValid(config)) { - return kInvalidArguments; + return LOG_EMBEDDER_ERROR(kInvalidArguments); } std::string icu_data_path; @@ -375,7 +385,7 @@ FlutterEngineResult FlutterEngineRun(size_t version, if (!fml::IsFile(application_kernel_path)) { FML_LOG(ERROR) << "Not running in AOT mode but could not resolve the " "kernel binary."; - return kInvalidArguments; + return LOG_EMBEDDER_ERROR(kInvalidArguments); } settings.application_kernel_asset = kApplicationKernelSnapshotFileName; } @@ -529,7 +539,7 @@ FlutterEngineResult FlutterEngineRun(size_t version, config, user_data, platform_dispatch_table); if (!on_create_platform_view) { - return kInvalidArguments; + return LOG_EMBEDDER_ERROR(kInvalidArguments); } shell::Shell::CreateCallback on_create_rasterizer = @@ -599,12 +609,12 @@ FlutterEngineResult FlutterEngineRun(size_t version, ); if (!embedder_engine->IsValid()) { - return kInvalidArguments; + return LOG_EMBEDDER_ERROR(kInvalidArguments); } // Step 2: Setup the rendering surface. if (!embedder_engine->NotifyCreated()) { - return kInvalidArguments; + return LOG_EMBEDDER_ERROR(kInvalidArguments); } // Step 3: Run the engine. @@ -618,11 +628,11 @@ FlutterEngineResult FlutterEngineRun(size_t version, std::make_unique(fml::OpenDirectory( settings.assets_path.c_str(), false, fml::FilePermission::kRead))); if (!run_configuration.IsValid()) { - return kInvalidArguments; + return LOG_EMBEDDER_ERROR(kInvalidArguments); } if (!embedder_engine->Run(std::move(run_configuration))) { - return kInvalidArguments; + return LOG_EMBEDDER_ERROR(kInvalidArguments); } // Finally! Release the ownership of the embedder engine to the caller. @@ -632,7 +642,7 @@ FlutterEngineResult FlutterEngineRun(size_t version, FlutterEngineResult FlutterEngineShutdown(FlutterEngine engine) { if (engine == nullptr) { - return kInvalidArguments; + return LOG_EMBEDDER_ERROR(kInvalidArguments); } auto embedder_engine = reinterpret_cast(engine); embedder_engine->NotifyDestroyed(); @@ -644,7 +654,7 @@ FlutterEngineResult FlutterEngineSendWindowMetricsEvent( FlutterEngine engine, const FlutterWindowMetricsEvent* flutter_metrics) { if (engine == nullptr || flutter_metrics == nullptr) { - return kInvalidArguments; + return LOG_EMBEDDER_ERROR(kInvalidArguments); } blink::ViewportMetrics metrics; @@ -656,7 +666,7 @@ FlutterEngineResult FlutterEngineSendWindowMetricsEvent( return reinterpret_cast(engine)->SetViewportMetrics( std::move(metrics)) ? kSuccess - : kInvalidArguments; + : LOG_EMBEDDER_ERROR(kInvalidArguments); } // Returns the blink::PointerData::Change for the given FlutterPointerPhase. @@ -699,7 +709,7 @@ FlutterEngineResult FlutterEngineSendPointerEvent( const FlutterPointerEvent* pointers, size_t events_count) { if (engine == nullptr || pointers == nullptr || events_count == 0) { - return kInvalidArguments; + return LOG_EMBEDDER_ERROR(kInvalidArguments); } auto packet = std::make_unique(events_count); @@ -728,19 +738,19 @@ FlutterEngineResult FlutterEngineSendPointerEvent( return reinterpret_cast(engine) ->DispatchPointerDataPacket(std::move(packet)) ? kSuccess - : kInvalidArguments; + : LOG_EMBEDDER_ERROR(kInvalidArguments); } FlutterEngineResult FlutterEngineSendPlatformMessage( FlutterEngine engine, const FlutterPlatformMessage* flutter_message) { if (engine == nullptr || flutter_message == nullptr) { - return kInvalidArguments; + return LOG_EMBEDDER_ERROR(kInvalidArguments); } if (SAFE_ACCESS(flutter_message, channel, nullptr) == nullptr || SAFE_ACCESS(flutter_message, message, nullptr) == nullptr) { - return kInvalidArguments; + return LOG_EMBEDDER_ERROR(kInvalidArguments); } auto message = fml::MakeRefCounted( @@ -753,7 +763,7 @@ FlutterEngineResult FlutterEngineSendPlatformMessage( return reinterpret_cast(engine)->SendPlatformMessage( std::move(message)) ? kSuccess - : kInvalidArguments; + : LOG_EMBEDDER_ERROR(kInvalidArguments); } FlutterEngineResult FlutterEngineSendPlatformMessageResponse( @@ -762,7 +772,7 @@ FlutterEngineResult FlutterEngineSendPlatformMessageResponse( const uint8_t* data, size_t data_length) { if (data_length != 0 && data == nullptr) { - return kInvalidArguments; + return LOG_EMBEDDER_ERROR(kInvalidArguments); } auto response = handle->message->response(); @@ -788,11 +798,11 @@ FlutterEngineResult FlutterEngineRegisterExternalTexture( FlutterEngine engine, int64_t texture_identifier) { if (engine == nullptr || texture_identifier == 0) { - return kInvalidArguments; + return LOG_EMBEDDER_ERROR(kInvalidArguments); } if (!reinterpret_cast(engine)->RegisterTexture( texture_identifier)) { - return kInternalInconsistency; + return LOG_EMBEDDER_ERROR(kInternalInconsistency); } return kSuccess; } @@ -806,7 +816,7 @@ FlutterEngineResult FlutterEngineUnregisterExternalTexture( if (!reinterpret_cast(engine)->UnregisterTexture( texture_identifier)) { - return kInternalInconsistency; + return LOG_EMBEDDER_ERROR(kInternalInconsistency); } return kSuccess; @@ -816,11 +826,11 @@ FlutterEngineResult FlutterEngineMarkExternalTextureFrameAvailable( FlutterEngine engine, int64_t texture_identifier) { if (engine == nullptr || texture_identifier == 0) { - return kInvalidArguments; + return LOG_EMBEDDER_ERROR(kInvalidArguments); } if (!reinterpret_cast(engine) ->MarkTextureFrameAvailable(texture_identifier)) { - return kInternalInconsistency; + return LOG_EMBEDDER_ERROR(kInternalInconsistency); } return kSuccess; } @@ -828,11 +838,11 @@ FlutterEngineResult FlutterEngineMarkExternalTextureFrameAvailable( FlutterEngineResult FlutterEngineUpdateSemanticsEnabled(FlutterEngine engine, bool enabled) { if (engine == nullptr) { - return kInvalidArguments; + return LOG_EMBEDDER_ERROR(kInvalidArguments); } if (!reinterpret_cast(engine)->SetSemanticsEnabled( enabled)) { - return kInternalInconsistency; + return LOG_EMBEDDER_ERROR(kInternalInconsistency); } return kSuccess; } @@ -841,11 +851,11 @@ FlutterEngineResult FlutterEngineUpdateAccessibilityFeatures( FlutterEngine engine, FlutterAccessibilityFeature flags) { if (engine == nullptr) { - return kInvalidArguments; + return LOG_EMBEDDER_ERROR(kInvalidArguments); } if (!reinterpret_cast(engine) ->SetAccessibilityFeatures(flags)) { - return kInternalInconsistency; + return LOG_EMBEDDER_ERROR(kInternalInconsistency); } return kSuccess; } @@ -857,14 +867,14 @@ FlutterEngineResult FlutterEngineDispatchSemanticsAction( const uint8_t* data, size_t data_length) { if (engine == nullptr) { - return kInvalidArguments; + return LOG_EMBEDDER_ERROR(kInvalidArguments); } auto engine_action = static_cast(action); if (!reinterpret_cast(engine) ->DispatchSemanticsAction( id, engine_action, std::vector({data, data + data_length}))) { - return kInternalInconsistency; + return LOG_EMBEDDER_ERROR(kInternalInconsistency); } return kSuccess; } @@ -874,7 +884,7 @@ FlutterEngineResult FlutterEngineOnVsync(FlutterEngine engine, uint64_t frame_start_time_nanos, uint64_t frame_target_time_nanos) { if (engine == nullptr) { - return kInvalidArguments; + return LOG_EMBEDDER_ERROR(kInvalidArguments); } auto start_time = fml::TimePoint::FromEpochDelta( @@ -885,7 +895,7 @@ FlutterEngineResult FlutterEngineOnVsync(FlutterEngine engine, if (!reinterpret_cast(engine)->OnVsyncEvent( baton, start_time, target_time)) { - return kInternalInconsistency; + return LOG_EMBEDDER_ERROR(kInternalInconsistency); } return kSuccess; @@ -907,7 +917,7 @@ FlutterEngineResult FlutterEnginePostRenderThreadTask(FlutterEngine engine, VoidCallback callback, void* baton) { if (engine == nullptr || callback == nullptr) { - return kInvalidArguments; + return LOG_EMBEDDER_ERROR(kInvalidArguments); } auto task = [callback, baton]() { callback(baton); }; @@ -915,5 +925,5 @@ FlutterEngineResult FlutterEnginePostRenderThreadTask(FlutterEngine engine, return reinterpret_cast(engine)->PostRenderThreadTask( task) ? kSuccess - : kInternalInconsistency; + : LOG_EMBEDDER_ERROR(kInternalInconsistency); } From 0d2cf5857b2be0949435f60c0188f1aed4d93c93 Mon Sep 17 00:00:00 2001 From: Dan Field Date: Sun, 10 Mar 2019 10:46:27 -0700 Subject: [PATCH 1339/1537] Fix the Windows build (#8106) * Make macro for logging embedder errors build on Windows --- shell/platform/embedder/embedder.cc | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/shell/platform/embedder/embedder.cc b/shell/platform/embedder/embedder.cc index 8fb7ef07dea94..09933a32a001e 100644 --- a/shell/platform/embedder/embedder.cc +++ b/shell/platform/embedder/embedder.cc @@ -50,15 +50,16 @@ extern const intptr_t kPlatformStrongDillSize; return static_castmember)>((default_value)); \ })() -#define LOG_EMBEDDER_ERROR(code) \ - ({ \ - do { \ - FML_LOG(ERROR) << "Returning error '" << #code << "' (" << code \ - << ") from Flutter Embedder API call to '" \ - << __FUNCTION__ << "'."; \ - } while (0); \ - (code); \ - }) +static FlutterEngineResult LogEmbedderError(FlutterEngineResult code, + const char* name, + const char* function) { + FML_LOG(ERROR) << "Returning error '" << name << "' (" << code + << ") from Flutter Embedder API call to '" << __FUNCTION__ + << "'."; + return code; +} + +#define LOG_EMBEDDER_ERROR(code) LogEmbedderError(code, #code, __FUNCTION__) static bool IsOpenGLRendererConfigValid(const FlutterRendererConfig* config) { if (config->type != kOpenGL) { From 04fe0078ff22ddcd434deb87d7b8b71e5feac2c9 Mon Sep 17 00:00:00 2001 From: Siva Date: Mon, 11 Mar 2019 02:12:07 -0700 Subject: [PATCH 1340/1537] Roll src/third_party/dart 2fb6cd9f5f..674fd0e060 (58 commits) (#8110) 674fd0e060 Fixes VSCode highlighting of num.dart. fa90c9abe5 New summaries work snapshot. ed9e70c771 Add completion support for the ui-as-code features 1335296750 Move SourceLibraryBuilder builder, support for typedef(s), some type parameters. 9ff0a654ca Revert "Reland "[VM runtime] Dual mapping of executable pages."" 9e5cf6b09e Improve set/map/list literal type checking. affcca729b Fix some tests broken by CL 94993 f6c8468a98 Revert "Eliminate uses of old AST node types from pkg/analyzer/lib/src/summary" 303b8bab3a fix for null_closures 231c5c138e Create codegen work item for all members 0b40a46ab5 Eliminate uses of old AST node types from pkg/analyzer/lib/src/summary 37fa71dc4e Resolve types in scopes, resynthesize some elements. 9f7e11c06b Remove extraneous `3` from method name d4ccff7b54 Fix _inferSetOrMapLiteralType to handle a context of `?` correctly. 1e1d19bb02 fix for replace_colon_with_equals 04befc2ab3 Improve type inference tests 73be247e12 Eliminate uses of old AST node types from pkg/analyzer/lib/src/generated 068aa0d2e7 Support eagerly initialized static fields. e6f56a8adf [vm/compiler] first vm implementation of block expression 474e7dc865 update add await fix description b3b9375ca7 Update comments to refer to the greatest/least closure operation. 6387b1bc73 Clarify ambiguity handling logic in _inferSetOrMapLiteralType b72ab0790d Add an Iterable type to the nonstandard SDK test. 1ce3e8af71 Reland "[cfe] Handle spread map entries of static type Null" 9f6476392c Reland "[cfe] Compile null-aware spreads in non-const maps" 10b38fd3f9 Reland "[cfe] Handle spread elements of static type Null" c31be8ab5c Reland "[cfe] Disambiguate between sets and maps with spreads" 8430281a6b Add an implementation of ScopedVisitor.visitForEachPartsWithDeclaration. 6da340bf76 Reland "[VM runtime] Dual mapping of executable pages." 2b501b21aa Revert "[cfe] Disambiguate between sets and maps with spreads" ff5f5de1be Revert "[cfe] Handle spread elements of static type Null" b2cb604b9d improve literal list/map/set control flow recovery d2d098405f [tests] Fix some control flow collections tests 1a2c93ae00 Revert "[cfe] Compile null-aware spreads in non-const maps" afccd8cbc7 Revert "[cfe] Handle spread map entries of static type Null" 6c8dbd84a0 [infra] Support different local named configurations in tools/test.dart. 166c5e4b38 Use subtype rather than assignability to disambiguate maps/sets. 2e9ff26527 Fix overflow bug in BigInt implementations. 9a7679e9e1 Remove some of the tests of the task framework to reduce references to it 6e359857e4 Move ConstantEvaluationTarget out of the task model ccd2c85a1a [cfe] Handle spread map entries of static type Null 3160b084d8 [cfe] Compile null-aware spreads in non-const maps 0a13ef7d03 [cfe] Handle spread elements of static type Null b817b274c2 [cfe] Disambiguate between sets and maps with spreads 0e054b1c6e Some fixes for UI-as-code type inference 8d88316246 fix for unawaited_futures 5eefbd8d14 [vm/ffi] Add a slot for RawPointer::address. ff55d429f6 [kernel] Collection concatenation nodes. 52ff930338 [cfe] Desugar map spread entries in non-const map literals 76ff150df4 [cfe] Add type inference for spreads in map literals 95b0e57ac5 [gardening] Disable ASAN's coredump suppression via ASAN_OPTIONS. 235e5f3709 Allow component to easily adopt libraries at will 64d8a16563 API changes to incremental compiler to support modular compilation 6231ba0b18 Added appropriate comma within comment. 283cabf1a1 [infra] Reject unexpected extra arguments in approve_results. 299c6457cf [vm/ffi] Fix style guide violation b8069cbeca Refactor computation of modular data 889d5d9240 Fix type error in node_tracer --- DEPS | 2 +- ci/licenses_golden/licenses_third_party | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 1ffe28e17c312..4207ff097a609 100644 --- a/DEPS +++ b/DEPS @@ -31,7 +31,7 @@ vars = { # Dart is: https://github.com/dart-lang/sdk/blob/master/DEPS. # You can use //tools/dart/create_updated_flutter_deps.py to produce # updated revision list of existing dependencies. - 'dart_revision': '2fb6cd9f5ff78fb347795f383a748a1e37d23275', + 'dart_revision': '674fd0e060a33deeedbc2f8fae7c32c7e3f0d8d5', # WARNING: DO NOT EDIT MANUALLY # The lines between blank lines above and below are generated by a script. See create_updated_flutter_deps.py diff --git a/ci/licenses_golden/licenses_third_party b/ci/licenses_golden/licenses_third_party index 80fa218d1863e..810f926095112 100644 --- a/ci/licenses_golden/licenses_third_party +++ b/ci/licenses_golden/licenses_third_party @@ -1,4 +1,4 @@ -Signature: aeb3ef2d086ef58fb819d6902a51acb5 +Signature: 61c85403b45c4241c745ac885c7da2ce UNUSED LICENSES: From 35e3b2b86944fdd461eefdcbb7b54c95cd808235 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Mon, 11 Mar 2019 08:37:28 -0400 Subject: [PATCH 1341/1537] Roll src/third_party/skia 92ae09900456..bd050b90f8c7 (7 commits) (#8111) https://skia.googlesource.com/skia.git/%2Blog/92ae09900456..bd050b90f8c7 git log 92ae09900456256ad9802d8c1c2eb674531cfba9..bd050b90f8c75ea4fdf49f73c4c9744cb98b00d2 --date=short --no-merges --format=%ad %ae %s 2019-03-11 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader f2ddde731fb0..fa8603c6113f (1 commits) 2019-03-11 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader ebefaf7ce64a..f2ddde731fb0 (1 commits) 2019-03-11 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/angle2 b6a2f6bcf657..49c9dfe3b832 (1 commits) 2019-03-11 skia-recreate-skps@skia-swarming-bots.iam.gserviceaccount.com Update go_deps asset 2019-03-11 skia-autoroll@skia-public.iam.gserviceaccount.com Roll ../src bc2c6257d015..ba6c026602da (26 commits) 2019-03-10 skia-recreate-skps@skia-swarming-bots.iam.gserviceaccount.com Update SKP version 2019-03-10 skia-recreate-skps@skia-swarming-bots.iam.gserviceaccount.com Update go_deps asset The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (benjaminwagner@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 4207ff097a609..8be0edff7acf2 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '92ae09900456256ad9802d8c1c2eb674531cfba9', + 'skia_revision': 'bd050b90f8c75ea4fdf49f73c4c9744cb98b00d2', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 2fd2788fb9ce2..e6ae1f67edbfc 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 03a03b5889568186f6b1f8db9ff7dc92 +Signature: 9cb20a68d7afba4c90d920723ea19540 UNUSED LICENSES: From a71609f0695c2977ac96b7a79e67e24767abfda2 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Mon, 11 Mar 2019 12:22:28 -0400 Subject: [PATCH 1342/1537] Roll src/third_party/skia bd050b90f8c7..e9c1ce89c005 (8 commits) (#8113) https://skia.googlesource.com/skia.git/%2Blog/bd050b90f8c7..e9c1ce89c005 git log bd050b90f8c75ea4fdf49f73c4c9744cb98b00d2..e9c1ce89c005f2112ecb3b7120116706af1f2222 --date=short --no-merges --format=%ad %ae %s 2019-03-11 kjlubick@google.com Add oss-fuzz compatible fuzzers for sksl2* 2019-03-11 jcgregorio@google.com api.skia.org - Don't document private. 2019-03-11 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader fa8603c6113f..cd3e11d9464a (1 commits) 2019-03-07 egdaniel@google.com Make vulkan GrBackendFormats with ycbcr external texture types. 2019-03-06 robertphillips@google.com Add kIdentity_SkYUVColorSpace 2019-03-09 nigeltao@google.com Check that we do not #define WUFFS_IMPLEMENTATION 2019-03-09 nigeltao@google.com Update Wuffs version 2019-03-08 kjlubick@google.com [canvaskit] roll on npm The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (benjaminwagner@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 41 ++++++++++++++++++++++++++++++-- sky/packages/sky_engine/LICENSE | 30 +++++++++++++++++++++++ 3 files changed, 70 insertions(+), 3 deletions(-) diff --git a/DEPS b/DEPS index 8be0edff7acf2..a43121ecfc46a 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'bd050b90f8c75ea4fdf49f73c4c9744cb98b00d2', + 'skia_revision': 'e9c1ce89c005f2112ecb3b7120116706af1f2222', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index e6ae1f67edbfc..41fc2d4297ecc 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 9cb20a68d7afba4c90d920723ea19540 +Signature: 2f8546533f16e65b5b013621e84e1987 UNUSED LICENSES: @@ -4830,6 +4830,43 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ==================================================================================================== +==================================================================================================== +LIBRARY: skia +ORIGIN: ../../../third_party/skia/fuzz/oss_fuzz/FuzzSKSL2GLSL.cpp + ../../../third_party/skia/LICENSE +TYPE: LicenseType.bsd +FILE: ../../../third_party/skia/fuzz/oss_fuzz/FuzzSKSL2GLSL.cpp +FILE: ../../../third_party/skia/fuzz/oss_fuzz/FuzzSKSL2Metal.cpp +FILE: ../../../third_party/skia/fuzz/oss_fuzz/FuzzSKSL2SPIRV.cpp +---------------------------------------------------------------------------------------------------- +Copyright 2019 Google, LLC + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +==================================================================================================== + ==================================================================================================== LIBRARY: skia ORIGIN: ../../../third_party/skia/gm/backdrop.cpp + ../../../third_party/skia/LICENSE @@ -6180,4 +6217,4 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ==================================================================================================== -Total license count: 52 +Total license count: 53 diff --git a/sky/packages/sky_engine/LICENSE b/sky/packages/sky_engine/LICENSE index 0a34be8037ede..9359d43fa29a6 100644 --- a/sky/packages/sky_engine/LICENSE +++ b/sky/packages/sky_engine/LICENSE @@ -10965,6 +10965,36 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- skia +Copyright 2019 Google, LLC + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +skia + NEON optimized code (C) COPYRIGHT 2009 Motorola Redistribution and use in source and binary forms, with or without From bd0f9085e5bdbac74cc6e611f758768f15ad5415 Mon Sep 17 00:00:00 2001 From: Michael Goderbauer Date: Mon, 11 Mar 2019 11:30:35 -0700 Subject: [PATCH 1343/1537] Adds a platfromViewId to SemanticsNode (#8055) --- lib/ui/semantics.dart | 8 ++++++++ lib/ui/semantics/semantics_node.h | 1 + lib/ui/semantics/semantics_update_builder.cc | 2 ++ lib/ui/semantics/semantics_update_builder.h | 1 + .../android/io/flutter/view/AccessibilityBridge.java | 2 ++ shell/platform/android/platform_view_android.cc | 3 ++- 6 files changed, 16 insertions(+), 1 deletion(-) diff --git a/lib/ui/semantics.dart b/lib/ui/semantics.dart index b98d36fe2b895..55fb0367c5eba 100644 --- a/lib/ui/semantics.dart +++ b/lib/ui/semantics.dart @@ -601,6 +601,11 @@ class SemanticsUpdateBuilder extends NativeFieldWrapperClass2 { /// The fields 'textSelectionBase' and 'textSelectionExtent' describe the /// currently selected text within `value`. /// + /// The field `platformViewId` references the platform view, whose semantics + /// nodes will be added as children to this node. If a platform view is + /// specified, `childrenInHitTestOrder` and `childrenInTraversalOrder` must be + /// empty. + /// /// For scrollable nodes `scrollPosition` describes the current scroll /// position in logical pixel. `scrollExtentMax` and `scrollExtentMin` /// describe the maximum and minimum in-rage values that `scrollPosition` can @@ -629,6 +634,7 @@ class SemanticsUpdateBuilder extends NativeFieldWrapperClass2 { int actions, int textSelectionBase, int textSelectionExtent, + int platformViewId, int scrollChildren, int scrollIndex, double scrollPosition, @@ -656,6 +662,7 @@ class SemanticsUpdateBuilder extends NativeFieldWrapperClass2 { actions, textSelectionBase, textSelectionExtent, + platformViewId, scrollChildren, scrollIndex, scrollPosition, @@ -685,6 +692,7 @@ class SemanticsUpdateBuilder extends NativeFieldWrapperClass2 { int actions, int textSelectionBase, int textSelectionExtent, + int platformViewId, int scrollChildren, int scrollIndex, double scrollPosition, diff --git a/lib/ui/semantics/semantics_node.h b/lib/ui/semantics/semantics_node.h index f6918e54475ba..16a87a32d9c07 100644 --- a/lib/ui/semantics/semantics_node.h +++ b/lib/ui/semantics/semantics_node.h @@ -86,6 +86,7 @@ struct SemanticsNode { int32_t actions = 0; int32_t textSelectionBase = -1; int32_t textSelectionExtent = -1; + int32_t platformViewId = -1; int32_t scrollChildren = 0; int32_t scrollIndex = 0; double scrollPosition = std::nan(""); diff --git a/lib/ui/semantics/semantics_update_builder.cc b/lib/ui/semantics/semantics_update_builder.cc index 575ba6e3227d0..75cfdcf40c95a 100644 --- a/lib/ui/semantics/semantics_update_builder.cc +++ b/lib/ui/semantics/semantics_update_builder.cc @@ -41,6 +41,7 @@ void SemanticsUpdateBuilder::updateNode( int actions, int textSelectionBase, int textSelectionExtent, + int platformViewId, int scrollChildren, int scrollIndex, double scrollPosition, @@ -68,6 +69,7 @@ void SemanticsUpdateBuilder::updateNode( node.actions = actions; node.textSelectionBase = textSelectionBase; node.textSelectionExtent = textSelectionExtent; + node.platformViewId = platformViewId; node.scrollChildren = scrollChildren; node.scrollIndex = scrollIndex; node.scrollPosition = scrollPosition; diff --git a/lib/ui/semantics/semantics_update_builder.h b/lib/ui/semantics/semantics_update_builder.h index ac8424d9f0fbd..fa6201c3d84c1 100644 --- a/lib/ui/semantics/semantics_update_builder.h +++ b/lib/ui/semantics/semantics_update_builder.h @@ -29,6 +29,7 @@ class SemanticsUpdateBuilder int actions, int textSelectionBase, int textSelectionExtent, + int platformViewId, int scrollChildren, int scrollIndex, double scrollPosition, diff --git a/shell/platform/android/io/flutter/view/AccessibilityBridge.java b/shell/platform/android/io/flutter/view/AccessibilityBridge.java index 7d4e5060aa130..3c262fa9fe63d 100644 --- a/shell/platform/android/io/flutter/view/AccessibilityBridge.java +++ b/shell/platform/android/io/flutter/view/AccessibilityBridge.java @@ -1614,6 +1614,7 @@ private static boolean nullableHasAncestor(SemanticsNode target, Predicate Date: Mon, 11 Mar 2019 14:30:07 -0700 Subject: [PATCH 1344/1537] Improve shadow doc in PhysicalShapeLayer (#8114) The old x is confusing as it often refers to x-axis in 2D graphics. Replace it with t which has a nice interpretation of tangent. --- flow/layers/physical_shape_layer.cc | 36 ++++++++++++++++++----------- 1 file changed, 23 insertions(+), 13 deletions(-) diff --git a/flow/layers/physical_shape_layer.cc b/flow/layers/physical_shape_layer.cc index d022ccb223305..005945f8f53be 100644 --- a/flow/layers/physical_shape_layer.cc +++ b/flow/layers/physical_shape_layer.cc @@ -58,32 +58,42 @@ void PhysicalShapeLayer::Preroll(PrerollContext* context, // join the child paint bounds. // The offset is calculated as follows: - // .-- (kLightRadius = 800) - // ----- (light) - // | (kLightHeight = 600) + // .--- (kLightRadius) + // -------/ (light) + // | / + // | / + // |/ + // |O + // /| (kLightHeight) + // / | + // / | + // / | + // / | // ------------- (layer) - // | - // | (elevation) - // | + // /| | + // / | | (elevation) + // A / | |B // ------------------------------------------------ (canvas) - // ----------- (extent of shadow) + // --- (extent of shadow) // - // E = lx } x = (r + w/2)/h + // E = lt } t = (r + w/2)/h // } => - // r + w/2 = hx } E = (l/h)(r + w/2) + // r + w/2 = ht } E = (l/h)(r + w/2) // // Where: E = extent of shadow // l = elevation of layer // r = radius of the light source // w = width of the layer // h = light height - // x = multiplier for elevation to extent + // t = tangent of AOB, i.e., multiplier for elevation to extent SkRect bounds(path_.getBounds()); - double ex = (kLightRadius * device_pixel_ratio_ + bounds.width() * 0.5) / + // tangent for x + double tx = (kLightRadius * device_pixel_ratio_ + bounds.width() * 0.5) / kLightHeight; - double ey = (kLightRadius * device_pixel_ratio_ + bounds.height() * 0.5) / + // tangent for y + double ty = (kLightRadius * device_pixel_ratio_ + bounds.height() * 0.5) / kLightHeight; - bounds.outset(elevation_ * ex, elevation_ * ey); + bounds.outset(elevation_ * tx, elevation_ * ty); set_paint_bounds(bounds); #endif // defined(OS_FUCHSIA) } From 2a0d3542851ae59c2d2f490d1111eeb57b0da388 Mon Sep 17 00:00:00 2001 From: Chinmay Garde Date: Mon, 11 Mar 2019 14:44:43 -0700 Subject: [PATCH 1345/1537] Add support for trace counters with variable arguments and instrument the raster cache. (#8094) --- flow/raster_cache.cc | 35 +++++++++++++++++++++-- flow/raster_cache.h | 7 +++++ fml/trace_event.cc | 36 ++++++++++++++++-------- fml/trace_event.h | 67 ++++++++++++++++++++++++++++++++++++++++---- 4 files changed, 126 insertions(+), 19 deletions(-) diff --git a/flow/raster_cache.cc b/flow/raster_cache.cc index 1927321a03238..9f10e47de250c 100644 --- a/flow/raster_cache.cc +++ b/flow/raster_cache.cc @@ -97,6 +97,7 @@ static RasterCacheResult Rasterize( bool checkerboard, const SkRect& logical_rect, std::function draw_function) { + TRACE_EVENT0("flutter", "RasterCachePopulate"); SkIRect cache_rect = RasterCache::GetDeviceBounds(logical_rect, ctm); const SkImageInfo image_info = SkImageInfo::MakeN32Premul( @@ -129,8 +130,6 @@ RasterCacheResult RasterizePicture(SkPicture* picture, const SkMatrix& ctm, SkColorSpace* dst_color_space, bool checkerboard) { - TRACE_EVENT0("flutter", "RasterCachePopulate"); - return Rasterize(context, ctm, dst_color_space, checkerboard, picture->cullRect(), [=](SkCanvas* canvas) { canvas->drawPicture(picture); }); @@ -240,6 +239,7 @@ void RasterCache::SweepAfterFrame() { SweepOneCacheAfterFrame(picture_cache_); SweepOneCacheAfterFrame(layer_cache_); picture_cached_this_frame_ = 0; + TraceStatsToTimeline(); } void RasterCache::Clear() { @@ -259,4 +259,35 @@ void RasterCache::SetCheckboardCacheImages(bool checkerboard) { Clear(); } +void RasterCache::TraceStatsToTimeline() const { +#if FLUTTER_RUNTIME_MODE != FLUTTER_RUNTIME_MODE_RELEASE + + size_t layer_cache_count = 0; + size_t layer_cache_bytes = 0; + size_t picture_cache_count = 0; + size_t picture_cache_bytes = 0; + + for (const auto& item : layer_cache_) { + const auto dimensions = item.second.image.image_dimensions(); + layer_cache_count++; + layer_cache_bytes += dimensions.width() * dimensions.height() * 4; + } + + for (const auto& item : picture_cache_) { + const auto dimensions = item.second.image.image_dimensions(); + picture_cache_count++; + picture_cache_bytes += dimensions.width() * dimensions.height() * 4; + } + + FML_TRACE_COUNTER("flutter", "RasterCache", + reinterpret_cast(this), // + "LayerCount", layer_cache_count, // + "LayerMBytes", layer_cache_bytes * 1e-6, // + "PictureCount", picture_cache_count, // + "PictureMBytes", picture_cache_bytes * 1e-6 // + ); + +#endif // FLUTTER_RUNTIME_MODE != FLUTTER_RUNTIME_MODE_RELEASE +} + } // namespace flow diff --git a/flow/raster_cache.h b/flow/raster_cache.h index 74ce010b07c8c..f0382c9c92872 100644 --- a/flow/raster_cache.h +++ b/flow/raster_cache.h @@ -33,6 +33,10 @@ class RasterCacheResult { void draw(SkCanvas& canvas, const SkPaint* paint = nullptr) const; + SkISize image_dimensions() const { + return image_ ? image_->dimensions() : SkISize::Make(0, 0); + }; + private: sk_sp image_; SkRect logical_rect_; @@ -87,6 +91,7 @@ class RasterCache { void Prepare(PrerollContext* context, Layer* layer, const SkMatrix& ctm); RasterCacheResult Get(const SkPicture& picture, const SkMatrix& ctm) const; + RasterCacheResult Get(Layer* layer, const SkMatrix& ctm) const; void SweepAfterFrame(); @@ -127,6 +132,8 @@ class RasterCache { bool checkerboard_images_; fml::WeakPtrFactory weak_factory_; + void TraceStatsToTimeline() const; + FML_DISALLOW_COPY_AND_ASSIGN(RasterCache); }; diff --git a/fml/trace_event.cc b/fml/trace_event.cc index 69ed8b2216486..86ba90dd423ce 100644 --- a/fml/trace_event.cc +++ b/fml/trace_event.cc @@ -4,22 +4,34 @@ #include "flutter/fml/trace_event.h" -#include "third_party/dart/runtime/include/dart_tools_api.h" +#include "flutter/fml/logging.h" namespace fml { namespace tracing { -void TraceCounter(TraceArg category_group, TraceArg name, TraceIDArg count) { - auto count_string = std::to_string(count); - const char* arg_names[] = {name}; - const char* arg_values[] = {count_string.c_str()}; - Dart_TimelineEvent(name, // label - Dart_TimelineGetMicros(), // timestamp0 - 0, // timestamp1_or_async_id - Dart_Timeline_Event_Counter, // event type - 1, // argument_count - arg_names, // argument_names - arg_values // argument_values +void TraceTimelineEvent(TraceArg category_group, + TraceArg name, + TraceIDArg identifier, + Dart_Timeline_Event_Type type, + const std::vector& names, + const std::vector& values) { + const auto argument_count = std::min(names.size(), values.size()); + + std::vector c_values; + c_values.resize(argument_count, nullptr); + + for (size_t i = 0; i < argument_count; i++) { + c_values[i] = values[i].c_str(); + } + + Dart_TimelineEvent( + name, // label + Dart_TimelineGetMicros(), // timestamp0 + identifier, // timestamp1_or_async_id + type, // event type + argument_count, // argument_count + const_cast(names.data()), // argument_names + const_cast(c_values.data()) // argument_values ); } diff --git a/fml/trace_event.h b/fml/trace_event.h index b3bba9b281f61..c61fbc1efa364 100644 --- a/fml/trace_event.h +++ b/fml/trace_event.h @@ -13,8 +13,6 @@ #include -#define FML_TRACE_COUNTER(category_group, name, count) \ - TRACE_COUNTER(category_group, name, 0u, name, count) #define TRACE_EVENT0(a, b) TRACE_DURATION(a, b) #define TRACE_EVENT1(a, b, c, d) TRACE_DURATION(a, b, c, d) #define TRACE_EVENT2(a, b, c, d, e, f) TRACE_DURATION(a, b, c, d, e, f) @@ -28,8 +26,11 @@ #include #include #include +#include +#include #include "flutter/fml/macros.h" +#include "third_party/dart/runtime/include/dart_tools_api.h" #if !defined(OS_FUCHSIA) @@ -45,8 +46,8 @@ // from trace/event.h on Fuchsia. // // TODO(chinmaygarde): All macros here should have the FML prefix. -#define FML_TRACE_COUNTER(category_group, name, count) \ - ::fml::tracing::TraceCounter(category_group, name, count); +#define FML_TRACE_COUNTER(category_group, name, counter_id, arg1, args...) \ + ::fml::tracing::TraceCounter(category_group, name, counter_id, arg1, ##args); #define TRACE_EVENT0(category_group, name) \ ::fml::tracing::TraceEvent0(category_group, name); \ @@ -99,7 +100,63 @@ namespace tracing { using TraceArg = const char*; using TraceIDArg = int64_t; -void TraceCounter(TraceArg category_group, TraceArg name, TraceIDArg count); +void TraceTimelineEvent(TraceArg category_group, + TraceArg name, + TraceIDArg id, + Dart_Timeline_Event_Type type, + const std::vector& names, + const std::vector& values); + +inline std::string TraceToString(const char* string) { + return std::string{string}; +} + +inline std::string TraceToString(std::string string) { + return string; +} + +template ::value>> +std::string TraceToString(T string) { + return std::to_string(string); +} + +inline void SplitArgumentsCollect(std::vector& keys, + std::vector& values) {} + +template +void SplitArgumentsCollect(std::vector& keys, + std::vector& values, + Key key, + Value value, + Args... args) { + keys.emplace_back(key); + values.emplace_back(TraceToString(value)); + SplitArgumentsCollect(keys, values, args...); +} + +inline std::pair, std::vector> +SplitArguments() { + return {}; +} + +template +std::pair, std::vector> +SplitArguments(Key key, Value value, Args... args) { + std::vector keys; + std::vector values; + SplitArgumentsCollect(keys, values, key, value, args...); + return std::make_pair(std::move(keys), std::move(values)); +} + +template +void TraceCounter(TraceArg category, + TraceArg name, + TraceIDArg identifier, + Args... args) { + auto split = SplitArguments(args...); + TraceTimelineEvent(category, name, identifier, Dart_Timeline_Event_Counter, + split.first, split.second); +} void TraceEvent0(TraceArg category_group, TraceArg name); From bc901324faf5a24f9220cc7ecbcf5b97b96ae09f Mon Sep 17 00:00:00 2001 From: Chinmay Garde Date: Mon, 11 Mar 2019 15:09:24 -0700 Subject: [PATCH 1346/1537] Revert "Add support for trace counters with variable arguments and instrument the raster cache. (#8094)" (#8122) This reverts commit 2a0d3542851ae59c2d2f490d1111eeb57b0da388. --- flow/raster_cache.cc | 35 ++--------------------- flow/raster_cache.h | 7 ----- fml/trace_event.cc | 36 ++++++++---------------- fml/trace_event.h | 67 ++++---------------------------------------- 4 files changed, 19 insertions(+), 126 deletions(-) diff --git a/flow/raster_cache.cc b/flow/raster_cache.cc index 9f10e47de250c..1927321a03238 100644 --- a/flow/raster_cache.cc +++ b/flow/raster_cache.cc @@ -97,7 +97,6 @@ static RasterCacheResult Rasterize( bool checkerboard, const SkRect& logical_rect, std::function draw_function) { - TRACE_EVENT0("flutter", "RasterCachePopulate"); SkIRect cache_rect = RasterCache::GetDeviceBounds(logical_rect, ctm); const SkImageInfo image_info = SkImageInfo::MakeN32Premul( @@ -130,6 +129,8 @@ RasterCacheResult RasterizePicture(SkPicture* picture, const SkMatrix& ctm, SkColorSpace* dst_color_space, bool checkerboard) { + TRACE_EVENT0("flutter", "RasterCachePopulate"); + return Rasterize(context, ctm, dst_color_space, checkerboard, picture->cullRect(), [=](SkCanvas* canvas) { canvas->drawPicture(picture); }); @@ -239,7 +240,6 @@ void RasterCache::SweepAfterFrame() { SweepOneCacheAfterFrame(picture_cache_); SweepOneCacheAfterFrame(layer_cache_); picture_cached_this_frame_ = 0; - TraceStatsToTimeline(); } void RasterCache::Clear() { @@ -259,35 +259,4 @@ void RasterCache::SetCheckboardCacheImages(bool checkerboard) { Clear(); } -void RasterCache::TraceStatsToTimeline() const { -#if FLUTTER_RUNTIME_MODE != FLUTTER_RUNTIME_MODE_RELEASE - - size_t layer_cache_count = 0; - size_t layer_cache_bytes = 0; - size_t picture_cache_count = 0; - size_t picture_cache_bytes = 0; - - for (const auto& item : layer_cache_) { - const auto dimensions = item.second.image.image_dimensions(); - layer_cache_count++; - layer_cache_bytes += dimensions.width() * dimensions.height() * 4; - } - - for (const auto& item : picture_cache_) { - const auto dimensions = item.second.image.image_dimensions(); - picture_cache_count++; - picture_cache_bytes += dimensions.width() * dimensions.height() * 4; - } - - FML_TRACE_COUNTER("flutter", "RasterCache", - reinterpret_cast(this), // - "LayerCount", layer_cache_count, // - "LayerMBytes", layer_cache_bytes * 1e-6, // - "PictureCount", picture_cache_count, // - "PictureMBytes", picture_cache_bytes * 1e-6 // - ); - -#endif // FLUTTER_RUNTIME_MODE != FLUTTER_RUNTIME_MODE_RELEASE -} - } // namespace flow diff --git a/flow/raster_cache.h b/flow/raster_cache.h index f0382c9c92872..74ce010b07c8c 100644 --- a/flow/raster_cache.h +++ b/flow/raster_cache.h @@ -33,10 +33,6 @@ class RasterCacheResult { void draw(SkCanvas& canvas, const SkPaint* paint = nullptr) const; - SkISize image_dimensions() const { - return image_ ? image_->dimensions() : SkISize::Make(0, 0); - }; - private: sk_sp image_; SkRect logical_rect_; @@ -91,7 +87,6 @@ class RasterCache { void Prepare(PrerollContext* context, Layer* layer, const SkMatrix& ctm); RasterCacheResult Get(const SkPicture& picture, const SkMatrix& ctm) const; - RasterCacheResult Get(Layer* layer, const SkMatrix& ctm) const; void SweepAfterFrame(); @@ -132,8 +127,6 @@ class RasterCache { bool checkerboard_images_; fml::WeakPtrFactory weak_factory_; - void TraceStatsToTimeline() const; - FML_DISALLOW_COPY_AND_ASSIGN(RasterCache); }; diff --git a/fml/trace_event.cc b/fml/trace_event.cc index 86ba90dd423ce..69ed8b2216486 100644 --- a/fml/trace_event.cc +++ b/fml/trace_event.cc @@ -4,34 +4,22 @@ #include "flutter/fml/trace_event.h" -#include "flutter/fml/logging.h" +#include "third_party/dart/runtime/include/dart_tools_api.h" namespace fml { namespace tracing { -void TraceTimelineEvent(TraceArg category_group, - TraceArg name, - TraceIDArg identifier, - Dart_Timeline_Event_Type type, - const std::vector& names, - const std::vector& values) { - const auto argument_count = std::min(names.size(), values.size()); - - std::vector c_values; - c_values.resize(argument_count, nullptr); - - for (size_t i = 0; i < argument_count; i++) { - c_values[i] = values[i].c_str(); - } - - Dart_TimelineEvent( - name, // label - Dart_TimelineGetMicros(), // timestamp0 - identifier, // timestamp1_or_async_id - type, // event type - argument_count, // argument_count - const_cast(names.data()), // argument_names - const_cast(c_values.data()) // argument_values +void TraceCounter(TraceArg category_group, TraceArg name, TraceIDArg count) { + auto count_string = std::to_string(count); + const char* arg_names[] = {name}; + const char* arg_values[] = {count_string.c_str()}; + Dart_TimelineEvent(name, // label + Dart_TimelineGetMicros(), // timestamp0 + 0, // timestamp1_or_async_id + Dart_Timeline_Event_Counter, // event type + 1, // argument_count + arg_names, // argument_names + arg_values // argument_values ); } diff --git a/fml/trace_event.h b/fml/trace_event.h index c61fbc1efa364..b3bba9b281f61 100644 --- a/fml/trace_event.h +++ b/fml/trace_event.h @@ -13,6 +13,8 @@ #include +#define FML_TRACE_COUNTER(category_group, name, count) \ + TRACE_COUNTER(category_group, name, 0u, name, count) #define TRACE_EVENT0(a, b) TRACE_DURATION(a, b) #define TRACE_EVENT1(a, b, c, d) TRACE_DURATION(a, b, c, d) #define TRACE_EVENT2(a, b, c, d, e, f) TRACE_DURATION(a, b, c, d, e, f) @@ -26,11 +28,8 @@ #include #include #include -#include -#include #include "flutter/fml/macros.h" -#include "third_party/dart/runtime/include/dart_tools_api.h" #if !defined(OS_FUCHSIA) @@ -46,8 +45,8 @@ // from trace/event.h on Fuchsia. // // TODO(chinmaygarde): All macros here should have the FML prefix. -#define FML_TRACE_COUNTER(category_group, name, counter_id, arg1, args...) \ - ::fml::tracing::TraceCounter(category_group, name, counter_id, arg1, ##args); +#define FML_TRACE_COUNTER(category_group, name, count) \ + ::fml::tracing::TraceCounter(category_group, name, count); #define TRACE_EVENT0(category_group, name) \ ::fml::tracing::TraceEvent0(category_group, name); \ @@ -100,63 +99,7 @@ namespace tracing { using TraceArg = const char*; using TraceIDArg = int64_t; -void TraceTimelineEvent(TraceArg category_group, - TraceArg name, - TraceIDArg id, - Dart_Timeline_Event_Type type, - const std::vector& names, - const std::vector& values); - -inline std::string TraceToString(const char* string) { - return std::string{string}; -} - -inline std::string TraceToString(std::string string) { - return string; -} - -template ::value>> -std::string TraceToString(T string) { - return std::to_string(string); -} - -inline void SplitArgumentsCollect(std::vector& keys, - std::vector& values) {} - -template -void SplitArgumentsCollect(std::vector& keys, - std::vector& values, - Key key, - Value value, - Args... args) { - keys.emplace_back(key); - values.emplace_back(TraceToString(value)); - SplitArgumentsCollect(keys, values, args...); -} - -inline std::pair, std::vector> -SplitArguments() { - return {}; -} - -template -std::pair, std::vector> -SplitArguments(Key key, Value value, Args... args) { - std::vector keys; - std::vector values; - SplitArgumentsCollect(keys, values, key, value, args...); - return std::make_pair(std::move(keys), std::move(values)); -} - -template -void TraceCounter(TraceArg category, - TraceArg name, - TraceIDArg identifier, - Args... args) { - auto split = SplitArguments(args...); - TraceTimelineEvent(category, name, identifier, Dart_Timeline_Event_Counter, - split.first, split.second); -} +void TraceCounter(TraceArg category_group, TraceArg name, TraceIDArg count); void TraceEvent0(TraceArg category_group, TraceArg name); From 20165b3147deda242792a13060eb960894367251 Mon Sep 17 00:00:00 2001 From: Matt Carroll Date: Mon, 11 Mar 2019 16:04:44 -0700 Subject: [PATCH 1347/1537] Integrated AndroidTouchProcessor within the old FlutterView (#8095) --- .../engine/android/AndroidTouchProcessor.java | 61 ++++- .../embedding/engine/android/FlutterView.java | 26 +- .../android/io/flutter/view/FlutterView.java | 226 ++---------------- 3 files changed, 98 insertions(+), 215 deletions(-) diff --git a/shell/platform/android/io/flutter/embedding/engine/android/AndroidTouchProcessor.java b/shell/platform/android/io/flutter/embedding/engine/android/AndroidTouchProcessor.java index 94c4f7525c51b..f26cc3e2bc84f 100644 --- a/shell/platform/android/io/flutter/embedding/engine/android/AndroidTouchProcessor.java +++ b/shell/platform/android/io/flutter/embedding/engine/android/AndroidTouchProcessor.java @@ -1,5 +1,6 @@ package io.flutter.embedding.engine.android; +import android.os.Build; import android.support.annotation.IntDef; import android.support.annotation.NonNull; import android.view.InputDevice; @@ -36,7 +37,6 @@ public class AndroidTouchProcessor { int UP = 6; } - // Must match the PointerDeviceKind enum in pointer.dart. @IntDef({ PointerDeviceKind.TOUCH, @@ -53,10 +53,24 @@ public class AndroidTouchProcessor { int UNKNOWN = 4; } + // Must match the PointerSignalKind enum in pointer.dart. + @IntDef({ + PointerSignalKind.NONE, + PointerSignalKind.SCROLL, + PointerSignalKind.UNKNOWN + }) + private @interface PointerSignalKind { + int NONE = 0; + int SCROLL = 1; + int UNKNOWN = 2; + } + // Must match the unpacking code in hooks.dart. - // TODO(mattcarroll): Update with additional fields for scroll wheel support - private static final int POINTER_DATA_FIELD_COUNT = 21; + private static final int POINTER_DATA_FIELD_COUNT = 24; private static final int BYTES_PER_FIELD = 8; + + // This value must match the value in framework's platform_view.dart. + // This flag indicates whether the original Android pointer events were batched together. private static final int POINTER_DATA_FLAG_BATCHED = 1; @NonNull @@ -114,7 +128,9 @@ public boolean onTouchEvent(MotionEvent event) { } // Verify that the packet is the expected size. - assert packet.position() % (POINTER_DATA_FIELD_COUNT * BYTES_PER_FIELD) == 0; + if (packet.position() % (POINTER_DATA_FIELD_COUNT * BYTES_PER_FIELD) != 0) { + throw new AssertionError("Packet position is not on field boundary"); + } // Send the packet to Flutter. renderer.dispatchPointerDataPacket(packet, packet.position()); @@ -122,6 +138,35 @@ public boolean onTouchEvent(MotionEvent event) { return true; } + /** + * Sends the given generic {@link MotionEvent} data to Flutter in a format that Flutter + * understands. + * + * Generic motion events include joystick movement, mouse hover, track pad touches, scroll wheel + * movements, etc. + */ + public boolean onGenericMotionEvent(MotionEvent event) { + // Method isFromSource is only available in API 18+ (Jelly Bean MR2) + // Mouse hover support is not implemented for API < 18. + boolean isPointerEvent = Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2 + && event.isFromSource(InputDevice.SOURCE_CLASS_POINTER); + if (!isPointerEvent || event.getActionMasked() != MotionEvent.ACTION_HOVER_MOVE) { + return false; + } + + int pointerChange = getPointerChangeForAction(event.getActionMasked()); + ByteBuffer packet = ByteBuffer.allocateDirect( + event.getPointerCount() * POINTER_DATA_FIELD_COUNT * BYTES_PER_FIELD + ); + packet.order(ByteOrder.LITTLE_ENDIAN); + + // ACTION_HOVER_MOVE always applies to a single pointer only. + addPointerForIndex(event, event.getActionIndex(), pointerChange, 0, packet); + assert(packet.position() % (POINTER_DATA_FIELD_COUNT * BYTES_PER_FIELD) != 0); + renderer.dispatchPointerDataPacket(packet, packet.position()); + return true; + } + // TODO(mattcarroll): consider creating a PointerPacket class instead of using a procedure that mutates inputs. private void addPointerForIndex( MotionEvent event, @@ -136,11 +181,14 @@ private void addPointerForIndex( int pointerKind = getPointerDeviceTypeForToolType(event.getToolType(pointerIndex)); + int signalKind = PointerSignalKind.NONE; + long timeStamp = event.getEventTime() * 1000; // Convert from milliseconds to microseconds. packet.putLong(timeStamp); // time_stamp packet.putLong(pointerChange); // change packet.putLong(pointerKind); // kind + packet.putLong(signalKind); // signal_kind packet.putLong(event.getPointerId(pointerIndex)); // device packet.putDouble(event.getX(pointerIndex)); // physical_x packet.putDouble(event.getY(pointerIndex)); // physical_y @@ -192,7 +240,10 @@ private void addPointerForIndex( packet.putDouble(0.0); // tilt } - packet.putLong(pointerData); + packet.putLong(pointerData); // platformData + + packet.putDouble(0.0); // scroll_delta_x + packet.putDouble(0.0); // scroll_delta_y } @PointerChange diff --git a/shell/platform/android/io/flutter/embedding/engine/android/FlutterView.java b/shell/platform/android/io/flutter/embedding/engine/android/FlutterView.java index 1f507cecb3c13..23bd68c5759d8 100644 --- a/shell/platform/android/io/flutter/embedding/engine/android/FlutterView.java +++ b/shell/platform/android/io/flutter/embedding/engine/android/FlutterView.java @@ -312,12 +312,34 @@ public boolean onKeyDown(int keyCode, KeyEvent event) { @Override public boolean onTouchEvent(MotionEvent event) { if (!isAttachedToFlutterEngine()) { - return false; + return super.onTouchEvent(event); + } + + // TODO(abarth): This version check might not be effective in some + // versions of Android that statically compile code and will be upset + // at the lack of |requestUnbufferedDispatch|. Instead, we should factor + // version-dependent code into separate classes for each supported + // version and dispatch dynamically. + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + requestUnbufferedDispatch(event); } return androidTouchProcessor.onTouchEvent(event); } + /** + * Invoked by Android when a generic motion event occurs, e.g., joystick movement, mouse hover, + * track pad touches, scroll wheel movements, etc. + * + * Flutter handles all of its own gesture detection and processing, therefore this + * method forwards all {@link MotionEvent} data from Android to Flutter. + */ + @Override + public boolean onGenericMotionEvent(MotionEvent event) { + boolean handled = isAttachedToFlutterEngine() && androidTouchProcessor.onGenericMotionEvent(event); + return handled ? true : super.onGenericMotionEvent(event); + } + /** * Invoked by Android when a hover-compliant input system causes a hover event. * @@ -332,7 +354,7 @@ public boolean onTouchEvent(MotionEvent event) { @Override public boolean onHoverEvent(MotionEvent event) { if (!isAttachedToFlutterEngine()) { - return false; + return super.onHoverEvent(event); } // TODO(mattcarroll): hook up to accessibility. diff --git a/shell/platform/android/io/flutter/view/FlutterView.java b/shell/platform/android/io/flutter/view/FlutterView.java index 18434c28924aa..8a97164ceaae5 100644 --- a/shell/platform/android/io/flutter/view/FlutterView.java +++ b/shell/platform/android/io/flutter/view/FlutterView.java @@ -29,7 +29,9 @@ import io.flutter.app.FlutterPluginRegistry; import io.flutter.embedding.engine.FlutterJNI; import io.flutter.embedding.engine.android.AndroidKeyProcessor; +import io.flutter.embedding.engine.android.AndroidTouchProcessor; import io.flutter.embedding.engine.dart.DartExecutor; +import io.flutter.embedding.engine.renderer.FlutterRenderer; import io.flutter.embedding.engine.systemchannels.AccessibilityChannel; import io.flutter.embedding.engine.systemchannels.KeyEventChannel; import io.flutter.embedding.engine.systemchannels.LifecycleChannel; @@ -88,6 +90,7 @@ static final class ViewportMetrics { } private final DartExecutor dartExecutor; + private final FlutterRenderer flutterRenderer; private final NavigationChannel navigationChannel; private final KeyEventChannel keyEventChannel; private final LifecycleChannel lifecycleChannel; @@ -98,6 +101,7 @@ static final class ViewportMetrics { private final InputMethodManager mImm; private final TextInputPlugin mTextInputPlugin; private final AndroidKeyProcessor androidKeyProcessor; + private final AndroidTouchProcessor androidTouchProcessor; private AccessibilityBridge mAccessibilityNodeProvider; private final SurfaceHolder.Callback mSurfaceCallback; private final ViewportMetrics mMetrics; @@ -133,6 +137,7 @@ public FlutterView(Context context, AttributeSet attrs, FlutterNativeView native } dartExecutor = mNativeView.getDartExecutor(); + flutterRenderer = new FlutterRenderer(mNativeView.getFlutterJNI()); mIsSoftwareRenderingEnabled = FlutterJNI.nativeGetIsSoftwareRenderingEnabled(); mMetrics = new ViewportMetrics(); mMetrics.devicePixelRatio = context.getResources().getDisplayMetrics().density; @@ -180,6 +185,7 @@ public void surfaceDestroyed(SurfaceHolder holder) { mImm = (InputMethodManager) getContext().getSystemService(Context.INPUT_METHOD_SERVICE); mTextInputPlugin = new TextInputPlugin(this, dartExecutor); androidKeyProcessor = new AndroidKeyProcessor(keyEventChannel, mTextInputPlugin); + androidTouchProcessor = new AndroidTouchProcessor(flutterRenderer); // Send initial platform information to Dart sendLocalesToDart(getResources().getConfiguration()); @@ -362,151 +368,10 @@ public InputConnection onCreateInputConnection(EditorInfo outAttrs) { return mTextInputPlugin.createInputConnection(this, outAttrs); } - // Must match the PointerChange enum in pointer.dart. - private static final int kPointerChangeCancel = 0; - private static final int kPointerChangeAdd = 1; - private static final int kPointerChangeRemove = 2; - private static final int kPointerChangeHover = 3; - private static final int kPointerChangeDown = 4; - private static final int kPointerChangeMove = 5; - private static final int kPointerChangeUp = 6; - - // Must match the PointerDeviceKind enum in pointer.dart. - private static final int kPointerDeviceKindTouch = 0; - private static final int kPointerDeviceKindMouse = 1; - private static final int kPointerDeviceKindStylus = 2; - private static final int kPointerDeviceKindInvertedStylus = 3; - private static final int kPointerDeviceKindUnknown = 4; - - // Must match the PointerSignalKind enum in pointer.dart. - private static final int kPointerSignalKindNone = 0; - private static final int kPointerSignalKindScroll = 1; - private static final int kPointerSignalKindUnknown = 2; - - // These values must match the unpacking code in hooks.dart. - private static final int kPointerDataFieldCount = 24; - private static final int kPointerBytesPerField = 8; - - private int getPointerChangeForAction(int maskedAction) { - // Primary pointer: - if (maskedAction == MotionEvent.ACTION_DOWN) { - return kPointerChangeDown; - } - if (maskedAction == MotionEvent.ACTION_UP) { - return kPointerChangeUp; - } - // Secondary pointer: - if (maskedAction == MotionEvent.ACTION_POINTER_DOWN) { - return kPointerChangeDown; - } - if (maskedAction == MotionEvent.ACTION_POINTER_UP) { - return kPointerChangeUp; - } - // All pointers: - if (maskedAction == MotionEvent.ACTION_MOVE) { - return kPointerChangeMove; - } - if (maskedAction == MotionEvent.ACTION_HOVER_MOVE) { - return kPointerChangeHover; - } - if (maskedAction == MotionEvent.ACTION_CANCEL) { - return kPointerChangeCancel; - } - return -1; - } - - private int getPointerDeviceTypeForToolType(int toolType) { - switch (toolType) { - case MotionEvent.TOOL_TYPE_FINGER: - return kPointerDeviceKindTouch; - case MotionEvent.TOOL_TYPE_STYLUS: - return kPointerDeviceKindStylus; - case MotionEvent.TOOL_TYPE_MOUSE: - return kPointerDeviceKindMouse; - case MotionEvent.TOOL_TYPE_ERASER: - return kPointerDeviceKindInvertedStylus; - default: - // MotionEvent.TOOL_TYPE_UNKNOWN will reach here. - return kPointerDeviceKindUnknown; - } - } - - private void addPointerForIndex(MotionEvent event, int pointerIndex, int pointerChange, - int pointerData, ByteBuffer packet) { - if (pointerChange == -1) { - return; - } - - int pointerKind = getPointerDeviceTypeForToolType(event.getToolType(pointerIndex)); - - int signalKind = kPointerSignalKindNone; - - long timeStamp = event.getEventTime() * 1000; // Convert from milliseconds to microseconds. - - packet.putLong(timeStamp); // time_stamp - packet.putLong(pointerChange); // change - packet.putLong(pointerKind); // kind - packet.putLong(signalKind); // signal_kind - packet.putLong(event.getPointerId(pointerIndex)); // device - packet.putDouble(event.getX(pointerIndex)); // physical_x - packet.putDouble(event.getY(pointerIndex)); // physical_y - - if (pointerKind == kPointerDeviceKindMouse) { - packet.putLong(event.getButtonState() & 0x1F); // buttons - } else if (pointerKind == kPointerDeviceKindStylus) { - packet.putLong((event.getButtonState() >> 4) & 0xF); // buttons - } else { - packet.putLong(0); // buttons - } - - packet.putLong(0); // obscured - - packet.putDouble(event.getPressure(pointerIndex)); // pressure - double pressureMin = 0.0, pressureMax = 1.0; - if (event.getDevice() != null) { - InputDevice.MotionRange pressureRange = event.getDevice().getMotionRange(MotionEvent.AXIS_PRESSURE); - if (pressureRange != null) { - pressureMin = pressureRange.getMin(); - pressureMax = pressureRange.getMax(); - } - } - packet.putDouble(pressureMin); // pressure_min - packet.putDouble(pressureMax); // pressure_max - - if (pointerKind == kPointerDeviceKindStylus) { - packet.putDouble(event.getAxisValue(MotionEvent.AXIS_DISTANCE, pointerIndex)); // distance - packet.putDouble(0.0); // distance_max - } else { - packet.putDouble(0.0); // distance - packet.putDouble(0.0); // distance_max - } - - packet.putDouble(event.getSize(pointerIndex)); // size - - packet.putDouble(event.getToolMajor(pointerIndex)); // radius_major - packet.putDouble(event.getToolMinor(pointerIndex)); // radius_minor - - packet.putDouble(0.0); // radius_min - packet.putDouble(0.0); // radius_max - - packet.putDouble(event.getAxisValue(MotionEvent.AXIS_ORIENTATION, pointerIndex)); // orientation - - if (pointerKind == kPointerDeviceKindStylus) { - packet.putDouble(event.getAxisValue(MotionEvent.AXIS_TILT, pointerIndex)); // tilt - } else { - packet.putDouble(0.0); // tilt - } - - packet.putLong(pointerData); // platformData - - packet.putDouble(0.0); // scroll_delta_x - packet.putDouble(0.0); // scroll_delta_y - } - @Override public boolean onTouchEvent(MotionEvent event) { if (!isAttached()) { - return false; + return super.onTouchEvent(event); } // TODO(abarth): This version check might not be effective in some @@ -518,55 +383,13 @@ public boolean onTouchEvent(MotionEvent event) { requestUnbufferedDispatch(event); } - // This value must match the value in framework's platform_view.dart. - // This flag indicates whether the original Android pointer events were batched together. - final int kPointerDataFlagBatched = 1; - - int pointerCount = event.getPointerCount(); - - ByteBuffer packet = ByteBuffer.allocateDirect(pointerCount * kPointerDataFieldCount * kPointerBytesPerField); - packet.order(ByteOrder.LITTLE_ENDIAN); - - int maskedAction = event.getActionMasked(); - int pointerChange = getPointerChangeForAction(event.getActionMasked()); - if (maskedAction == MotionEvent.ACTION_DOWN || maskedAction == MotionEvent.ACTION_POINTER_DOWN) { - // ACTION_DOWN and ACTION_POINTER_DOWN always apply to a single pointer only. - addPointerForIndex(event, event.getActionIndex(), pointerChange, 0, packet); - } else if (maskedAction == MotionEvent.ACTION_UP || maskedAction == MotionEvent.ACTION_POINTER_UP) { - // ACTION_UP and ACTION_POINTER_UP may contain position updates for other pointers. - // We are converting these updates to move events here in order to preserve this data. - // We also mark these events with a flag in order to help the framework reassemble - // the original Android event later, should it need to forward it to a PlatformView. - for (int p = 0; p < pointerCount; p++) { - if (p != event.getActionIndex()) { - if (event.getToolType(p) == MotionEvent.TOOL_TYPE_FINGER) { - addPointerForIndex(event, p, kPointerChangeMove, kPointerDataFlagBatched, packet); - } - } - } - // It's important that we're sending the UP event last. This allows PlatformView - // to correctly batch everything back into the original Android event if needed. - addPointerForIndex(event, event.getActionIndex(), pointerChange, 0, packet); - } else { - // ACTION_MOVE may not actually mean all pointers have moved - // but it's the responsibility of a later part of the system to - // ignore 0-deltas if desired. - for (int p = 0; p < pointerCount; p++) { - addPointerForIndex(event, p, pointerChange, 0, packet); - } - } - - if (packet.position() % (kPointerDataFieldCount * kPointerBytesPerField) != 0) { - throw new AssertionError("Packet position is not on field boundary"); - } - mNativeView.getFlutterJNI().dispatchPointerDataPacket(packet, packet.position()); - return true; + return androidTouchProcessor.onTouchEvent(event); } @Override public boolean onHoverEvent(MotionEvent event) { if (!isAttached()) { - return false; + return super.onHoverEvent(event); } boolean handled = mAccessibilityNodeProvider.onAccessibilityHoverEvent(event); @@ -577,30 +400,17 @@ public boolean onHoverEvent(MotionEvent event) { return handled; } + /** + * Invoked by Android when a generic motion event occurs, e.g., joystick movement, mouse hover, + * track pad touches, scroll wheel movements, etc. + * + * Flutter handles all of its own gesture detection and processing, therefore this + * method forwards all {@link MotionEvent} data from Android to Flutter. + */ @Override public boolean onGenericMotionEvent(MotionEvent event) { - // Method isFromSource is only available in API 18+ (Jelly Bean MR2) - // Mouse hover support is not implemented for API < 18. - boolean isPointerEvent = Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2 - && event.isFromSource(InputDevice.SOURCE_CLASS_POINTER); - if (!isPointerEvent || - event.getActionMasked() != MotionEvent.ACTION_HOVER_MOVE || - !isAttached()) { - return super.onGenericMotionEvent(event); - } - - int pointerChange = getPointerChangeForAction(event.getActionMasked()); - ByteBuffer packet = ByteBuffer.allocateDirect( - event.getPointerCount() * kPointerDataFieldCount * kPointerBytesPerField); - packet.order(ByteOrder.LITTLE_ENDIAN); - - // ACTION_HOVER_MOVE always applies to a single pointer only. - addPointerForIndex(event, event.getActionIndex(), pointerChange, 0, packet); - if (packet.position() % (kPointerDataFieldCount * kPointerBytesPerField) != 0) { - throw new AssertionError("Packet position is not on field boundary"); - } - mNativeView.getFlutterJNI().dispatchPointerDataPacket(packet, packet.position()); - return true; + boolean handled = isAttached() && androidTouchProcessor.onGenericMotionEvent(event); + return handled ? true : super.onGenericMotionEvent(event); } @Override From 5ccee95373348854bc4877cfe240024a36847d2d Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Mon, 11 Mar 2019 19:11:00 -0400 Subject: [PATCH 1348/1537] Roll src/third_party/skia e9c1ce89c005..c6d8781c4036 (29 commits) (#8123) https://skia.googlesource.com/skia.git/%2Blog/e9c1ce89c005..c6d8781c4036 git log e9c1ce89c005f2112ecb3b7120116706af1f2222..c6d8781c4036cd64a3fbf185ca18b9ff3def8cfd --date=short --no-merges --format=%ad %ae %s 2019-03-11 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/angle2 49c9dfe3b832..f563fdc91e83 (1 commits) 2019-03-11 kjlubick@google.com [canvaskit] Move from experimental to modules 2019-03-11 bsalomon@google.com Add GM for crbug.com/938592 2019-03-08 bsalomon@google.com Reintroduce deinstantiate lazy proxy types and use for promise images. 2019-03-11 recipe-roller@chromium.org Roll recipe dependencies (trivial). 2019-03-11 brianosman@google.com Add clamped half-float pixel config to Ganesh 2019-03-11 kjlubick@google.com Add input length check when fuzzing 2019-03-07 michaelludwig@google.com Handle arbitrary and degenerate quadrilaterals in GrQuadPerEdgeAA 2019-03-11 skia-autoroll@skia-public.iam.gserviceaccount.com Roll skia/third_party/skcms 2fb061752f70..c6c0aae921ea (1 commits) 2019-03-06 herb@google.com One routine to rule them all! 2019-03-11 reed@google.com rename mixer to lerp (in prep for SkMixer) 2019-03-11 stani@google.com Export libvulkan headers for android libraries depending on skia 2019-03-11 fmalita@chromium.org [skottie] Fix Gaussian blur repeat edge pixels semantics 2019-03-11 recipe-roller@chromium.org Roll recipe dependencies (trivial). 2019-03-11 robertphillips@google.com Revert "Always explicitly allocate except in Android Framework" 2019-03-11 hcm@google.com update milestones to 2019 dates 2019-03-11 skia-autoroll@skia-public.iam.gserviceaccount.com Roll skia/third_party/skcms d2f7012e6a85..2fb061752f70 (1 commits) 2019-03-11 recipe-roller@chromium.org Roll recipe dependencies (trivial). 2019-03-08 herb@google.com Convert templates to virtuals in SkGlyphRunPainter 2019-03-11 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader b72d28ff9975..654540e86243 (1 commits) 2019-03-11 skia-autoroll@skia-public.iam.gserviceaccount.com Roll skia/third_party/skcms a81211f5ad2a..d2f7012e6a85 (1 commits) 2019-03-11 recipe-roller@chromium.org Roll recipe dependencies (trivial). 2019-03-11 robertphillips@google.com Always explicitly allocate except in Android Framework 2019-03-11 skia-autoroll@skia-public.iam.gserviceaccount.com Roll skia/third_party/skcms 3b3522324e7b..a81211f5ad2a (1 commits) 2019-03-11 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader bb8c8e211402..b72d28ff9975 (2 commits) 2019-03-11 jcgregorio@google.com Change all pointers to doxygen docs to point to api.skia.org. 2019-03-11 jvanverth@google.com Improve Metal texture uploads. 2019-03-11 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader cd3e11d9464a..bb8c8e211402 (2 commits) 2019-03-11 brianosman@google.com Add flag to check that F16Norm pixels are clamped properly The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (benjaminwagner@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 118 ++++++++++++++++--------------- 2 files changed, 62 insertions(+), 58 deletions(-) diff --git a/DEPS b/DEPS index a43121ecfc46a..39c4af2ae5629 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'e9c1ce89c005f2112ecb3b7120116706af1f2222', + 'skia_revision': 'c6d8781c4036cd64a3fbf185ca18b9ff3def8cfd', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 41fc2d4297ecc..fa965f5befc73 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 2f8546533f16e65b5b013621e84e1987 +Signature: 1f8afd011d49d76a6bb68cf8f1c1236e UNUSED LICENSES: @@ -1717,6 +1717,8 @@ FILE: ../../../third_party/skia/src/effects/SkTrimPE.h FILE: ../../../third_party/skia/src/effects/SkTrimPathEffect.cpp FILE: ../../../third_party/skia/src/gpu/GrContextThreadSafeProxyPriv.h FILE: ../../../third_party/skia/src/gpu/GrDDLContext.cpp +FILE: ../../../third_party/skia/src/gpu/GrDeinstantiateProxyTracker.cpp +FILE: ../../../third_party/skia/src/gpu/GrDeinstantiateProxyTracker.h FILE: ../../../third_party/skia/src/gpu/GrDriverBugWorkarounds.cpp FILE: ../../../third_party/skia/src/gpu/GrFPArgs.h FILE: ../../../third_party/skia/src/gpu/GrLegacyDirectContext.cpp @@ -2060,46 +2062,6 @@ FILE: ../../../third_party/skia/docs/overview.bmh FILE: ../../../third_party/skia/docs/status.json FILE: ../../../third_party/skia/docs/undocumented.bmh FILE: ../../../third_party/skia/docs/usingBookmaker.bmh -FILE: ../../../third_party/skia/experimental/canvaskit/canvaskit/NotoSerif-Regular.ttf -FILE: ../../../third_party/skia/experimental/canvaskit/canvaskit/Roboto-Regular.ttf -FILE: ../../../third_party/skia/experimental/canvaskit/canvaskit/Roboto-Regular.woff -FILE: ../../../third_party/skia/experimental/canvaskit/canvaskit/example.html -FILE: ../../../third_party/skia/experimental/canvaskit/canvaskit/node.example.js -FILE: ../../../third_party/skia/experimental/canvaskit/canvaskit/package.json -FILE: ../../../third_party/skia/experimental/canvaskit/canvaskit/test.png -FILE: ../../../third_party/skia/experimental/canvaskit/cpu.js -FILE: ../../../third_party/skia/experimental/canvaskit/debug.js -FILE: ../../../third_party/skia/experimental/canvaskit/externs.js -FILE: ../../../third_party/skia/experimental/canvaskit/fonts/NotoMono-Regular.ttf -FILE: ../../../third_party/skia/experimental/canvaskit/gpu.js -FILE: ../../../third_party/skia/experimental/canvaskit/helper.js -FILE: ../../../third_party/skia/experimental/canvaskit/htmlcanvas/_namedcolors.js -FILE: ../../../third_party/skia/experimental/canvaskit/htmlcanvas/canvas2dcontext.js -FILE: ../../../third_party/skia/experimental/canvaskit/htmlcanvas/color.js -FILE: ../../../third_party/skia/experimental/canvaskit/htmlcanvas/font.js -FILE: ../../../third_party/skia/experimental/canvaskit/htmlcanvas/htmlcanvas.js -FILE: ../../../third_party/skia/experimental/canvaskit/htmlcanvas/imagedata.js -FILE: ../../../third_party/skia/experimental/canvaskit/htmlcanvas/lineargradient.js -FILE: ../../../third_party/skia/experimental/canvaskit/htmlcanvas/path2d.js -FILE: ../../../third_party/skia/experimental/canvaskit/htmlcanvas/pattern.js -FILE: ../../../third_party/skia/experimental/canvaskit/htmlcanvas/postamble.js -FILE: ../../../third_party/skia/experimental/canvaskit/htmlcanvas/preamble.js -FILE: ../../../third_party/skia/experimental/canvaskit/htmlcanvas/radialgradient.js -FILE: ../../../third_party/skia/experimental/canvaskit/htmlcanvas/util.js -FILE: ../../../third_party/skia/experimental/canvaskit/interface.js -FILE: ../../../third_party/skia/experimental/canvaskit/karma.bench.conf.js -FILE: ../../../third_party/skia/experimental/canvaskit/karma.conf.js -FILE: ../../../third_party/skia/experimental/canvaskit/package.json -FILE: ../../../third_party/skia/experimental/canvaskit/perf/animation.bench.js -FILE: ../../../third_party/skia/experimental/canvaskit/perf/assets/confetti.json -FILE: ../../../third_party/skia/experimental/canvaskit/perf/assets/drinks.json -FILE: ../../../third_party/skia/experimental/canvaskit/perf/assets/lego_loader.json -FILE: ../../../third_party/skia/experimental/canvaskit/perf/assets/onboarding.json -FILE: ../../../third_party/skia/experimental/canvaskit/postamble.js -FILE: ../../../third_party/skia/experimental/canvaskit/preamble.js -FILE: ../../../third_party/skia/experimental/canvaskit/ready.js -FILE: ../../../third_party/skia/experimental/canvaskit/release.js -FILE: ../../../third_party/skia/experimental/canvaskit/skottie.js FILE: ../../../third_party/skia/experimental/docs/animationCommon.js FILE: ../../../third_party/skia/experimental/docs/backend.js FILE: ../../../third_party/skia/experimental/docs/canvasBackend.js @@ -2414,6 +2376,46 @@ FILE: ../../../third_party/skia/infra/project-config/cr-buildbucket.cfg FILE: ../../../third_party/skia/infra/project-config/project.cfg FILE: ../../../third_party/skia/infra/project-config/refs.cfg FILE: ../../../third_party/skia/infra/skqp/docker/android-skqp/Dockerfile +FILE: ../../../third_party/skia/modules/canvaskit/canvaskit/NotoSerif-Regular.ttf +FILE: ../../../third_party/skia/modules/canvaskit/canvaskit/Roboto-Regular.ttf +FILE: ../../../third_party/skia/modules/canvaskit/canvaskit/Roboto-Regular.woff +FILE: ../../../third_party/skia/modules/canvaskit/canvaskit/example.html +FILE: ../../../third_party/skia/modules/canvaskit/canvaskit/node.example.js +FILE: ../../../third_party/skia/modules/canvaskit/canvaskit/package.json +FILE: ../../../third_party/skia/modules/canvaskit/canvaskit/test.png +FILE: ../../../third_party/skia/modules/canvaskit/cpu.js +FILE: ../../../third_party/skia/modules/canvaskit/debug.js +FILE: ../../../third_party/skia/modules/canvaskit/externs.js +FILE: ../../../third_party/skia/modules/canvaskit/fonts/NotoMono-Regular.ttf +FILE: ../../../third_party/skia/modules/canvaskit/gpu.js +FILE: ../../../third_party/skia/modules/canvaskit/helper.js +FILE: ../../../third_party/skia/modules/canvaskit/htmlcanvas/_namedcolors.js +FILE: ../../../third_party/skia/modules/canvaskit/htmlcanvas/canvas2dcontext.js +FILE: ../../../third_party/skia/modules/canvaskit/htmlcanvas/color.js +FILE: ../../../third_party/skia/modules/canvaskit/htmlcanvas/font.js +FILE: ../../../third_party/skia/modules/canvaskit/htmlcanvas/htmlcanvas.js +FILE: ../../../third_party/skia/modules/canvaskit/htmlcanvas/imagedata.js +FILE: ../../../third_party/skia/modules/canvaskit/htmlcanvas/lineargradient.js +FILE: ../../../third_party/skia/modules/canvaskit/htmlcanvas/path2d.js +FILE: ../../../third_party/skia/modules/canvaskit/htmlcanvas/pattern.js +FILE: ../../../third_party/skia/modules/canvaskit/htmlcanvas/postamble.js +FILE: ../../../third_party/skia/modules/canvaskit/htmlcanvas/preamble.js +FILE: ../../../third_party/skia/modules/canvaskit/htmlcanvas/radialgradient.js +FILE: ../../../third_party/skia/modules/canvaskit/htmlcanvas/util.js +FILE: ../../../third_party/skia/modules/canvaskit/interface.js +FILE: ../../../third_party/skia/modules/canvaskit/karma.bench.conf.js +FILE: ../../../third_party/skia/modules/canvaskit/karma.conf.js +FILE: ../../../third_party/skia/modules/canvaskit/package.json +FILE: ../../../third_party/skia/modules/canvaskit/perf/animation.bench.js +FILE: ../../../third_party/skia/modules/canvaskit/perf/assets/confetti.json +FILE: ../../../third_party/skia/modules/canvaskit/perf/assets/drinks.json +FILE: ../../../third_party/skia/modules/canvaskit/perf/assets/lego_loader.json +FILE: ../../../third_party/skia/modules/canvaskit/perf/assets/onboarding.json +FILE: ../../../third_party/skia/modules/canvaskit/postamble.js +FILE: ../../../third_party/skia/modules/canvaskit/preamble.js +FILE: ../../../third_party/skia/modules/canvaskit/ready.js +FILE: ../../../third_party/skia/modules/canvaskit/release.js +FILE: ../../../third_party/skia/modules/canvaskit/skottie.js FILE: ../../../third_party/skia/modules/pathkit/chaining.js FILE: ../../../third_party/skia/modules/pathkit/externs.js FILE: ../../../third_party/skia/modules/pathkit/helper.js @@ -4650,13 +4652,13 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ==================================================================================================== LIBRARY: skia -ORIGIN: ../../../third_party/skia/experimental/canvaskit/WasmAliases.h + ../../../third_party/skia/LICENSE +ORIGIN: ../../../third_party/skia/experimental/wasm-skp-debugger/debugger_bindings.cpp + ../../../third_party/skia/LICENSE TYPE: LicenseType.bsd -FILE: ../../../third_party/skia/experimental/canvaskit/WasmAliases.h -FILE: ../../../third_party/skia/experimental/canvaskit/particles_bindings.cpp -FILE: ../../../third_party/skia/experimental/canvaskit/skottie_bindings.cpp FILE: ../../../third_party/skia/experimental/wasm-skp-debugger/debugger_bindings.cpp FILE: ../../../third_party/skia/gm/runtimecolorfilter.cpp +FILE: ../../../third_party/skia/modules/canvaskit/WasmAliases.h +FILE: ../../../third_party/skia/modules/canvaskit/particles_bindings.cpp +FILE: ../../../third_party/skia/modules/canvaskit/skottie_bindings.cpp FILE: ../../../third_party/skia/modules/particles/include/SkCurve.h FILE: ../../../third_party/skia/modules/particles/include/SkParticleAffector.h FILE: ../../../third_party/skia/modules/particles/include/SkParticleData.h @@ -4702,17 +4704,11 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ==================================================================================================== LIBRARY: skia -ORIGIN: ../../../third_party/skia/experimental/canvaskit/canvaskit_bindings.cpp + ../../../third_party/skia/LICENSE +ORIGIN: ../../../third_party/skia/fuzz/FuzzDrawFunctions.cpp + ../../../third_party/skia/LICENSE TYPE: LicenseType.bsd -FILE: ../../../third_party/skia/experimental/canvaskit/canvaskit_bindings.cpp -FILE: ../../../third_party/skia/fuzz/FuzzEncoders.cpp -FILE: ../../../third_party/skia/fuzz/FuzzPolyUtils.cpp -FILE: ../../../third_party/skia/include/private/GrSkSLFPFactoryCache.h -FILE: ../../../third_party/skia/modules/pathkit/pathkit_wasm_bindings.cpp -FILE: ../../../third_party/skia/src/core/SkPicture_none.cpp -FILE: ../../../third_party/skia/src/gpu/ccpr/GrCoverageCountingPathRenderer_none.cpp +FILE: ../../../third_party/skia/fuzz/FuzzDrawFunctions.cpp ---------------------------------------------------------------------------------------------------- -Copyright 2018 Google LLC +Copyright 2016 Mozilla Foundation Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are @@ -4743,11 +4739,17 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ==================================================================================================== LIBRARY: skia -ORIGIN: ../../../third_party/skia/fuzz/FuzzDrawFunctions.cpp + ../../../third_party/skia/LICENSE +ORIGIN: ../../../third_party/skia/fuzz/FuzzEncoders.cpp + ../../../third_party/skia/LICENSE TYPE: LicenseType.bsd -FILE: ../../../third_party/skia/fuzz/FuzzDrawFunctions.cpp +FILE: ../../../third_party/skia/fuzz/FuzzEncoders.cpp +FILE: ../../../third_party/skia/fuzz/FuzzPolyUtils.cpp +FILE: ../../../third_party/skia/include/private/GrSkSLFPFactoryCache.h +FILE: ../../../third_party/skia/modules/canvaskit/canvaskit_bindings.cpp +FILE: ../../../third_party/skia/modules/pathkit/pathkit_wasm_bindings.cpp +FILE: ../../../third_party/skia/src/core/SkPicture_none.cpp +FILE: ../../../third_party/skia/src/gpu/ccpr/GrCoverageCountingPathRenderer_none.cpp ---------------------------------------------------------------------------------------------------- -Copyright 2016 Mozilla Foundation +Copyright 2018 Google LLC Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are @@ -4873,6 +4875,7 @@ ORIGIN: ../../../third_party/skia/gm/backdrop.cpp + ../../../third_party/skia/LI TYPE: LicenseType.bsd FILE: ../../../third_party/skia/gm/backdrop.cpp FILE: ../../../third_party/skia/gm/compositor_quads.cpp +FILE: ../../../third_party/skia/gm/crbug_938592.cpp FILE: ../../../third_party/skia/gm/mac_aa_explorer.cpp FILE: ../../../third_party/skia/gm/mixercolorfilter.cpp FILE: ../../../third_party/skia/gm/samplelocations.cpp @@ -4885,6 +4888,7 @@ FILE: ../../../third_party/skia/include/private/SkVx.h FILE: ../../../third_party/skia/modules/sksg/include/SkSGRenderEffect.h FILE: ../../../third_party/skia/modules/sksg/src/SkSGRenderEffect.cpp FILE: ../../../third_party/skia/modules/sksg/src/SkSGTransformPriv.h +FILE: ../../../third_party/skia/samplecode/SampleDegenerateQuads.cpp FILE: ../../../third_party/skia/samplecode/SampleSG.cpp FILE: ../../../third_party/skia/samplecode/SampleThinAA.cpp FILE: ../../../third_party/skia/src/core/SkDescriptor.cpp From 52b67fdd5a9079cc7f668aa792d35cd00f5f90c7 Mon Sep 17 00:00:00 2001 From: Gary Qian Date: Mon, 11 Mar 2019 16:43:11 -0700 Subject: [PATCH 1349/1537] Expose decorationThickness to dart:ui (#8008) --- lib/stub_ui/text.dart | 61 +++++---- lib/ui/text.dart | 133 +++++++++++++------ lib/ui/text/paragraph_builder.cc | 55 +++++--- lib/ui/text/paragraph_builder.h | 1 + third_party/txt/tests/paragraph_unittests.cc | 17 +++ 5 files changed, 185 insertions(+), 82 deletions(-) diff --git a/lib/stub_ui/text.dart b/lib/stub_ui/text.dart index bc152addb837a..e523490d18603 100644 --- a/lib/stub_ui/text.dart +++ b/lib/stub_ui/text.dart @@ -265,6 +265,7 @@ Int32List _encodeTextStyle( TextDecoration decoration, Color decorationColor, TextDecorationStyle decorationStyle, + double decorationThickness, FontWeight fontWeight, FontStyle fontStyle, TextBaseline textBaseline, @@ -296,20 +297,23 @@ Int32List _encodeTextStyle( result[0] |= 1 << 4; result[4] = decorationStyle.index; } - if (fontWeight != null) { + if (decorationThickness != null) { result[0] |= 1 << 5; + } + if (fontWeight != null) { + result[0] |= 1 << 6; result[5] = fontWeight.index; } if (fontStyle != null) { - result[0] |= 1 << 6; + result[0] |= 1 << 7; result[6] = fontStyle.index; } if (textBaseline != null) { - result[0] |= 1 << 7; + result[0] |= 1 << 8; result[7] = textBaseline.index; } if (fontFamily != null || (fontFamilyFallback != null && fontFamilyFallback.isNotEmpty)) { - result[0] |= 1 << 8; + result[0] |= 1 << 9; // Passed separately to native. } if (fontSize != null) { @@ -355,6 +359,7 @@ class TextStyle { /// * `decoration`: The decorations to paint near the text (e.g., an underline). /// * `decorationColor`: The color in which to paint the text decorations. /// * `decorationStyle`: The style in which to paint the text decorations (e.g., dashed). + /// * `decorationThickness`: The thickness of the decoration as a muliplier on the thickness specified by the font. /// * `fontWeight`: The typeface thickness to use when painting the text (e.g., bold). /// * `fontStyle`: The typeface variant to use when drawing the letters (e.g., italics). /// * `fontFamily`: The name of the font to use when painting the text (e.g., Roboto). If a `fontFamilyFallback` is @@ -379,6 +384,7 @@ class TextStyle { TextDecoration decoration, Color decorationColor, TextDecorationStyle decorationStyle, + double decorationThickness, FontWeight fontWeight, FontStyle fontStyle, TextBaseline textBaseline, @@ -401,6 +407,7 @@ class TextStyle { decoration, decorationColor, decorationStyle, + decorationThickness, fontWeight, fontStyle, textBaseline, @@ -421,6 +428,7 @@ class TextStyle { _letterSpacing = letterSpacing, _wordSpacing = wordSpacing, _height = height, + _decorationThickness = decorationThickness, _locale = locale, _background = background, _foreground = foreground, @@ -433,6 +441,7 @@ class TextStyle { final double _letterSpacing; final double _wordSpacing; final double _height; + final double _decorationThickness; final Locale _locale; final Paint _background; final Paint _foreground; @@ -450,6 +459,7 @@ class TextStyle { _letterSpacing != typedOther._letterSpacing || _wordSpacing != typedOther._wordSpacing || _height != typedOther._height || + _decorationThickness != typedOther._decorationThickness || _locale != typedOther._locale || _background != typedOther._background || _foreground != typedOther._foreground) @@ -466,31 +476,32 @@ class TextStyle { } @override - int get hashCode => hashValues(hashList(_encoded), _fontFamily, _fontFamilyFallback, _fontSize, _letterSpacing, _wordSpacing, _height, _locale, _background, _foreground, _shadows); + int get hashCode => hashValues(hashList(_encoded), _fontFamily, _fontFamilyFallback, _fontSize, _letterSpacing, _wordSpacing, _height, _locale, _background, _foreground, _shadows, _decorationThickness); @override String toString() { return 'TextStyle(' - 'color: ${ _encoded[0] & 0x00002 == 0x00002 ? new Color(_encoded[1]) : "unspecified"}, ' - 'decoration: ${ _encoded[0] & 0x00004 == 0x00004 ? new TextDecoration._(_encoded[2]) : "unspecified"}, ' - 'decorationColor: ${ _encoded[0] & 0x00008 == 0x00008 ? new Color(_encoded[3]) : "unspecified"}, ' - 'decorationStyle: ${ _encoded[0] & 0x00010 == 0x00010 ? TextDecorationStyle.values[_encoded[4]] : "unspecified"}, ' - 'fontWeight: ${ _encoded[0] & 0x00020 == 0x00020 ? FontWeight.values[_encoded[5]] : "unspecified"}, ' - 'fontStyle: ${ _encoded[0] & 0x00040 == 0x00040 ? FontStyle.values[_encoded[6]] : "unspecified"}, ' - 'textBaseline: ${ _encoded[0] & 0x00080 == 0x00080 ? TextBaseline.values[_encoded[7]] : "unspecified"}, ' - 'fontFamily: ${ _encoded[0] & 0x00100 == 0x00100 - && _fontFamily != null ? _fontFamily : "unspecified"}, ' - 'fontFamilyFallback: ${_encoded[0] & 0x00100 == 0x00100 - && _fontFamilyFallback != null - && _fontFamilyFallback.isNotEmpty ? _fontFamilyFallback : "unspecified"}, ' - 'fontSize: ${ _encoded[0] & 0x00200 == 0x00200 ? _fontSize : "unspecified"}, ' - 'letterSpacing: ${ _encoded[0] & 0x00400 == 0x00400 ? "${_letterSpacing}x" : "unspecified"}, ' - 'wordSpacing: ${ _encoded[0] & 0x00800 == 0x00800 ? "${_wordSpacing}x" : "unspecified"}, ' - 'height: ${ _encoded[0] & 0x01000 == 0x01000 ? "${_height}x" : "unspecified"}, ' - 'locale: ${ _encoded[0] & 0x02000 == 0x02000 ? _locale : "unspecified"}, ' - 'background: ${ _encoded[0] & 0x04000 == 0x04000 ? _background : "unspecified"}, ' - 'foreground: ${ _encoded[0] & 0x08000 == 0x08000 ? _foreground : "unspecified"}, ' - 'shadows: ${ _encoded[0] & 0x10000 == 0x10000 ? _shadows : "unspecified"}' + 'color: ${ _encoded[0] & 0x00002 == 0x00002 ? new Color(_encoded[1]) : "unspecified"}, ' + 'decoration: ${ _encoded[0] & 0x00004 == 0x00004 ? new TextDecoration._(_encoded[2]) : "unspecified"}, ' + 'decorationColor: ${ _encoded[0] & 0x00008 == 0x00008 ? new Color(_encoded[3]) : "unspecified"}, ' + 'decorationStyle: ${ _encoded[0] & 0x00010 == 0x00010 ? TextDecorationStyle.values[_encoded[4]] : "unspecified"}, ' + 'decorationThickness: ${_encoded[0] & 0x00020 == 0x00020 ? _decorationThickness : "unspecified"}, ' + 'fontWeight: ${ _encoded[0] & 0x00040 == 0x00040 ? FontWeight.values[_encoded[5]] : "unspecified"}, ' + 'fontStyle: ${ _encoded[0] & 0x00080 == 0x00080 ? FontStyle.values[_encoded[6]] : "unspecified"}, ' + 'textBaseline: ${ _encoded[0] & 0x00100 == 0x00100 ? TextBaseline.values[_encoded[7]] : "unspecified"}, ' + 'fontFamily: ${ _encoded[0] & 0x00200 == 0x00200 + && _fontFamily != null ? _fontFamily : "unspecified"}, ' + 'fontFamilyFallback: ${ _encoded[0] & 0x00200 == 0x00200 + && _fontFamilyFallback != null + && _fontFamilyFallback.isNotEmpty ? _fontFamilyFallback : "unspecified"}, ' + 'fontSize: ${ _encoded[0] & 0x00400 == 0x00400 ? _fontSize : "unspecified"}, ' + 'letterSpacing: ${ _encoded[0] & 0x00800 == 0x00800 ? "${_letterSpacing}x" : "unspecified"}, ' + 'wordSpacing: ${ _encoded[0] & 0x01000 == 0x01000 ? "${_wordSpacing}x" : "unspecified"}, ' + 'height: ${ _encoded[0] & 0x02000 == 0x02000 ? "${_height}x" : "unspecified"}, ' + 'locale: ${ _encoded[0] & 0x04000 == 0x04000 ? _locale : "unspecified"}, ' + 'background: ${ _encoded[0] & 0x08000 == 0x08000 ? _background : "unspecified"}, ' + 'foreground: ${ _encoded[0] & 0x10000 == 0x10000 ? _foreground : "unspecified"}, ' + 'shadows: ${ _encoded[0] & 0x20000 == 0x20000 ? _shadows : "unspecified"}' ')'; } } diff --git a/lib/ui/text.dart b/lib/ui/text.dart index 1eff826ad2c6c..09f2d95ce68a6 100644 --- a/lib/ui/text.dart +++ b/lib/ui/text.dart @@ -265,6 +265,7 @@ Int32List _encodeTextStyle( TextDecoration decoration, Color decorationColor, TextDecorationStyle decorationStyle, + double decorationThickness, FontWeight fontWeight, FontStyle fontStyle, TextBaseline textBaseline, @@ -296,52 +297,55 @@ Int32List _encodeTextStyle( result[0] |= 1 << 4; result[4] = decorationStyle.index; } - if (fontWeight != null) { + if (decorationThickness != null) { result[0] |= 1 << 5; + } + if (fontWeight != null) { + result[0] |= 1 << 6; result[5] = fontWeight.index; } if (fontStyle != null) { - result[0] |= 1 << 6; + result[0] |= 1 << 7; result[6] = fontStyle.index; } if (textBaseline != null) { - result[0] |= 1 << 7; + result[0] |= 1 << 8; result[7] = textBaseline.index; } if (fontFamily != null || (fontFamilyFallback != null && fontFamilyFallback.isNotEmpty)) { - result[0] |= 1 << 8; + result[0] |= 1 << 9; // Passed separately to native. } if (fontSize != null) { - result[0] |= 1 << 9; + result[0] |= 1 << 10; // Passed separately to native. } if (letterSpacing != null) { - result[0] |= 1 << 10; + result[0] |= 1 << 11; // Passed separately to native. } if (wordSpacing != null) { - result[0] |= 1 << 11; + result[0] |= 1 << 12; // Passed separately to native. } if (height != null) { - result[0] |= 1 << 12; + result[0] |= 1 << 13; // Passed separately to native. } if (locale != null) { - result[0] |= 1 << 13; + result[0] |= 1 << 14; // Passed separately to native. } if (background != null) { - result[0] |= 1 << 14; + result[0] |= 1 << 15; // Passed separately to native. } if (foreground != null) { - result[0] |= 1 << 15; + result[0] |= 1 << 16; // Passed separately to native. } if (shadows != null) { - result[0] |= 1 << 16; + result[0] |= 1 << 17; // Passed separately to native. } return result; @@ -355,6 +359,7 @@ class TextStyle { /// * `decoration`: The decorations to paint near the text (e.g., an underline). /// * `decorationColor`: The color in which to paint the text decorations. /// * `decorationStyle`: The style in which to paint the text decorations (e.g., dashed). + /// * `decorationThickness`: The thickness of the decoration as a muliplier on the thickness specified by the font. /// * `fontWeight`: The typeface thickness to use when painting the text (e.g., bold). /// * `fontStyle`: The typeface variant to use when drawing the letters (e.g., italics). /// * `fontFamily`: The name of the font to use when painting the text (e.g., Roboto). If a `fontFamilyFallback` is @@ -379,6 +384,7 @@ class TextStyle { TextDecoration decoration, Color decorationColor, TextDecorationStyle decorationStyle, + double decorationThickness, FontWeight fontWeight, FontStyle fontStyle, TextBaseline textBaseline, @@ -401,6 +407,7 @@ class TextStyle { decoration, decorationColor, decorationStyle, + decorationThickness, fontWeight, fontStyle, textBaseline, @@ -421,6 +428,7 @@ class TextStyle { _letterSpacing = letterSpacing, _wordSpacing = wordSpacing, _height = height, + _decorationThickness = decorationThickness, _locale = locale, _background = background, _foreground = foreground, @@ -433,6 +441,7 @@ class TextStyle { final double _letterSpacing; final double _wordSpacing; final double _height; + final double _decorationThickness; final Locale _locale; final Paint _background; final Paint _foreground; @@ -450,6 +459,7 @@ class TextStyle { _letterSpacing != typedOther._letterSpacing || _wordSpacing != typedOther._wordSpacing || _height != typedOther._height || + _decorationThickness != typedOther._decorationThickness || _locale != typedOther._locale || _background != typedOther._background || _foreground != typedOther._foreground) @@ -466,31 +476,32 @@ class TextStyle { } @override - int get hashCode => hashValues(hashList(_encoded), _fontFamily, _fontFamilyFallback, _fontSize, _letterSpacing, _wordSpacing, _height, _locale, _background, _foreground, _shadows); + int get hashCode => hashValues(hashList(_encoded), _fontFamily, _fontFamilyFallback, _fontSize, _letterSpacing, _wordSpacing, _height, _locale, _background, _foreground, _shadows, _decorationThickness); @override String toString() { return 'TextStyle(' - 'color: ${ _encoded[0] & 0x00002 == 0x00002 ? new Color(_encoded[1]) : "unspecified"}, ' - 'decoration: ${ _encoded[0] & 0x00004 == 0x00004 ? new TextDecoration._(_encoded[2]) : "unspecified"}, ' - 'decorationColor: ${ _encoded[0] & 0x00008 == 0x00008 ? new Color(_encoded[3]) : "unspecified"}, ' - 'decorationStyle: ${ _encoded[0] & 0x00010 == 0x00010 ? TextDecorationStyle.values[_encoded[4]] : "unspecified"}, ' - 'fontWeight: ${ _encoded[0] & 0x00020 == 0x00020 ? FontWeight.values[_encoded[5]] : "unspecified"}, ' - 'fontStyle: ${ _encoded[0] & 0x00040 == 0x00040 ? FontStyle.values[_encoded[6]] : "unspecified"}, ' - 'textBaseline: ${ _encoded[0] & 0x00080 == 0x00080 ? TextBaseline.values[_encoded[7]] : "unspecified"}, ' - 'fontFamily: ${ _encoded[0] & 0x00100 == 0x00100 - && _fontFamily != null ? _fontFamily : "unspecified"}, ' - 'fontFamilyFallback: ${_encoded[0] & 0x00100 == 0x00100 - && _fontFamilyFallback != null - && _fontFamilyFallback.isNotEmpty ? _fontFamilyFallback : "unspecified"}, ' - 'fontSize: ${ _encoded[0] & 0x00200 == 0x00200 ? _fontSize : "unspecified"}, ' - 'letterSpacing: ${ _encoded[0] & 0x00400 == 0x00400 ? "${_letterSpacing}x" : "unspecified"}, ' - 'wordSpacing: ${ _encoded[0] & 0x00800 == 0x00800 ? "${_wordSpacing}x" : "unspecified"}, ' - 'height: ${ _encoded[0] & 0x01000 == 0x01000 ? "${_height}x" : "unspecified"}, ' - 'locale: ${ _encoded[0] & 0x02000 == 0x02000 ? _locale : "unspecified"}, ' - 'background: ${ _encoded[0] & 0x04000 == 0x04000 ? _background : "unspecified"}, ' - 'foreground: ${ _encoded[0] & 0x08000 == 0x08000 ? _foreground : "unspecified"}, ' - 'shadows: ${ _encoded[0] & 0x10000 == 0x10000 ? _shadows : "unspecified"}' + 'color: ${ _encoded[0] & 0x00002 == 0x00002 ? new Color(_encoded[1]) : "unspecified"}, ' + 'decoration: ${ _encoded[0] & 0x00004 == 0x00004 ? new TextDecoration._(_encoded[2]) : "unspecified"}, ' + 'decorationColor: ${ _encoded[0] & 0x00008 == 0x00008 ? new Color(_encoded[3]) : "unspecified"}, ' + 'decorationStyle: ${ _encoded[0] & 0x00010 == 0x00010 ? TextDecorationStyle.values[_encoded[4]] : "unspecified"}, ' + 'decorationThickness: ${_encoded[0] & 0x00020 == 0x00020 ? _decorationThickness : "unspecified"}, ' + 'fontWeight: ${ _encoded[0] & 0x00040 == 0x00040 ? FontWeight.values[_encoded[5]] : "unspecified"}, ' + 'fontStyle: ${ _encoded[0] & 0x00080 == 0x00080 ? FontStyle.values[_encoded[6]] : "unspecified"}, ' + 'textBaseline: ${ _encoded[0] & 0x00100 == 0x00100 ? TextBaseline.values[_encoded[7]] : "unspecified"}, ' + 'fontFamily: ${ _encoded[0] & 0x00200 == 0x00200 + && _fontFamily != null ? _fontFamily : "unspecified"}, ' + 'fontFamilyFallback: ${ _encoded[0] & 0x00200 == 0x00200 + && _fontFamilyFallback != null + && _fontFamilyFallback.isNotEmpty ? _fontFamilyFallback : "unspecified"}, ' + 'fontSize: ${ _encoded[0] & 0x00400 == 0x00400 ? _fontSize : "unspecified"}, ' + 'letterSpacing: ${ _encoded[0] & 0x00800 == 0x00800 ? "${_letterSpacing}x" : "unspecified"}, ' + 'wordSpacing: ${ _encoded[0] & 0x01000 == 0x01000 ? "${_wordSpacing}x" : "unspecified"}, ' + 'height: ${ _encoded[0] & 0x02000 == 0x02000 ? "${_height}x" : "unspecified"}, ' + 'locale: ${ _encoded[0] & 0x04000 == 0x04000 ? _locale : "unspecified"}, ' + 'background: ${ _encoded[0] & 0x08000 == 0x08000 ? _background : "unspecified"}, ' + 'foreground: ${ _encoded[0] & 0x10000 == 0x10000 ? _foreground : "unspecified"}, ' + 'shadows: ${ _encoded[0] & 0x20000 == 0x20000 ? _shadows : "unspecified"}' ')'; } } @@ -1396,9 +1407,28 @@ class ParagraphBuilder extends NativeFieldWrapperClass2 { if (style._strutStyle._fontFamilyFallback != null) strutFontFamilies.addAll(style._strutStyle._fontFamilyFallback); } - _constructor(style._encoded, style._strutStyle?._encoded, style._fontFamily, strutFontFamilies, style._fontSize, style._height, style._ellipsis, _encodeLocale(style._locale)); + _constructor( + style._encoded, + style._strutStyle?._encoded, + style._fontFamily, + strutFontFamilies, + style._fontSize, + style._height, + style._ellipsis, + _encodeLocale(style._locale) + ); } - void _constructor(Int32List encoded, ByteData strutData, String fontFamily, List strutFontFamily, double fontSize, double height, String ellipsis, String locale) native 'ParagraphBuilder_constructor'; + + void _constructor( + Int32List encoded, + ByteData strutData, + String fontFamily, + List strutFontFamily, + double fontSize, + double height, + String ellipsis, + String locale + ) native 'ParagraphBuilder_constructor'; /// Applies the given style to the added text until [pop] is called. /// @@ -1409,9 +1439,38 @@ class ParagraphBuilder extends NativeFieldWrapperClass2 { fullFontFamilies.add(style._fontFamily); if (style._fontFamilyFallback != null) fullFontFamilies.addAll(style._fontFamilyFallback); - _pushStyle(style._encoded, fullFontFamilies, style._fontSize, style._letterSpacing, style._wordSpacing, style._height, _encodeLocale(style._locale), style._background?._objects, style._background?._data, style._foreground?._objects, style._foreground?._data, Shadow._encodeShadows(style._shadows)); + _pushStyle( + style._encoded, + fullFontFamilies, + style._fontSize, + style._letterSpacing, + style._wordSpacing, + style._height, + style._decorationThickness, + _encodeLocale(style._locale), + style._background?._objects, + style._background?._data, + style._foreground?._objects, + style._foreground?._data, + Shadow._encodeShadows(style._shadows) + ); } - void _pushStyle(Int32List encoded, List fontFamilies, double fontSize, double letterSpacing, double wordSpacing, double height, String locale, List backgroundObjects, ByteData backgroundData, List foregroundObjects, ByteData foregroundData, ByteData shadowsData) native 'ParagraphBuilder_pushStyle'; + + void _pushStyle( + Int32List encoded, + List fontFamilies, + double fontSize, + double letterSpacing, + double wordSpacing, + double height, + double decorationThickness, + String locale, + List backgroundObjects, + ByteData backgroundData, + List foregroundObjects, + ByteData foregroundData, + ByteData shadowsData + ) native 'ParagraphBuilder_pushStyle'; static String _encodeLocale(Locale locale) => locale?.toString() ?? ''; diff --git a/lib/ui/text/paragraph_builder.cc b/lib/ui/text/paragraph_builder.cc index b6a2c2463cd40..3633fc3546d25 100644 --- a/lib/ui/text/paragraph_builder.cc +++ b/lib/ui/text/paragraph_builder.cc @@ -33,23 +33,25 @@ const int tsColorIndex = 1; const int tsTextDecorationIndex = 2; const int tsTextDecorationColorIndex = 3; const int tsTextDecorationStyleIndex = 4; -const int tsFontWeightIndex = 5; -const int tsFontStyleIndex = 6; -const int tsTextBaselineIndex = 7; -const int tsFontFamilyIndex = 8; -const int tsFontSizeIndex = 9; -const int tsLetterSpacingIndex = 10; -const int tsWordSpacingIndex = 11; -const int tsHeightIndex = 12; -const int tsLocaleIndex = 13; -const int tsBackgroundIndex = 14; -const int tsForegroundIndex = 15; -const int tsTextShadowsIndex = 16; +const int tsTextDecorationThicknessIndex = 5; +const int tsFontWeightIndex = 6; +const int tsFontStyleIndex = 7; +const int tsTextBaselineIndex = 8; +const int tsFontFamilyIndex = 9; +const int tsFontSizeIndex = 10; +const int tsLetterSpacingIndex = 11; +const int tsWordSpacingIndex = 12; +const int tsHeightIndex = 13; +const int tsLocaleIndex = 14; +const int tsBackgroundIndex = 15; +const int tsForegroundIndex = 16; +const int tsTextShadowsIndex = 17; const int tsColorMask = 1 << tsColorIndex; const int tsTextDecorationMask = 1 << tsTextDecorationIndex; const int tsTextDecorationColorMask = 1 << tsTextDecorationColorIndex; const int tsTextDecorationStyleMask = 1 << tsTextDecorationStyleIndex; +const int tsTextDecorationThicknessMask = 1 << tsTextDecorationThicknessIndex; const int tsFontWeightMask = 1 << tsFontWeightIndex; const int tsFontStyleMask = 1 << tsFontStyleIndex; const int tsTextBaselineMask = 1 << tsTextBaselineIndex; @@ -224,11 +226,13 @@ ParagraphBuilder::ParagraphBuilder( int32_t mask = encoded[0]; txt::ParagraphStyle style; - if (mask & psTextAlignMask) + if (mask & psTextAlignMask) { style.text_align = txt::TextAlign(encoded[psTextAlignIndex]); + } - if (mask & psTextDirectionMask) + if (mask & psTextDirectionMask) { style.text_direction = txt::TextDirection(encoded[psTextDirectionIndex]); + } if (mask & psFontWeightMask) { style.font_weight = @@ -255,14 +259,17 @@ ParagraphBuilder::ParagraphBuilder( decodeStrut(strutData, strutFontFamilies, style); } - if (mask & psMaxLinesMask) + if (mask & psMaxLinesMask) { style.max_lines = encoded[psMaxLinesIndex]; + } - if (mask & psEllipsisMask) + if (mask & psEllipsisMask) { style.ellipsis = ellipsis; + } - if (mask & psLocaleMask) + if (mask & psLocaleMask) { style.locale = locale; + } FontCollection& font_collection = UIDartState::Current()->window()->client()->GetFontCollection(); @@ -302,6 +309,7 @@ void ParagraphBuilder::pushStyle(tonic::Int32List& encoded, double letterSpacing, double wordSpacing, double height, + double decorationThickness, const std::string& locale, Dart_Handle background_objects, Dart_Handle background_data, @@ -318,20 +326,27 @@ void ParagraphBuilder::pushStyle(tonic::Int32List& encoded, // Only change the style property from the previous value if a new explicitly // set value is available - if (mask & tsColorMask) + if (mask & tsColorMask) { style.color = encoded[tsColorIndex]; + } if (mask & tsTextDecorationMask) { style.decoration = static_cast(encoded[tsTextDecorationIndex]); } - if (mask & tsTextDecorationColorMask) + if (mask & tsTextDecorationColorMask) { style.decoration_color = encoded[tsTextDecorationColorIndex]; + } - if (mask & tsTextDecorationStyleMask) + if (mask & tsTextDecorationStyleMask) { style.decoration_style = static_cast( encoded[tsTextDecorationStyleIndex]); + } + + if (mask & tsTextDecorationThicknessMask) { + style.decoration_thickness_multiplier = decorationThickness; + } if (mask & tsTextBaselineMask) { // TODO(abarth): Implement TextBaseline. The CSS version of this diff --git a/lib/ui/text/paragraph_builder.h b/lib/ui/text/paragraph_builder.h index 6370e45fc708d..9ef52fbe4c0d6 100644 --- a/lib/ui/text/paragraph_builder.h +++ b/lib/ui/text/paragraph_builder.h @@ -43,6 +43,7 @@ class ParagraphBuilder : public RefCountedDartWrappable { double letterSpacing, double wordSpacing, double height, + double decorationThickness, const std::string& locale, Dart_Handle background_objects, Dart_Handle background_data, diff --git a/third_party/txt/tests/paragraph_unittests.cc b/third_party/txt/tests/paragraph_unittests.cc index ef5966236c787..7d09928f44f90 100644 --- a/third_party/txt/tests/paragraph_unittests.cc +++ b/third_party/txt/tests/paragraph_unittests.cc @@ -740,11 +740,13 @@ TEST_F(ParagraphTest, DecorationsParagraph) { TextDecoration::kLineThrough; text_style.decoration_style = txt::TextDecorationStyle::kSolid; text_style.decoration_color = SK_ColorBLACK; + text_style.decoration_thickness_multiplier = 2.0; builder.PushStyle(text_style); builder.AddText("This text should be"); text_style.decoration_style = txt::TextDecorationStyle::kDouble; text_style.decoration_color = SK_ColorBLUE; + text_style.decoration_thickness_multiplier = 1.0; builder.PushStyle(text_style); builder.AddText(" decorated even when"); @@ -755,11 +757,13 @@ TEST_F(ParagraphTest, DecorationsParagraph) { text_style.decoration_style = txt::TextDecorationStyle::kDashed; text_style.decoration_color = SK_ColorBLACK; + text_style.decoration_thickness_multiplier = 3.0; builder.PushStyle(text_style); builder.AddText(" the next line."); text_style.decoration_style = txt::TextDecorationStyle::kWavy; text_style.decoration_color = SK_ColorRED; + text_style.decoration_thickness_multiplier = 1.0; builder.PushStyle(text_style); builder.AddText(" Otherwise, bad things happen."); @@ -800,6 +804,19 @@ TEST_F(ParagraphTest, DecorationsParagraph) { ASSERT_EQ(paragraph->records_[3].style().decoration_color, SK_ColorBLACK); ASSERT_EQ(paragraph->records_[4].style().decoration_color, SK_ColorBLACK); ASSERT_EQ(paragraph->records_[5].style().decoration_color, SK_ColorRED); + + ASSERT_EQ(paragraph->records_[0].style().decoration_thickness_multiplier, + 2.0); + ASSERT_EQ(paragraph->records_[1].style().decoration_thickness_multiplier, + 1.0); + ASSERT_EQ(paragraph->records_[2].style().decoration_thickness_multiplier, + 1.0); + ASSERT_EQ(paragraph->records_[3].style().decoration_thickness_multiplier, + 3.0); + ASSERT_EQ(paragraph->records_[4].style().decoration_thickness_multiplier, + 3.0); + ASSERT_EQ(paragraph->records_[5].style().decoration_thickness_multiplier, + 1.0); } TEST_F(ParagraphTest, ItalicsParagraph) { From 8f7b183454b35f545c3fb10da18fe2ec32e498ba Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Mon, 11 Mar 2019 23:12:55 -0400 Subject: [PATCH 1350/1537] Roll src/third_party/skia c6d8781c4036..2932a458957d (2 commits) (#8125) https://skia.googlesource.com/skia.git/%2Blog/c6d8781c4036..2932a458957d git log c6d8781c4036cd64a3fbf185ca18b9ff3def8cfd..2932a458957db80b510abb83454f3b0b24af863a --date=short --no-merges --format=%ad %ae %s 2019-03-11 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader 654540e86243..3364227fa0d8 (1 commits) 2019-03-11 skia-autoroll@skia-public.iam.gserviceaccount.com Roll skia/third_party/skcms c6c0aae921ea..04a7830913b3 (1 commits) The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (benjaminwagner@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 39c4af2ae5629..b5103026ced63 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'c6d8781c4036cd64a3fbf185ca18b9ff3def8cfd', + 'skia_revision': '2932a458957db80b510abb83454f3b0b24af863a', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index fa965f5befc73..3180b88d97610 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 1f8afd011d49d76a6bb68cf8f1c1236e +Signature: 06aaf4a09d1af119c35e3899c5c8f024 UNUSED LICENSES: From 8b0df6ded554fd650ef1917e0654a3d78cb8b148 Mon Sep 17 00:00:00 2001 From: Matt Carroll Date: Mon, 11 Mar 2019 23:45:03 -0700 Subject: [PATCH 1351/1537] Bugfix #29203: NPE in getAccessibilityProvider in old FlutterView. (#8126) --- shell/platform/android/io/flutter/view/FlutterView.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shell/platform/android/io/flutter/view/FlutterView.java b/shell/platform/android/io/flutter/view/FlutterView.java index 8a97164ceaae5..c8fc94e5a6185 100644 --- a/shell/platform/android/io/flutter/view/FlutterView.java +++ b/shell/platform/android/io/flutter/view/FlutterView.java @@ -694,7 +694,7 @@ private void resetWillNotDraw(boolean isAccessibilityEnabled, boolean isTouchExp @Override public AccessibilityNodeProvider getAccessibilityNodeProvider() { - if (mAccessibilityNodeProvider.isAccessibilityEnabled()) { + if (mAccessibilityNodeProvider != null && mAccessibilityNodeProvider.isAccessibilityEnabled()) { return mAccessibilityNodeProvider; } else { // TODO(goderbauer): when a11y is off this should return a one-off snapshot of From f666adbbda24a80a3bd971ec860e3c7f9c302d85 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Tue, 12 Mar 2019 03:43:54 -0400 Subject: [PATCH 1352/1537] Roll src/third_party/skia 2932a458957d..762ddd7e4352 (3 commits) (#8128) https://skia.googlesource.com/skia.git/%2Blog/2932a458957d..762ddd7e4352 git log 2932a458957db80b510abb83454f3b0b24af863a..762ddd7e4352cc8ecb8cd1f7ef9d4c8dbea56669 --date=short --no-merges --format=%ad %ae %s 2019-03-12 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/angle2 f563fdc91e83..c9bc33cff483 (2 commits) 2019-03-12 skia-recreate-skps@skia-swarming-bots.iam.gserviceaccount.com Update go_deps asset 2019-03-12 skia-autoroll@skia-public.iam.gserviceaccount.com Roll ../src ba6c026602da..37fe521d6049 (397 commits) The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (benjaminwagner@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index b5103026ced63..5c82c2d844ea8 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '2932a458957db80b510abb83454f3b0b24af863a', + 'skia_revision': '762ddd7e4352cc8ecb8cd1f7ef9d4c8dbea56669', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 3180b88d97610..117053d5bb3fe 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 06aaf4a09d1af119c35e3899c5c8f024 +Signature: 9316f1d822692d53481bc62c2d94d3eb UNUSED LICENSES: From 48efd0fb76b9ee69fc54b65cf5d12bf8f44a206b Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Tue, 12 Mar 2019 07:13:55 -0400 Subject: [PATCH 1353/1537] Roll src/third_party/skia 762ddd7e4352..665bc64a2dc4 (2 commits) (#8129) https://skia.googlesource.com/skia.git/%2Blog/762ddd7e4352..665bc64a2dc4 git log 762ddd7e4352cc8ecb8cd1f7ef9d4c8dbea56669..665bc64a2dc41cfa36a471dc01e37c28f2def2b4 --date=short --no-merges --format=%ad %ae %s 2019-03-12 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader 3e2a4780e607..abb57857c536 (3 commits) 2019-03-12 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader 3364227fa0d8..3e2a4780e607 (1 commits) The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (benjaminwagner@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 5c82c2d844ea8..08d53e92077a0 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '762ddd7e4352cc8ecb8cd1f7ef9d4c8dbea56669', + 'skia_revision': '665bc64a2dc41cfa36a471dc01e37c28f2def2b4', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 117053d5bb3fe..b9685047c805f 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 9316f1d822692d53481bc62c2d94d3eb +Signature: f273dca586b4d4128723611e149ca435 UNUSED LICENSES: From ffef51be60b38ba34fd6ab810c603117adaec355 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Tue, 12 Mar 2019 12:02:57 -0400 Subject: [PATCH 1354/1537] Roll src/third_party/skia 665bc64a2dc4..406b068942f0 (8 commits) (#8137) https://skia.googlesource.com/skia.git/%2Blog/665bc64a2dc4..406b068942f0 git log 665bc64a2dc41cfa36a471dc01e37c28f2def2b4..406b068942f00a729dd03461b723ac04bda61b43 --date=short --no-merges --format=%ad %ae %s 2019-03-12 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader abb57857c536..6193cb187e4a (1 commits) 2019-03-12 gkaiser@google.com GrQuadPerEdgeAA: Fix typo in 'if' check 2019-03-12 kjlubick@google.com [pathkit] Clean up perf/test init 2019-03-12 bsalomon@google.com Revert "Reintroduce deinstantiate lazy proxy types and use for promise images." 2019-03-11 robertphillips@google.com Always explicitly allocate except in Android Framework (take 2) 2019-03-12 recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com Roll recipe dependencies (trivial). 2019-03-11 brianosman@google.com Remove SkToSRGBColorFilter (now unused) 2019-03-12 rmistry@google.com Add new recipe autoroller service account to list of recognized accounts The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (benjaminwagner@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 7 +------ 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/DEPS b/DEPS index 08d53e92077a0..e10d8313664f5 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '665bc64a2dc41cfa36a471dc01e37c28f2def2b4', + 'skia_revision': '406b068942f00a729dd03461b723ac04bda61b43', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index b9685047c805f..6feb916aa0410 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: f273dca586b4d4128723611e149ca435 +Signature: a4c67abd90b802f779c15f927456b53d UNUSED LICENSES: @@ -1717,8 +1717,6 @@ FILE: ../../../third_party/skia/src/effects/SkTrimPE.h FILE: ../../../third_party/skia/src/effects/SkTrimPathEffect.cpp FILE: ../../../third_party/skia/src/gpu/GrContextThreadSafeProxyPriv.h FILE: ../../../third_party/skia/src/gpu/GrDDLContext.cpp -FILE: ../../../third_party/skia/src/gpu/GrDeinstantiateProxyTracker.cpp -FILE: ../../../third_party/skia/src/gpu/GrDeinstantiateProxyTracker.h FILE: ../../../third_party/skia/src/gpu/GrDriverBugWorkarounds.cpp FILE: ../../../third_party/skia/src/gpu/GrFPArgs.h FILE: ../../../third_party/skia/src/gpu/GrLegacyDirectContext.cpp @@ -4232,7 +4230,6 @@ FILE: ../../../third_party/skia/gm/srgb.cpp FILE: ../../../third_party/skia/gm/testgradient.cpp FILE: ../../../third_party/skia/gm/text_scale_skew.cpp FILE: ../../../third_party/skia/gm/thinconcavepaths.cpp -FILE: ../../../third_party/skia/gm/tosrgb_colorfilter.cpp FILE: ../../../third_party/skia/include/android/SkAndroidFrameworkUtils.h FILE: ../../../third_party/skia/include/atlastext/SkAtlasTextContext.h FILE: ../../../third_party/skia/include/atlastext/SkAtlasTextFont.h @@ -4249,7 +4246,6 @@ FILE: ../../../third_party/skia/include/core/SkSurfaceCharacterization.h FILE: ../../../third_party/skia/include/core/SkVertices.h FILE: ../../../third_party/skia/include/docs/SkXPSDocument.h FILE: ../../../third_party/skia/include/effects/SkHighContrastFilter.h -FILE: ../../../third_party/skia/include/effects/SkToSRGBColorFilter.h FILE: ../../../third_party/skia/include/encode/SkEncoder.h FILE: ../../../third_party/skia/include/encode/SkJpegEncoder.h FILE: ../../../third_party/skia/include/encode/SkPngEncoder.h @@ -4421,7 +4417,6 @@ FILE: ../../../third_party/skia/src/core/SkVptr.h FILE: ../../../third_party/skia/src/core/SkWritePixelsRec.h FILE: ../../../third_party/skia/src/effects/SkDashImpl.h FILE: ../../../third_party/skia/src/effects/SkHighContrastFilter.cpp -FILE: ../../../third_party/skia/src/effects/SkToSRGBColorFilter.cpp FILE: ../../../third_party/skia/src/gpu/GrAHardwareBufferImageGenerator.cpp FILE: ../../../third_party/skia/src/gpu/GrAHardwareBufferImageGenerator.h FILE: ../../../third_party/skia/src/gpu/GrBackendSurface.cpp From 5cef4a022ddd30dc8b541b963659b56d68ea91e1 Mon Sep 17 00:00:00 2001 From: Gary Qian Date: Tue, 12 Mar 2019 10:35:08 -0700 Subject: [PATCH 1355/1537] Use final state passed to dart before initialization as the initial lifecycleState. (#8124) --- lib/ui/hooks.dart | 5 ++++- lib/ui/window.dart | 9 ++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/lib/ui/hooks.dart b/lib/ui/hooks.dart index 4d299c91a24ed..c7b18b6d34d60 100644 --- a/lib/ui/hooks.dart +++ b/lib/ui/hooks.dart @@ -92,7 +92,10 @@ void _updateUserSettingsData(String jsonData) { @pragma('vm:entry-point') // ignore: unused_element void _updateLifecycleState(String state) { - window._initialLifecycleState ??= state; + // We do not update the state if the state has already been used to initialize + // the lifecycleState. + if (!window._initialLifecycleStateAccessed) + window._initialLifecycleState = state; } diff --git a/lib/ui/window.dart b/lib/ui/window.dart index 6abceceb0261c..27a8902d2b3ef 100644 --- a/lib/ui/window.dart +++ b/lib/ui/window.dart @@ -562,8 +562,15 @@ class Window { /// /// It is used to initialize [SchedulerBinding.lifecycleState] at startup /// with any buffered lifecycle state events. - String get initialLifecycleState => _initialLifecycleState; + String get initialLifecycleState { + _initialLifecycleStateAccessed = true; + return _initialLifecycleState; + } String _initialLifecycleState; + /// Tracks if the initial state has been accessed. Once accessed, we + /// will stop updating the [initialLifecycleState], as it is not the + /// preferred way to access the state. + bool _initialLifecycleStateAccessed = false; /// The system-reported text scale. /// From d87d29054dd83c02757206c045e84e59b526b909 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Tue, 12 Mar 2019 16:31:55 -0400 Subject: [PATCH 1356/1537] Roll src/third_party/skia 406b068942f0..2eecc3ea3d71 (11 commits) (#8138) https://skia.googlesource.com/skia.git/%2Blog/406b068942f0..2eecc3ea3d71 git log 406b068942f00a729dd03461b723ac04bda61b43..2eecc3ea3d71613463fe2816c3852e1f6c99105b --date=short --no-merges --format=%ad %ae %s 2019-03-12 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader 6a1d92b526d4..7ce5de0c17bd (5 commits) 2019-03-12 jcgregorio@google.com Turn on CI/CD for api.skia.org. (skia) 2019-03-12 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader 6193cb187e4a..6a1d92b526d4 (1 commits) 2019-03-12 skia-autoroll@skia-public.iam.gserviceaccount.com Roll skia/third_party/skcms 04a7830913b3..10ed3a8a5eec (1 commits) 2019-03-12 mtklein@google.com simplify filterColor() 2019-03-12 robertphillips@google.com Revert "Always explicitly allocate except in Android Framework (take 2)" 2019-03-12 kjlubick@google.com [particles] Turn on CI/CD for particles.skia.org 2019-03-12 robertphillips@google.com Revert "Always try to reduce opList splitting in DDL contexts/drawingManagers" 2019-03-12 robertphillips@google.com Revert "Temporarily re-add GrContextOptions::fExplicitlyAllocateGPUResources for Fuchsia" 2019-03-11 robertphillips@google.com Always try to reduce opList splitting in DDL contexts/drawingManagers 2019-03-12 robertphillips@google.com Temporarily re-add GrContextOptions::fExplicitlyAllocateGPUResources for Fuchsia The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (benjaminwagner@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index e10d8313664f5..1988f3f21b8a7 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '406b068942f00a729dd03461b723ac04bda61b43', + 'skia_revision': '2eecc3ea3d71613463fe2816c3852e1f6c99105b', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 6feb916aa0410..4a14a592da226 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: a4c67abd90b802f779c15f927456b53d +Signature: c96897f617fbf476f372b7b6c0239d6a UNUSED LICENSES: From 073aadde14baac41e2cd2a4a89f87dd0cc651512 Mon Sep 17 00:00:00 2001 From: Gary Qian Date: Tue, 12 Mar 2019 13:55:31 -0700 Subject: [PATCH 1357/1537] Fix TextStyle decode misalignment (#8141) --- lib/ui/text.dart | 12 ++++++------ lib/ui/text/paragraph_builder.cc | 8 ++++---- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/lib/ui/text.dart b/lib/ui/text.dart index 09f2d95ce68a6..faa7032121853 100644 --- a/lib/ui/text.dart +++ b/lib/ui/text.dart @@ -297,21 +297,21 @@ Int32List _encodeTextStyle( result[0] |= 1 << 4; result[4] = decorationStyle.index; } - if (decorationThickness != null) { - result[0] |= 1 << 5; - } if (fontWeight != null) { - result[0] |= 1 << 6; + result[0] |= 1 << 5; result[5] = fontWeight.index; } if (fontStyle != null) { - result[0] |= 1 << 7; + result[0] |= 1 << 6; result[6] = fontStyle.index; } if (textBaseline != null) { - result[0] |= 1 << 8; + result[0] |= 1 << 7; result[7] = textBaseline.index; } + if (decorationThickness != null) { + result[0] |= 1 << 8; + } if (fontFamily != null || (fontFamilyFallback != null && fontFamilyFallback.isNotEmpty)) { result[0] |= 1 << 9; // Passed separately to native. diff --git a/lib/ui/text/paragraph_builder.cc b/lib/ui/text/paragraph_builder.cc index 3633fc3546d25..da8a4366ccbcc 100644 --- a/lib/ui/text/paragraph_builder.cc +++ b/lib/ui/text/paragraph_builder.cc @@ -33,10 +33,10 @@ const int tsColorIndex = 1; const int tsTextDecorationIndex = 2; const int tsTextDecorationColorIndex = 3; const int tsTextDecorationStyleIndex = 4; -const int tsTextDecorationThicknessIndex = 5; -const int tsFontWeightIndex = 6; -const int tsFontStyleIndex = 7; -const int tsTextBaselineIndex = 8; +const int tsFontWeightIndex = 5; +const int tsFontStyleIndex = 6; +const int tsTextBaselineIndex = 7; +const int tsTextDecorationThicknessIndex = 8; const int tsFontFamilyIndex = 9; const int tsFontSizeIndex = 10; const int tsLetterSpacingIndex = 11; From 0f19b2de064a4f7e40324ecaadc5be0ae8d39400 Mon Sep 17 00:00:00 2001 From: liyuqian Date: Tue, 12 Mar 2019 14:10:11 -0700 Subject: [PATCH 1358/1537] Reland PerformanceOverlayLayer golden test (#8140) This reverts commit f1f19bba8f0089490962316867bd222727510ac5. Now we shouldn't break the engine build as https://chromium-review.googlesource.com/c/chromium/tools/build/+/1480746 is landed. The golden test is disabled by default and we'll enable it later in our recipe and test it in presubmit tests. --- ci/licenses_golden/licenses_flutter | 5 + flow/BUILD.gn | 7 +- flow/flow_run_all_unittests.cc | 32 ++++++ flow/flow_test_utils.cc | 40 ++++++++ flow/flow_test_utils.h | 29 ++++++ flow/layers/performance_overlay_layer.cc | 31 ++++-- flow/layers/performance_overlay_layer.h | 6 +- .../performance_overlay_layer_unittests.cc | 96 ++++++++++++++++++ .../resources/performance_overlay_gold.png | Bin 0 -> 16572 bytes 9 files changed, 234 insertions(+), 12 deletions(-) create mode 100644 flow/flow_run_all_unittests.cc create mode 100644 flow/flow_test_utils.cc create mode 100644 flow/flow_test_utils.h create mode 100644 flow/layers/performance_overlay_layer_unittests.cc create mode 100644 testing/resources/performance_overlay_gold.png diff --git a/ci/licenses_golden/licenses_flutter b/ci/licenses_golden/licenses_flutter index a73eae28ef67d..7f1d66782caae 100644 --- a/ci/licenses_golden/licenses_flutter +++ b/ci/licenses_golden/licenses_flutter @@ -88,6 +88,7 @@ FILE: ../../../flutter/flow/layers/opacity_layer.cc FILE: ../../../flutter/flow/layers/opacity_layer.h FILE: ../../../flutter/flow/layers/performance_overlay_layer.cc FILE: ../../../flutter/flow/layers/performance_overlay_layer.h +FILE: ../../../flutter/flow/layers/performance_overlay_layer_unittests.cc FILE: ../../../flutter/flow/layers/physical_shape_layer.cc FILE: ../../../flutter/flow/layers/physical_shape_layer.h FILE: ../../../flutter/flow/layers/picture_layer.cc @@ -733,9 +734,13 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ==================================================================================================== ==================================================================================================== +LIBRARY: engine LIBRARY: txt ORIGIN: ../../../flutter/third_party/txt/LICENSE TYPE: LicenseType.apache +FILE: ../../../flutter/flow/flow_run_all_unittests.cc +FILE: ../../../flutter/flow/flow_test_utils.cc +FILE: ../../../flutter/flow/flow_test_utils.h FILE: ../../../flutter/third_party/txt/benchmarks/paint_record_benchmarks.cc FILE: ../../../flutter/third_party/txt/benchmarks/paragraph_benchmarks.cc FILE: ../../../flutter/third_party/txt/benchmarks/paragraph_builder_benchmarks.cc diff --git a/flow/BUILD.gn b/flow/BUILD.gn index 6b345aa87a35a..fbbf0e49db095 100644 --- a/flow/BUILD.gn +++ b/flow/BUILD.gn @@ -93,13 +93,18 @@ executable("flow_unittests") { testonly = true sources = [ + "flow_run_all_unittests.cc", + "flow_test_utils.h", + "flow_test_utils.cc", "matrix_decomposition_unittests.cc", "raster_cache_unittests.cc", + "layers/performance_overlay_layer_unittests.cc", ] deps = [ ":flow", - "$flutter_root/testing", + "$flutter_root/fml", + "//third_party/googletest:gtest", "//third_party/dart/runtime:libdart_jit", # for tracing "//third_party/skia", ] diff --git a/flow/flow_run_all_unittests.cc b/flow/flow_run_all_unittests.cc new file mode 100644 index 0000000000000..c1755e639b037 --- /dev/null +++ b/flow/flow_run_all_unittests.cc @@ -0,0 +1,32 @@ +/* + * Copyright 2017 Google, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "flutter/fml/command_line.h" +#include "flutter/fml/logging.h" +#include "gtest/gtest.h" + +#include "flow_test_utils.h" + +int main(int argc, char** argv) { + testing::InitGoogleTest(&argc, argv); + fml::CommandLine cmd = fml::CommandLineFromArgcArgv(argc, argv); + flow::SetGoldenDir( + cmd.GetOptionValueWithDefault("golden-dir", "flutter/testing/resources")); + flow::SetFontFile(cmd.GetOptionValueWithDefault( + "font-file", + "flutter/third_party/txt/third_party/fonts/Roboto-Regular.ttf")); + return RUN_ALL_TESTS(); +} diff --git a/flow/flow_test_utils.cc b/flow/flow_test_utils.cc new file mode 100644 index 0000000000000..0bf6d4c31d4d9 --- /dev/null +++ b/flow/flow_test_utils.cc @@ -0,0 +1,40 @@ +/* + * Copyright 2017 Google, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include + +namespace flow { + +static std::string gGoldenDir; +static std::string gFontFile; + +const std::string& GetGoldenDir() { + return gGoldenDir; +} + +void SetGoldenDir(const std::string& dir) { + gGoldenDir = dir; +} + +const std::string& GetFontFile() { + return gFontFile; +} + +void SetFontFile(const std::string& file) { + gFontFile = file; +} + +} // namespace flow diff --git a/flow/flow_test_utils.h b/flow/flow_test_utils.h new file mode 100644 index 0000000000000..58da75b3f4dde --- /dev/null +++ b/flow/flow_test_utils.h @@ -0,0 +1,29 @@ +/* + * Copyright 2017 Google, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include + +namespace flow { + +const std::string& GetGoldenDir(); + +void SetGoldenDir(const std::string& dir); + +const std::string& GetFontFile(); + +void SetFontFile(const std::string& dir); + +} // namespace flow diff --git a/flow/layers/performance_overlay_layer.cc b/flow/layers/performance_overlay_layer.cc index c80786e866e1b..e7f40058c3bfb 100644 --- a/flow/layers/performance_overlay_layer.cc +++ b/flow/layers/performance_overlay_layer.cc @@ -15,8 +15,12 @@ namespace { void DrawStatisticsText(SkCanvas& canvas, const std::string& string, int x, - int y) { + int y, + const std::string& font_path) { SkFont font; + if (font_path != "") { + font = SkFont(SkTypeface::MakeFromFile(font_path.c_str())); + } font.setSize(15); font.setLinearMetrics(false); SkPaint paint; @@ -33,7 +37,8 @@ void VisualizeStopWatch(SkCanvas& canvas, SkScalar height, bool show_graph, bool show_labels, - const std::string& label_prefix) { + const std::string& label_prefix, + const std::string& font_path) { const int label_x = 8; // distance from x const int label_y = -10; // distance from y+height @@ -51,14 +56,20 @@ void VisualizeStopWatch(SkCanvas& canvas, stream << label_prefix << " " << "max " << max_ms_per_frame << " ms/frame, " << "avg " << average_ms_per_frame << " ms/frame"; - DrawStatisticsText(canvas, stream.str(), x + label_x, y + height + label_y); + DrawStatisticsText(canvas, stream.str(), x + label_x, y + height + label_y, + font_path); } } } // namespace -PerformanceOverlayLayer::PerformanceOverlayLayer(uint64_t options) - : options_(options) {} +PerformanceOverlayLayer::PerformanceOverlayLayer(uint64_t options, + const char* font_path) + : options_(options) { + if (font_path != nullptr) { + font_path_ = font_path; + } +} void PerformanceOverlayLayer::Paint(PaintContext& context) const { const int padding = 8; @@ -73,15 +84,15 @@ void PerformanceOverlayLayer::Paint(PaintContext& context) const { SkScalar height = paint_bounds().height() / 2; SkAutoCanvasRestore save(context.leaf_nodes_canvas, true); - VisualizeStopWatch(*context.leaf_nodes_canvas, context.frame_time, x, y, - width, height - padding, - options_ & kVisualizeRasterizerStatistics, - options_ & kDisplayRasterizerStatistics, "GPU"); + VisualizeStopWatch( + *context.leaf_nodes_canvas, context.frame_time, x, y, width, + height - padding, options_ & kVisualizeRasterizerStatistics, + options_ & kDisplayRasterizerStatistics, "GPU", font_path_); VisualizeStopWatch(*context.leaf_nodes_canvas, context.engine_time, x, y + height, width, height - padding, options_ & kVisualizeEngineStatistics, - options_ & kDisplayEngineStatistics, "UI"); + options_ & kDisplayEngineStatistics, "UI", font_path_); } } // namespace flow diff --git a/flow/layers/performance_overlay_layer.h b/flow/layers/performance_overlay_layer.h index b5f20ecbd7a6b..a47b836c49f3a 100644 --- a/flow/layers/performance_overlay_layer.h +++ b/flow/layers/performance_overlay_layer.h @@ -5,6 +5,8 @@ #ifndef FLUTTER_FLOW_LAYERS_PERFORMANCE_OVERLAY_LAYER_H_ #define FLUTTER_FLOW_LAYERS_PERFORMANCE_OVERLAY_LAYER_H_ +#include + #include "flutter/flow/layers/layer.h" #include "flutter/fml/macros.h" @@ -17,12 +19,14 @@ const int kVisualizeEngineStatistics = 1 << 3; class PerformanceOverlayLayer : public Layer { public: - explicit PerformanceOverlayLayer(uint64_t options); + explicit PerformanceOverlayLayer(uint64_t options, + const char* font_path = nullptr); void Paint(PaintContext& context) const override; private: int options_; + std::string font_path_; FML_DISALLOW_COPY_AND_ASSIGN(PerformanceOverlayLayer); }; diff --git a/flow/layers/performance_overlay_layer_unittests.cc b/flow/layers/performance_overlay_layer_unittests.cc new file mode 100644 index 0000000000000..cee659f925bbd --- /dev/null +++ b/flow/layers/performance_overlay_layer_unittests.cc @@ -0,0 +1,96 @@ +// 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/flow/flow_test_utils.h" +#include "flutter/flow/layers/performance_overlay_layer.h" +#include "flutter/flow/raster_cache.h" + +#include "third_party/skia/include/core/SkSurface.h" +#include "third_party/skia/include/utils/SkBase64.h" + +#include "gtest/gtest.h" + +// To get the size of kMockedTimes in compile time. +template +constexpr int size(const T (&array)[N]) noexcept { + return N; +} + +constexpr int kMockedTimes[] = {17, 1, 4, 24, 4, 25, 30, 4, 13, 34, + 14, 0, 18, 9, 32, 36, 26, 23, 5, 8, + 32, 18, 29, 16, 29, 18, 0, 36, 33, 10}; + +// Relative to the flutter/src/engine/flutter directory +const char* kGoldenFileName = "performance_overlay_gold.png"; + +// Relative to the flutter/src/engine/flutter directory +const char* kNewGoldenFileName = "performance_overlay_gold_new.png"; + +TEST(PerformanceOverlayLayer, Gold) { + const std::string& golden_dir = flow::GetGoldenDir(); + // This unit test should only be run on Linux (not even on Mac since it's a + // golden test). Hence we don't have to worry about the "/" vs. "\". + std::string golden_file_path = golden_dir + "/" + kGoldenFileName; + std::string new_golden_file_path = golden_dir + "/" + kNewGoldenFileName; + + flow::Stopwatch mock_stopwatch; + for (int i = 0; i < size(kMockedTimes); ++i) { + mock_stopwatch.SetLapTime( + fml::TimeDelta::FromMilliseconds(kMockedTimes[i])); + } + + const SkImageInfo image_info = SkImageInfo::MakeN32Premul(1000, 1000); + sk_sp surface = SkSurface::MakeRaster(image_info); + + ASSERT_TRUE(surface != nullptr); + + flow::TextureRegistry unused_texture_registry; + + flow::Layer::PaintContext paintContext = { + nullptr, surface->getCanvas(), nullptr, mock_stopwatch, + mock_stopwatch, unused_texture_registry, nullptr, false}; + + // Specify font file to ensure the same font across different operation + // systems. + flow::PerformanceOverlayLayer layer(flow::kDisplayRasterizerStatistics | + flow::kVisualizeRasterizerStatistics | + flow::kDisplayEngineStatistics | + flow::kVisualizeEngineStatistics, + flow::GetFontFile().c_str()); + layer.set_paint_bounds(SkRect::MakeWH(1000, 400)); + surface->getCanvas()->clear(SK_ColorTRANSPARENT); + layer.Paint(paintContext); + + sk_sp snapshot = surface->makeImageSnapshot(); + sk_sp snapshot_data = snapshot->encodeToData(); + + sk_sp golden_data = + SkData::MakeFromFileName(golden_file_path.c_str()); + EXPECT_TRUE(golden_data != nullptr) + << "Golden file not found: " << golden_file_path << ".\n" + << "Please either set --golden-dir, or make sure that the unit test is " + << "run from the right directory (e.g., flutter/engine/src)."; + + const bool golden_data_matches = golden_data->equals(snapshot_data.get()); + if (!golden_data_matches) { + SkFILEWStream wstream(new_golden_file_path.c_str()); + wstream.write(snapshot_data->data(), snapshot_data->size()); + wstream.flush(); + + size_t b64_size = + SkBase64::Encode(snapshot_data->data(), snapshot_data->size(), nullptr); + sk_sp b64_data = SkData::MakeUninitialized(b64_size + 1); + char* b64_char = static_cast(b64_data->writable_data()); + SkBase64::Encode(snapshot_data->data(), snapshot_data->size(), b64_char); + b64_char[b64_size] = 0; // make it null terminated for printing + + EXPECT_TRUE(golden_data_matches) + << "Golden file mismatch. Please check " + << "the difference between " << kGoldenFileName << " and " + << kNewGoldenFileName << ", and replace the former " + << "with the latter if the difference looks good.\n\n" + << "See also the base64 encoded " << kNewGoldenFileName << ":\n" + << b64_char; + } +} diff --git a/testing/resources/performance_overlay_gold.png b/testing/resources/performance_overlay_gold.png new file mode 100644 index 0000000000000000000000000000000000000000..119551f705793600890950be96b6b0d60688cc54 GIT binary patch literal 16572 zcmeI4c~n!`mjAIV3ra+AKuQrPN(B`KCqS7}f{4nbGLKOiWeN}=Od*ys2ndu?fJ{L_ zWD*dNAwY;S$`}~~1QHp;lmrMQB#`hssp{_4@As--zt#PIfBe>}yOt|@FWh_XIeYK3 z_xH17^lc+Ok=;jj3kV2^+`Mt^u7JSKIsPA^@4y+uoPlZZ@hx2Yrl}A(LWLZk3JClt zaP!(#)4+_S@gQ$AN~Zi4Wx?Lg)Aj297sJiYOr)UXq_{fiLEFQ;i&NEP8jEUxz@-Ki zk<$v&AhV_Oh3p*7K|AGnzuJD2L<5(O)Wh;dlf`jT#K4_TM)v&hbcg;s?Qgypb0v(E zAg)&)#f9(dJkJX)JSoA-2I1kA%d&fPek?&9{Ew+*5%aQsCpKpZ~h_Kc9_9&E1NRloHH} z8j(*tp*XF2pBy)KVZVfcfcN70$9utz_x<>4r+~oE-wFZK6cF3-jT-p4_UO@nz7*Is zDl%DS2`=nu75dND#U$OL+7sogNl&%C{Lh{}k^986v}kdm=1!$;vCYI0FYzX7?0>Qj zw*|2Dilt>`J_GlNQ5jFPg8iB>pQ_T;kxpI_SLUi4mB&s;F2u?zw|*xwCn6$(J2JGg zL*NnqY0Gyq#}KjVe=@SYYFS5^^|M0fjHLwxHp(yjv#<1TZ;O5+U9!X`qq9T=1U{}i ze)}f|*L5{Ye@~^{r`wDB_OQ6%$1D=}{qN25N1qDeuR~>SW;L*Uj zvLLpu3U1n*-;&{A8-*-(7JtAf8PdvR`T{i~b$BTjiUq7R= z@dM_{AKrt0vKM;$Ang(ush8&Ue>RvUSj9elEj?Zth76qgJ%WCWbNO>q#9fa})8V`3 zlYiQI|7VMJ+$&(m*ySSgh)u5m;2Q#=TF3q*KHS@@20cC73*txh=|8*v--njppL4{k z&eMeb+bNsV`=fdFs-%sIV@TwQ)O5Q81bjNI;R=F98)ujln6B25xwP%V{QNo0i1H4B zk16BI!gI&;RK&Z|)&rb^*wK$I&qyrN6pf|SKFoOt#cB)5I$lVv$8m~q9Gb4Y@o`RP zM@P>)Ta52w#ua#)w$KEOHw)v<%=P9ZXtJjh>Gn1BY+a?eBgzZ6SKLdvxTsRIZi303 zUd%>)P^nqM(Gk<%Qc^@HJ%el1QUC1%IK_=4$c%3By+8UvMBJf`7jO;y>{fSrmg_^$ z%r(qa`J`JdD0U~b#LLYs?Pa^;{@mPL7h1z6P2{3;mn+7{VqLv6S<@oD{dfhj3Yk+` zUw`6?Lu;LxUP6y1Vc=3x1rBF~Gm`b49+0$K{bIz3&|osOb6&oDckE6NB^6f#Ul zr)hvjqxA{Ogf0(`RJh3Co>%VO7{P}HKsBU|Q51D@(B|?)QxdVt)8@QW$8XpQ7rfU= z1%*ZIVg4Kz&!&C5wz`@;-I0Wkr!5^#9mQ@oRH4y*26p4WOpa8Lf2j1b+sp`|VO&@r z8^ExKl@YWtV=#AP7`U!_z|zZ#0P1L|d}4dbTf_8#RqKHRyE;?0ANZX~7A97srmo2) ze(ug-8_lfF;NBq_-HRT6} z>3uq-vvd5jb%V$1>V+~494aXuD>80?*I;y|B_}6yPMN&j3RswPS|GuX$+hc(@vNc@hc1?K0i%+^;yV=9;;PVxRP`ufDx*jT(= zl^1fWxjiv4L|f=Si?%sxUdof1x*o5A*6?==g(A5n`;?XAPN)ZHgig-&Ua`}WVtjsn z%;c?6CWlCb;kZ8w$(mYN;J8yV+Z#|Xu%4?6gGDSmx_j+y{_i4@E%Q}X-(zLNe>Gsv zI$c;9s}!Q}Jvb72->*Auedu$bhScKHy9F5!T%4pTX=rRrW2K~y7VN-YorzN|Y`|9p zF=h*P?by?u7Q1dHF;8&m4WEe}S9*XHSF zhYqea*VT2J)CG)_Rm3hSoK8!ua49V+%y&K2HS++&WY#uhs>^s#7mlQoYJ8?V>A-O` zS!C39k+6iK#*16Ilc;SLYMVMaIoU%GW7R3y1@hwK7X}ncw}?6t4auD?Ja({2kZkxl zuQ6I5li7>4*xwTy(<67c!1Su8r|05FcQZ4y@ra0s@#5lQvlLoZ7CD`@UW!6ZetHs1 zba&f(NJ1j38~0*S>CDnod=@Ui)XB-@J}_)5)gK9r?aR=Jm4B}gx5g(#?~*EhZjWrZ zI&EWQuA{?2S2lckF2~qd%jdx@!fZDVG1;q^g&qSwom04QN+E)f%f|sCW-9JRq3jQLXVTvlX=O#Gx&u4eF#^JW-4?Z?4LLbiT zmh%PPk(nG5GqsCB!CBi`2dj+`EM92&xqiYNzDOz_{V-4LPDy`z`;Jfjy~gm&8JlV? z(glZB^`s|*%#}77 z+YsD)^rhOvzBhcYZ-ekwj)BQ@0Dqs)%i<;aOtmU&tq+*MG`MU1s0%@>(+TP6>1`+W zM-Q+XSXk&$jllPA3zi2Vz@%lai9;rGw{Qv)tU>)fKt%0RaKY5{C{2C_x)S zO;pmmiRDh6i5Dy^a+l!}?0t5B0BK-?vswiA_mK$*N_MLR1aX zF3p>QyhsUizjV^xa(G`tn@Q04_{_Y1wLik*O^Onf6o`3VbGw#k~3r ze*BoW(U*%W!7jf%al&Q4lT-1osJ&#1 zDD1B9(r`xnPC;|@;X-6-)hu`;X)_DNtLdBsnme&(g_Yhv|9Gj~33pT~A@9MH_4eEA ze0zWQPQ(0?cgEHhsXitqx$*7W)XXwV#WPl`p`IG(XiqY4xm`1arlssPhQ?FtcJQxR zz7H_f?;PkkApdp`=GAEGMVG=C?T++>u(cc*ZxG5I+~z(3u~S`A#p9*Qa7cqI5xYf& zMKKEtmy5G_m$pd8s3Wzv^qWd~UquzwW}^?t-vV}Z(QTyMNhV6H(ZpDDeW5G$BH}p6 zBv1?(uNxA!XhRMTxko;x7jJ-8^IvF-l~5ujgW!ROY;WlV1qF@BqXQ>f^rVBPlSm}e zWQu+8e2H)ZWLXM1_d06mkhr)%78n}B69n89Da6Olnvh|rmomlp4I#hCa8$&^F zj!ra1$&-U9nRG4Q#*`9&!EnIbM43#c_40mTp4j`_IRW>sT~0b(lTEa%hLIZ{Y%-|| z-|^5O>Zqc4TW1w4O12zHiYBSPW{zx`BdeIrWavLGP#~eS= zB&_z(wu$F0~Uej9(Ov%p2zQ?*hAkgM^}Ojni0-k387LuQ)VCiXhA_EV44SkQ|EQ z8J6y-Vz^k3sYO(8TYSWdplGC+cHkU_(%5hXuC1t~v?uhd*2dQ-sr(S<=H{lRBlPs_A*AQp>_=J9yVuXUo{l8~%%*j|s) zq9PkslMHWJ6pY*oRgnj3?T_9f>aRq@%N@&E{jUNknUKRa=0nzE+Cs(?pyCV9J?yii+$|uue5fWcxh>Fl1?*T{O=u>_tKX1<7wh!E9)04i(YR&VgBG|y z47=Xe_FWJ0%lmiSL}T*|@TC5{wn}p|DTR#7K6>-HJCN@&ZcH@Ee;2mr2LmV+s*%#!GTW8P znE1#M>3?ge&Ia-BURRV%*ky+A4sPrRI}p`To7DHTUcIIS9v3IN4$N%64iTjef_Aop zv{q=~>K2=U*kcA4l0BZ-Zk(qL@-z>yCu(jkRk-(nT{iPp?rt3+*?{(iKnaqaiKXSR zjJD9s%*^=CQt^Wa*C@UiOB4!~4Rjb&#gtB)YOnD$|HUCYKN^Tuhlr@AAp7J*%!@R^1eaaHTKPgXmckNV)bY5xcWe`#_GczM38c1X^ z^j8D9s0?>x?h(lpw7Xl{Ab+cQv9Qpj8+!ODuF_ZN0pF=&_y*GI%u|#+!fsi#mAF>sPOSOuTWNqr_ct zYJR$p5*!i|Te8utW4ZB3@ID8vIWZN)Xq-4@(#SB@6ql2}EY`5zp9R9mFeuAj0+-Hq z>P$vX)Y;V5*1k}xUv7K?qJyEa7JE9@q4n7n7Ly3Wld3$4F|Wy*HT;qJC`PRHB*)s?(5uAqNoOcC@yhpsugibvXBg zhD?*Ntc->=Oa8R#r|@cNSQhWqd?N)NwOsdnsHCKW*U^!qEBj7E{eAJ9X^-sUV%|kY zVn}dDKby_Q8X6k<%Z9gtc;@b|Fu%B{P*PBUk&AT@Kj_y2!lU6J@JtAB_$6DNrgC_q zoTpOeMaue}mKJI>jTYmF%FFu$r-N=py-;{aRw~3I{h*2x!ZS1SyREI?hK+g! z1*Hz>Lc(kfHQVC5X=%#tcI%*qH_z*D_kc6jXkyxPbNRPsD6E;Jq{`VWb=A}2+CnRV zoN_{W2rJEmzuUqm-1)CoRb73F+pEXQT$pDsaYUS)oLth<)Agdn0z~SEMnJ9#RAjQAXk9Q ziCzE#o|CuXH^7=$=)yuZ^T0MK{4=0mB)Ncv?rUjrIl!N@*tV(p#>Pg4Fe8M+)QbxJ zWDRI_C|k)*R0d7nr!54Q@|OOsQ3iq*`nCKRy=k!bPEyCrB)@Vf(C~BZ#jLI#Xup|Q zW#0S%bMD;T2JZ<-+yby1>Ij@Z&*M#Yt<6iGPLRnO37U_Y$TNzgQx_FF&R8xR=YR~T zr+?n>g1Y}gYmA@Tb9XQFkd(HN;NEwxP`>W~QQ^o)pRWxo{Co8dV50lu;$ra;VvQdj zN}jH*z5e#QSyAJc=Uz{I{q&??)noXJxt$#{03_A=2coZ$vvp&Eg%iO540Ltj6JSke zwwcw4Od}90($b7?_02aL7#jzvNgKCZk5ezWQ0V1zaOaZ?w7t15_()I|1;XKQE|*2#<_sRim6Vidf=J3wJaa)&JOdN6aTy08ya0S*b8%)7d}Ex#6-i@H8c z9l|60ogGGpKqk9b+nWQC z_L=_txI#7qb(G*)?Ri>B33h60E=So@Hr)H`$Bv53%ws0PhwAUb+dqu{3NlKNQxUu8 z{q8vTW=ptRyxU;UIhM;eICUO4yE7-ZySpE#5!gDrQtF`RnJksO<@pRUBNE+Nk>$3E&Z2WHIWJ_u@MYq3C9#g zuKzf-dYgWJ*Dkx2?sQzxPvDBrR6xQFU}Fkazicu1#$>~amlCa3Q8lL5Q>(hgi!2}) z0~*7noIvPML-Kk(k!7Q!kuMq>OYosRr615adKCYRZTeVjBYCJeA?vd^}64-5vh@0WEl2>)=zTiU}fw zee>iTRRquNm5JD9yPyu$>gzXEhjIGFI-Q%6&)Rr(;_>t>5N^!kh6w`$ekJx;4i%_u z7W|ZQQBYJm;{uYiHV!6yV|n7L%z4$9{3>W1h-}6IV24l!h*Gz= zvm0j)J0y4>=?MarJvqAN0ZMH+0Ka!O#$$Ndl<_4*SKn!-tT8e&mr78}0A(L2p;={T z&zjVMq<`G%uCE+w^uv0ROV2avVXw;xF%aGqBrIqS3vT9q^JhwOC7kkv;Mx5c6sMl) zDxS!hH#cRH!OpN$VB!#hpmI3=>N0#lcHqmz=?@7o~X29uxbo~5nOXR3*s=-^YYqB5X`U&K$A3Q>?UPx`YQ_1H{ zy1+bn_lSaAy=?=5iD}=+n_8L3aL8vtqX7f;E}giZF=hRs-`kEJ&~T^( zp>BUuau4fhst5iRnfuuBf@a1Pz<*hTWO5c{m?^9G#iC?M>vG07B`rc6Z@u}_mX7fz zY`mmT-qnMn4{N~hLxl--Ql)Q1B9WPr4-y55V*~;#@xBxYxEs$bJ(kb=!vDag8iG;{ zuTG9V1WPs+{7>U*>54=9bTn(-xt!(JxWZi^;!EQHJ}&?K?aL=&aeI`bj)J>?=kRB& z^g<5YP|H=xj)v(AL(^$P#N!sSnyh)7anVC)uF8`^@hB*sfspLh6xc|g0O=_L#dJY27u|hGi^chK zwxOhYLZM!~$7#+Yu4fA>E-qdS5|)wMP$MKNHs;AOs7tCQMcoZ5l>=6ueCkt zMFvQ?3qdaRd$m78hMvg~&93EmPsE7h~KtN9qjr|u+#1uo78$b(}_A?TeIQ8V^YbNS3Vz0sDIHp z^MGH1?@TqA?GFfX=6T7)w z-PBzDtWv|{9Irsg@%_l4!9l&4f2+F&2cu%OKX+0`*FP5UaUI5X>3Ygq?(>wC=~LH#`L1GhI3*g}5T)`sQ@K~cqp8XmyZpjy1Xwl1D0c%7cuPO1k*4N#sVjWP+n{7#Pa zAfCc`_aU2OQ!9S&Dk=(5@3{+$h`9WMhi690rX~)6`_I?jS+^@m7T&C@uDLv&cURW< z9LQikKlS*TzOZnMMt23mM8H&{Z4@a~7gU=M@29LVLc3AVagp-E}|DooUF1K1aPIqg>Ne!%Yj9gkTxga$bX z-T(5)-qcU!c@{Z^K+>v(eXZmdk}#Oh+YcX(;HFaX4O+E@F$ie_t<@w^f;QS|NS6Lz%5BtaOoB zx%f*}Pfy`MM4ODN7yaq%?BPt1rMF2zB<-w%-kl5=lSZ!1x62zD%#YTySwP4VwakyB%_U(>q&1!rL4WZTAv|`R6IEWj2SPT()`Qz=k7Q5 ztOA$@OFci8+40FuQq>FbFl2L%r0_jOqH3JX9p}lbtE+bkF4D!E!^KJ(a0CnVw$$`I zZmaVgHz%QS3bJVx$Whw9&_ymkaWq5a>@<%?M{kh;V2s6YYH6;0(V-6x4F%Y4NNENv zS#obHi-umW81Y!jO|iEo0j7Tzh_0QToyOxKbgZPDVVa*?e!w>Zk8G@_VLlMQxi8b) zO&A2=?*nI%$YXtsS*-a*|AozCpsw5;0OeZcv~St+Y&tCLY`7SJ$6IVl7V0DjUYpGa zjO#b}v7(Piw5j)==u`%4HT}81r>ZJ?yuul4mc)1K3^wz#W4S85NmRy5sy;>xNOm1i z6n9;{qoczJkJj7_6p{s||MqmM0h2eU2jR^A7dUW^u2k##`9h}RXSqad3N`9KU?3=B zKUC%C=Pv?ORp$;!RV=+`DxM`1`1KdUgEC96uN<(Hz1b;l!1zEL0@oQ>qw$A>pit*m zyVQubGpDX3o>Xu@d)d$Rs-BRn$LJb0nJ@SO8E12$2o>f^tZFmbyJTatd9%ID0j{?9 zsAZ5GKYEudxD+%@Q-kk+|!fzNxPu4T31%}Uk;#s>|zr}SL zT^xoL-yIy%w9S&)b_krNK(_tJ36!qy87i>7d>|Nrq4xv6>_>=b``sRt?lORnvMQUR zM2#C5J?dm6XbFM#fT9|;(jp~OtbKzGaJhkNR}p`L!j^E{(K)a zj#Ld>p9eI~4hXNN13pzB*5VcbU%VC;7RD@VleVz|sJN=8<}%P7_2Q3?kVy^h?2jv2 zTg$J9>S&ymjUdL5d4g0OtofIn3dRV3v$tB?OR~THJF^43(YY(nZ>*sh>EzI$dp2sB zimslXQgz-Fjc2!Ka0ZK6msgs~LH~=)AduJ9{0n*6m{y>PS_;XA^2TUOPETBQnqn^g zu8m%lzvKk)`e>!QjCHNwd~!>ygv@T)aG-vTgX-8CsWo;ma&nTn#cy}AwvlH>iZuf1 zqbmL|!{_FiycuhmhL#`lKZT0#aXY?A}Q4us3X9F5ulgjsWfyQR#uR zTSp%4!b+r+tx~I-RuQD{C*o9(Tue0}QIJ^yv@y(dBMb2DuT22h?X`l#V6bc)4&pQS z<#hpqjAW(nBrYy23~`sEAX`lU^9^k?#!mtzH|b#XBVG_Ap23&`dq}VlfO5GPb%dm3 zx4hOc)rjUig=c)xn$LH(yk|)b4UJu&pYPgr(M1btWlu^oI37GD8!i^hRRnrvvNMyq zIa+W9ZZ9(k7;80Xj&Ttz0&PfX12!-u%N2B|H4hX>D)1=Vq3p715@*VR@8Dl_FvBEl zr+OH7(F_Rl4gVKk^SI~5qMSXWA{GxZWo8-4%8<%QLa@ zCbnZ}h^42_AfQst##zz?6N_qC^F$LveQ{y$ZyzcR=XxAh;UF1m2RK_whyog++K(#| zMfvGbqCBj4W4S5Hc+b`k=UxJE4jNHFD~Z*neAYWYQhI{a3PTuL43VR+q3nSHV}`hy z^*_FE`>)7a)Me=e)Tp!$^17s?q~44#rXCQqVk>~sbSYjim{Q$~BRha*=5P2-@b7>u z760rT%1o{UXnT*;EK&F`37Kp3c-GbLU$w_V= zw!tL@56uanTj^F|k*LI3>os3b8)6SyRBIzZUr2Uf;L;%gM4CZQ-e!bMFfx}KqFm(> zl#QvVxPY8+*U^mP-dcF*mNs(5rAKnG-O-rz`MIGku^Qt0Q#gam(KRp3Qt{+|uCMp= zSecYqIHVLd(NE~?uonJ3VSzQU^Yp&Ep09Hma*M00C1bG|%tTmNSgb}!*ayA`IyT5@ zvO;~jUY@6r!ZxWRU=Oo7KUNC}*Cz{r(tAL9_VD4nq16QF^Uj`3>$*z+onoN^URRWt zS2V16orbmFMAeHI715v-axIq*n3-|jUES2@ z$I^ET+AEw^OTQskcfbWdv1i!>e(_Nj__ z4NNY9envCM_bx&%aXZ4o9ruFC%?3FZ3&`}h?ZdL~eU17RBz>kpEa&tQsikkxAd(@R zDuVdEM@9Yfj#ZeTV1$q?2%ovDjLp@K4r_>1ZbDms3O0GXj*t<&SWK73E*k?gLD>+S zX~4B$`nuobQZk6*LxZ8yz2CXsRfI z?|!*rH1k>~wkIhi>xNOR1d^JLN`=P0^v6UMh9b(L4Nx1NvHiEV`x_b02 z_CP@YBMb_?c~1j>F48|0uxp9H~rDJ0N4OtciH=%?j|3#bfdXLpOce`wekkT zcg$~pNpkhD4FwzTTSMaQ-a+LH%IB(UF+py>+c_RxJWmH~8H|eb*{}B8#rMb>&SvaI zaq;d5kmV(B6UiihHQ++-Zd#{q<_TZa)SQ_I(Ls{m0n9H10T+=0Em5;CvDnxsV#@b+2Vje=`Ks zuRwm`l@t}ZCxGTj1S!a6zA-|Wbrcd-9}MzG1{~ZVvE6nsAp~?eEggo0ZOPXGE&gRz zRu=k#Q^!hVWaN3!s%yD6U}DUzt*T;1YI%tPKblT^_Nw}W!6K=A#-@AMuFPn#N(F$j zq`32Wd%B9|hz6hpMY{zpa_Z`S!nzZ<#ZFH0!pVF>GS@4UaM{=K(}-9PB!01qr~*>m z>Vsixy=hgyFV@URPtWs$UBdPS7(cH-5K=e6{tpsA-Bd71@9fGZDLJ6WZG)eO?s=BX z=O`q=ajMQcFq2CxR~YB{D7VTpWUcvQ{cLXzD`{Xz<)G+M2IxqG_)j)_+JWrauF`h~ zuLoMKTC2T~OEI&TpwYI9hk6LMzk=>5f`2uchid~lZi^~t^X6Y^jU#IQ1Qxs0an~yT zqUol+=Q!w28XFzcz%sxKSiH06b`5`jAmBGDpm}R-z3TNAH+RWfyM^nt7*^Q6;CSgw zf)5V|SK5u@m)bw2cX#rGD0OKBW?o%6xDBrh?a|(0@wJa9y}&pRzBhn#2Ted0pnH=! z-=9}RD6!jIeT}DMOi9oNm6rw!5P_Qhv)BcbI z4;K~W4LR>Mz)~1z9wFAb69}b5HeZT6_KJ}-*mt2aFW1SfzqCS2V z@ztb{{GuUYuoolpGJH+7A!m1y64{C@z; C%{D;* literal 0 HcmV?d00001 From fc2e6b61c892ae8c1f64613b7c9cd4751c563650 Mon Sep 17 00:00:00 2001 From: liyuqian Date: Tue, 12 Mar 2019 15:27:33 -0700 Subject: [PATCH 1359/1537] Typo "fast an inline" to "fast and inline" (#8142) --- fml/unique_object.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fml/unique_object.h b/fml/unique_object.h index f42603ef80451..407502a0703b8 100644 --- a/fml/unique_object.h +++ b/fml/unique_object.h @@ -14,10 +14,10 @@ namespace fml { // struct UniqueFooTraits { -// // This function should be fast an inline. +// // This function should be fast and inline. // static int InvalidValue() { return 0; } // -// // This function should be fast an inline. +// // This function should be fast and inline. // static bool IsValid(const T& value) { return value != InvalidValue(); } // // // This free function will not be called if f == InvalidValue()! From 31b289f277c653ea91e20d75309958ac0dd0b865 Mon Sep 17 00:00:00 2001 From: Gary Qian Date: Tue, 12 Mar 2019 16:48:47 -0700 Subject: [PATCH 1360/1537] Fix indexing error in dart:ui TextStyle.toString (#8143) --- lib/ui/text.dart | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/lib/ui/text.dart b/lib/ui/text.dart index faa7032121853..899751d4a82cd 100644 --- a/lib/ui/text.dart +++ b/lib/ui/text.dart @@ -485,10 +485,11 @@ class TextStyle { 'decoration: ${ _encoded[0] & 0x00004 == 0x00004 ? new TextDecoration._(_encoded[2]) : "unspecified"}, ' 'decorationColor: ${ _encoded[0] & 0x00008 == 0x00008 ? new Color(_encoded[3]) : "unspecified"}, ' 'decorationStyle: ${ _encoded[0] & 0x00010 == 0x00010 ? TextDecorationStyle.values[_encoded[4]] : "unspecified"}, ' - 'decorationThickness: ${_encoded[0] & 0x00020 == 0x00020 ? _decorationThickness : "unspecified"}, ' - 'fontWeight: ${ _encoded[0] & 0x00040 == 0x00040 ? FontWeight.values[_encoded[5]] : "unspecified"}, ' - 'fontStyle: ${ _encoded[0] & 0x00080 == 0x00080 ? FontStyle.values[_encoded[6]] : "unspecified"}, ' - 'textBaseline: ${ _encoded[0] & 0x00100 == 0x00100 ? TextBaseline.values[_encoded[7]] : "unspecified"}, ' + // The decorationThickness is not in encoded order in order to keep it near the other decoration properties. + 'decorationThickness: ${_encoded[0] & 0x00100 == 0x00100 ? _decorationThickness : "unspecified"}, ' + 'fontWeight: ${ _encoded[0] & 0x00020 == 0x00020 ? FontWeight.values[_encoded[5]] : "unspecified"}, ' + 'fontStyle: ${ _encoded[0] & 0x00040 == 0x00040 ? FontStyle.values[_encoded[6]] : "unspecified"}, ' + 'textBaseline: ${ _encoded[0] & 0x00080 == 0x00080 ? TextBaseline.values[_encoded[7]] : "unspecified"}, ' 'fontFamily: ${ _encoded[0] & 0x00200 == 0x00200 && _fontFamily != null ? _fontFamily : "unspecified"}, ' 'fontFamilyFallback: ${ _encoded[0] & 0x00200 == 0x00200 From 59715b71db8e3d9d9c3ca47db6555a7a6789c180 Mon Sep 17 00:00:00 2001 From: Chinmay Garde Date: Tue, 12 Mar 2019 18:32:19 -0700 Subject: [PATCH 1361/1537] Disable build_ios task due to lack of credits. (#8150) --- .cirrus.yml | 33 --------------------------------- 1 file changed, 33 deletions(-) diff --git a/.cirrus.yml b/.cirrus.yml index 2492afbd0fbf4..cc6796b3faf69 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -60,39 +60,6 @@ task: mkdir javadoc_tmp ./flutter/tools/gen_javadoc.py --out-dir javadoc_tmp -task: - name: build_ios - use_compute_credits: $CIRRUS_USER_COLLABORATOR == 'true' - osx_instance: - image: high-sierra-xcode-9.4.1 - env: - CIRRUS_WORKING_DIR: "/tmp/github_repo" - ENGINE_PATH: "/tmp/engine" - DEPOT_TOOLS: "/tmp/depot_tools" - PATH: "$DEPOT_TOOLS:$PATH" - depot_tools_script: - git clone --depth 1 https://chromium.googlesource.com/chromium/tools/depot_tools.git $DEPOT_TOOLS - # jazzy_script: - # sudo gem install jazzy@0.9.4 - gclient_sync_script: | - mkdir -p $ENGINE_PATH/src - echo 'solutions = [{"managed": False,"name": "src/flutter","url": "git@github.com:flutter/engine.git","deps_file": "DEPS", "custom_vars": {"download_android_deps" : False, "download_windows_deps" : False,},},]' > $ENGINE_PATH/.gclient - cd $ENGINE_PATH/src - rm -rf flutter - rm -rf out - mv $CIRRUS_WORKING_DIR flutter - gclient sync - compile_host_script: | - cd $ENGINE_PATH/src - ./flutter/tools/gn --ios --unoptimized - ninja -C out/ios_debug_unopt - # TODO(dnfield): when we can install jazzy properly, we should do this. - # AFAICT we can't because of Xcode version. - # mkdir objcdoc_tmp - # pushd flutter - # ./tools/gen_objcdoc.sh ../objcdoc_tmp - # popd - format_and_dart_test_task: container: image: gcr.io/flutter-cirrus/build-engine-image:latest From 9f50dae33fdf296aaddc91432a2207da9def853e Mon Sep 17 00:00:00 2001 From: Jason Simmons Date: Tue, 12 Mar 2019 18:33:33 -0700 Subject: [PATCH 1362/1537] Look up ICU symbols based on the path to libflutter.so as a fallback (#8139) The ICU data is packaged within libflutter.so, and the engine uses dlsym(RTLD_DEFAULT) to look up the ICU data symbols in the libraries loaded by the process. This approach apparently fails on some Xiaomi devices. If RTLD_DEFAULT can not find the symbols, then the platform will pass the path to the libflutter.so library so the engine can use that to resolve the symbols. Fixes https://github.com/flutter/flutter/issues/28208 --- shell/common/switches.cc | 36 ++++++++++++++----- shell/common/switches.h | 3 ++ .../android/io/flutter/view/FlutterMain.java | 6 ++++ 3 files changed, 36 insertions(+), 9 deletions(-) diff --git a/shell/common/switches.cc b/shell/common/switches.cc index 0ef45a944a644..997cd846ec613 100644 --- a/shell/common/switches.cc +++ b/shell/common/switches.cc @@ -123,13 +123,29 @@ static bool GetSwitchValue(const fml::CommandLine& command_line, return false; } -std::unique_ptr GetSymbolMapping(std::string symbol_prefix) { - fml::RefPtr proc_library = +std::unique_ptr GetSymbolMapping(std::string symbol_prefix, + std::string native_lib_path) { + const uint8_t* mapping; + intptr_t size; + + auto lookup_symbol = [&mapping, &size, symbol_prefix]( + const fml::RefPtr& library) { + mapping = library->ResolveSymbol((symbol_prefix + "_start").c_str()); + size = reinterpret_cast( + library->ResolveSymbol((symbol_prefix + "_size").c_str())); + }; + + fml::RefPtr library = fml::NativeLibrary::CreateForCurrentProcess(); - const uint8_t* mapping = - proc_library->ResolveSymbol((symbol_prefix + "_start").c_str()); - const intptr_t size = reinterpret_cast( - proc_library->ResolveSymbol((symbol_prefix + "_size").c_str())); + lookup_symbol(library); + + if (!(mapping && size)) { + // Symbol lookup for the current process fails on some devices. As a + // fallback, try doing the lookup based on the path to the Flutter library. + library = fml::NativeLibrary::Create(native_lib_path.c_str()); + lookup_symbol(library); + } + FML_CHECK(mapping && size) << "Unable to resolve symbols: " << symbol_prefix; return std::make_unique(mapping, size); } @@ -228,11 +244,13 @@ blink::Settings SettingsFromCommandLine(const fml::CommandLine& command_line) { command_line.GetOptionValue(FlagForSwitch(Switch::ICUDataFilePath), &settings.icu_data_path); if (command_line.HasOption(FlagForSwitch(Switch::ICUSymbolPrefix))) { - std::string icu_symbol_prefix; + std::string icu_symbol_prefix, native_lib_path; command_line.GetOptionValue(FlagForSwitch(Switch::ICUSymbolPrefix), &icu_symbol_prefix); - settings.icu_mapper = [icu_symbol_prefix] { - return GetSymbolMapping(icu_symbol_prefix); + command_line.GetOptionValue(FlagForSwitch(Switch::ICUNativeLibPath), + &native_lib_path); + settings.icu_mapper = [icu_symbol_prefix, native_lib_path] { + return GetSymbolMapping(icu_symbol_prefix, native_lib_path); }; } } diff --git a/shell/common/switches.h b/shell/common/switches.h index c20589dea6226..a5da872d6d1c9 100644 --- a/shell/common/switches.h +++ b/shell/common/switches.h @@ -52,6 +52,9 @@ DEF_SWITCH(ICUSymbolPrefix, "icu-symbol-prefix", "Prefix for the symbols representing ICU data linked into the " "Flutter library.") +DEF_SWITCH(ICUNativeLibPath, + "icu-native-lib-path", + "Path to the library file that exports the ICU data.") DEF_SWITCH(DartFlags, "dart-flags", "Flags passed directly to the Dart VM without being interpreted " diff --git a/shell/platform/android/io/flutter/view/FlutterMain.java b/shell/platform/android/io/flutter/view/FlutterMain.java index ae712708573cc..c632dca387ced 100644 --- a/shell/platform/android/io/flutter/view/FlutterMain.java +++ b/shell/platform/android/io/flutter/view/FlutterMain.java @@ -6,6 +6,7 @@ import android.content.Context; import android.content.Intent; +import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.content.res.AssetManager; import android.app.AlarmManager; @@ -195,7 +196,12 @@ public static void ensureInitializationComplete(Context applicationContext, Stri sResourceExtractor.waitForCompletion(); List shellArgs = new ArrayList<>(); + shellArgs.add("--icu-symbol-prefix=_binary_icudtl_dat"); + ApplicationInfo applicationInfo = applicationContext.getPackageManager().getApplicationInfo( + applicationContext.getPackageName(), PackageManager.GET_META_DATA); + shellArgs.add("--icu-native-lib-path=" + applicationInfo.nativeLibraryDir + File.separator + DEFAULT_LIBRARY); + if (args != null) { Collections.addAll(shellArgs, args); } From 8b1a299ed52d4ef9521ccd65c6c52d563129d8af Mon Sep 17 00:00:00 2001 From: Will Larche Date: Wed, 13 Mar 2019 08:56:11 -0400 Subject: [PATCH 1363/1537] [Skia] Rollback Skia to 29d5dec9a0783a033b921dc483fb98d565d684f6 (#8151) * [Skia] Rollback skia to 29d5dec9a0783a033b921dc483fb98d565d684f6 * [Skia] Rollback Skia License to 0dd2b3de568e29ad48747dd78b7125d9 --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 1988f3f21b8a7..51f4e6284ad5a 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '2eecc3ea3d71613463fe2816c3852e1f6c99105b', + 'skia_revision': '29d5dec9a0783a033b921dc483fb98d565d684f6', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 4a14a592da226..1070233d9ad34 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: c96897f617fbf476f372b7b6c0239d6a +Signature: 0dd2b3de568e29ad48747dd78b7125d9 UNUSED LICENSES: From 8be2aca5670d1fa3beb980f46a3da5f9199a28b1 Mon Sep 17 00:00:00 2001 From: Siva Date: Wed, 13 Mar 2019 09:23:57 -0700 Subject: [PATCH 1364/1537] Roll src/third_party/dart 1bd36d694d..674fd0e060 (48 commits) #8152 674fd0e060 [vm runtime] Dynamically disable dual mapping of code on some platforms 0bd674c374 [VM-Runtime] set environment when creating detached process 578fdb0408 Call becomeMap/becomeSet() in AstCloner. 382cd59388 Update completion target tests for new map syntax 1db664764a Revert "Copy abi dills in create_sdk build rule" a39833d957 Reland "Reland "[VM runtime] Dual mapping of executable pages."" 49a0502f49 Copy abi dills in create_sdk build rule 23eb57c2bf Revert "[vm/ffi] Support Windows 64 bit" 22c2c7ffd8 Sort declarations in build_mode.dart e2b5559c77 [infra] Use gclient.py to apply patches to bypass update_depot_tools f4b524cdf1 [vm] Extract reading of parameter covariance attributes 16e40cef2f Generate a diagnostic when a set or map literal is ambiguous b89d08355b [infra] Only move coredump files on shards 7f812dea1a [vm/ffi] Support Windows 64 bit 469da726d6 [vm] Put covariance attributes into Field flags 09087490e2 update hasFix lookup table bb7b5fcd37 add missing fix tests 48a5c3825a assist to convert to absolute imports b3927f66df [gardening] Mark tests that crash as crashing 2d6ddf2aff Remove unnecessary override from PartialResolverVisitor ba3b9b3b65 Sort static_type_analyzer_test.dart 1edc6d4b4d [infra] Fix approve_results not erroring properly if tryjobs lack results. 1a196d43a7 [VM/AOT] Execute catch-entry moves in parallel (our AOT doesn't generate non-cyclic moves) 6a2aa920cd Support pragma annotations through ir constants d3d077090d [VM/FrontendServer] Add 3head patch to frontend server after breaking API changes 016e3172d1 Default parameters, more metadata, import dart:core. 853d38896e [VM/AOT] Fixes incorrect deserialization of catch entry moves 3cf7d6a9c7 [tests] Changing expected cast errors to type errors for collections tests b87c44d6b3 Generate diagnostic for non-bool conditions in if elements 74395d940f Comment out test_import_short_absolute that fails on Windows. 7c1544898d [vm] Decouple flow graph building of implicit getters and setters from kernel reading 57f4da318c [vm, gc] The mutator's TLAB and the interpreter's lookup cache must be visited even if the mutator is unscheduled. 15842d4583 Build more import scopes, support for enums. f2029f54cd Fix type inference of map/set literals when the context is a type parameter. 11b9481403 [vm/frontend] Fix frontend_server_test on Windows. bfb30bffe0 Fix a bug in the ConstantVerifier so that conditional elements are lazily verified ed1f956991 Fix the abi dills download script 8f03ae05ff [infra] Add --list-configurations option to test.dart. 9faca2fa68 [vm] Document lifetime requirements of arguments to Dart_TimelineEvent. 295ea59385 [vm] Give functions compiled through Dart_LoadCompilationTrace a non-zero usage counter. def0b21225 [infra] Fix test.dart saying untested configurations don't exist. abd1854176 Fix recording of map/literal context type. a8b3461f2e New summaries work snapshot. 9e7627b6a1 Re-land "Eliminate uses of old AST node types from pkg/analyzer/lib/src/summary" 210361ae63 Move IgnoreInfo out of the task model code base 440b4cd84e Insert implicit casts when setting interface targets 567d552de8 [infra] Add versionchecker and debianpackage to test matrix 576c4c71d9 [CFE] Always clone subexpressions of unevaluated constants. --- DEPS | 2 +- ci/licenses_golden/licenses_third_party | 3 ++- frontend_server/lib/server.dart | 4 ++-- sky/packages/sky_engine/LICENSE | 1 + 4 files changed, 6 insertions(+), 4 deletions(-) diff --git a/DEPS b/DEPS index 51f4e6284ad5a..95381d48b4bd2 100644 --- a/DEPS +++ b/DEPS @@ -31,7 +31,7 @@ vars = { # Dart is: https://github.com/dart-lang/sdk/blob/master/DEPS. # You can use //tools/dart/create_updated_flutter_deps.py to produce # updated revision list of existing dependencies. - 'dart_revision': '674fd0e060a33deeedbc2f8fae7c32c7e3f0d8d5', + 'dart_revision': '1bd36d694dba00d92651fcd2340e91d5a74efb03', # WARNING: DO NOT EDIT MANUALLY # The lines between blank lines above and below are generated by a script. See create_updated_flutter_deps.py diff --git a/ci/licenses_golden/licenses_third_party b/ci/licenses_golden/licenses_third_party index 810f926095112..f6dcc6e5e6553 100644 --- a/ci/licenses_golden/licenses_third_party +++ b/ci/licenses_golden/licenses_third_party @@ -1,4 +1,4 @@ -Signature: 61c85403b45c4241c745ac885c7da2ce +Signature: b7183327d115ae031ff3f9997d96a04e UNUSED LICENSES: @@ -5708,6 +5708,7 @@ FILE: ../../../third_party/dart/runtime/lib/ffi_native_type_patch.dart FILE: ../../../third_party/dart/runtime/lib/ffi_patch.dart FILE: ../../../third_party/dart/runtime/tools/graphexplorer/graphexplorer.html FILE: ../../../third_party/dart/runtime/tools/graphexplorer/graphexplorer.js +FILE: ../../../third_party/dart/runtime/vm/catch_entry_moves_test.cc FILE: ../../../third_party/dart/runtime/vm/class_id.h FILE: ../../../third_party/dart/runtime/vm/code_entry_kind.h FILE: ../../../third_party/dart/runtime/vm/compiler/asm_intrinsifier.cc diff --git a/frontend_server/lib/server.dart b/frontend_server/lib/server.dart index 5d84d2dcf95ba..e82b855e6c728 100644 --- a/frontend_server/lib/server.dart +++ b/frontend_server/lib/server.dart @@ -32,8 +32,8 @@ class _FlutterFrontendCompiler implements frontend.CompilerInterface{ } @override - Future recompileDelta({String filename}) async { - return _compiler.recompileDelta(filename: filename); + Future recompileDelta({String entryPoint}) async { + return _compiler.recompileDelta(entryPoint: entryPoint); } @override diff --git a/sky/packages/sky_engine/LICENSE b/sky/packages/sky_engine/LICENSE index 9359d43fa29a6..658e1e8c7cd99 100644 --- a/sky/packages/sky_engine/LICENSE +++ b/sky/packages/sky_engine/LICENSE @@ -2808,6 +2808,7 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- boringssl +engine etc1 observatory_pub_packages skia From 2e427030f616172195297c0c26586f9d85166422 Mon Sep 17 00:00:00 2001 From: "Ray Rischpater, KF6GPE" Date: Wed, 13 Mar 2019 10:19:54 -0700 Subject: [PATCH 1365/1537] Revert "Disable build_ios task due to lack of credits. (#8150)" (#8153) This reverts commit 59715b71db8e3d9d9c3ca47db6555a7a6789c180. --- .cirrus.yml | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/.cirrus.yml b/.cirrus.yml index cc6796b3faf69..2492afbd0fbf4 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -60,6 +60,39 @@ task: mkdir javadoc_tmp ./flutter/tools/gen_javadoc.py --out-dir javadoc_tmp +task: + name: build_ios + use_compute_credits: $CIRRUS_USER_COLLABORATOR == 'true' + osx_instance: + image: high-sierra-xcode-9.4.1 + env: + CIRRUS_WORKING_DIR: "/tmp/github_repo" + ENGINE_PATH: "/tmp/engine" + DEPOT_TOOLS: "/tmp/depot_tools" + PATH: "$DEPOT_TOOLS:$PATH" + depot_tools_script: + git clone --depth 1 https://chromium.googlesource.com/chromium/tools/depot_tools.git $DEPOT_TOOLS + # jazzy_script: + # sudo gem install jazzy@0.9.4 + gclient_sync_script: | + mkdir -p $ENGINE_PATH/src + echo 'solutions = [{"managed": False,"name": "src/flutter","url": "git@github.com:flutter/engine.git","deps_file": "DEPS", "custom_vars": {"download_android_deps" : False, "download_windows_deps" : False,},},]' > $ENGINE_PATH/.gclient + cd $ENGINE_PATH/src + rm -rf flutter + rm -rf out + mv $CIRRUS_WORKING_DIR flutter + gclient sync + compile_host_script: | + cd $ENGINE_PATH/src + ./flutter/tools/gn --ios --unoptimized + ninja -C out/ios_debug_unopt + # TODO(dnfield): when we can install jazzy properly, we should do this. + # AFAICT we can't because of Xcode version. + # mkdir objcdoc_tmp + # pushd flutter + # ./tools/gen_objcdoc.sh ../objcdoc_tmp + # popd + format_and_dart_test_task: container: image: gcr.io/flutter-cirrus/build-engine-image:latest From 2daebebf4b8fab696b99cba2631492ff805ff7bb Mon Sep 17 00:00:00 2001 From: Gary Qian Date: Wed, 13 Mar 2019 11:13:53 -0700 Subject: [PATCH 1366/1537] Fix text.dart height docs (#8079) --- lib/stub_ui/text.dart | 38 +++++++++++++++++--------------------- lib/ui/text.dart | 38 +++++++++++++++++--------------------- 2 files changed, 34 insertions(+), 42 deletions(-) diff --git a/lib/stub_ui/text.dart b/lib/stub_ui/text.dart index e523490d18603..dd07b232980ca 100644 --- a/lib/stub_ui/text.dart +++ b/lib/stub_ui/text.dart @@ -375,7 +375,7 @@ class TextStyle { /// * `letterSpacing`: The amount of space (in logical pixels) to add between each letter. /// * `wordSpacing`: The amount of space (in logical pixels) to add at each sequence of white-space (i.e. between each word). /// * `textBaseline`: The common baseline that should be aligned between this text span and its parent text span, or, for the root text spans, with the line box. - /// * `height`: The height of this text span, as a multiple of the font size. + /// * `height`: The height of this text span, as a multiplier of the font size. /// * `locale`: The locale used to select region-specific glyphs. /// * `background`: The paint drawn as a background for the text. /// * `foreground`: The paint used to draw the text. If this is specified, `color` must be null. @@ -609,19 +609,15 @@ class ParagraphStyle { /// dropped. The width constraints are those set in the /// [ParagraphConstraints] object passed to the [Paragraph.layout] method. /// - /// * `fontFamily`: The name of the font to use when painting the text (e.g., - /// Roboto). + /// * `fontFamily`: The fallback name of the font to use when painting the text + /// (e.g., Roboto). This is used when there is no [TextStyle]. /// - /// * `fontSize`: The size of glyphs (in logical pixels) to use when painting - /// the text. + /// * `fontSize`: The fallback size of glyphs (in logical pixels) to + /// use when painting the text. This is used when there is no [TextStyle]. /// - /// * `height`: The minimum height of the line boxes, as a multiple of the - /// font size. The lines of the paragraph will be at least - /// `(height + leading) * fontSize` tall when fontSize - /// is not null. When fontSize is null, there is no minimum line height. Tall - /// glyphs due to baseline alignment or large [TextStyle.fontSize] may cause - /// the actual line height after layout to be taller than specified here. - /// [fontSize] must be provided for this property to take effect. + /// * `height`: The height of the spans as a multiplier of the font size. The + /// fallback height to use when no height is provided in through + /// [TextStyle.height]. /// /// * `fontWeight`: The typeface thickness to use when painting the text /// (e.g., bold). @@ -807,13 +803,13 @@ class StrutStyle { /// * `fontSize`: The size of glyphs (in logical pixels) to use when painting /// the text. /// - /// * `lineHeight`: The minimum height of the line boxes, as a multiple of the - /// font size. The lines of the paragraph will be at least - /// `(lineHeight + leading) * fontSize` tall when fontSize - /// is not null. When fontSize is null, there is no minimum line height. Tall - /// glyphs due to baseline alignment or large [TextStyle.fontSize] may cause - /// the actual line height after layout to be taller than specified here. - /// [fontSize] must be provided for this property to take effect. + /// * `height`: The minimum height of the line boxes, as a multiplier of the + /// font size. The lines of the paragraph will be at least `(height + leading) + /// * fontSize` tall when fontSize is not null. When fontSize is null, there + /// is no minimum line height. Tall glyphs due to baseline alignment or large + /// [TextStyle.fontSize] may cause the actual line height after layout to be + /// taller than specified here. [fontSize] must be provided for this property + /// to take effect. /// /// * `leading`: The minimum amount of leading between lines as a multiple of /// the font size. [fontSize] must be provided for this property to take effect. @@ -825,11 +821,11 @@ class StrutStyle { /// italics). /// /// * `forceStrutHeight`: When true, the paragraph will force all lines to be exactly - /// `(lineHeight + leading) * fontSize` tall from baseline to baseline. + /// `(height + leading) * fontSize` tall from baseline to baseline. /// [TextStyle] is no longer able to influence the line height, and any tall /// glyphs may overlap with lines above. If a [fontFamily] is specified, the /// total ascent of the first line will be the min of the `Ascent + half-leading` - /// of the [fontFamily] and `(lineHeight + leading) * fontSize`. Otherwise, it + /// of the [fontFamily] and `(height + leading) * fontSize`. Otherwise, it /// will be determined by the Ascent + half-leading of the first text. StrutStyle({ String fontFamily, diff --git a/lib/ui/text.dart b/lib/ui/text.dart index 899751d4a82cd..312b917573d89 100644 --- a/lib/ui/text.dart +++ b/lib/ui/text.dart @@ -375,7 +375,7 @@ class TextStyle { /// * `letterSpacing`: The amount of space (in logical pixels) to add between each letter. /// * `wordSpacing`: The amount of space (in logical pixels) to add at each sequence of white-space (i.e. between each word). /// * `textBaseline`: The common baseline that should be aligned between this text span and its parent text span, or, for the root text spans, with the line box. - /// * `height`: The height of this text span, as a multiple of the font size. + /// * `height`: The height of this text span, as a multiplier of the font size. /// * `locale`: The locale used to select region-specific glyphs. /// * `background`: The paint drawn as a background for the text. /// * `foreground`: The paint used to draw the text. If this is specified, `color` must be null. @@ -610,19 +610,15 @@ class ParagraphStyle { /// dropped. The width constraints are those set in the /// [ParagraphConstraints] object passed to the [Paragraph.layout] method. /// - /// * `fontFamily`: The name of the font to use when painting the text (e.g., - /// Roboto). + /// * `fontFamily`: The name of the font family to apply when painting the text, + /// in the absence of a `textStyle` being attached to the span. /// - /// * `fontSize`: The size of glyphs (in logical pixels) to use when painting - /// the text. + /// * `fontSize`: The fallback size of glyphs (in logical pixels) to + /// use when painting the text. This is used when there is no [TextStyle]. /// - /// * `height`: The minimum height of the line boxes, as a multiple of the - /// font size. The lines of the paragraph will be at least - /// `(height + leading) * fontSize` tall when fontSize - /// is not null. When fontSize is null, there is no minimum line height. Tall - /// glyphs due to baseline alignment or large [TextStyle.fontSize] may cause - /// the actual line height after layout to be taller than specified here. - /// [fontSize] must be provided for this property to take effect. + /// * `height`: The height of the spans as a multiplier of the font size. The + /// fallback height to use when no height is provided in through + /// [TextStyle.height]. /// /// * `fontWeight`: The typeface thickness to use when painting the text /// (e.g., bold). @@ -808,13 +804,13 @@ class StrutStyle { /// * `fontSize`: The size of glyphs (in logical pixels) to use when painting /// the text. /// - /// * `lineHeight`: The minimum height of the line boxes, as a multiple of the - /// font size. The lines of the paragraph will be at least - /// `(lineHeight + leading) * fontSize` tall when fontSize - /// is not null. When fontSize is null, there is no minimum line height. Tall - /// glyphs due to baseline alignment or large [TextStyle.fontSize] may cause - /// the actual line height after layout to be taller than specified here. - /// [fontSize] must be provided for this property to take effect. + /// * `height`: The minimum height of the line boxes, as a multiplier of the + /// font size. The lines of the paragraph will be at least `(height + leading) + /// * fontSize` tall when fontSize is not null. When fontSize is null, there + /// is no minimum line height. Tall glyphs due to baseline alignment or large + /// [TextStyle.fontSize] may cause the actual line height after layout to be + /// taller than specified here. [fontSize] must be provided for this property + /// to take effect. /// /// * `leading`: The minimum amount of leading between lines as a multiple of /// the font size. [fontSize] must be provided for this property to take effect. @@ -826,11 +822,11 @@ class StrutStyle { /// italics). /// /// * `forceStrutHeight`: When true, the paragraph will force all lines to be exactly - /// `(lineHeight + leading) * fontSize` tall from baseline to baseline. + /// `(height + leading) * fontSize` tall from baseline to baseline. /// [TextStyle] is no longer able to influence the line height, and any tall /// glyphs may overlap with lines above. If a [fontFamily] is specified, the /// total ascent of the first line will be the min of the `Ascent + half-leading` - /// of the [fontFamily] and `(lineHeight + leading) * fontSize`. Otherwise, it + /// of the [fontFamily] and `(height + leading) * fontSize`. Otherwise, it /// will be determined by the Ascent + half-leading of the first text. StrutStyle({ String fontFamily, From b1b388f1c2356a865240e706acdb37af982991ad Mon Sep 17 00:00:00 2001 From: Jason Simmons Date: Wed, 13 Mar 2019 11:30:42 -0700 Subject: [PATCH 1367/1537] Encode scroll motion events in the Android touch processor (#8149) --- .../engine/android/AndroidTouchProcessor.java | 20 +++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/shell/platform/android/io/flutter/embedding/engine/android/AndroidTouchProcessor.java b/shell/platform/android/io/flutter/embedding/engine/android/AndroidTouchProcessor.java index f26cc3e2bc84f..8598b8a8df772 100644 --- a/shell/platform/android/io/flutter/embedding/engine/android/AndroidTouchProcessor.java +++ b/shell/platform/android/io/flutter/embedding/engine/android/AndroidTouchProcessor.java @@ -150,7 +150,9 @@ public boolean onGenericMotionEvent(MotionEvent event) { // Mouse hover support is not implemented for API < 18. boolean isPointerEvent = Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2 && event.isFromSource(InputDevice.SOURCE_CLASS_POINTER); - if (!isPointerEvent || event.getActionMasked() != MotionEvent.ACTION_HOVER_MOVE) { + boolean isMovementEvent = (event.getActionMasked() == MotionEvent.ACTION_HOVER_MOVE + || event.getActionMasked() == MotionEvent.ACTION_SCROLL); + if (!isPointerEvent || !isMovementEvent) { return false; } @@ -181,7 +183,9 @@ private void addPointerForIndex( int pointerKind = getPointerDeviceTypeForToolType(event.getToolType(pointerIndex)); - int signalKind = PointerSignalKind.NONE; + int signalKind = event.getActionMasked() == MotionEvent.ACTION_SCROLL + ? PointerSignalKind.SCROLL + : PointerSignalKind.NONE; long timeStamp = event.getEventTime() * 1000; // Convert from milliseconds to microseconds. @@ -242,8 +246,13 @@ private void addPointerForIndex( packet.putLong(pointerData); // platformData - packet.putDouble(0.0); // scroll_delta_x - packet.putDouble(0.0); // scroll_delta_y + if (signalKind == PointerSignalKind.SCROLL) { + packet.putDouble(-event.getAxisValue(MotionEvent.AXIS_HSCROLL)); // scroll_delta_x + packet.putDouble(-event.getAxisValue(MotionEvent.AXIS_VSCROLL)); // scroll_delta_y + } else { + packet.putDouble(0.0); // scroll_delta_x + packet.putDouble(0.0); // scroll_delta_x + } } @PointerChange @@ -269,6 +278,9 @@ private int getPointerChangeForAction(int maskedAction) { if (maskedAction == MotionEvent.ACTION_CANCEL) { return PointerChange.CANCEL; } + if (maskedAction == MotionEvent.ACTION_SCROLL) { + return PointerChange.HOVER; + } return -1; } From 3c93817839bd557a045b17322b797fb4772c18f4 Mon Sep 17 00:00:00 2001 From: Chinmay Garde Date: Wed, 13 Mar 2019 12:54:57 -0700 Subject: [PATCH 1368/1537] =?UTF-8?q?Add=20=E2=80=9Cfull-dart-debug?= =?UTF-8?q?=E2=80=9D=20that=20disabled=20optimizations=20in=20the=20Dart?= =?UTF-8?q?=20VM.=20(#8147)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tools/gn | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/tools/gn b/tools/gn index ee784e5300d33..16bdcf034b040 100755 --- a/tools/gn +++ b/tools/gn @@ -139,6 +139,10 @@ def to_gn_args(args): if args.dart_debug: gn_args['dart_debug'] = True + if args.full_dart_debug: + gn_args['dart_debug'] = True + gn_args['dart_debug_optimization_level'] = '0' + if args.target_os == 'android': gn_args['target_cpu'] = args.android_cpu elif args.target_os == 'ios': @@ -247,7 +251,10 @@ def parse_args(args): parser.add_argument('--runtime-mode', type=str, choices=['debug', 'profile', 'release'], default='debug') parser.add_argument('--dynamic', default=False, action='store_true') parser.add_argument('--interpreter', default=False, action='store_true') - parser.add_argument('--dart-debug', default=False, action='store_true') + parser.add_argument('--dart-debug', default=False, action='store_true', help='Enables assertsion in the Dart VM. ' + + 'Does not affect affect optimization levels. If you need to disable optimizations in Dart, use --full-dart-debug') + parser.add_argument('--full-dart-debug', default=False, action='store_true', help='Implies --dart-debug ' + + 'and also disables optimizations in the Dart VM making it easier to step through VM code in the debugger.') parser.add_argument('--target-os', type=str, choices=['android', 'ios', 'linux']) parser.add_argument('--android', dest='target_os', action='store_const', const='android') From 906d684a7765cfe37b0edcdd167d3e319c7a22d4 Mon Sep 17 00:00:00 2001 From: Chinmay Garde Date: Wed, 13 Mar 2019 13:53:22 -0700 Subject: [PATCH 1369/1537] Reland ""Add support for trace counters with variable arguments and instrument the raster cache." (#8145) This reverts commit bc901324faf5a24f9220cc7ecbcf5b97b96ae09f and fixes the discovered on Windows builds. --- flow/raster_cache.cc | 35 +++++++++++++++++++++-- flow/raster_cache.h | 7 +++++ fml/trace_event.cc | 38 +++++++++++++++++-------- fml/trace_event.h | 68 ++++++++++++++++++++++++++++++++++++++++---- tools/gn | 2 -- 5 files changed, 129 insertions(+), 21 deletions(-) diff --git a/flow/raster_cache.cc b/flow/raster_cache.cc index 1927321a03238..9f10e47de250c 100644 --- a/flow/raster_cache.cc +++ b/flow/raster_cache.cc @@ -97,6 +97,7 @@ static RasterCacheResult Rasterize( bool checkerboard, const SkRect& logical_rect, std::function draw_function) { + TRACE_EVENT0("flutter", "RasterCachePopulate"); SkIRect cache_rect = RasterCache::GetDeviceBounds(logical_rect, ctm); const SkImageInfo image_info = SkImageInfo::MakeN32Premul( @@ -129,8 +130,6 @@ RasterCacheResult RasterizePicture(SkPicture* picture, const SkMatrix& ctm, SkColorSpace* dst_color_space, bool checkerboard) { - TRACE_EVENT0("flutter", "RasterCachePopulate"); - return Rasterize(context, ctm, dst_color_space, checkerboard, picture->cullRect(), [=](SkCanvas* canvas) { canvas->drawPicture(picture); }); @@ -240,6 +239,7 @@ void RasterCache::SweepAfterFrame() { SweepOneCacheAfterFrame(picture_cache_); SweepOneCacheAfterFrame(layer_cache_); picture_cached_this_frame_ = 0; + TraceStatsToTimeline(); } void RasterCache::Clear() { @@ -259,4 +259,35 @@ void RasterCache::SetCheckboardCacheImages(bool checkerboard) { Clear(); } +void RasterCache::TraceStatsToTimeline() const { +#if FLUTTER_RUNTIME_MODE != FLUTTER_RUNTIME_MODE_RELEASE + + size_t layer_cache_count = 0; + size_t layer_cache_bytes = 0; + size_t picture_cache_count = 0; + size_t picture_cache_bytes = 0; + + for (const auto& item : layer_cache_) { + const auto dimensions = item.second.image.image_dimensions(); + layer_cache_count++; + layer_cache_bytes += dimensions.width() * dimensions.height() * 4; + } + + for (const auto& item : picture_cache_) { + const auto dimensions = item.second.image.image_dimensions(); + picture_cache_count++; + picture_cache_bytes += dimensions.width() * dimensions.height() * 4; + } + + FML_TRACE_COUNTER("flutter", "RasterCache", + reinterpret_cast(this), // + "LayerCount", layer_cache_count, // + "LayerMBytes", layer_cache_bytes * 1e-6, // + "PictureCount", picture_cache_count, // + "PictureMBytes", picture_cache_bytes * 1e-6 // + ); + +#endif // FLUTTER_RUNTIME_MODE != FLUTTER_RUNTIME_MODE_RELEASE +} + } // namespace flow diff --git a/flow/raster_cache.h b/flow/raster_cache.h index 74ce010b07c8c..f0382c9c92872 100644 --- a/flow/raster_cache.h +++ b/flow/raster_cache.h @@ -33,6 +33,10 @@ class RasterCacheResult { void draw(SkCanvas& canvas, const SkPaint* paint = nullptr) const; + SkISize image_dimensions() const { + return image_ ? image_->dimensions() : SkISize::Make(0, 0); + }; + private: sk_sp image_; SkRect logical_rect_; @@ -87,6 +91,7 @@ class RasterCache { void Prepare(PrerollContext* context, Layer* layer, const SkMatrix& ctm); RasterCacheResult Get(const SkPicture& picture, const SkMatrix& ctm) const; + RasterCacheResult Get(Layer* layer, const SkMatrix& ctm) const; void SweepAfterFrame(); @@ -127,6 +132,8 @@ class RasterCache { bool checkerboard_images_; fml::WeakPtrFactory weak_factory_; + void TraceStatsToTimeline() const; + FML_DISALLOW_COPY_AND_ASSIGN(RasterCache); }; diff --git a/fml/trace_event.cc b/fml/trace_event.cc index 69ed8b2216486..fc0ee72f4021b 100644 --- a/fml/trace_event.cc +++ b/fml/trace_event.cc @@ -4,22 +4,36 @@ #include "flutter/fml/trace_event.h" -#include "third_party/dart/runtime/include/dart_tools_api.h" +#include + +#include "flutter/fml/logging.h" namespace fml { namespace tracing { -void TraceCounter(TraceArg category_group, TraceArg name, TraceIDArg count) { - auto count_string = std::to_string(count); - const char* arg_names[] = {name}; - const char* arg_values[] = {count_string.c_str()}; - Dart_TimelineEvent(name, // label - Dart_TimelineGetMicros(), // timestamp0 - 0, // timestamp1_or_async_id - Dart_Timeline_Event_Counter, // event type - 1, // argument_count - arg_names, // argument_names - arg_values // argument_values +void TraceTimelineEvent(TraceArg category_group, + TraceArg name, + TraceIDArg identifier, + Dart_Timeline_Event_Type type, + const std::vector& c_names, + const std::vector& values) { + const auto argument_count = std::min(c_names.size(), values.size()); + + std::vector c_values; + c_values.resize(argument_count, nullptr); + + for (size_t i = 0; i < argument_count; i++) { + c_values[i] = values[i].c_str(); + } + + Dart_TimelineEvent( + name, // label + Dart_TimelineGetMicros(), // timestamp0 + identifier, // timestamp1_or_async_id + type, // event type + argument_count, // argument_count + const_cast(c_names.data()), // argument_names + c_values.data() // argument_values ); } diff --git a/fml/trace_event.h b/fml/trace_event.h index b3bba9b281f61..b8063aca3a2df 100644 --- a/fml/trace_event.h +++ b/fml/trace_event.h @@ -13,8 +13,6 @@ #include -#define FML_TRACE_COUNTER(category_group, name, count) \ - TRACE_COUNTER(category_group, name, 0u, name, count) #define TRACE_EVENT0(a, b) TRACE_DURATION(a, b) #define TRACE_EVENT1(a, b, c, d) TRACE_DURATION(a, b, c, d) #define TRACE_EVENT2(a, b, c, d, e, f) TRACE_DURATION(a, b, c, d, e, f) @@ -28,8 +26,11 @@ #include #include #include +#include +#include #include "flutter/fml/macros.h" +#include "third_party/dart/runtime/include/dart_tools_api.h" #if !defined(OS_FUCHSIA) @@ -45,8 +46,9 @@ // from trace/event.h on Fuchsia. // // TODO(chinmaygarde): All macros here should have the FML prefix. -#define FML_TRACE_COUNTER(category_group, name, count) \ - ::fml::tracing::TraceCounter(category_group, name, count); +#define FML_TRACE_COUNTER(category_group, name, counter_id, arg1, ...) \ + ::fml::tracing::TraceCounter((category_group), (name), (counter_id), (arg1), \ + __VA_ARGS__); #define TRACE_EVENT0(category_group, name) \ ::fml::tracing::TraceEvent0(category_group, name); \ @@ -99,7 +101,63 @@ namespace tracing { using TraceArg = const char*; using TraceIDArg = int64_t; -void TraceCounter(TraceArg category_group, TraceArg name, TraceIDArg count); +void TraceTimelineEvent(TraceArg category_group, + TraceArg name, + TraceIDArg id, + Dart_Timeline_Event_Type type, + const std::vector& names, + const std::vector& values); + +inline std::string TraceToString(const char* string) { + return std::string{string}; +} + +inline std::string TraceToString(std::string string) { + return string; +} + +template ::value>> +std::string TraceToString(T string) { + return std::to_string(string); +} + +inline void SplitArgumentsCollect(std::vector& keys, + std::vector& values) {} + +template +void SplitArgumentsCollect(std::vector& keys, + std::vector& values, + Key key, + Value value, + Args... args) { + keys.emplace_back(key); + values.emplace_back(TraceToString(value)); + SplitArgumentsCollect(keys, values, args...); +} + +inline std::pair, std::vector> +SplitArguments() { + return {}; +} + +template +std::pair, std::vector> +SplitArguments(Key key, Value value, Args... args) { + std::vector keys; + std::vector values; + SplitArgumentsCollect(keys, values, key, value, args...); + return std::make_pair(std::move(keys), std::move(values)); +} + +template +void TraceCounter(TraceArg category, + TraceArg name, + TraceIDArg identifier, + Args... args) { + auto split = SplitArguments(args...); + TraceTimelineEvent(category, name, identifier, Dart_Timeline_Event_Counter, + split.first, split.second); +} void TraceEvent0(TraceArg category_group, TraceArg name); diff --git a/tools/gn b/tools/gn index 16bdcf034b040..344d8475e5f96 100755 --- a/tools/gn +++ b/tools/gn @@ -93,8 +93,6 @@ def to_gn_args(args): if not sys.platform.startswith(('cygwin', 'win')): gn_args['use_clang_static_analyzer'] = args.clang_static_analyzer - else: - gn_args['use_clang_static_analyzer'] = False gn_args['embedder_for_target'] = args.embedder_for_target From fdad56f5fbbcc3f7cdbc7c07f4cfb58a631969a4 Mon Sep 17 00:00:00 2001 From: Dan Field Date: Wed, 13 Mar 2019 14:26:42 -0700 Subject: [PATCH 1370/1537] Anti-Aliasing for shape layers (#8157) --- flow/layers/physical_shape_layer.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/flow/layers/physical_shape_layer.cc b/flow/layers/physical_shape_layer.cc index 005945f8f53be..93bd2664a916c 100644 --- a/flow/layers/physical_shape_layer.cc +++ b/flow/layers/physical_shape_layer.cc @@ -142,6 +142,7 @@ void PhysicalShapeLayer::Paint(PaintContext& context) const { // Call drawPath without clip if possible for better performance. SkPaint paint; paint.setColor(color_); + paint.setAntiAlias(true); if (clip_behavior_ != Clip::antiAliasWithSaveLayer) { context.leaf_nodes_canvas->drawPath(path_, paint); } From fcc66fc2357fb273c69d572b9034e4d4a66eeb81 Mon Sep 17 00:00:00 2001 From: Jason Simmons Date: Wed, 13 Mar 2019 14:36:35 -0700 Subject: [PATCH 1371/1537] Suppress deprecation warning for use of Build.CPU_ABI (#8154) --- shell/platform/android/io/flutter/view/ResourceExtractor.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/shell/platform/android/io/flutter/view/ResourceExtractor.java b/shell/platform/android/io/flutter/view/ResourceExtractor.java index ecbd026c9db09..2895db56b4cbb 100644 --- a/shell/platform/android/io/flutter/view/ResourceExtractor.java +++ b/shell/platform/android/io/flutter/view/ResourceExtractor.java @@ -409,8 +409,9 @@ private String getAPKPath() { } } + @SuppressWarnings("deprecation") private static String[] getSupportedAbis() { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP && Build.SUPPORTED_ABIS.length > 0) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { return Build.SUPPORTED_ABIS; } else { ArrayList cpuAbis = new ArrayList(asList(Build.CPU_ABI, Build.CPU_ABI2)); From cae0836576df83c7d75432226a81f16eb76b285e Mon Sep 17 00:00:00 2001 From: Ben Konyi Date: Wed, 13 Mar 2019 13:46:24 -0700 Subject: [PATCH 1372/1537] Roll src/third_party/dart 1bd36d694d..7d560f8385 (27 commits) 7d560f8385 Remove outdated entries from .packages ee529e3451 [vm] Fix typo forwader => forwarder 2ddb2d2d20 Change 'analyze tests co19_2' to use '-asserts'. b03db45379 [vm] Decouple flow graph building of dynamic invocation forwarders from kernel reading 6587483d33 [frontend] Dont re-report compile-expression errors. 81fa14eb3c Hollow out AnalysisContextImpl. b10a6bd5ce [testing] Multitests' copied imports should not be read-only 9684748784 Removes superfluous Dart_ExitScope() call in CreateVmServiceIsolate. 4a7556840f Rename tests ending with Test_Driver 8c3f74817e dartfmt -w --fix dart:collection afb459f7fa [cfe] Iterate map entries in map spreads ed5bc9c538 [vm] Fix AssertAssignable strengthening sometimes using wrong deopt_id. 8436dca626 [co19] DEPS updated a43c525de2 Reland "[vm/ffi] Support Windows 64 bit" 3bc3205e39 Move ConstantValue handling outside BehaviorBuilder 63e22ea497 Remove unused parts of NativeDataBuilder f307524421 Support native member annotations through ir constants 7cfe216e6b TypeInferrer.library is null iff topLevel 03ecefc0b2 Move ShadowMember.resolveInferenceNode to TypeInferenceEngine c7270f25fe Add Declaration.isAnonymousMixinApplication 0cbce074ac Add toString to Substitution b990c503c8 Fix typo in mixin transformer da3c23bdaa Test override-based inference when inheriting conflicting types f200c37553 Enable extra VM options in fasta script 69c1d1096d Update test as combined member signature would fail 68aeb5cec2 Tweak error messages related to inference and overriding. 0a337bb36f Report CONST_SPREAD_EXPECTED_LIST_OR_SET and CONST_SPREAD_EXPECTED_MAP. --- DEPS | 2 +- ci/licenses_golden/licenses_third_party | 2 +- sky/packages/sky_engine/LICENSE | 30 ------------------------- 3 files changed, 2 insertions(+), 32 deletions(-) diff --git a/DEPS b/DEPS index 95381d48b4bd2..4830e8b8d614a 100644 --- a/DEPS +++ b/DEPS @@ -31,7 +31,7 @@ vars = { # Dart is: https://github.com/dart-lang/sdk/blob/master/DEPS. # You can use //tools/dart/create_updated_flutter_deps.py to produce # updated revision list of existing dependencies. - 'dart_revision': '1bd36d694dba00d92651fcd2340e91d5a74efb03', + 'dart_revision': '7d560f8385eaeee0fd95ec08e25db0c217b1cd3e', # WARNING: DO NOT EDIT MANUALLY # The lines between blank lines above and below are generated by a script. See create_updated_flutter_deps.py diff --git a/ci/licenses_golden/licenses_third_party b/ci/licenses_golden/licenses_third_party index f6dcc6e5e6553..a957b5281d8ba 100644 --- a/ci/licenses_golden/licenses_third_party +++ b/ci/licenses_golden/licenses_third_party @@ -1,4 +1,4 @@ -Signature: b7183327d115ae031ff3f9997d96a04e +Signature: 16a53deb75e70c3091e030f3f0214527 UNUSED LICENSES: diff --git a/sky/packages/sky_engine/LICENSE b/sky/packages/sky_engine/LICENSE index 658e1e8c7cd99..e86eeeeced451 100644 --- a/sky/packages/sky_engine/LICENSE +++ b/sky/packages/sky_engine/LICENSE @@ -10966,36 +10966,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- skia -Copyright 2019 Google, LLC - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -skia - NEON optimized code (C) COPYRIGHT 2009 Motorola Redistribution and use in source and binary forms, with or without From cdf55a8d796c36f8378934ce0fede40806a0d8ff Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Wed, 13 Mar 2019 22:28:55 -0400 Subject: [PATCH 1373/1537] Roll src/third_party/skia 29d5dec9a078..1386b2d5579d (123 commits) (#8161) https://skia.googlesource.com/skia.git/%2Blog/29d5dec9a078..1386b2d5579d git log 29d5dec9a0783a033b921dc483fb98d565d684f6..1386b2d5579d45be7a81f8706ad1c407e1210dab --date=short --no-merges --format=%ad %ae %s 2019-03-13 reed@google.com pass common SkStageRec to all effects using rasterpipeline 2019-03-13 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/angle2 4e87659e289c..494afea985e6 (2 commits) 2019-03-14 bsalomon@google.com Revert "Try to avoid vertex colors in Texture/FillRect ops when possible." 2019-03-13 recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com Roll recipe dependencies (trivial). 2019-03-13 bsalomon@google.com Try to avoid vertex colors in Texture/FillRect ops when possible. 2019-03-13 herb@google.com Fallback for source should not use sub-pixel positioning. 2019-03-13 reed@google.com assert that during restore, the layer and its parent are in the same colorspace 2019-03-13 herb@google.com Use bulk api in direct-to-screen fallback 2019-03-13 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader 6480d4e10cb5..4ef71eb81f5d (3 commits) 2019-03-13 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader 25ec7b0cd393..6480d4e10cb5 (1 commits) 2019-03-13 enne@chromium.org Fix uninitialized read in too small SkDescriptor 2019-03-13 csmartdalton@google.com Remove GrAAType::kMixedSamples 2019-03-13 csmartdalton@google.com Replace GrAAType with flags for path renderers 2019-03-12 benjaminwagner@google.com Omit some SKPs that seem to cause GalaxyS9 to crash. 2018-11-15 mtklein@google.com reland: add private non-copying SkReadBuffer::readString() 2019-03-13 skia-recreate-skps@skia-swarming-bots.iam.gserviceaccount.com Update go_deps asset 2019-03-13 fmalita@chromium.org [skottie] Use kMedium_SkFilterQuality for image filtering 2019-03-13 stephana@google.com Fix Pixel 3 dimension 2019-03-13 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/angle2 3c1f5a6bd487..4e87659e289c (1 commits) 2019-03-13 brianosman@google.com Clamp in GrBicubicEffect (to match SW and for general sanity) 2019-03-13 brianosman@google.com Include test name in error messages for failing tests 2019-03-13 mtklein@google.com Revert "add private non-copying SkReadBuffer::readString()" 2019-03-12 herb@google.com Check that a glyph will fit in the atlas instead of a bogus check 2019-03-13 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader 1407297b7f7d..25ec7b0cd393 (1 commits) 2019-03-13 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader dd2faaeee6b2..1407297b7f7d (1 commits) 2019-03-13 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader bea4751348ca..dd2faaeee6b2 (1 commits) 2019-03-13 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/angle2 b6eb34122e07..3c1f5a6bd487 (2 commits) 2019-03-13 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader aa8f699a90af..bea4751348ca (2 commits) 2019-03-13 skia-autoroll@skia-public.iam.gserviceaccount.com Roll ../src 37fe521d6049..54744c955cd6 (411 commits) 2019-03-13 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader 914a46d47952..aa8f699a90af (1 commits) 2019-03-12 mtklein@google.com tweak Descriptor_invalid_rec_size to not over-copy 2019-03-12 reed@google.com retain colorspace in blurimagefilter_raster 2019-03-12 enne@chromium.org Fix null pointer crash in looking up nonexistent typeface 2019-03-12 recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com Roll recipe dependencies (trivial). 2019-03-11 herb@google.com Introduce bulk strike api for glyph metrics for one draw case 2019-03-12 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader b4de34ef039f..914a46d47952 (2 commits) 2019-03-12 reed@google.com remove dead SK_SUPPORT_LEGACY_RASTERLAYERCOLORSPACE code 2019-03-12 kjlubick@google.com [pathkit/canvaskit] Address race when uploading results 2019-03-12 enne@chromium.org Add validation to reading kRec_SkDescriptorTags 2019-03-12 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader f945a5e172d0..b4de34ef039f (1 commits) 2019-03-12 herb@google.com Move GlyphAndPos and PathAndPos to interface and rename. 2019-03-12 recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com Roll recipe dependencies (trivial). 2019-03-12 mtklein@google.com simplify matrix color filter clamps 2019-03-12 reed@google.com Initial add SkMixers 2018-11-15 mtklein@google.com add private non-copying SkReadBuffer::readString() 2019-03-11 stephana@google.com [infra] Add Pixel3 devices 2019-03-11 khushalsagar@chromium.org remote fonts: Remove debug asserts for deserialization failures. 2019-03-12 ethannicholas@google.com added SK_API to SkSK::Compiler 2019-03-12 mtklein@google.com remove unused clamp_a_dst 2019-03-12 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/angle2 c9bc33cff483..b6eb34122e07 (1 commits) 2019-03-12 robertphillips@google.com Always explicitly allocate except in Android Framework (take 3) 2019-03-12 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader 7ce5de0c17bd..f945a5e172d0 (1 commits) 2019-03-12 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader 6a1d92b526d4..7ce5de0c17bd (5 commits) 2019-03-12 jcgregorio@google.com Turn on CI/CD for api.skia.org. (skia) 2019-03-12 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader 6193cb187e4a..6a1d92b526d4 (1 commits) 2019-03-12 skia-autoroll@skia-public.iam.gserviceaccount.com Roll skia/third_party/skcms 04a7830913b3..10ed3a8a5eec (1 commits) 2019-03-12 mtklein@google.com simplify filterColor() 2019-03-12 robertphillips@google.com Revert "Always explicitly allocate except in Android Framework (take 2)" 2019-03-12 kjlubick@google.com [particles] Turn on CI/CD for particles.skia.org 2019-03-12 robertphillips@google.com Revert "Always try to reduce opList splitting in DDL contexts/drawingManagers" 2019-03-12 robertphillips@google.com Revert "Temporarily re-add GrContextOptions::fExplicitlyAllocateGPUResources for Fuchsia" 2019-03-11 robertphillips@google.com Always try to reduce opList splitting in DDL contexts/drawingManagers 2019-03-12 robertphillips@google.com Temporarily re-add GrContextOptions::fExplicitlyAllocateGPUResources for Fuchsia 2019-03-12 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader abb57857c536..6193cb187e4a (1 commits) 2019-03-12 gkaiser@google.com GrQuadPerEdgeAA: Fix typo in 'if' check 2019-03-12 kjlubick@google.com [pathkit] Clean up perf/test init 2019-03-12 bsalomon@google.com Revert "Reintroduce deinstantiate lazy proxy types and use for promise images." 2019-03-11 robertphillips@google.com Always explicitly allocate except in Android Framework (take 2) 2019-03-12 recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com Roll recipe dependencies (trivial). 2019-03-11 brianosman@google.com Remove SkToSRGBColorFilter (now unused) 2019-03-12 rmistry@google.com Add new recipe autoroller service account to list of recognized accounts 2019-03-12 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader 3e2a4780e607..abb57857c536 (3 commits) 2019-03-12 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader 3364227fa0d8..3e2a4780e607 (1 commits) 2019-03-12 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/angle2 f563fdc91e83..c9bc33cff483 (2 commits) 2019-03-12 skia-recreate-skps@skia-swarming-bots.iam.gserviceaccount.com Update go_deps asset 2019-03-12 skia-autoroll@skia-public.iam.gserviceaccount.com Roll ../src ba6c026602da..37fe521d6049 (397 commits) 2019-03-11 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader 654540e86243..3364227fa0d8 (1 commits) 2019-03-11 skia-autoroll@skia-public.iam.gserviceaccount.com Roll skia/third_party/skcms c6c0aae921ea..04a7830913b3 (1 commits) 2019-03-11 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/angle2 49c9dfe3b832..f563fdc91e83 (1 commits) 2019-03-11 kjlubick@google.com [canvaskit] Move from experimental to modules 2019-03-11 bsalomon@google.com Add GM for crbug.com/938592 2019-03-08 bsalomon@google.com Reintroduce deinstantiate lazy proxy types and use for promise images. 2019-03-11 recipe-roller@chromium.org Roll recipe dependencies (trivial). 2019-03-11 brianosman@google.com Add clamped half-float pixel config to Ganesh 2019-03-11 kjlubick@google.com Add input length check when fuzzing 2019-03-07 michaelludwig@google.com Handle arbitrary and degenerate quadrilaterals in GrQuadPerEdgeAA 2019-03-11 skia-autoroll@skia-public.iam.gserviceaccount.com Roll skia/third_party/skcms 2fb061752f70..c6c0aae921ea (1 commits) 2019-03-06 herb@google.com One routine to rule them all! 2019-03-11 reed@google.com rename mixer to lerp (in prep for SkMixer) 2019-03-11 stani@google.com Export libvulkan headers for android libraries depending on skia 2019-03-11 fmalita@chromium.org [skottie] Fix Gaussian blur repeat edge pixels semantics 2019-03-11 recipe-roller@chromium.org Roll recipe dependencies (trivial). 2019-03-11 robertphillips@google.com Revert "Always explicitly allocate except in Android Framework" 2019-03-11 hcm@google.com update milestones to 2019 dates 2019-03-11 skia-autoroll@skia-public.iam.gserviceaccount.com Roll skia/third_party/skcms d2f7012e6a85..2fb061752f70 (1 commits) 2019-03-11 recipe-roller@chromium.org Roll recipe dependencies (trivial). 2019-03-08 herb@google.com Convert templates to virtuals in SkGlyphRunPainter 2019-03-11 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader b72d28ff9975..654540e86243 (1 commits) 2019-03-11 skia-autoroll@skia-public.iam.gserviceaccount.com Roll skia/third_party/skcms a81211f5ad2a..d2f7012e6a85 (1 commits) 2019-03-11 recipe-roller@chromium.org Roll recipe dependencies (trivial). 2019-03-11 robertphillips@google.com Always explicitly allocate except in Android Framework 2019-03-11 skia-autoroll@skia-public.iam.gserviceaccount.com Roll skia/third_party/skcms 3b3522324e7b..a81211f5ad2a (1 commits) 2019-03-11 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader bb8c8e211402..b72d28ff9975 (2 commits) 2019-03-11 jcgregorio@google.com Change all pointers to doxygen docs to point to api.skia.org. 2019-03-11 jvanverth@google.com Improve Metal texture uploads. 2019-03-11 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader cd3e11d9464a..bb8c8e211402 (2 commits) 2019-03-11 brianosman@google.com Add flag to check that F16Norm pixels are clamped properly 2019-03-11 kjlubick@google.com Add oss-fuzz compatible fuzzers for sksl2* 2019-03-11 jcgregorio@google.com api.skia.org - Don't document private. 2019-03-11 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader fa8603c6113f..cd3e11d9464a (1 commits) 2019-03-07 egdaniel@google.com Make vulkan GrBackendFormats with ycbcr external texture types. 2019-03-06 robertphillips@google.com Add kIdentity_SkYUVColorSpace 2019-03-09 nigeltao@google.com Check that we do not #define WUFFS_IMPLEMENTATION 2019-03-09 nigeltao@google.com Update Wuffs version 2019-03-08 kjlubick@google.com [canvaskit] roll on npm 2019-03-11 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader f2ddde731fb0..fa8603c6113f (1 commits) 2019-03-11 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader ebefaf7ce64a..f2ddde731fb0 (1 commits) 2019-03-11 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/angle2 b6a2f6bcf657..49c9dfe3b832 (1 commits) 2019-03-11 skia-recreate-skps@skia-swarming-bots.iam.gserviceaccount.com Update go_deps asset 2019-03-11 skia-autoroll@skia-public.iam.gserviceaccount.com Roll ../src bc2c6257d015..ba6c026602da (26 commits) 2019-03-10 skia-recreate-skps@skia-swarming-bots.iam.gserviceaccount.com Update SKP version 2019-03-10 skia-recreate-skps@skia-swarming-bots.iam.gserviceaccount.com Update go_deps asset 2019-03-10 skia-autoroll@skia-public.iam.gserviceaccount.com Roll ../src a70166a5efb1..bc2c6257d015 (100 commits) The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (benjaminwagner@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 9 ++++++++- sky/packages/sky_engine/LICENSE | 30 ++++++++++++++++++++++++++++++ 3 files changed, 39 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 4830e8b8d614a..746019c0d3c68 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '29d5dec9a0783a033b921dc483fb98d565d684f6', + 'skia_revision': '1386b2d5579d45be7a81f8706ad1c407e1210dab', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 1070233d9ad34..96d00ab4e0be7 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 0dd2b3de568e29ad48747dd78b7125d9 +Signature: 2f6d3d116cd822ba2dfe40076649205b UNUSED LICENSES: @@ -2238,6 +2238,7 @@ FILE: ../../../third_party/skia/infra/bots/recipes/compute_test.expected/Test-De FILE: ../../../third_party/skia/infra/bots/recipes/housekeeper.expected/Housekeeper-PerCommit-Trybot.json FILE: ../../../third_party/skia/infra/bots/recipes/housekeeper.expected/Housekeeper-PerCommit.json FILE: ../../../third_party/skia/infra/bots/recipes/infra.expected/infra_tests.json +FILE: ../../../third_party/skia/infra/bots/recipes/perf.expected/Perf-Android-Clang-GalaxyS9-GPU-MaliG72-arm64-Debug-All-Android_Vulkan.json FILE: ../../../third_party/skia/infra/bots/recipes/perf.expected/Perf-Android-Clang-Nexus5-GPU-Adreno330-arm-Debug-All-Android.json FILE: ../../../third_party/skia/infra/bots/recipes/perf.expected/Perf-Android-Clang-Nexus5x-GPU-Adreno418-arm64-Release-All-Android_NoGPUThreads.json FILE: ../../../third_party/skia/infra/bots/recipes/perf.expected/Perf-ChromeOS-Clang-ASUSChromebookFlipC100-GPU-MaliT764-arm-Release-All.json @@ -4875,6 +4876,7 @@ FILE: ../../../third_party/skia/gm/mac_aa_explorer.cpp FILE: ../../../third_party/skia/gm/mixercolorfilter.cpp FILE: ../../../third_party/skia/gm/samplelocations.cpp FILE: ../../../third_party/skia/gm/skbug_8664.cpp +FILE: ../../../third_party/skia/include/core/SkMixer.h FILE: ../../../third_party/skia/include/gpu/GrContextThreadSafeProxy.h FILE: ../../../third_party/skia/include/private/GrContext_Base.h FILE: ../../../third_party/skia/include/private/GrImageContext.h @@ -4887,6 +4889,9 @@ FILE: ../../../third_party/skia/samplecode/SampleDegenerateQuads.cpp FILE: ../../../third_party/skia/samplecode/SampleSG.cpp FILE: ../../../third_party/skia/samplecode/SampleThinAA.cpp FILE: ../../../third_party/skia/src/core/SkDescriptor.cpp +FILE: ../../../third_party/skia/src/core/SkEffectPriv.h +FILE: ../../../third_party/skia/src/core/SkMixer.cpp +FILE: ../../../third_party/skia/src/core/SkMixerBase.h FILE: ../../../third_party/skia/src/core/SkStrikeInterface.h FILE: ../../../third_party/skia/src/gpu/GrAHardwareBufferUtils.cpp FILE: ../../../third_party/skia/src/gpu/GrAHardwareBufferUtils.h @@ -4909,6 +4914,8 @@ FILE: ../../../third_party/skia/src/gpu/effects/GrMixerEffect.fp FILE: ../../../third_party/skia/src/gpu/effects/GrMixerEffect.h FILE: ../../../third_party/skia/src/gpu/vk/GrVkSecondaryCBDrawContext.cpp FILE: ../../../third_party/skia/src/gpu/vk/GrVkSecondaryCBDrawContext.h +FILE: ../../../third_party/skia/src/shaders/SkMixerShader.cpp +FILE: ../../../third_party/skia/src/shaders/SkMixerShader.h FILE: ../../../third_party/skia/src/sksl/SkSLDefines.h FILE: ../../../third_party/skia/src/sksl/SkSLOutputStream.cpp ---------------------------------------------------------------------------------------------------- diff --git a/sky/packages/sky_engine/LICENSE b/sky/packages/sky_engine/LICENSE index e86eeeeced451..658e1e8c7cd99 100644 --- a/sky/packages/sky_engine/LICENSE +++ b/sky/packages/sky_engine/LICENSE @@ -10966,6 +10966,36 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- skia +Copyright 2019 Google, LLC + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +skia + NEON optimized code (C) COPYRIGHT 2009 Motorola Redistribution and use in source and binary forms, with or without From bbd58fab5b27fae56082f552bbcea2822508311c Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Thu, 14 Mar 2019 02:05:54 -0400 Subject: [PATCH 1374/1537] Roll src/third_party/skia 1386b2d5579d..8b9b8f8c5846 (3 commits) (#8162) https://skia.googlesource.com/skia.git/%2Blog/1386b2d5579d..8b9b8f8c5846 git log 1386b2d5579d45be7a81f8706ad1c407e1210dab..8b9b8f8c58467fef47b74250301d574ee31d5f79 --date=short --no-merges --format=%ad %ae %s 2019-03-14 skia-autoroll@skia-public.iam.gserviceaccount.com Roll ../src 54744c955cd6..6299cd6e9d2d (421 commits) 2019-03-14 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader b6d4ce3158ee..868ed908f432 (1 commits) 2019-03-14 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader 4ef71eb81f5d..b6d4ce3158ee (1 commits) The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (benjaminwagner@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 746019c0d3c68..4669b8cf0b5c3 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '1386b2d5579d45be7a81f8706ad1c407e1210dab', + 'skia_revision': '8b9b8f8c58467fef47b74250301d574ee31d5f79', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 96d00ab4e0be7..b5a21a0908dd5 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 2f6d3d116cd822ba2dfe40076649205b +Signature: 4a847808a214cad2d193d34eccac95b7 UNUSED LICENSES: From 23cff1a1c000d496a7ffabd8b189a5f9c94c57f9 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Thu, 14 Mar 2019 06:06:55 -0400 Subject: [PATCH 1375/1537] Roll src/third_party/skia 8b9b8f8c5846..5412618d503c (1 commits) (#8163) https://skia.googlesource.com/skia.git/%2Blog/8b9b8f8c5846..5412618d503c git log 8b9b8f8c58467fef47b74250301d574ee31d5f79..5412618d503cdd2f0dbf8bcb3e63110bd9d2c94d --date=short --no-merges --format=%ad %ae %s 2019-03-14 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader 868ed908f432..19f1db6e92b4 (1 commits) The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (benjaminwagner@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 4669b8cf0b5c3..0331eb38d9217 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '8b9b8f8c58467fef47b74250301d574ee31d5f79', + 'skia_revision': '5412618d503cdd2f0dbf8bcb3e63110bd9d2c94d', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index b5a21a0908dd5..ec37e596aa474 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 4a847808a214cad2d193d34eccac95b7 +Signature: dedc43fc2f054bb7bdf7d825e6c79edd UNUSED LICENSES: From fbca3d34e6264d8f0081cced601a2db4e36429a4 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Thu, 14 Mar 2019 09:37:55 -0400 Subject: [PATCH 1376/1537] Roll src/third_party/skia 5412618d503c..f699bf0437db (2 commits) (#8164) https://skia.googlesource.com/skia.git/%2Blog/5412618d503c..f699bf0437db git log 5412618d503cdd2f0dbf8bcb3e63110bd9d2c94d..f699bf0437dbfd1b50b027751ad251335a1eb2b6 --date=short --no-merges --format=%ad %ae %s 2019-03-14 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader 19f1db6e92b4..9b62c5ea2af3 (2 commits) 2019-03-14 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/angle2 494afea985e6..37b996425a0e (1 commits) The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (benjaminwagner@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 0331eb38d9217..66c435acea131 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '5412618d503cdd2f0dbf8bcb3e63110bd9d2c94d', + 'skia_revision': 'f699bf0437dbfd1b50b027751ad251335a1eb2b6', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index ec37e596aa474..cb64f8c00c0bb 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: dedc43fc2f054bb7bdf7d825e6c79edd +Signature: 8c7f6a7aafe929103e78df23ccf4b18d UNUSED LICENSES: From f2b42d6c5481bbcb8bd8750d4657f8e41ba47e0f Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Thu, 14 Mar 2019 13:20:20 -0400 Subject: [PATCH 1377/1537] Roll src/third_party/skia f699bf0437db..feb720f746dc (15 commits) (#8165) https://skia.googlesource.com/skia.git/%2Blog/f699bf0437db..feb720f746dc git log f699bf0437dbfd1b50b027751ad251335a1eb2b6..feb720f746dcecfd80e47b060d620c3ffa29a43b --date=short --no-merges --format=%ad %ae %s 2019-03-14 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader ca56e8b07a1a..eb7cf3c4b0b1 (1 commits) 2019-03-14 reed@google.com Use '&' to toggle showing the gm's size in viewer 2019-03-13 mtklein@google.com move in center of radial_gradient_precision 2019-03-14 bsalomon@google.com Update color type after color override in GrFillRectOp. 2019-03-14 jvanverth@google.com Set RG_float to be texturable on Metal 2019-03-14 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader 49d2c13943ef..ca56e8b07a1a (1 commits) 2019-03-14 kjlubick@google.com [canvaskit] missing extern 2019-03-08 bsalomon@google.com Reland "Reintroduce deinstantiate lazy proxy types and use for promise images." 2019-03-14 michaelludwig@google.com Revert "Update SkCanvas' experimental SkiaRenderer API" 2019-03-14 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader 9b62c5ea2af3..49d2c13943ef (1 commits) 2019-03-14 brianosman@google.com SkLumaColorFilter: Keep alpha in [0,1] 2019-03-13 michaelludwig@google.com Update SkCanvas' experimental SkiaRenderer API 2019-03-13 mtklein@google.com remove plus clamp 2019-03-13 nifong@google.com fill out more of SkDebugCanvas interface 2019-03-13 bsalomon@google.com Reland "Try to avoid vertex colors in Texture/FillRect ops when possible." The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (benjaminwagner@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 66c435acea131..47a0facf7e9b2 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'f699bf0437dbfd1b50b027751ad251335a1eb2b6', + 'skia_revision': 'feb720f746dcecfd80e47b060d620c3ffa29a43b', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index cb64f8c00c0bb..8722498d7cb2b 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 8c7f6a7aafe929103e78df23ccf4b18d +Signature: d9f6707a9eabeae331acff2af41e7b80 UNUSED LICENSES: @@ -1717,6 +1717,8 @@ FILE: ../../../third_party/skia/src/effects/SkTrimPE.h FILE: ../../../third_party/skia/src/effects/SkTrimPathEffect.cpp FILE: ../../../third_party/skia/src/gpu/GrContextThreadSafeProxyPriv.h FILE: ../../../third_party/skia/src/gpu/GrDDLContext.cpp +FILE: ../../../third_party/skia/src/gpu/GrDeinstantiateProxyTracker.cpp +FILE: ../../../third_party/skia/src/gpu/GrDeinstantiateProxyTracker.h FILE: ../../../third_party/skia/src/gpu/GrDriverBugWorkarounds.cpp FILE: ../../../third_party/skia/src/gpu/GrFPArgs.h FILE: ../../../third_party/skia/src/gpu/GrLegacyDirectContext.cpp From e514f0bd18a98472f481733480119729f2f2c19a Mon Sep 17 00:00:00 2001 From: Chinmay Garde Date: Thu, 14 Mar 2019 12:02:46 -0700 Subject: [PATCH 1378/1537] Ensure that typed data is released within SendPlatformMessage scope. (#8155) We used to make tonic make the wrapper before the SendPlatformMessage invocation. However, tonic would not collect the wrapper before make the Dart API call to return the value from the native method. This is illegal and would trip an assertion in the Dart VM. A more systematic fix required reworking tonic to handle this case. However, to fix our illegal use of the Dart API now, this patch creates the wrapper manually in function scope. Fixes https://github.com/flutter/flutter/issues/29058 --- lib/ui/window/window.cc | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/lib/ui/window/window.cc b/lib/ui/window/window.cc index bfeb86cef66f4..fb53dda3f1028 100644 --- a/lib/ui/window/window.cc +++ b/lib/ui/window/window.cc @@ -84,12 +84,10 @@ void ReportUnhandledException(Dart_NativeArguments args) { Dart_Handle SendPlatformMessage(Dart_Handle window, const std::string& name, Dart_Handle callback, - const tonic::DartByteData& data) { + Dart_Handle data_handle) { UIDartState* dart_state = UIDartState::Current(); if (!dart_state->window()) { - // Must release the TypedData buffer before allocating other Dart objects. - data.Release(); return tonic::ToDart( "Platform messages can only be sent from the main isolate"); } @@ -100,12 +98,12 @@ Dart_Handle SendPlatformMessage(Dart_Handle window, tonic::DartPersistentValue(dart_state, callback), dart_state->GetTaskRunners().GetUITaskRunner()); } - if (Dart_IsNull(data.dart_handle())) { + if (Dart_IsNull(data_handle)) { dart_state->window()->client()->HandlePlatformMessage( fml::MakeRefCounted(name, response)); } else { + tonic::DartByteData data(data_handle); const uint8_t* buffer = static_cast(data.data()); - dart_state->window()->client()->HandlePlatformMessage( fml::MakeRefCounted( name, std::vector(buffer, buffer + data.length_in_bytes()), From 403337ebb893380101d1fa9cc435ce9b6cfeb22c Mon Sep 17 00:00:00 2001 From: Jason Simmons Date: Thu, 14 Mar 2019 12:49:42 -0700 Subject: [PATCH 1379/1537] Do not pass short-lived buffers as labels to Dart_TimelineEvent (#8166) Dart no longer makes a copy of the label string when recording events. See https://github.com/flutter/engine/pull/8152 --- fml/trace_event.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/fml/trace_event.h b/fml/trace_event.h index b8063aca3a2df..1f979d4e35e64 100644 --- a/fml/trace_event.h +++ b/fml/trace_event.h @@ -205,12 +205,12 @@ void TraceEventFlowEnd0(TraceArg category_group, TraceArg name, TraceIDArg id); class ScopedInstantEnd { public: - ScopedInstantEnd(std::string str) : label_(std::move(str)) {} + ScopedInstantEnd(const char* str) : label_(str) {} - ~ScopedInstantEnd() { TraceEventEnd(label_.c_str()); } + ~ScopedInstantEnd() { TraceEventEnd(label_); } private: - const std::string label_; + const char* label_; FML_DISALLOW_COPY_AND_ASSIGN(ScopedInstantEnd); }; From 66fdeb163ef6fed6e9bac652bb36c7495aa17fb8 Mon Sep 17 00:00:00 2001 From: liyuqian Date: Thu, 14 Mar 2019 12:58:09 -0700 Subject: [PATCH 1380/1537] Add dump-shader-skp switch to help ShaderWarmUp (#8148) Allow Flutter to automatically dump the skp that triggers new shader compilations. This is useful for writing custom ShaderWarmUp to reduce jank. By default, it's not enabled to reduce the overhead. This is only available in profile or debug build. Later, we can add service protocol support to pull the skp from the client to the host. Currently, it works fine for Android-based devices (including our urgent internal clients) where we can `adb shell` into the cache directory. --- common/settings.cc | 3 +++ common/settings.h | 1 + shell/common/persistent_cache.cc | 20 +++++++++++++++++++ shell/common/persistent_cache.h | 12 +++++++++++ shell/common/rasterizer.cc | 12 +++++++++++ shell/common/shell.cc | 3 +++ shell/common/switches.cc | 3 +++ shell/common/switches.h | 7 ++++++- .../flutter/app/FlutterActivityDelegate.java | 3 +++ .../embedding/engine/FlutterShellArgs.java | 5 +++++ 10 files changed, 68 insertions(+), 1 deletion(-) diff --git a/common/settings.cc b/common/settings.cc index d2d1c702787fd..b292d376be0c3 100644 --- a/common/settings.cc +++ b/common/settings.cc @@ -33,6 +33,9 @@ std::string Settings::ToString() const { stream << "start_paused: " << start_paused << std::endl; stream << "trace_skia: " << trace_skia << std::endl; stream << "trace_startup: " << trace_startup << std::endl; + stream << "trace_systrace: " << trace_systrace << std::endl; + stream << "dump_skp_on_shader_compilation: " << dump_skp_on_shader_compilation + << std::endl; stream << "endless_trace_buffer: " << endless_trace_buffer << std::endl; stream << "enable_dart_profiling: " << enable_dart_profiling << std::endl; stream << "disable_dart_asserts: " << disable_dart_asserts << std::endl; diff --git a/common/settings.h b/common/settings.h index 812e2167d31e2..bfbfd4139d322 100644 --- a/common/settings.h +++ b/common/settings.h @@ -64,6 +64,7 @@ struct Settings { bool trace_skia = false; bool trace_startup = false; bool trace_systrace = false; + bool dump_skp_on_shader_compilation = false; bool endless_trace_buffer = false; bool enable_dart_profiling = false; bool disable_dart_asserts = false; diff --git a/shell/common/persistent_cache.cc b/shell/common/persistent_cache.cc index 6e52a810e59ec..e771ab502acb3 100644 --- a/shell/common/persistent_cache.cc +++ b/shell/common/persistent_cache.cc @@ -134,6 +134,8 @@ static void PersistentCacheStore(fml::RefPtr worker, // |GrContextOptions::PersistentCache| void PersistentCache::store(const SkData& key, const SkData& data) { + stored_new_shaders_ = true; + if (is_read_only_) { return; } @@ -159,6 +161,24 @@ void PersistentCache::store(const SkData& key, const SkData& data) { std::move(file_name), std::move(mapping)); } +void PersistentCache::DumpSkp(const SkData& data) { + if (is_read_only_ || !IsValid()) { + FML_LOG(ERROR) << "Could not dump SKP from read-only or invalid persistent " + "cache."; + return; + } + + std::stringstream name_stream; + auto ticks = fml::TimePoint::Now().ToEpochDelta().ToNanoseconds(); + name_stream << "shader_dump_" << std::to_string(ticks) << ".skp"; + std::string file_name = name_stream.str(); + FML_LOG(ERROR) << "Dumping " << file_name; + auto mapping = std::make_unique( + std::vector{data.bytes(), data.bytes() + data.size()}); + PersistentCacheStore(GetWorkerTaskRunner(), cache_directory_, + std::move(file_name), std::move(mapping)); +} + void PersistentCache::AddWorkerTaskRunner( fml::RefPtr task_runner) { std::lock_guard lock(worker_task_runners_mutex_); diff --git a/shell/common/persistent_cache.h b/shell/common/persistent_cache.h index 51662994dde70..7b3310e849bae 100644 --- a/shell/common/persistent_cache.h +++ b/shell/common/persistent_cache.h @@ -36,6 +36,15 @@ class PersistentCache : public GrContextOptions::PersistentCache { void RemoveWorkerTaskRunner(fml::RefPtr task_runner); + // Whether Skia tries to store any shader into this persistent cache after + // |ResetStoredNewShaders| is called. This flag is usually reset before each + // frame so we can know if Skia tries to compile new shaders in that frame. + bool StoredNewShaders() const { return stored_new_shaders_; } + void ResetStoredNewShaders() { stored_new_shaders_ = false; } + void DumpSkp(const SkData& data); + bool IsDumpingSkp() const { return is_dumping_skp_; } + void SetIsDumpingSkp(bool value) { is_dumping_skp_ = value; } + private: static std::string cache_base_path_; @@ -45,6 +54,9 @@ class PersistentCache : public GrContextOptions::PersistentCache { std::multiset> worker_task_runners_ FML_GUARDED_BY(worker_task_runners_mutex_); + bool stored_new_shaders_ = false; + bool is_dumping_skp_ = false; + bool IsValid() const; PersistentCache(bool read_only = false); diff --git a/shell/common/rasterizer.cc b/shell/common/rasterizer.cc index 39766a5877c99..b86e7cf19c469 100644 --- a/shell/common/rasterizer.cc +++ b/shell/common/rasterizer.cc @@ -4,6 +4,8 @@ #include "flutter/shell/common/rasterizer.h" +#include "flutter/shell/common/persistent_cache.h" + #include #include "third_party/skia/include/core/SkEncodedImageFormat.h" @@ -150,9 +152,19 @@ void Rasterizer::DoDraw(std::unique_ptr layer_tree) { return; } + PersistentCache* persistent_cache = PersistentCache::GetCacheForProcess(); + persistent_cache->ResetStoredNewShaders(); + if (DrawToSurface(*layer_tree)) { last_layer_tree_ = std::move(layer_tree); } + + if (persistent_cache->IsDumpingSkp() && + persistent_cache->StoredNewShaders()) { + auto screenshot = + ScreenshotLastLayerTree(ScreenshotType::SkiaPicture, false); + persistent_cache->DumpSkp(*screenshot.data); + } } bool Rasterizer::DrawToSurface(flow::LayerTree& layer_tree) { diff --git a/shell/common/shell.cc b/shell/common/shell.cc index ef177eacabcc3..3c43ef2d12f50 100644 --- a/shell/common/shell.cc +++ b/shell/common/shell.cc @@ -382,6 +382,9 @@ bool Shell::Setup(std::unique_ptr platform_view, PersistentCache::GetCacheForProcess()->AddWorkerTaskRunner( task_runners_.GetIOTaskRunner()); + PersistentCache::GetCacheForProcess()->SetIsDumpingSkp( + settings_.dump_skp_on_shader_compilation); + return true; } diff --git a/shell/common/switches.cc b/shell/common/switches.cc index 997cd846ec613..215e043f78505 100644 --- a/shell/common/switches.cc +++ b/shell/common/switches.cc @@ -276,6 +276,9 @@ blink::Settings SettingsFromCommandLine(const fml::CommandLine& command_line) { command_line.HasOption(FlagForSwitch(Switch::TraceSystrace)); #endif + settings.dump_skp_on_shader_compilation = + command_line.HasOption(FlagForSwitch(Switch::DumpSkpOnShaderCompilation)); + return settings; } diff --git a/shell/common/switches.h b/shell/common/switches.h index a5da872d6d1c9..951bf7ad55b24 100644 --- a/shell/common/switches.h +++ b/shell/common/switches.h @@ -109,8 +109,13 @@ DEF_SWITCH(TraceStartup, DEF_SWITCH(TraceSkia, "trace-skia", "Trace Skia calls. This is useful when debugging the GPU threed." - "By default, Skia tracing is not enable to reduce the number of " + "By default, Skia tracing is not enabled to reduce the number of " "traced events") +DEF_SWITCH(DumpSkpOnShaderCompilation, + "dump-skp-on-shader-compilation", + "Automatically dump the skp that triggers new shader compilations. " + "This is useful for writing custom ShaderWarmUp to reduce jank. " + "By default, this is not enabled to reduce the overhead. ") DEF_SWITCH( TraceSystrace, "trace-systrace", diff --git a/shell/platform/android/io/flutter/app/FlutterActivityDelegate.java b/shell/platform/android/io/flutter/app/FlutterActivityDelegate.java index 4230208eb4608..c56908db643b3 100644 --- a/shell/platform/android/io/flutter/app/FlutterActivityDelegate.java +++ b/shell/platform/android/io/flutter/app/FlutterActivityDelegate.java @@ -315,6 +315,9 @@ private static String[] getArgsFromIntent(Intent intent) { if (intent.getBooleanExtra("trace-systrace", false)) { args.add("--trace-systrace"); } + if (intent.getBooleanExtra("dump-skp-on-shader-compilation", false)) { + args.add("--dump-skp-on-shader-compilation"); + } if (intent.getBooleanExtra("verbose-logging", false)) { args.add("--verbose-logging"); } diff --git a/shell/platform/android/io/flutter/embedding/engine/FlutterShellArgs.java b/shell/platform/android/io/flutter/embedding/engine/FlutterShellArgs.java index c3b2c9b71531e..6e5ec8c7ba7bc 100644 --- a/shell/platform/android/io/flutter/embedding/engine/FlutterShellArgs.java +++ b/shell/platform/android/io/flutter/embedding/engine/FlutterShellArgs.java @@ -37,6 +37,8 @@ public class FlutterShellArgs { public static final String ARG_SKIA_DETERMINISTIC_RENDERING = "--skia-deterministic-rendering"; public static final String ARG_KEY_TRACE_SKIA = "trace-skia"; public static final String ARG_TRACE_SKIA = "--trace-skia"; + public static final String ARG_KEY_DUMP_SHADER_SKP_ON_SHADER_COMPILATION = "dump-skp-on-shader-compilation"; + public static final String ARG_DUMP_SHADER_SKP_ON_SHADER_COMPILATION = "--dump-skp-on-shader-compilation"; public static final String ARG_KEY_VERBOSE_LOGGING = "verbose-logging"; public static final String ARG_VERBOSE_LOGGING = "--verbose-logging"; @@ -69,6 +71,9 @@ public static FlutterShellArgs fromIntent(@NonNull Intent intent) { if (intent.getBooleanExtra(ARG_KEY_TRACE_SKIA, false)) { args.add(ARG_TRACE_SKIA); } + if (intent.getBooleanExtra(ARG_KEY_DUMP_SHADER_SKP_ON_SHADER_COMPILATION, false)) { + args.add(ARG_KEY_DUMP_SHADER_SKP_ON_SHADER_COMPILATION); + } if (intent.getBooleanExtra(ARG_KEY_VERBOSE_LOGGING, false)) { args.add(ARG_VERBOSE_LOGGING); } From 5825bdac92cdf86e83d1f4c2ee924e8fb9875f1a Mon Sep 17 00:00:00 2001 From: Ben Konyi Date: Thu, 14 Mar 2019 13:14:25 -0700 Subject: [PATCH 1381/1537] Roll src/third_party/dart 7d560f8385..7418238239 (61 commits) 7418238239 Implement LibraryElementForLink.session and return (empty) AnalysisSessionForLink. 806ec1161f Issue 3270. Put StreamBuilder's type argument into linked edit. eeb19b0416 Remove usages of ExtensionManager and package:plugin in general. 6c5194cfe1 [VM/Flutter] Remove 2 golden-file tests completely to avoid flutter analyze warning about missing copyright header f31b7928ae [VM] Adding regexp lookbehind assertion support. dfb6d250b1 [kernel] Better printing of string and unevaluated constants. c9e9b76d4d Skip control-flow-collections tests on all runtimes 1af9d3e14b Update breaking-changes.md dbea5c6884 [fasta] Commandline option to leave environment constants unevaluated. 10a8663e74 [VM/Flutter] Disabled golden tests until next engine -> flutter roll (which probably fixes it) 9aea5536fb [cfe] Initial support for compiling if in collections 1ac41d26b4 Support @Creates and @Returns from ir constants ac4eca7eb9 [vm, gc] Take advantage of object alignment and non-overlap when copying objects during a scavenge. d5ab8b4da2 Resolve ForElement(s) in separate scopes. 5b07ef9d1c [tests] Fix new tests b1a3629547 [vm] Move receiver variable to ParsedFunction, add ParameterVariable() 037b273753 Make List literal inference match the proposal f2579a8ede Add override annotations in dart2js tests d1a943281b Change path order when trying to open tracing 6483f5238f [dart/vm] be more flexible with precomputed constants 580e5731d6 [vm] Test compilation traces, type feedback, reused instructions. 217a027456 [vm, interpreter] Support unboxed fields. 1bd7920367 Resolve generic function default parameter values 31c47567dc Remove AnalysisOptionsForLink and plumb analysis options through linker. 69a4f20347 Add override annotations consistently 4339fe9b51 Add constant evaluation tests for IfNull. 8adcab9fec Add constant evaluation tests for Identity. 3552dbb429 Add constant evaluation tests for Equals. 27328840f9 Add constant evaluation tests for GreaterEqual. 9f680cd0bd Add constant evaluation tests for Greater. 0950d473ad Add constant evaluation tests for LessEqual. 7ff70237d4 Add constant evaluation tests for Less. ce9a1bb24e Add constant evaluation tests for Add. 2fa96dd653 Add constant evaluation tests for Divide. 952421a68d Add constant evaluation tests for TruncatingDivide. 9fd0ec2560 Add constant evaluation tests for Modulo. 9262d111fd Add constant evaluation tests for Multiply. aba9392f0e Add constant evaluation tests for Subtract. 3a38f0bb89 Add constant evaluation tests for BooleanOr. 052d6d235c Add constant evaluation tests for BooleanAnd. be5332c0a5 Add constant evaluation tests for ShiftRight. 4f34218ce1 Add constant evaluation tests for ShiftLeft. 3df5334137 Add constant evaluation tests for BitXor. 84d8d6b513 Add constant evaluation tests for BitOr. f7972480bd Add constant evaluation tests for BitAnd. 432c6c8c39 Add constant evaluation tests for Not. 2e1c78db7b Add constant evaluation tests for Negate. 5853f129b2 Add constant evaluation tests for BitNot. aa4a2df5a2 Add structure of constant folding tests. 078c834f25 Extract CONST_SET_ELEMENT_TYPE_IMPLEMENTS_EQUALS test and fix for spreads in sets. 2d48159e38 Issue 36187. Fix for getSuggestionDetails() fails in part file. e7562917f1 Reland https://dart-review.googlesource.com/c/sdk/+/96500 b5528fa84d Improve the docs for isSet and isMap in SetOrMapLiteral e55e13ffbd Merge remote-tracking branch 'github/master' 632abb6a25 Improve 'Import Library' code generation when has 'part' directive. d3a0293a9d Replace unnecessary `?.`s with `.`. e711486873 [vm,dart:io,fuchsia] Be happy with any open fd for Stdio handles if fstat fails 0bf8a1e591 Update breaking-changes.md f08e213bb1 Extract CONST_MAP_KEY_EXPRESSION_TYPE_IMPLEMENTS_EQUALS tests. 2b00685d38 Make SetOrMapLiteral set/map unless we are linking, so going to infer it. bc5d613533 Fix typo in diagnostic when non-bool is passed to logical or. --- DEPS | 2 +- ci/licenses_golden/licenses_third_party | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 47a0facf7e9b2..6ce4cd4b4a5a0 100644 --- a/DEPS +++ b/DEPS @@ -31,7 +31,7 @@ vars = { # Dart is: https://github.com/dart-lang/sdk/blob/master/DEPS. # You can use //tools/dart/create_updated_flutter_deps.py to produce # updated revision list of existing dependencies. - 'dart_revision': '7d560f8385eaeee0fd95ec08e25db0c217b1cd3e', + 'dart_revision': '7418238239f885ba92093c44a1768f8ec93b121f', # WARNING: DO NOT EDIT MANUALLY # The lines between blank lines above and below are generated by a script. See create_updated_flutter_deps.py diff --git a/ci/licenses_golden/licenses_third_party b/ci/licenses_golden/licenses_third_party index a957b5281d8ba..c447c7b75883c 100644 --- a/ci/licenses_golden/licenses_third_party +++ b/ci/licenses_golden/licenses_third_party @@ -1,4 +1,4 @@ -Signature: 16a53deb75e70c3091e030f3f0214527 +Signature: c9257a9b2c77469fbf18cd1859ef65ba UNUSED LICENSES: From 7a6bb9998ed4ce7705beb59018c9e1f068d50476 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Thu, 14 Mar 2019 17:13:55 -0400 Subject: [PATCH 1382/1537] Roll src/third_party/skia feb720f746dc..512e38091c85 (11 commits) (#8169) https://skia.googlesource.com/skia.git/%2Blog/feb720f746dc..512e38091c85 git log feb720f746dcecfd80e47b060d620c3ffa29a43b..512e38091c8511847334b89365d46cbb0452309a --date=short --no-merges --format=%ad %ae %s 2019-03-14 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/angle2 37b996425a0e..979f3bbe2c50 (5 commits) 2019-03-14 recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com Roll recipe dependencies (trivial). 2019-03-14 mtklein@google.com skvx: allow more implicit conversions 2019-03-14 michaelludwig@google.com Avoid unsafe casts to int in SkNx 2019-03-14 mtklein@google.com update docs for SkLumaColorFilter 2019-03-14 recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com Roll recipe dependencies (trivial). 2019-03-14 ethannicholas@google.com re-re-fixed RelaxedPrecision 2019-03-14 robertphillips@google.com Allocate the backing SkBitmap in the SerializedImageFilter fuzzer 2019-03-14 recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com Roll recipe dependencies (trivial). 2019-03-14 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader eb7cf3c4b0b1..af973b67141e (2 commits) 2019-03-14 michaelludwig@google.com Reland "Update SkCanvas' experimental SkiaRenderer API" The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (benjaminwagner@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 6ce4cd4b4a5a0..b28772df19a33 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'feb720f746dcecfd80e47b060d620c3ffa29a43b', + 'skia_revision': '512e38091c8511847334b89365d46cbb0452309a', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 8722498d7cb2b..5393cbab00488 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: d9f6707a9eabeae331acff2af41e7b80 +Signature: 0b30f75a389dd244bf9fe53576e7b76c UNUSED LICENSES: From 246f0e3f4ab402ece70784d86f3c0a230c40c02a Mon Sep 17 00:00:00 2001 From: Chinmay Garde Date: Thu, 14 Mar 2019 14:15:46 -0700 Subject: [PATCH 1383/1537] Add an allocator specific check to ensure that strings passed to the timeline are not heap allocated. (#8168) Verified that the tests fail on issues like https://github.com/flutter/engine/pull/8166. Unfortunately, there is no x-platform way to perform this check but this should gate incorrect traces being added to the engine. --- fml/trace_event.cc | 59 +++++++++++++++++++++--------- shell/platform/embedder/embedder.h | 10 +++-- 2 files changed, 49 insertions(+), 20 deletions(-) diff --git a/fml/trace_event.cc b/fml/trace_event.cc index fc0ee72f4021b..434e7883d981b 100644 --- a/fml/trace_event.cc +++ b/fml/trace_event.cc @@ -6,8 +6,28 @@ #include +#include "flutter/fml/build_config.h" #include "flutter/fml/logging.h" +#if OS_MACOSX && !defined(NDEBUG) + +#include + +#define DCHECK_LITERAL(x) \ + ({ \ + do { \ + FML_DCHECK(malloc_size((x)) == 0) \ + << "Timeline string must not be on the heap."; \ + } while (0); \ + ((x)); \ + }) + +#else // OS_MACOSX + +#define DCHECK_LITERAL(x) ((x)) + +#endif // OS_MACOSX + namespace fml { namespace tracing { @@ -23,11 +43,15 @@ void TraceTimelineEvent(TraceArg category_group, c_values.resize(argument_count, nullptr); for (size_t i = 0; i < argument_count; i++) { +#if !defined(NDEBUG) + DCHECK_LITERAL(c_names[i]); +#endif // !defined(NDEBUG) + c_values[i] = values[i].c_str(); } Dart_TimelineEvent( - name, // label + DCHECK_LITERAL(name), // label Dart_TimelineGetMicros(), // timestamp0 identifier, // timestamp1_or_async_id type, // event type @@ -38,7 +62,7 @@ void TraceTimelineEvent(TraceArg category_group, } void TraceEvent0(TraceArg category_group, TraceArg name) { - Dart_TimelineEvent(name, // label + Dart_TimelineEvent(DCHECK_LITERAL(name), // label Dart_TimelineGetMicros(), // timestamp0 0, // timestamp1_or_async_id Dart_Timeline_Event_Begin, // event type @@ -52,9 +76,9 @@ void TraceEvent1(TraceArg category_group, TraceArg name, TraceArg arg1_name, TraceArg arg1_val) { - const char* arg_names[] = {arg1_name}; + const char* arg_names[] = {DCHECK_LITERAL(arg1_name)}; const char* arg_values[] = {arg1_val}; - Dart_TimelineEvent(name, // label + Dart_TimelineEvent(DCHECK_LITERAL(name), // label Dart_TimelineGetMicros(), // timestamp0 0, // timestamp1_or_async_id Dart_Timeline_Event_Begin, // event type @@ -70,9 +94,10 @@ void TraceEvent2(TraceArg category_group, TraceArg arg1_val, TraceArg arg2_name, TraceArg arg2_val) { - const char* arg_names[] = {arg1_name, arg2_name}; + const char* arg_names[] = {DCHECK_LITERAL(arg1_name), + DCHECK_LITERAL(arg2_name)}; const char* arg_values[] = {arg1_val, arg2_val}; - Dart_TimelineEvent(name, // label + Dart_TimelineEvent(DCHECK_LITERAL(name), // label Dart_TimelineGetMicros(), // timestamp0 0, // timestamp1_or_async_id Dart_Timeline_Event_Begin, // event type @@ -83,7 +108,7 @@ void TraceEvent2(TraceArg category_group, } void TraceEventEnd(TraceArg name) { - Dart_TimelineEvent(name, // label + Dart_TimelineEvent(DCHECK_LITERAL(name), // label Dart_TimelineGetMicros(), // timestamp0 0, // timestamp1_or_async_id Dart_Timeline_Event_End, // event type @@ -96,7 +121,7 @@ void TraceEventEnd(TraceArg name) { void TraceEventAsyncBegin0(TraceArg category_group, TraceArg name, TraceIDArg id) { - Dart_TimelineEvent(name, // label + Dart_TimelineEvent(DCHECK_LITERAL(name), // label Dart_TimelineGetMicros(), // timestamp0 id, // timestamp1_or_async_id Dart_Timeline_Event_Async_Begin, // event type @@ -109,7 +134,7 @@ void TraceEventAsyncBegin0(TraceArg category_group, void TraceEventAsyncEnd0(TraceArg category_group, TraceArg name, TraceIDArg id) { - Dart_TimelineEvent(name, // label + Dart_TimelineEvent(DCHECK_LITERAL(name), // label Dart_TimelineGetMicros(), // timestamp0 id, // timestamp1_or_async_id Dart_Timeline_Event_Async_End, // event type @@ -124,9 +149,9 @@ void TraceEventAsyncBegin1(TraceArg category_group, TraceIDArg id, TraceArg arg1_name, TraceArg arg1_val) { - const char* arg_names[] = {arg1_name}; + const char* arg_names[] = {DCHECK_LITERAL(arg1_name)}; const char* arg_values[] = {arg1_val}; - Dart_TimelineEvent(name, // label + Dart_TimelineEvent(DCHECK_LITERAL(name), // label Dart_TimelineGetMicros(), // timestamp0 id, // timestamp1_or_async_id Dart_Timeline_Event_Async_Begin, // event type @@ -141,9 +166,9 @@ void TraceEventAsyncEnd1(TraceArg category_group, TraceIDArg id, TraceArg arg1_name, TraceArg arg1_val) { - const char* arg_names[] = {arg1_name}; + const char* arg_names[] = {DCHECK_LITERAL(arg1_name)}; const char* arg_values[] = {arg1_val}; - Dart_TimelineEvent(name, // label + Dart_TimelineEvent(DCHECK_LITERAL(name), // label Dart_TimelineGetMicros(), // timestamp0 id, // timestamp1_or_async_id Dart_Timeline_Event_Async_End, // event type @@ -154,7 +179,7 @@ void TraceEventAsyncEnd1(TraceArg category_group, } void TraceEventInstant0(TraceArg category_group, TraceArg name) { - Dart_TimelineEvent(name, // label + Dart_TimelineEvent(DCHECK_LITERAL(name), // label Dart_TimelineGetMicros(), // timestamp0 0, // timestamp1_or_async_id Dart_Timeline_Event_Instant, // event type @@ -167,7 +192,7 @@ void TraceEventInstant0(TraceArg category_group, TraceArg name) { void TraceEventFlowBegin0(TraceArg category_group, TraceArg name, TraceIDArg id) { - Dart_TimelineEvent(name, // label + Dart_TimelineEvent(DCHECK_LITERAL(name), // label Dart_TimelineGetMicros(), // timestamp0 id, // timestamp1_or_async_id Dart_Timeline_Event_Flow_Begin, // event type @@ -180,7 +205,7 @@ void TraceEventFlowBegin0(TraceArg category_group, void TraceEventFlowStep0(TraceArg category_group, TraceArg name, TraceIDArg id) { - Dart_TimelineEvent(name, // label + Dart_TimelineEvent(DCHECK_LITERAL(name), // label Dart_TimelineGetMicros(), // timestamp0 id, // timestamp1_or_async_id Dart_Timeline_Event_Flow_Step, // event type @@ -191,7 +216,7 @@ void TraceEventFlowStep0(TraceArg category_group, } void TraceEventFlowEnd0(TraceArg category_group, TraceArg name, TraceIDArg id) { - Dart_TimelineEvent(name, // label + Dart_TimelineEvent(DCHECK_LITERAL(name), // label Dart_TimelineGetMicros(), // timestamp0 id, // timestamp1_or_async_id Dart_Timeline_Event_Flow_End, // event type diff --git a/shell/platform/embedder/embedder.h b/shell/platform/embedder/embedder.h index 2299650a68ebe..8f2453867276b 100644 --- a/shell/platform/embedder/embedder.h +++ b/shell/platform/embedder/embedder.h @@ -674,7 +674,8 @@ FlutterEngineResult FlutterEngineOnVsync(FlutterEngine engine, // the timeline is unavailable or disabled, this has no effect. Must be // balanced with an duration end event (via // |FlutterEngineTraceEventDurationEnd|) with the same name on the same thread. -// Can be called on any thread. +// Can be called on any thread. Strings passed into the function will NOT be +// copied when added to the timeline. Only string literals may be passed in. FLUTTER_EXPORT void FlutterEngineTraceEventDurationBegin(const char* name); @@ -682,13 +683,16 @@ void FlutterEngineTraceEventDurationBegin(const char* name); // timeline is unavailable or disabled, this has no effect. This call must be // preceded by a trace duration begin call (via // |FlutterEngineTraceEventDurationBegin|) with the same name on the same -// thread. Can be called on any thread. +// thread. Can be called on any thread. Strings passed into the function will +// NOT be copied when added to the timeline. Only string literals may be passed +// in. FLUTTER_EXPORT void FlutterEngineTraceEventDurationEnd(const char* name); // A profiling utility. Logs a trace duration instant event to the timeline. If // the timeline is unavailable or disabled, this has no effect. Can be called -// on any thread. +// on any thread. Strings passed into the function will NOT be copied when added +// to the timeline. Only string literals may be passed in. FLUTTER_EXPORT void FlutterEngineTraceEventInstant(const char* name); From 09db84fad6299947211d705a7e202093223294a1 Mon Sep 17 00:00:00 2001 From: Matt Carroll Date: Thu, 14 Mar 2019 14:24:49 -0700 Subject: [PATCH 1384/1537] Android Embedding PR 19: Add accessibility to new FlutterView. (#8109) --- .../embedding/engine/FlutterEngine.java | 2 +- .../flutter/embedding/engine/FlutterJNI.java | 56 ++++++++++-- .../engine/android/FlutterFragment.java | 5 -- .../engine/android/FlutterSurfaceView.java | 10 --- .../engine/android/FlutterTextureView.java | 10 --- .../embedding/engine/android/FlutterView.java | 56 ++++++++++-- .../engine/renderer/FlutterRenderer.java | 8 +- .../systemchannels/AccessibilityChannel.java | 65 +++++++++++++- .../io/flutter/view/AccessibilityBridge.java | 87 ++++++++++--------- .../android/io/flutter/view/FlutterView.java | 3 +- 10 files changed, 207 insertions(+), 95 deletions(-) diff --git a/shell/platform/android/io/flutter/embedding/engine/FlutterEngine.java b/shell/platform/android/io/flutter/embedding/engine/FlutterEngine.java index 74bab64129119..2b941f3d01a05 100644 --- a/shell/platform/android/io/flutter/embedding/engine/FlutterEngine.java +++ b/shell/platform/android/io/flutter/embedding/engine/FlutterEngine.java @@ -110,7 +110,7 @@ public FlutterEngine(@NonNull Context context) { // TODO(mattcarroll): FlutterRenderer is temporally coupled to attach(). Remove that coupling if possible. this.renderer = new FlutterRenderer(flutterJNI); - accessibilityChannel = new AccessibilityChannel(dartExecutor); + accessibilityChannel = new AccessibilityChannel(dartExecutor, flutterJNI); keyEventChannel = new KeyEventChannel(dartExecutor); lifecycleChannel = new LifecycleChannel(dartExecutor); localizationChannel = new LocalizationChannel(dartExecutor); diff --git a/shell/platform/android/io/flutter/embedding/engine/FlutterJNI.java b/shell/platform/android/io/flutter/embedding/engine/FlutterJNI.java index 41e128ecd63f7..f8405852a5217 100644 --- a/shell/platform/android/io/flutter/embedding/engine/FlutterJNI.java +++ b/shell/platform/android/io/flutter/embedding/engine/FlutterJNI.java @@ -97,6 +97,7 @@ public class FlutterJNI { private Long nativePlatformViewId; private FlutterRenderer.RenderSurface renderSurface; + private AccessibilityDelegate accessibilityDelegate; private PlatformMessageHandler platformMessageHandler; private final Set engineLifecycleListeners = new HashSet<>(); private final Set firstFrameListeners = new HashSet<>(); @@ -106,9 +107,7 @@ public class FlutterJNI { * * Flutter expects a user interface to exist on the platform side (Android), and that interface * is expected to offer some capabilities that Flutter depends upon. The {@link FlutterRenderer.RenderSurface} - * interface represents those expectations. For example, Flutter expects to be able to request - * that its user interface "update custom accessibility actions" and therefore the delegate interface - * declares a corresponding method, {@link FlutterRenderer.RenderSurface#updateCustomAccessibilityActions(ByteBuffer, String[])}. + * interface represents those expectations. * * If an app includes a user interface that renders a Flutter UI then a {@link FlutterRenderer.RenderSurface} * should be set (this is the typical Flutter scenario). If no UI is being rendered, such as a @@ -123,7 +122,22 @@ public void setRenderSurface(@Nullable FlutterRenderer.RenderSurface renderSurfa } /** - * Call invoked by native to be forwarded to an {@link io.flutter.view.AccessibilityBridge}. + * Sets the {@link AccessibilityDelegate} for the attached Flutter context. + * + * The {@link AccessibilityDelegate} is responsible for maintaining an Android-side cache of + * Flutter's semantics tree and custom accessibility actions. This cache should be hooked up + * to Android's accessibility system. + * + * See {@link AccessibilityBridge} for an example of an {@link AccessibilityDelegate} and the + * surrounding responsibilities. + */ + @UiThread + public void setAccessibilityDelegate(@Nullable AccessibilityDelegate accessibilityDelegate) { + this.accessibilityDelegate = accessibilityDelegate; + } + + /** + * Invoked by native to send semantics tree updates from Flutter to Android. * * The {@code buffer} and {@code strings} form a communication protocol that is implemented here: * https://github.com/flutter/engine/blob/master/shell/platform/android/platform_view_android.cc#L207 @@ -131,14 +145,14 @@ public void setRenderSurface(@Nullable FlutterRenderer.RenderSurface renderSurfa @SuppressWarnings("unused") @UiThread private void updateSemantics(ByteBuffer buffer, String[] strings) { - if (renderSurface != null) { - renderSurface.updateSemantics(buffer, strings); + if (accessibilityDelegate != null) { + accessibilityDelegate.updateSemantics(buffer, strings); } // TODO(mattcarroll): log dropped messages when in debug mode (https://github.com/flutter/flutter/issues/25391) } /** - * Call invoked by native to be forwarded to an {@link io.flutter.view.AccessibilityBridge}. + * Invoked by native to send new custom accessibility events from Flutter to Android. * * The {@code buffer} and {@code strings} form a communication protocol that is implemented here: * https://github.com/flutter/engine/blob/master/shell/platform/android/platform_view_android.cc#L207 @@ -148,8 +162,8 @@ private void updateSemantics(ByteBuffer buffer, String[] strings) { @SuppressWarnings("unused") @UiThread private void updateCustomAccessibilityActions(ByteBuffer buffer, String[] strings) { - if (renderSurface != null) { - renderSurface.updateCustomAccessibilityActions(buffer, strings); + if (accessibilityDelegate != null) { + accessibilityDelegate.updateCustomAccessibilityActions(buffer, strings); } // TODO(mattcarroll): log dropped messages when in debug mode (https://github.com/flutter/flutter/issues/25391) } @@ -532,4 +546,28 @@ private void ensureAttachedToNative() { throw new RuntimeException("Cannot execute operation because FlutterJNI is not attached to native."); } } + + /** + * Delegate responsible for creating and updating Android-side caches of Flutter's semantics + * tree and custom accessibility actions. + * + * {@link AccessibilityBridge} is an example of an {@code AccessibilityDelegate}. + */ + public interface AccessibilityDelegate { + /** + * Sends new custom accessibility actions from Flutter to Android. + * + * Implementers are expected to maintain an Android-side cache of custom accessibility actions. + * This method provides new actions to add to that cache. + */ + void updateCustomAccessibilityActions(ByteBuffer buffer, String[] strings); + + /** + * Sends new {@code SemanticsNode} information from Flutter to Android. + * + * Implementers are expected to maintain an Android-side cache of Flutter's semantics tree. + * This method provides updates from Flutter for the Android-side semantics tree cache. + */ + void updateSemantics(ByteBuffer buffer, String[] strings); + } } diff --git a/shell/platform/android/io/flutter/embedding/engine/android/FlutterFragment.java b/shell/platform/android/io/flutter/embedding/engine/android/FlutterFragment.java index 47defdf13367a..bc19348f7f06a 100644 --- a/shell/platform/android/io/flutter/embedding/engine/android/FlutterFragment.java +++ b/shell/platform/android/io/flutter/embedding/engine/android/FlutterFragment.java @@ -336,11 +336,6 @@ public void onPostResume() { // to platformPlugin. We're implicitly entangling the Window, Activity, Fragment, // and engine all with this one call. platformPlugin.onPostResume(); - - // TODO(mattcarroll): consider a more abstract way to invoke this behavior. It is very strange for - // a Fragment to have a seemingly random View responsibility, but this is what - // existed in the original embedding and I don't have a good alternative yet. - flutterView.updateAccessibilityFeatures(); } else { Log.w(TAG, "onPostResume() invoked before FlutterFragment was attached to an Activity."); } diff --git a/shell/platform/android/io/flutter/embedding/engine/android/FlutterSurfaceView.java b/shell/platform/android/io/flutter/embedding/engine/android/FlutterSurfaceView.java index cbff0b4ac828c..944e26b7c84a8 100644 --- a/shell/platform/android/io/flutter/embedding/engine/android/FlutterSurfaceView.java +++ b/shell/platform/android/io/flutter/embedding/engine/android/FlutterSurfaceView.java @@ -172,16 +172,6 @@ private void disconnectSurfaceFromRenderer() { flutterRenderer.surfaceDestroyed(); } - @Override - public void updateCustomAccessibilityActions(ByteBuffer buffer, String[] strings) { - // TODO(mattcarroll): refactor RenderSurface to move this method somewhere else. - } - - @Override - public void updateSemantics(ByteBuffer buffer, String[] strings) { - // TODO(mattcarroll): refactor RenderSurface to move this method somewhere else. - } - @Override public void onFirstFrameRendered() { // TODO(mattcarroll): decide where this method should live and what it needs to do. diff --git a/shell/platform/android/io/flutter/embedding/engine/android/FlutterTextureView.java b/shell/platform/android/io/flutter/embedding/engine/android/FlutterTextureView.java index f39c6d4e77a82..048fc71a4430f 100644 --- a/shell/platform/android/io/flutter/embedding/engine/android/FlutterTextureView.java +++ b/shell/platform/android/io/flutter/embedding/engine/android/FlutterTextureView.java @@ -183,16 +183,6 @@ private void disconnectSurfaceFromRenderer() { flutterRenderer.surfaceDestroyed(); } - @Override - public void updateCustomAccessibilityActions(ByteBuffer buffer, String[] strings) { - // TODO(mattcarroll): refactor RenderSurface to move this method somewhere else. - } - - @Override - public void updateSemantics(ByteBuffer buffer, String[] strings) { - // TODO(mattcarroll): refactor RenderSurface to move this method somewhere else. - } - @Override public void onFirstFrameRendered() { // TODO(mattcarroll): decide where this method should live and what it needs to do. diff --git a/shell/platform/android/io/flutter/embedding/engine/android/FlutterView.java b/shell/platform/android/io/flutter/embedding/engine/android/FlutterView.java index 23bd68c5759d8..e8216f97b360a 100644 --- a/shell/platform/android/io/flutter/embedding/engine/android/FlutterView.java +++ b/shell/platform/android/io/flutter/embedding/engine/android/FlutterView.java @@ -21,6 +21,8 @@ import android.view.MotionEvent; import android.view.WindowInsets; import android.view.WindowManager; +import android.view.accessibility.AccessibilityManager; +import android.view.accessibility.AccessibilityNodeProvider; import android.view.inputmethod.EditorInfo; import android.view.inputmethod.InputConnection; import android.widget.FrameLayout; @@ -31,7 +33,9 @@ import io.flutter.embedding.engine.FlutterEngine; import io.flutter.embedding.engine.renderer.FlutterRenderer; +import io.flutter.embedding.engine.systemchannels.AccessibilityChannel; import io.flutter.plugin.editing.TextInputPlugin; +import io.flutter.view.AccessibilityBridge; import io.flutter.view.VsyncWaiter; /** @@ -81,10 +85,19 @@ public class FlutterView extends FrameLayout { private AndroidKeyProcessor androidKeyProcessor; @Nullable private AndroidTouchProcessor androidTouchProcessor; + @Nullable + private AccessibilityBridge accessibilityBridge; // Directly implemented View behavior that communicates with Flutter. private final FlutterRenderer.ViewportMetrics viewportMetrics = new FlutterRenderer.ViewportMetrics(); + private final AccessibilityBridge.OnAccessibilityChangeListener onAccessibilityChangeListener = new AccessibilityBridge.OnAccessibilityChangeListener() { + @Override + public void onAccessibilityChanged(boolean isAccessibilityEnabled, boolean isTouchExplorationEnabled) { + resetWillNotDraw(isAccessibilityEnabled, isTouchExplorationEnabled); + } + }; + /** * Constructs a {@code FlutterSurfaceView} programmatically, without any XML attributes. * @@ -357,17 +370,35 @@ public boolean onHoverEvent(MotionEvent event) { return super.onHoverEvent(event); } - // TODO(mattcarroll): hook up to accessibility. - return false; + boolean handled = accessibilityBridge.onAccessibilityHoverEvent(event); + if (!handled) { + // TODO(ianh): Expose hover events to the platform, + // implementing ADD, REMOVE, etc. + } + return handled; } //-------- End: Process UI I/O that Flutter cares about. --------- //-------- Start: Accessibility ------- - /** - * No-op. Placeholder so that the containing Fragment can call through, but not yet implemented. - */ - public void updateAccessibilityFeatures() { - // TODO(mattcarroll): bring in accessibility code from old FlutterView. + @Override + public AccessibilityNodeProvider getAccessibilityNodeProvider() { + if (accessibilityBridge != null && accessibilityBridge.isAccessibilityEnabled()) { + return accessibilityBridge; + } else { + // TODO(goderbauer): when a11y is off this should return a one-off snapshot of + // the a11y + // tree. + return null; + } + } + + // TODO(mattcarroll): Confer with Ian as to why we need this method. Delete if possible, otherwise add comments. + private void resetWillNotDraw(boolean isAccessibilityEnabled, boolean isTouchExplorationEnabled) { + if (!flutterEngine.getRenderer().isSoftwareRenderingEnabled()) { + setWillNotDraw(!(isAccessibilityEnabled || isTouchExplorationEnabled)); + } else { + setWillNotDraw(false); + } } //-------- End: Accessibility --------- @@ -412,6 +443,17 @@ public void attachToFlutterEngine(@NonNull FlutterEngine flutterEngine) { textInputPlugin ); androidTouchProcessor = new AndroidTouchProcessor(this.flutterEngine.getRenderer()); + accessibilityBridge = new AccessibilityBridge( + this, + flutterEngine.getAccessibilityChannel(), + (AccessibilityManager) getContext().getSystemService(Context.ACCESSIBILITY_SERVICE), + getContext().getContentResolver() + ); + accessibilityBridge.setOnAccessibilityChangeListener(onAccessibilityChangeListener); + resetWillNotDraw( + accessibilityBridge.isAccessibilityEnabled(), + accessibilityBridge.isTouchExplorationEnabled() + ); // Inform the Android framework that it should retrieve a new InputConnection // now that an engine is attached. diff --git a/shell/platform/android/io/flutter/embedding/engine/renderer/FlutterRenderer.java b/shell/platform/android/io/flutter/embedding/engine/renderer/FlutterRenderer.java index 35dacea6d467d..dd0e198c1f26a 100644 --- a/shell/platform/android/io/flutter/embedding/engine/renderer/FlutterRenderer.java +++ b/shell/platform/android/io/flutter/embedding/engine/renderer/FlutterRenderer.java @@ -233,7 +233,7 @@ public void dispatchSemanticsAction(int id, * UI. * * A {@code RenderSurface} is responsible for carrying out behaviors that are needed by a - * corresponding {@link FlutterRenderer}, e.g., {@link #updateSemantics(ByteBuffer, String[])}. + * corresponding {@link FlutterRenderer}. * * A {@code RenderSurface} also receives callbacks for important events, e.g., * {@link #onFirstFrameRendered()}. @@ -255,12 +255,6 @@ public interface RenderSurface { */ void detachFromRenderer(); - // TODO(mattcarroll): describe what this callback is intended to do - void updateCustomAccessibilityActions(ByteBuffer buffer, String[] strings); - - // TODO(mattcarroll): describe what this callback is intended to do - void updateSemantics(ByteBuffer buffer, String[] strings); - /** * The {@link FlutterRenderer} corresponding to this {@code RenderSurface} has painted its * first frame since being initialized. diff --git a/shell/platform/android/io/flutter/embedding/engine/systemchannels/AccessibilityChannel.java b/shell/platform/android/io/flutter/embedding/engine/systemchannels/AccessibilityChannel.java index 7eed2619bebda..c4252e234df0a 100644 --- a/shell/platform/android/io/flutter/embedding/engine/systemchannels/AccessibilityChannel.java +++ b/shell/platform/android/io/flutter/embedding/engine/systemchannels/AccessibilityChannel.java @@ -4,10 +4,13 @@ import android.support.annotation.Nullable; import java.util.HashMap; +import java.util.Map; +import io.flutter.embedding.engine.FlutterJNI; import io.flutter.embedding.engine.dart.DartExecutor; import io.flutter.plugin.common.BasicMessageChannel; import io.flutter.plugin.common.StandardMessageCodec; +import io.flutter.view.AccessibilityBridge; /** * System channel that sends accessibility requests and events from Flutter to Android. @@ -17,7 +20,9 @@ */ public class AccessibilityChannel { @NonNull - public BasicMessageChannel channel; + public final BasicMessageChannel channel; + @NonNull + public final FlutterJNI flutterJNI; @Nullable private AccessibilityMessageHandler handler; @@ -76,9 +81,62 @@ public void onMessage(Object message, BasicMessageChannel.Reply reply) { * * See {@link DartExecutor}. */ - public AccessibilityChannel(@NonNull DartExecutor dartExecutor) { + public AccessibilityChannel(@NonNull DartExecutor dartExecutor, @NonNull FlutterJNI flutterJNI) { channel = new BasicMessageChannel<>(dartExecutor, "flutter/accessibility", StandardMessageCodec.INSTANCE); channel.setMessageHandler(parsingMessageHandler); + this.flutterJNI = flutterJNI; + } + + /** + * Informs Flutter that the Android OS currently has accessibility enabled. + * + * To accommodate enabled accessibility, this method instructs Flutter to activate + * its semantics tree, which forms the basis of Flutter's accessibility support. + */ + public void onAndroidAccessibilityEnabled() { + flutterJNI.setSemanticsEnabled(true); + } + + /** + * Informs Flutter that the Android OS currently has accessibility disabled. + * + * Given that accessibility is not required at this time, this method instructs Flutter + * to deactivate its semantics tree. + */ + public void onAndroidAccessibilityDisabled() { + flutterJNI.setSemanticsEnabled(false); + } + + /** + * Instructs Flutter to activate/deactivate accessibility features corresponding to the + * flags provided by {@code accessibilityFeatureFlags}. + */ + public void setAccessibilityFeatures(int accessibilityFeatureFlags) { + flutterJNI.setAccessibilityFeatures(accessibilityFeatureFlags); + } + + /** + * Instructs Flutter to perform the given {@code action} on the {@code SemanticsNode} + * referenced by the given {@code virtualViewId}. + * + * One might wonder why Flutter would need to be instructed that the user wants to perform + * an action. When the user is touching the screen in accessibility mode, Android takes over the + * touch input, categorizing input as one of a many accessibility gestures. Therefore, Flutter + * does not have an opportunity to react to said touch input. Instead, Flutter must be notified + * by Android of the desired action. Additionally, some accessibility systems use other input + * methods, such as speech, to take virtual actions. Android interprets those requests and then + * instructs the app to take the appropriate action. + */ + public void dispatchSemanticsAction(int virtualViewId, @NonNull AccessibilityBridge.Action action) { + flutterJNI.dispatchSemanticsAction(virtualViewId, action); + } + + /** + * Instructs Flutter to perform the given {@code action} on the {@code SemanticsNode} + * referenced by the given {@code virtualViewId}, passing the given {@code args}. + */ + public void dispatchSemanticsAction(int virtualViewId, @NonNull AccessibilityBridge.Action action, @Nullable Object args) { + flutterJNI.dispatchSemanticsAction(virtualViewId, action, args); } /** @@ -87,6 +145,7 @@ public AccessibilityChannel(@NonNull DartExecutor dartExecutor) { */ public void setAccessibilityMessageHandler(@Nullable AccessibilityMessageHandler handler) { this.handler = handler; + flutterJNI.setAccessibilityDelegate(handler); } /** @@ -96,7 +155,7 @@ public void setAccessibilityMessageHandler(@Nullable AccessibilityMessageHandler * To register an {@code AccessibilityMessageHandler} with a {@link AccessibilityChannel}, * see {@link AccessibilityChannel#setAccessibilityMessageHandler(AccessibilityMessageHandler)}. */ - public interface AccessibilityMessageHandler { + public interface AccessibilityMessageHandler extends FlutterJNI.AccessibilityDelegate { /** * The Dart application would like the given {@code message} to be announced. */ diff --git a/shell/platform/android/io/flutter/view/AccessibilityBridge.java b/shell/platform/android/io/flutter/view/AccessibilityBridge.java index 3c262fa9fe63d..b0f8e92888de7 100644 --- a/shell/platform/android/io/flutter/view/AccessibilityBridge.java +++ b/shell/platform/android/io/flutter/view/AccessibilityBridge.java @@ -32,6 +32,7 @@ import io.flutter.util.Predicate; import java.nio.ByteBuffer; +import java.nio.ByteOrder; import java.util.*; /** @@ -48,7 +49,6 @@ * {@link #rootAccessibilityView} is expected to notify the {@code AccessibilityBridge} of * relevant interactions: {@link #onAccessibilityHoverEvent(MotionEvent)}, {@link #reset()}, * {@link #updateSemantics(ByteBuffer, String[])}, and {@link #updateCustomAccessibilityActions(ByteBuffer, String[])} - *
  • A {@link FlutterJNI} instance, corresponding to the running Flutter app.
  • *
  • An {@link AccessibilityChannel} that is connected to the running Flutter app.
  • *
  • Android's {@link AccessibilityManager} to query and listen for accessibility settings.
  • *
  • Android's {@link ContentResolver} to listen for changes to system animation settings.
  • @@ -60,12 +60,6 @@ * accessibility events may be consumed by a Flutter widget, as if it were an Android * {@link View}. {@code AccessibilityBridge} refers to Flutter's accessible widgets as * "virtual views" and identifies them with "virtual view IDs". - * - * Most communication between the Android OS accessibility system and Flutter's accessibility - * system is achieved via the {@link AccessibilityChannel} system channel. However, some - * information is exchanged directly between the Android embedding and Flutter framework - * via {@link FlutterJNI}. - * TODO(mattcarroll): consider moving FlutterJNI calls over to AccessibilityChannel */ public class AccessibilityBridge extends AccessibilityNodeProvider { private static final String TAG = "AccessibilityBridge"; @@ -86,10 +80,6 @@ public class AccessibilityBridge extends AccessibilityNodeProvider { @NonNull private final View rootAccessibilityView; - // Direct interface between Flutter's Android embedding and the Flutter framework. - @NonNull - private final FlutterJNI flutterJNI; - // The accessibility communication API between Flutter's Android embedding and // the Flutter framework. @NonNull @@ -239,6 +229,24 @@ public void onTooltip(@NonNull String message) { e.getText().add(message); sendAccessibilityEvent(e); } + + /** + * New custom accessibility actions exist in Flutter. Update our Android-side cache. + */ + @Override + public void updateCustomAccessibilityActions(ByteBuffer buffer, String[] strings) { + buffer.order(ByteOrder.LITTLE_ENDIAN); + AccessibilityBridge.this.updateCustomAccessibilityActions(buffer, strings); + } + + /** + * Flutter's semantics tree has changed. Update our Android-side cache. + */ + @Override + public void updateSemantics(ByteBuffer buffer, String[] strings) { + buffer.order(ByteOrder.LITTLE_ENDIAN); + AccessibilityBridge.this.updateSemantics(buffer, strings); + } }; // Listener that is notified when accessibility is turned on/off. @@ -247,10 +255,10 @@ public void onTooltip(@NonNull String message) { public void onAccessibilityStateChanged(boolean accessibilityEnabled) { if (accessibilityEnabled) { accessibilityChannel.setAccessibilityMessageHandler(accessibilityMessageHandler); - flutterJNI.setSemanticsEnabled(true); + accessibilityChannel.onAndroidAccessibilityEnabled(); } else { accessibilityChannel.setAccessibilityMessageHandler(null); - flutterJNI.setSemanticsEnabled(false); + accessibilityChannel.onAndroidAccessibilityDisabled(); } if (onAccessibilityChangeListener != null) { @@ -295,15 +303,13 @@ public void onChange(boolean selfChange, Uri uri) { } }; - AccessibilityBridge( + public AccessibilityBridge( @NonNull View rootAccessibilityView, - @NonNull FlutterJNI flutterJNI, @NonNull AccessibilityChannel accessibilityChannel, @NonNull AccessibilityManager accessibilityManager, @NonNull ContentResolver contentResolver ) { this.rootAccessibilityView = rootAccessibilityView; - this.flutterJNI = flutterJNI; this.accessibilityChannel = accessibilityChannel; this.accessibilityManager = accessibilityManager; this.contentResolver = contentResolver; @@ -391,10 +397,10 @@ public void setOnAccessibilityChangeListener(@Nullable OnAccessibilityChangeList } /** - * Sends the current value of {@link #accessibilityFeatureFlags} to Flutter via {@link FlutterJNI}. + * Sends the current value of {@link #accessibilityFeatureFlags} to Flutter. */ private void sendLatestAccessibilityFlagsToFlutter() { - flutterJNI.setAccessibilityFeatures(accessibilityFeatureFlags); + accessibilityChannel.setAccessibilityFeatures(accessibilityFeatureFlags); } private boolean shouldSetCollectionInfo(final SemanticsNode semanticsNode) { @@ -712,8 +718,7 @@ public AccessibilityNodeInfo createAccessibilityNodeInfo(int virtualViewId) { * In a traditional Android app, the given view ID refers to a {@link View} within an Android * {@link View} hierarchy. Flutter does not have an Android {@link View} hierarchy, therefore * the given view ID is a {@code virtualViewId} that refers to a {@code SemanticsNode} within - * a Flutter app. The given arguments of this method are forwarded from Android to Flutter - * via {@link FlutterJNI}. + * a Flutter app. The given arguments of this method are forwarded from Android to Flutter. */ @Override public boolean performAction(int virtualViewId, int accessibilityAction, @Nullable Bundle arguments) { @@ -726,27 +731,27 @@ public boolean performAction(int virtualViewId, int accessibilityAction, @Nullab // Note: TalkBack prior to Oreo doesn't use this handler and instead simulates a // click event at the center of the SemanticsNode. Other a11y services might go // through this handler though. - flutterJNI.dispatchSemanticsAction(virtualViewId, Action.TAP); + accessibilityChannel.dispatchSemanticsAction(virtualViewId, Action.TAP); return true; } case AccessibilityNodeInfo.ACTION_LONG_CLICK: { // Note: TalkBack doesn't use this handler and instead simulates a long click event // at the center of the SemanticsNode. Other a11y services might go through this // handler though. - flutterJNI.dispatchSemanticsAction(virtualViewId, Action.LONG_PRESS); + accessibilityChannel.dispatchSemanticsAction(virtualViewId, Action.LONG_PRESS); return true; } case AccessibilityNodeInfo.ACTION_SCROLL_FORWARD: { if (semanticsNode.hasAction(Action.SCROLL_UP)) { - flutterJNI.dispatchSemanticsAction(virtualViewId, Action.SCROLL_UP); + accessibilityChannel.dispatchSemanticsAction(virtualViewId, Action.SCROLL_UP); } else if (semanticsNode.hasAction(Action.SCROLL_LEFT)) { // TODO(ianh): bidi support using textDirection - flutterJNI.dispatchSemanticsAction(virtualViewId, Action.SCROLL_LEFT); + accessibilityChannel.dispatchSemanticsAction(virtualViewId, Action.SCROLL_LEFT); } else if (semanticsNode.hasAction(Action.INCREASE)) { semanticsNode.value = semanticsNode.increasedValue; // Event causes Android to read out the updated value. sendAccessibilityEvent(virtualViewId, AccessibilityEvent.TYPE_VIEW_SELECTED); - flutterJNI.dispatchSemanticsAction(virtualViewId, Action.INCREASE); + accessibilityChannel.dispatchSemanticsAction(virtualViewId, Action.INCREASE); } else { return false; } @@ -754,15 +759,15 @@ public boolean performAction(int virtualViewId, int accessibilityAction, @Nullab } case AccessibilityNodeInfo.ACTION_SCROLL_BACKWARD: { if (semanticsNode.hasAction(Action.SCROLL_DOWN)) { - flutterJNI.dispatchSemanticsAction(virtualViewId, Action.SCROLL_DOWN); + accessibilityChannel.dispatchSemanticsAction(virtualViewId, Action.SCROLL_DOWN); } else if (semanticsNode.hasAction(Action.SCROLL_RIGHT)) { // TODO(ianh): bidi support using textDirection - flutterJNI.dispatchSemanticsAction(virtualViewId, Action.SCROLL_RIGHT); + accessibilityChannel.dispatchSemanticsAction(virtualViewId, Action.SCROLL_RIGHT); } else if (semanticsNode.hasAction(Action.DECREASE)) { semanticsNode.value = semanticsNode.decreasedValue; // Event causes Android to read out the updated value. sendAccessibilityEvent(virtualViewId, AccessibilityEvent.TYPE_VIEW_SELECTED); - flutterJNI.dispatchSemanticsAction(virtualViewId, Action.DECREASE); + accessibilityChannel.dispatchSemanticsAction(virtualViewId, Action.DECREASE); } else { return false; } @@ -787,7 +792,7 @@ public boolean performAction(int virtualViewId, int accessibilityAction, @Nullab return performCursorMoveAction(semanticsNode, virtualViewId, arguments, true); } case AccessibilityNodeInfo.ACTION_CLEAR_ACCESSIBILITY_FOCUS: { - flutterJNI.dispatchSemanticsAction( + accessibilityChannel.dispatchSemanticsAction( virtualViewId, Action.DID_LOSE_ACCESSIBILITY_FOCUS ); @@ -799,7 +804,7 @@ public boolean performAction(int virtualViewId, int accessibilityAction, @Nullab return true; } case AccessibilityNodeInfo.ACTION_ACCESSIBILITY_FOCUS: { - flutterJNI.dispatchSemanticsAction( + accessibilityChannel.dispatchSemanticsAction( virtualViewId, Action.DID_GAIN_ACCESSIBILITY_FOCUS ); @@ -824,7 +829,7 @@ public boolean performAction(int virtualViewId, int accessibilityAction, @Nullab return true; } case ACTION_SHOW_ON_SCREEN: { - flutterJNI.dispatchSemanticsAction(virtualViewId, Action.SHOW_ON_SCREEN); + accessibilityChannel.dispatchSemanticsAction(virtualViewId, Action.SHOW_ON_SCREEN); return true; } case AccessibilityNodeInfo.ACTION_SET_SELECTION: { @@ -852,23 +857,23 @@ public boolean performAction(int virtualViewId, int accessibilityAction, @Nullab selection.put("base", semanticsNode.textSelectionExtent); selection.put("extent", semanticsNode.textSelectionExtent); } - flutterJNI.dispatchSemanticsAction(virtualViewId, Action.SET_SELECTION, selection); + accessibilityChannel.dispatchSemanticsAction(virtualViewId, Action.SET_SELECTION, selection); return true; } case AccessibilityNodeInfo.ACTION_COPY: { - flutterJNI.dispatchSemanticsAction(virtualViewId, Action.COPY); + accessibilityChannel.dispatchSemanticsAction(virtualViewId, Action.COPY); return true; } case AccessibilityNodeInfo.ACTION_CUT: { - flutterJNI.dispatchSemanticsAction(virtualViewId, Action.CUT); + accessibilityChannel.dispatchSemanticsAction(virtualViewId, Action.CUT); return true; } case AccessibilityNodeInfo.ACTION_PASTE: { - flutterJNI.dispatchSemanticsAction(virtualViewId, Action.PASTE); + accessibilityChannel.dispatchSemanticsAction(virtualViewId, Action.PASTE); return true; } case AccessibilityNodeInfo.ACTION_DISMISS: { - flutterJNI.dispatchSemanticsAction(virtualViewId, Action.DISMISS); + accessibilityChannel.dispatchSemanticsAction(virtualViewId, Action.DISMISS); return true; } default: @@ -876,7 +881,7 @@ public boolean performAction(int virtualViewId, int accessibilityAction, @Nullab final int flutterId = accessibilityAction - FIRST_RESOURCE_ID; CustomAccessibilityAction contextAction = customAccessibilityActions.get(flutterId); if (contextAction != null) { - flutterJNI.dispatchSemanticsAction( + accessibilityChannel.dispatchSemanticsAction( virtualViewId, Action.CUSTOM_ACTION, contextAction.id @@ -908,7 +913,7 @@ private boolean performCursorMoveAction( switch (granularity) { case AccessibilityNodeInfo.MOVEMENT_GRANULARITY_CHARACTER: { if (forward && semanticsNode.hasAction(Action.MOVE_CURSOR_FORWARD_BY_CHARACTER)) { - flutterJNI.dispatchSemanticsAction( + accessibilityChannel.dispatchSemanticsAction( virtualViewId, Action.MOVE_CURSOR_FORWARD_BY_CHARACTER, extendSelection @@ -916,7 +921,7 @@ private boolean performCursorMoveAction( return true; } if (!forward && semanticsNode.hasAction(Action.MOVE_CURSOR_BACKWARD_BY_CHARACTER)) { - flutterJNI.dispatchSemanticsAction( + accessibilityChannel.dispatchSemanticsAction( virtualViewId, Action.MOVE_CURSOR_BACKWARD_BY_CHARACTER, extendSelection @@ -927,7 +932,7 @@ private boolean performCursorMoveAction( } case AccessibilityNodeInfo.MOVEMENT_GRANULARITY_WORD: if (forward && semanticsNode.hasAction(Action.MOVE_CURSOR_FORWARD_BY_WORD)) { - flutterJNI.dispatchSemanticsAction( + accessibilityChannel.dispatchSemanticsAction( virtualViewId, Action.MOVE_CURSOR_FORWARD_BY_WORD, extendSelection @@ -935,7 +940,7 @@ private boolean performCursorMoveAction( return true; } if (!forward && semanticsNode.hasAction(Action.MOVE_CURSOR_BACKWARD_BY_WORD)) { - flutterJNI.dispatchSemanticsAction( + accessibilityChannel.dispatchSemanticsAction( virtualViewId, Action.MOVE_CURSOR_BACKWARD_BY_WORD, extendSelection diff --git a/shell/platform/android/io/flutter/view/FlutterView.java b/shell/platform/android/io/flutter/view/FlutterView.java index c8fc94e5a6185..0ef972ebdcbe1 100644 --- a/shell/platform/android/io/flutter/view/FlutterView.java +++ b/shell/platform/android/io/flutter/view/FlutterView.java @@ -662,8 +662,7 @@ protected void onAttachedToWindow() { mAccessibilityNodeProvider = new AccessibilityBridge( this, - getFlutterNativeView().getFlutterJNI(), - new AccessibilityChannel(dartExecutor), + new AccessibilityChannel(dartExecutor, getFlutterNativeView().getFlutterJNI()), (AccessibilityManager) getContext().getSystemService(Context.ACCESSIBILITY_SERVICE), getContext().getContentResolver() ); From f7a092262cf3c69fb1b90bf79392cc247c78d52c Mon Sep 17 00:00:00 2001 From: David Worsham Date: Thu, 14 Mar 2019 16:05:21 -0700 Subject: [PATCH 1385/1537] [fuchsia] Remove deprecated libraries from snapshot (#8085) --- lib/snapshot/BUILD.gn | 10 +--------- lib/stub_ui/compositing.dart | 2 +- lib/ui/compositing.dart | 2 +- 3 files changed, 3 insertions(+), 11 deletions(-) diff --git a/lib/snapshot/BUILD.gn b/lib/snapshot/BUILD.gn index ca00ad71efa80..595f73994f3fd 100644 --- a/lib/snapshot/BUILD.gn +++ b/lib/snapshot/BUILD.gn @@ -2,17 +2,9 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. -import("$flutter_root/lib/ui/dart_ui.gni") import("//build/compiled_action.gni") import("//third_party/dart/utils/compile_platform.gni") - -if (is_fuchsia) { - import("//build/dart/dart_library.gni") - import("//build/dart/toolchain.gni") - import("//topaz/public/dart-pkg/fuchsia/sdk_ext.gni") - import("//topaz/public/dart-pkg/zircon/sdk_ext.gni") - import("//topaz/public/lib/ui/flutter/sdk_ext/sdk_ext.gni") -} +import("$flutter_root/lib/ui/dart_ui.gni") bindings_output_dir = "$root_gen_dir/sky/bindings" diff --git a/lib/stub_ui/compositing.dart b/lib/stub_ui/compositing.dart index 071b1d45cdacd..1575db3a06a51 100644 --- a/lib/stub_ui/compositing.dart +++ b/lib/stub_ui/compositing.dart @@ -314,7 +314,7 @@ class SceneHost { /// /// The export token is a dart:zircon Handle, but that type isn't /// available here. This is called by ChildViewConnection in - /// //topaz/public/lib/ui/flutter/. + /// //topaz/public/dart/fuchsia_scenic_flutter/. /// /// The scene host takes ownership of the provided export token handle. SceneHost(dynamic exportTokenHandle); diff --git a/lib/ui/compositing.dart b/lib/ui/compositing.dart index e7675c0a26e74..9eb7c317485b0 100644 --- a/lib/ui/compositing.dart +++ b/lib/ui/compositing.dart @@ -370,7 +370,7 @@ class SceneHost extends NativeFieldWrapperClass2 { /// /// The export token is a dart:zircon Handle, but that type isn't /// available here. This is called by ChildViewConnection in - /// //topaz/public/lib/ui/flutter/. + /// //topaz/public/dart/fuchsia_scenic_flutter/. /// /// The scene host takes ownership of the provided export token handle. SceneHost(dynamic exportTokenHandle) { From 4b01d795feec3ba8231a397a4ec2759954d8216e Mon Sep 17 00:00:00 2001 From: Chinmay Garde Date: Thu, 14 Mar 2019 16:48:01 -0700 Subject: [PATCH 1386/1537] Add frame and target time metadata to vsync events and connect platform vsync events using flows. (#8172) This will allow us to easily visualize the time the platform informed the engine of a vsync event, its arguments, and when the engine began its UI thread workload using this information. --- fml/trace_event.cc | 6 +++++ fml/trace_event.h | 18 +++++++++++++ shell/common/vsync_waiter.cc | 39 ++++++++++++++++++++--------- shell/platform/embedder/embedder.cc | 2 ++ shell/platform/embedder/embedder.h | 2 ++ 5 files changed, 55 insertions(+), 12 deletions(-) diff --git a/fml/trace_event.cc b/fml/trace_event.cc index 434e7883d981b..843aa6b6d5b92 100644 --- a/fml/trace_event.cc +++ b/fml/trace_event.cc @@ -5,6 +5,7 @@ #include "flutter/fml/trace_event.h" #include +#include #include "flutter/fml/build_config.h" #include "flutter/fml/logging.h" @@ -31,6 +32,11 @@ namespace fml { namespace tracing { +size_t TraceNonce() { + static std::atomic_size_t gLastItem; + return ++gLastItem; +} + void TraceTimelineEvent(TraceArg category_group, TraceArg name, TraceIDArg identifier, diff --git a/fml/trace_event.h b/fml/trace_event.h index 1f979d4e35e64..45221a09c4108 100644 --- a/fml/trace_event.h +++ b/fml/trace_event.h @@ -30,6 +30,7 @@ #include #include "flutter/fml/macros.h" +#include "flutter/fml/time/time_point.h" #include "third_party/dart/runtime/include/dart_tools_api.h" #if !defined(OS_FUCHSIA) @@ -50,6 +51,10 @@ ::fml::tracing::TraceCounter((category_group), (name), (counter_id), (arg1), \ __VA_ARGS__); +#define FML_TRACE_EVENT(category_group, name, ...) \ + ::fml::tracing::TraceEvent((category_group), (name), __VA_ARGS__); \ + __FML__AUTO_TRACE_END(name) + #define TRACE_EVENT0(category_group, name) \ ::fml::tracing::TraceEvent0(category_group, name); \ __FML__AUTO_TRACE_END(name) @@ -116,6 +121,10 @@ inline std::string TraceToString(std::string string) { return string; } +inline std::string TraceToString(TimePoint point) { + return std::to_string(point.ToEpochDelta().ToNanoseconds()); +} + template ::value>> std::string TraceToString(T string) { return std::to_string(string); @@ -149,6 +158,8 @@ SplitArguments(Key key, Value value, Args... args) { return std::make_pair(std::move(keys), std::move(values)); } +size_t TraceNonce(); + template void TraceCounter(TraceArg category, TraceArg name, @@ -159,6 +170,13 @@ void TraceCounter(TraceArg category, split.first, split.second); } +template +void TraceEvent(TraceArg category, TraceArg name, Args... args) { + auto split = SplitArguments(args...); + TraceTimelineEvent(category, name, 0, Dart_Timeline_Event_Begin, split.first, + split.second); +} + void TraceEvent0(TraceArg category_group, TraceArg name); void TraceEvent1(TraceArg category_group, diff --git a/shell/common/vsync_waiter.cc b/shell/common/vsync_waiter.cc index a117c7fff5142..b6b55df11b227 100644 --- a/shell/common/vsync_waiter.cc +++ b/shell/common/vsync_waiter.cc @@ -9,6 +9,20 @@ namespace shell { +#if defined(OS_FUCHSIA) +// In general, traces on Fuchsia are recorded across the whole system. +// Because of this, emitting a "VSYNC" event per flutter process is +// undesirable, as the events will collide with each other. We +// instead let another area of the system emit them. +static constexpr const char* kVsyncTraceName = "vsync callback"; +#else // defined(OS_FUCHSIA) +// Note: The tag name must be "VSYNC" (it is special) so that the +// "Highlight Vsync" checkbox in the timeline can be enabled. +static constexpr const char* kVsyncTraceName = "VSYNC"; +#endif // defined(OS_FUCHSIA) + +static constexpr const char* kVsyncFlowName = "VsyncFlow"; + VsyncWaiter::VsyncWaiter(blink::TaskRunners task_runners) : task_runners_(std::move(task_runners)) {} @@ -35,19 +49,20 @@ void VsyncWaiter::FireCallback(fml::TimePoint frame_start_time, return; } + auto flow_identifier = fml::tracing::TraceNonce(); + + // The base trace ensures that flows have a root to begin from if one does not + // exist. The trace viewer will ignore traces that have no base event trace. + // While all our message loops insert a base trace trace + // (MessageLoop::RunExpiredTasks), embedders may not. + TRACE_EVENT0("flutter", "VsyncFireCallback"); + TRACE_FLOW_BEGIN("flutter", kVsyncFlowName, flow_identifier); + task_runners_.GetUITaskRunner()->PostTaskForTime( - [callback, frame_start_time, frame_target_time]() { -#if defined(OS_FUCHSIA) - // In general, traces on Fuchsia are recorded across the whole system. - // Because of this, emitting a "VSYNC" event per flutter process is - // undesirable, as the events will collide with each other. We - // instead let another area of the system emit them. - TRACE_EVENT0("flutter", "vsync callback"); -#else - // Note: The tag name must be "VSYNC" (it is special) so that the - // "Highlight Vsync" checkbox in the timeline can be enabled. - TRACE_EVENT0("flutter", "VSYNC"); -#endif + [callback, flow_identifier, frame_start_time, frame_target_time]() { + FML_TRACE_EVENT("flutter", kVsyncTraceName, "StartTime", + frame_start_time, "TargetTime", frame_target_time); + TRACE_FLOW_END("flutter", kVsyncFlowName, flow_identifier); callback(frame_start_time, frame_target_time); }, frame_start_time); diff --git a/shell/platform/embedder/embedder.cc b/shell/platform/embedder/embedder.cc index 09933a32a001e..65aa88808f875 100644 --- a/shell/platform/embedder/embedder.cc +++ b/shell/platform/embedder/embedder.cc @@ -888,6 +888,8 @@ FlutterEngineResult FlutterEngineOnVsync(FlutterEngine engine, return LOG_EMBEDDER_ERROR(kInvalidArguments); } + TRACE_EVENT0("flutter", "FlutterEngineOnVsync"); + auto start_time = fml::TimePoint::FromEpochDelta( fml::TimeDelta::FromNanoseconds(frame_start_time_nanos)); diff --git a/shell/platform/embedder/embedder.h b/shell/platform/embedder/embedder.h index 8f2453867276b..6127681c55774 100644 --- a/shell/platform/embedder/embedder.h +++ b/shell/platform/embedder/embedder.h @@ -664,6 +664,8 @@ FlutterEngineResult FlutterEngineDispatchSemanticsAction( // garbage collection in periods in which the various threads are most likely to // be idle. For example, for a 60Hz display, embedders should add 16.6 * 1e6 to // the frame time field. The system monotonic clock is used as the timebase. +// +// That frame timepoints are in nanoseconds. FLUTTER_EXPORT FlutterEngineResult FlutterEngineOnVsync(FlutterEngine engine, intptr_t baton, From d9b2f0946582f2824b62d227b629a47d9d830f98 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Fri, 15 Mar 2019 00:05:54 -0400 Subject: [PATCH 1387/1537] Roll src/third_party/skia 512e38091c85..05201fc7e77e (10 commits) (#8173) https://skia.googlesource.com/skia.git/%2Blog/512e38091c85..05201fc7e77e git log 512e38091c8511847334b89365d46cbb0452309a..05201fc7e77e0d2682763dbbe15cf6b65a0d6cb9 --date=short --no-merges --format=%ad %ae %s 2019-03-14 recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com Roll recipe dependencies (trivial). 2019-03-14 brianosman@google.com Ganesh: Clamp blend inputs when using F16_Clamped pixel config 2019-03-14 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader becb44f1177a..9b156615197d (1 commits) 2019-03-14 recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com Roll recipe dependencies (trivial). 2019-03-14 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader a2749f39f47d..becb44f1177a (1 commits) 2019-03-14 jvanverth@google.com Fix cached perspective shadows 2019-03-14 michaelludwig@google.com Blacklist compositor_quads_filter on chromecast 2019-03-14 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader af973b67141e..a2749f39f47d (1 commits) 2019-03-14 bsalomon@google.com Clamp override color to bytes in GrFillRectOp when half float vertex attrs not supported. 2019-03-14 kjlubick@google.com [canvaskit] Fallback to CPU more gracefully The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (benjaminwagner@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index b28772df19a33..d254717f8ceaa 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '512e38091c8511847334b89365d46cbb0452309a', + 'skia_revision': '05201fc7e77e0d2682763dbbe15cf6b65a0d6cb9', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 5393cbab00488..b2e10fe23a06b 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 0b30f75a389dd244bf9fe53576e7b76c +Signature: 8a89af94f3b409ce70b53afbfb2b7c5c UNUSED LICENSES: From b32d0ab982bf0d47e74365fbc9fe7e7b709b7596 Mon Sep 17 00:00:00 2001 From: Matt Carroll Date: Thu, 14 Mar 2019 21:13:03 -0700 Subject: [PATCH 1388/1537] Bugfix: Prevent crash when responding to a platform message after FlutterJNI detaches from native (#28651). (#8170) --- .../flutter/embedding/engine/FlutterJNI.java | 25 ++++++++++++------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/shell/platform/android/io/flutter/embedding/engine/FlutterJNI.java b/shell/platform/android/io/flutter/embedding/engine/FlutterJNI.java index f8405852a5217..925e2a8d7290f 100644 --- a/shell/platform/android/io/flutter/embedding/engine/FlutterJNI.java +++ b/shell/platform/android/io/flutter/embedding/engine/FlutterJNI.java @@ -10,6 +10,7 @@ import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.annotation.UiThread; +import android.util.Log; import android.view.Surface; import java.nio.ByteBuffer; @@ -494,8 +495,11 @@ private native void nativeDispatchPlatformMessage( @UiThread public void invokePlatformMessageEmptyResponseCallback(int responseId) { - ensureAttachedToNative(); - nativeInvokePlatformMessageEmptyResponseCallback(nativePlatformViewId, responseId); + if (isAttached()) { + nativeInvokePlatformMessageEmptyResponseCallback(nativePlatformViewId, responseId); + } else { + Log.w(TAG, "Tried to send a platform message response, but FlutterJNI was detached from native C++. Could not send. Response ID: " + responseId); + } } // Send an empty response to a platform message received from Dart. @@ -506,13 +510,16 @@ private native void nativeInvokePlatformMessageEmptyResponseCallback( @UiThread public void invokePlatformMessageResponseCallback(int responseId, ByteBuffer message, int position) { - ensureAttachedToNative(); - nativeInvokePlatformMessageResponseCallback( - nativePlatformViewId, - responseId, - message, - position - ); + if (isAttached()) { + nativeInvokePlatformMessageResponseCallback( + nativePlatformViewId, + responseId, + message, + position + ); + } else { + Log.w(TAG, "Tried to send a platform message response, but FlutterJNI was detached from native C++. Could not send. Response ID: " + responseId); + } } // Send a data-carrying response to a platform message received from Dart. From b36068c3778c014ac999ce03412af2690bc713bc Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Fri, 15 Mar 2019 03:46:55 -0400 Subject: [PATCH 1389/1537] Roll src/third_party/skia 05201fc7e77e..aefecad7c0d2 (5 commits) (#8176) https://skia.googlesource.com/skia.git/%2Blog/05201fc7e77e..aefecad7c0d2 git log 05201fc7e77e0d2682763dbbe15cf6b65a0d6cb9..aefecad7c0d2c29c147a05ea385a2ad855cbbc20 --date=short --no-merges --format=%ad %ae %s 2019-03-15 skia-autoroll@skia-public.iam.gserviceaccount.com Roll ../src 6299cd6e9d2d..558a982945cf (482 commits) 2019-03-15 skia-recreate-skps@skia-swarming-bots.iam.gserviceaccount.com Update go_deps asset 2019-03-15 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/angle2 979f3bbe2c50..2fb6563bf503 (2 commits) 2019-03-14 recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com Roll recipe dependencies (trivial). 2019-03-15 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader 9b156615197d..1b8cd2d9ce2c (1 commits) The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (benjaminwagner@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index d254717f8ceaa..442e2d91206e0 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '05201fc7e77e0d2682763dbbe15cf6b65a0d6cb9', + 'skia_revision': 'aefecad7c0d2c29c147a05ea385a2ad855cbbc20', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index b2e10fe23a06b..1a8991d91a7af 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 8a89af94f3b409ce70b53afbfb2b7c5c +Signature: 102988759bda2da07e57919dc14f8812 UNUSED LICENSES: From c0690e6ec85e3a92e840cef05c8ba56c269395f3 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Fri, 15 Mar 2019 08:35:12 -0400 Subject: [PATCH 1390/1537] Roll src/third_party/skia aefecad7c0d2..69600007e278 (2 commits) (#8177) https://skia.googlesource.com/skia.git/%2Blog/aefecad7c0d2..69600007e278 git log aefecad7c0d2c29c147a05ea385a2ad855cbbc20..69600007e278d1bd3fed1df28a6dd9cb9ed23f20 --date=short --no-merges --format=%ad %ae %s 2019-03-15 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader 633b2fb00ed0..e37ce613d1c7 (2 commits) 2019-03-15 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader 1b8cd2d9ce2c..633b2fb00ed0 (1 commits) The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (benjaminwagner@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 442e2d91206e0..3d39e710a7dfc 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'aefecad7c0d2c29c147a05ea385a2ad855cbbc20', + 'skia_revision': '69600007e278d1bd3fed1df28a6dd9cb9ed23f20', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 1a8991d91a7af..ec676718e2ca8 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 102988759bda2da07e57919dc14f8812 +Signature: 4038d23ce57b0f85d883bcc7c754bfd9 UNUSED LICENSES: From cad97fe7467c60de645d47acffd0e00cd83178ab Mon Sep 17 00:00:00 2001 From: Kaushik Iska Date: Fri, 15 Mar 2019 08:35:48 -0700 Subject: [PATCH 1391/1537] Update overlays_gr_context_ correctly (#8175) There can be cases where SubmitFrame gets called before overlays are a part of the frame, in these cases, we should not update the GRContext ahead of time. This commit makes it so we will update it only when the frame really shows the overlay. This addresses: https://github.com/flutter/flutter/issues/28920 --- flow/embedded_views.h | 2 +- .../ios/framework/Source/FlutterPlatformViews.mm | 10 ++++------ .../framework/Source/FlutterPlatformViews_Internal.h | 3 +-- 3 files changed, 6 insertions(+), 9 deletions(-) diff --git a/flow/embedded_views.h b/flow/embedded_views.h index 6f2e684c4841e..0fd474adb0812 100644 --- a/flow/embedded_views.h +++ b/flow/embedded_views.h @@ -21,7 +21,7 @@ class EmbeddedViewParams { }; // This is only used on iOS when running in a non headless mode, -// in this case ViewEmbedded is a reference to the +// in this case ExternalViewEmbedder is a reference to the // FlutterPlatformViewsController which is owned by FlutterViewController. class ExternalViewEmbedder { public: diff --git a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm index 304ae123bc364..fddc75fa541a0 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm @@ -210,8 +210,7 @@ for (size_t i = 0; i < composition_order_.size(); i++) { int64_t view_id = composition_order_[i]; if (gl_rendering) { - EnsureGLOverlayInitialized(view_id, gl_context, gr_context, - gr_context != overlays_gr_context_); + EnsureGLOverlayInitialized(view_id, gl_context, gr_context); } else { EnsureOverlayInitialized(view_id); } @@ -221,7 +220,6 @@ canvas->flush(); did_submit &= frame->Submit(); } - overlays_gr_context_ = gr_context; picture_recorders_.clear(); if (composition_order_ == active_composition_order_) { composition_order_.clear(); @@ -267,10 +265,10 @@ void FlutterPlatformViewsController::EnsureGLOverlayInitialized( int64_t overlay_id, std::shared_ptr gl_context, - GrContext* gr_context, - bool update_gr_context) { + GrContext* gr_context) { if (overlays_.count(overlay_id) != 0) { - if (update_gr_context) { + if (gr_context != overlays_gr_context_) { + overlays_gr_context_ = gr_context; // The overlay already exists, but the GrContext was changed so we need to recreate // the rendering surface with the new GrContext. IOSSurfaceGL* ios_surface_gl = (IOSSurfaceGL*)overlays_[overlay_id]->ios_surface.get(); diff --git a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h index 87aa5a3626343..a89a2ff9bc3f3 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h +++ b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h @@ -101,8 +101,7 @@ class FlutterPlatformViewsController { void EnsureOverlayInitialized(int64_t overlay_id); void EnsureGLOverlayInitialized(int64_t overlay_id, std::shared_ptr gl_context, - GrContext* gr_context, - bool update_gr_context); + GrContext* gr_context); FML_DISALLOW_COPY_AND_ASSIGN(FlutterPlatformViewsController); }; From 7da45be4a9afec572ebc110ad52511f5e2dc63e3 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Fri, 15 Mar 2019 12:23:46 -0400 Subject: [PATCH 1392/1537] Roll src/third_party/skia 69600007e278..46f5ee156155 (8 commits) (#8178) https://skia.googlesource.com/skia.git/%2Blog/69600007e278..46f5ee156155 git log 69600007e278d1bd3fed1df28a6dd9cb9ed23f20..46f5ee1561558857a1c669b43b71ca84f6ba6f22 --date=short --no-merges --format=%ad %ae %s 2019-03-15 nifong@google.com Add selectable GPU backend to wasm debugger 2019-03-07 halcanary@google.com Compile all fiddle examples locally 2019-03-15 brianosman@google.com Add shader based blending of kPlus for configs that need clamping 2019-03-15 mtklein@google.com Revert "remove plus clamp" 2019-03-14 fmalita@chromium.org [skottie] Initial text box support 2019-03-15 bsalomon@google.com Revert "Reland "Update SkCanvas' experimental SkiaRenderer API"" 2019-03-15 brianosman@google.com Change --checkF16 behavior to just print - it's easier to see all failures 2019-03-15 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/angle2 2fb6563bf503..de52ca373d98 (1 commits) The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (benjaminwagner@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 1200 +++++++++++++++++++++++++++++- 2 files changed, 1165 insertions(+), 37 deletions(-) diff --git a/DEPS b/DEPS index 3d39e710a7dfc..c304f870ff095 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '69600007e278d1bd3fed1df28a6dd9cb9ed23f20', + 'skia_revision': '46f5ee1561558857a1c669b43b71ca84f6ba6f22', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index ec676718e2ca8..92e606ef6f905 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 4038d23ce57b0f85d883bcc7c754bfd9 +Signature: bd6c6df433f7f05bc56ed2578837d560 UNUSED LICENSES: @@ -2076,6 +2076,7 @@ FILE: ../../../third_party/skia/experimental/wasm-skp-debugger/debugger/index.ht FILE: ../../../third_party/skia/experimental/wasm-skp-debugger/debugger/sample.skp FILE: ../../../third_party/skia/experimental/wasm-skp-debugger/externs.js FILE: ../../../third_party/skia/experimental/wasm-skp-debugger/fonts/NotoMono-Regular.ttf +FILE: ../../../third_party/skia/experimental/wasm-skp-debugger/gpu.js FILE: ../../../third_party/skia/experimental/wasm-skp-debugger/karma.conf.js FILE: ../../../third_party/skia/experimental/wasm-skp-debugger/package.json FILE: ../../../third_party/skia/experimental/wasm-skp-debugger/ready.js @@ -4648,6 +4649,1168 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ==================================================================================================== +==================================================================================================== +LIBRARY: skia +ORIGIN: ../../../third_party/skia/docs/examples/AutoCanvasRestore_000.cpp + ../../../third_party/skia/LICENSE +TYPE: LicenseType.bsd +FILE: ../../../third_party/skia/docs/examples/AutoCanvasRestore_000.cpp +FILE: ../../../third_party/skia/docs/examples/AutoCanvasRestore_001.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_000.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_001.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_002.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_003.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_004.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_005.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_006.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_007.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_008.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_009.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_010.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_011.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_012.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_013.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_014.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_015.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_016.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_017.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_018.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_019.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_020.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_021.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_022.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_023.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_024.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_025.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_026.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_027.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_028.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_029.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_030.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_031.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_032.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_033.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_034.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_035.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_036.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_037.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_038.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_039.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_040.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_041.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_042.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_043.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_044.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_045.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_046.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_047.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_048.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_049.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_050.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_051.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_052.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_053.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_054.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_055.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_056.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_057.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_058.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_059.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_060.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_061.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_062.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_063.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_064.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_065.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_066.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_067.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_068.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_069.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_070.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_071.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_072.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_073.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_074.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_075.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_076.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_077.cpp +FILE: ../../../third_party/skia/docs/examples/BlendMode_000.cpp +FILE: ../../../third_party/skia/docs/examples/BlendMode_001.cpp +FILE: ../../../third_party/skia/docs/examples/BlendMode_002.cpp +FILE: ../../../third_party/skia/docs/examples/BlendMode_003.cpp +FILE: ../../../third_party/skia/docs/examples/BlendMode_004.cpp +FILE: ../../../third_party/skia/docs/examples/BlendMode_005.cpp +FILE: ../../../third_party/skia/docs/examples/BlendMode_006.cpp +FILE: ../../../third_party/skia/docs/examples/BlendMode_007.cpp +FILE: ../../../third_party/skia/docs/examples/BlendMode_008.cpp +FILE: ../../../third_party/skia/docs/examples/BlendMode_009.cpp +FILE: ../../../third_party/skia/docs/examples/BlendMode_010.cpp +FILE: ../../../third_party/skia/docs/examples/BlendMode_011.cpp +FILE: ../../../third_party/skia/docs/examples/BlendMode_012.cpp +FILE: ../../../third_party/skia/docs/examples/BlendMode_013.cpp +FILE: ../../../third_party/skia/docs/examples/BlendMode_014.cpp +FILE: ../../../third_party/skia/docs/examples/BlendMode_015.cpp +FILE: ../../../third_party/skia/docs/examples/BlendMode_016.cpp +FILE: ../../../third_party/skia/docs/examples/BlendMode_017.cpp +FILE: ../../../third_party/skia/docs/examples/BlendMode_018.cpp +FILE: ../../../third_party/skia/docs/examples/BlendMode_019.cpp +FILE: ../../../third_party/skia/docs/examples/BlendMode_020.cpp +FILE: ../../../third_party/skia/docs/examples/BlendMode_021.cpp +FILE: ../../../third_party/skia/docs/examples/BlendMode_022.cpp +FILE: ../../../third_party/skia/docs/examples/BlendMode_023.cpp +FILE: ../../../third_party/skia/docs/examples/BlendMode_024.cpp +FILE: ../../../third_party/skia/docs/examples/BlendMode_025.cpp +FILE: ../../../third_party/skia/docs/examples/BlendMode_026.cpp +FILE: ../../../third_party/skia/docs/examples/BlendMode_027.cpp +FILE: ../../../third_party/skia/docs/examples/BlendMode_028.cpp +FILE: ../../../third_party/skia/docs/examples/BlendMode_029.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_000.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_001.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_002.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_003.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_004.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_005.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_006.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_008.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_009.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_010.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_011.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_012.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_013.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_014.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_015.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_016.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_017.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_018.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_019.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_020.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_021.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_022.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_023.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_024.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_025.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_026.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_027.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_028.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_029.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_030.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_031.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_032.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_033.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_034.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_035.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_036.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_037.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_038.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_039.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_040.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_041.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_042.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_043.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_044.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_045.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_046.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_047.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_048.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_049.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_050.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_051.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_052.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_053.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_054.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_055.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_056.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_057.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_058.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_059.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_060.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_061.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_062.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_063.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_064.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_065.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_066.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_067.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_068.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_069.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_070.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_071.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_072.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_073.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_074.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_075.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_076.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_077.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_078.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_079.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_080.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_081.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_082.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_083.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_084.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_085.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_086.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_087.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_088.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_089.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_090.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_091.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_092.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_093.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_094.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_095.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_096.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_097.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_098.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_099.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_100.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_101.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_102.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_103.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_104.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_105.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_106.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_107.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_108.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_109.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_110.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_111.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_112.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_113.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_114.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_115.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_116.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_117.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_118.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_119.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_120.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_121.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_122.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_123.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_124.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_125.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_126.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_127.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_128.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_129.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_130.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_131.cpp +FILE: ../../../third_party/skia/docs/examples/Color4f_000.cpp +FILE: ../../../third_party/skia/docs/examples/Color4f_001.cpp +FILE: ../../../third_party/skia/docs/examples/Color4f_002.cpp +FILE: ../../../third_party/skia/docs/examples/Color4f_003.cpp +FILE: ../../../third_party/skia/docs/examples/Color4f_004.cpp +FILE: ../../../third_party/skia/docs/examples/Color4f_005.cpp +FILE: ../../../third_party/skia/docs/examples/Color_000.cpp +FILE: ../../../third_party/skia/docs/examples/Color_001.cpp +FILE: ../../../third_party/skia/docs/examples/Color_002.cpp +FILE: ../../../third_party/skia/docs/examples/Color_003.cpp +FILE: ../../../third_party/skia/docs/examples/Color_004.cpp +FILE: ../../../third_party/skia/docs/examples/Color_005.cpp +FILE: ../../../third_party/skia/docs/examples/Color_006.cpp +FILE: ../../../third_party/skia/docs/examples/Color_007.cpp +FILE: ../../../third_party/skia/docs/examples/Color_008.cpp +FILE: ../../../third_party/skia/docs/examples/Color_009.cpp +FILE: ../../../third_party/skia/docs/examples/Color_010.cpp +FILE: ../../../third_party/skia/docs/examples/Color_011.cpp +FILE: ../../../third_party/skia/docs/examples/Color_012.cpp +FILE: ../../../third_party/skia/docs/examples/Color_013.cpp +FILE: ../../../third_party/skia/docs/examples/Color_014.cpp +FILE: ../../../third_party/skia/docs/examples/Color_015.cpp +FILE: ../../../third_party/skia/docs/examples/Color_016.cpp +FILE: ../../../third_party/skia/docs/examples/Color_017.cpp +FILE: ../../../third_party/skia/docs/examples/Color_018.cpp +FILE: ../../../third_party/skia/docs/examples/Font_000.cpp +FILE: ../../../third_party/skia/docs/examples/Font_001.cpp +FILE: ../../../third_party/skia/docs/examples/Font_002.cpp +FILE: ../../../third_party/skia/docs/examples/Font_003.cpp +FILE: ../../../third_party/skia/docs/examples/Font_004.cpp +FILE: ../../../third_party/skia/docs/examples/Font_005.cpp +FILE: ../../../third_party/skia/docs/examples/Font_006.cpp +FILE: ../../../third_party/skia/docs/examples/Font_007.cpp +FILE: ../../../third_party/skia/docs/examples/Font_008.cpp +FILE: ../../../third_party/skia/docs/examples/Font_009.cpp +FILE: ../../../third_party/skia/docs/examples/Font_010.cpp +FILE: ../../../third_party/skia/docs/examples/Font_011.cpp +FILE: ../../../third_party/skia/docs/examples/Font_012.cpp +FILE: ../../../third_party/skia/docs/examples/Font_013.cpp +FILE: ../../../third_party/skia/docs/examples/Font_014.cpp +FILE: ../../../third_party/skia/docs/examples/Font_015.cpp +FILE: ../../../third_party/skia/docs/examples/Font_016.cpp +FILE: ../../../third_party/skia/docs/examples/Font_017.cpp +FILE: ../../../third_party/skia/docs/examples/Font_018.cpp +FILE: ../../../third_party/skia/docs/examples/Font_019.cpp +FILE: ../../../third_party/skia/docs/examples/Font_020.cpp +FILE: ../../../third_party/skia/docs/examples/Font_021.cpp +FILE: ../../../third_party/skia/docs/examples/Font_022.cpp +FILE: ../../../third_party/skia/docs/examples/Font_023.cpp +FILE: ../../../third_party/skia/docs/examples/Font_024.cpp +FILE: ../../../third_party/skia/docs/examples/Font_025.cpp +FILE: ../../../third_party/skia/docs/examples/Font_026.cpp +FILE: ../../../third_party/skia/docs/examples/Font_027.cpp +FILE: ../../../third_party/skia/docs/examples/Font_028.cpp +FILE: ../../../third_party/skia/docs/examples/Font_029.cpp +FILE: ../../../third_party/skia/docs/examples/Font_030.cpp +FILE: ../../../third_party/skia/docs/examples/Font_031.cpp +FILE: ../../../third_party/skia/docs/examples/Font_032.cpp +FILE: ../../../third_party/skia/docs/examples/Font_033.cpp +FILE: ../../../third_party/skia/docs/examples/Font_034.cpp +FILE: ../../../third_party/skia/docs/examples/Font_035.cpp +FILE: ../../../third_party/skia/docs/examples/Font_036.cpp +FILE: ../../../third_party/skia/docs/examples/Font_037.cpp +FILE: ../../../third_party/skia/docs/examples/Font_038.cpp +FILE: ../../../third_party/skia/docs/examples/IPoint_000.cpp +FILE: ../../../third_party/skia/docs/examples/IPoint_001.cpp +FILE: ../../../third_party/skia/docs/examples/IPoint_002.cpp +FILE: ../../../third_party/skia/docs/examples/IPoint_003.cpp +FILE: ../../../third_party/skia/docs/examples/IPoint_004.cpp +FILE: ../../../third_party/skia/docs/examples/IPoint_005.cpp +FILE: ../../../third_party/skia/docs/examples/IPoint_006.cpp +FILE: ../../../third_party/skia/docs/examples/IPoint_007.cpp +FILE: ../../../third_party/skia/docs/examples/IPoint_008.cpp +FILE: ../../../third_party/skia/docs/examples/IPoint_009.cpp +FILE: ../../../third_party/skia/docs/examples/IPoint_010.cpp +FILE: ../../../third_party/skia/docs/examples/IPoint_011.cpp +FILE: ../../../third_party/skia/docs/examples/IPoint_012.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_000.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_001.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_002.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_003.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_004.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_005.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_006.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_007.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_008.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_009.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_010.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_011.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_012.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_013.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_014.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_015.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_016.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_017.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_018.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_019.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_020.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_021.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_022.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_023.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_024.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_025.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_026.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_027.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_028.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_029.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_030.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_031.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_032.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_033.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_034.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_035.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_036.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_037.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_038.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_039.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_040.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_041.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_042.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_043.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_044.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_045.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_046.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_047.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_048.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_049.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_000.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_001.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_002.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_003.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_004.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_005.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_006.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_007.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_008.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_009.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_010.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_011.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_012.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_013.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_014.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_015.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_016.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_017.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_018.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_019.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_020.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_021.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_022.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_023.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_024.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_025.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_026.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_027.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_028.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_029.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_030.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_031.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_032.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_033.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_034.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_035.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_036.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_037.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_038.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_039.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_040.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_041.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_042.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_043.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_044.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_045.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_046.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_047.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_048.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_049.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_050.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_051.cpp +FILE: ../../../third_party/skia/docs/examples/Image_000.cpp +FILE: ../../../third_party/skia/docs/examples/Image_001.cpp +FILE: ../../../third_party/skia/docs/examples/Image_002.cpp +FILE: ../../../third_party/skia/docs/examples/Image_003.cpp +FILE: ../../../third_party/skia/docs/examples/Image_004.cpp +FILE: ../../../third_party/skia/docs/examples/Image_005.cpp +FILE: ../../../third_party/skia/docs/examples/Image_006.cpp +FILE: ../../../third_party/skia/docs/examples/Image_007.cpp +FILE: ../../../third_party/skia/docs/examples/Image_008.cpp +FILE: ../../../third_party/skia/docs/examples/Image_009.cpp +FILE: ../../../third_party/skia/docs/examples/Image_010.cpp +FILE: ../../../third_party/skia/docs/examples/Image_011.cpp +FILE: ../../../third_party/skia/docs/examples/Image_012.cpp +FILE: ../../../third_party/skia/docs/examples/Image_013.cpp +FILE: ../../../third_party/skia/docs/examples/Image_014.cpp +FILE: ../../../third_party/skia/docs/examples/Image_015.cpp +FILE: ../../../third_party/skia/docs/examples/Image_016.cpp +FILE: ../../../third_party/skia/docs/examples/Image_017.cpp +FILE: ../../../third_party/skia/docs/examples/Image_018.cpp +FILE: ../../../third_party/skia/docs/examples/Image_019.cpp +FILE: ../../../third_party/skia/docs/examples/Image_020.cpp +FILE: ../../../third_party/skia/docs/examples/Image_021.cpp +FILE: ../../../third_party/skia/docs/examples/Image_022.cpp +FILE: ../../../third_party/skia/docs/examples/Image_023.cpp +FILE: ../../../third_party/skia/docs/examples/Image_024.cpp +FILE: ../../../third_party/skia/docs/examples/Image_025.cpp +FILE: ../../../third_party/skia/docs/examples/Image_026.cpp +FILE: ../../../third_party/skia/docs/examples/Image_027.cpp +FILE: ../../../third_party/skia/docs/examples/Image_028.cpp +FILE: ../../../third_party/skia/docs/examples/Image_029.cpp +FILE: ../../../third_party/skia/docs/examples/Image_030.cpp +FILE: ../../../third_party/skia/docs/examples/Image_031.cpp +FILE: ../../../third_party/skia/docs/examples/Image_032.cpp +FILE: ../../../third_party/skia/docs/examples/Image_033.cpp +FILE: ../../../third_party/skia/docs/examples/Image_034.cpp +FILE: ../../../third_party/skia/docs/examples/Image_035.cpp +FILE: ../../../third_party/skia/docs/examples/Image_036.cpp +FILE: ../../../third_party/skia/docs/examples/Image_037.cpp +FILE: ../../../third_party/skia/docs/examples/Image_038.cpp +FILE: ../../../third_party/skia/docs/examples/Image_039.cpp +FILE: ../../../third_party/skia/docs/examples/Image_040.cpp +FILE: ../../../third_party/skia/docs/examples/Image_041.cpp +FILE: ../../../third_party/skia/docs/examples/Image_042.cpp +FILE: ../../../third_party/skia/docs/examples/Image_043.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_000.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_001.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_002.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_003.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_004.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_005.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_006.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_007.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_008.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_009.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_010.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_011.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_012.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_013.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_014.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_015.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_016.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_017.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_018.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_019.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_020.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_021.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_022.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_023.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_024.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_025.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_026.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_027.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_028.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_029.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_030.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_031.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_032.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_033.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_034.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_035.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_036.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_037.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_038.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_039.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_040.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_041.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_042.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_043.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_044.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_045.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_046.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_047.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_048.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_049.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_050.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_051.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_052.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_053.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_054.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_055.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_056.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_057.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_058.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_059.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_060.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_061.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_062.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_063.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_064.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_065.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_066.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_067.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_068.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_069.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_070.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_071.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_072.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_073.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_074.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_075.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_076.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_077.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_078.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_079.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_080.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_081.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_082.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_083.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_084.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_085.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_086.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_087.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_088.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_089.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_090.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_091.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_092.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_093.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_094.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_095.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_096.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_097.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_098.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_099.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_100.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_101.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_102.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_103.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_104.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_105.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_106.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_107.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_000.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_001.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_002.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_003.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_004.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_005.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_006.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_007.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_008.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_009.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_010.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_011.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_012.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_013.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_014.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_015.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_016.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_017.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_018.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_019.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_020.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_021.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_022.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_023.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_024.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_025.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_026.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_027.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_028.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_029.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_030.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_031.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_032.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_033.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_034.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_035.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_036.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_037.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_038.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_039.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_040.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_041.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_042.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_043.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_044.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_045.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_046.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_047.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_048.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_049.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_050.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_051.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_052.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_053.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_054.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_055.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_056.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_057.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_058.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_059.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_060.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_061.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_062.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_063.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_064.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_065.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_066.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_067.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_068.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_069.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_070.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_071.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_072.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_073.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_074.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_075.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_076.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_077.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_078.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_079.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_080.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_081.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_082.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_083.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_084.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_085.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_086.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_087.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_088.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_089.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_090.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_091.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_092.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_093.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_094.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_095.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_096.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_097.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_098.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_099.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_100.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_101.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_102.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_103.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_104.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_105.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_106.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_107.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_108.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_109.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_110.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_111.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_112.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_113.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_114.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_115.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_116.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_117.cpp +FILE: ../../../third_party/skia/docs/examples/Path_000.cpp +FILE: ../../../third_party/skia/docs/examples/Path_001.cpp +FILE: ../../../third_party/skia/docs/examples/Path_002.cpp +FILE: ../../../third_party/skia/docs/examples/Path_003.cpp +FILE: ../../../third_party/skia/docs/examples/Path_004.cpp +FILE: ../../../third_party/skia/docs/examples/Path_005.cpp +FILE: ../../../third_party/skia/docs/examples/Path_006.cpp +FILE: ../../../third_party/skia/docs/examples/Path_007.cpp +FILE: ../../../third_party/skia/docs/examples/Path_008.cpp +FILE: ../../../third_party/skia/docs/examples/Path_009.cpp +FILE: ../../../third_party/skia/docs/examples/Path_010.cpp +FILE: ../../../third_party/skia/docs/examples/Path_011.cpp +FILE: ../../../third_party/skia/docs/examples/Path_012.cpp +FILE: ../../../third_party/skia/docs/examples/Path_013.cpp +FILE: ../../../third_party/skia/docs/examples/Path_014.cpp +FILE: ../../../third_party/skia/docs/examples/Path_015.cpp +FILE: ../../../third_party/skia/docs/examples/Path_016.cpp +FILE: ../../../third_party/skia/docs/examples/Path_017.cpp +FILE: ../../../third_party/skia/docs/examples/Path_018.cpp +FILE: ../../../third_party/skia/docs/examples/Path_019.cpp +FILE: ../../../third_party/skia/docs/examples/Path_020.cpp +FILE: ../../../third_party/skia/docs/examples/Path_021.cpp +FILE: ../../../third_party/skia/docs/examples/Path_022.cpp +FILE: ../../../third_party/skia/docs/examples/Path_023.cpp +FILE: ../../../third_party/skia/docs/examples/Path_024.cpp +FILE: ../../../third_party/skia/docs/examples/Path_025.cpp +FILE: ../../../third_party/skia/docs/examples/Path_026.cpp +FILE: ../../../third_party/skia/docs/examples/Path_027.cpp +FILE: ../../../third_party/skia/docs/examples/Path_028.cpp +FILE: ../../../third_party/skia/docs/examples/Path_029.cpp +FILE: ../../../third_party/skia/docs/examples/Path_030.cpp +FILE: ../../../third_party/skia/docs/examples/Path_031.cpp +FILE: ../../../third_party/skia/docs/examples/Path_032.cpp +FILE: ../../../third_party/skia/docs/examples/Path_033.cpp +FILE: ../../../third_party/skia/docs/examples/Path_034.cpp +FILE: ../../../third_party/skia/docs/examples/Path_035.cpp +FILE: ../../../third_party/skia/docs/examples/Path_036.cpp +FILE: ../../../third_party/skia/docs/examples/Path_037.cpp +FILE: ../../../third_party/skia/docs/examples/Path_038.cpp +FILE: ../../../third_party/skia/docs/examples/Path_039.cpp +FILE: ../../../third_party/skia/docs/examples/Path_040.cpp +FILE: ../../../third_party/skia/docs/examples/Path_041.cpp +FILE: ../../../third_party/skia/docs/examples/Path_042.cpp +FILE: ../../../third_party/skia/docs/examples/Path_043.cpp +FILE: ../../../third_party/skia/docs/examples/Path_044.cpp +FILE: ../../../third_party/skia/docs/examples/Path_045.cpp +FILE: ../../../third_party/skia/docs/examples/Path_046.cpp +FILE: ../../../third_party/skia/docs/examples/Path_047.cpp +FILE: ../../../third_party/skia/docs/examples/Path_048.cpp +FILE: ../../../third_party/skia/docs/examples/Path_049.cpp +FILE: ../../../third_party/skia/docs/examples/Path_050.cpp +FILE: ../../../third_party/skia/docs/examples/Path_051.cpp +FILE: ../../../third_party/skia/docs/examples/Path_052.cpp +FILE: ../../../third_party/skia/docs/examples/Path_053.cpp +FILE: ../../../third_party/skia/docs/examples/Path_054.cpp +FILE: ../../../third_party/skia/docs/examples/Path_055.cpp +FILE: ../../../third_party/skia/docs/examples/Path_056.cpp +FILE: ../../../third_party/skia/docs/examples/Path_057.cpp +FILE: ../../../third_party/skia/docs/examples/Path_058.cpp +FILE: ../../../third_party/skia/docs/examples/Path_059.cpp +FILE: ../../../third_party/skia/docs/examples/Path_060.cpp +FILE: ../../../third_party/skia/docs/examples/Path_061.cpp +FILE: ../../../third_party/skia/docs/examples/Path_062.cpp +FILE: ../../../third_party/skia/docs/examples/Path_063.cpp +FILE: ../../../third_party/skia/docs/examples/Path_064.cpp +FILE: ../../../third_party/skia/docs/examples/Path_065.cpp +FILE: ../../../third_party/skia/docs/examples/Path_066.cpp +FILE: ../../../third_party/skia/docs/examples/Path_067.cpp +FILE: ../../../third_party/skia/docs/examples/Path_068.cpp +FILE: ../../../third_party/skia/docs/examples/Path_069.cpp +FILE: ../../../third_party/skia/docs/examples/Path_070.cpp +FILE: ../../../third_party/skia/docs/examples/Path_071.cpp +FILE: ../../../third_party/skia/docs/examples/Path_072.cpp +FILE: ../../../third_party/skia/docs/examples/Path_073.cpp +FILE: ../../../third_party/skia/docs/examples/Path_074.cpp +FILE: ../../../third_party/skia/docs/examples/Path_075.cpp +FILE: ../../../third_party/skia/docs/examples/Path_076.cpp +FILE: ../../../third_party/skia/docs/examples/Path_077.cpp +FILE: ../../../third_party/skia/docs/examples/Path_078.cpp +FILE: ../../../third_party/skia/docs/examples/Path_079.cpp +FILE: ../../../third_party/skia/docs/examples/Path_080.cpp +FILE: ../../../third_party/skia/docs/examples/Path_081.cpp +FILE: ../../../third_party/skia/docs/examples/Path_082.cpp +FILE: ../../../third_party/skia/docs/examples/Path_083.cpp +FILE: ../../../third_party/skia/docs/examples/Path_084.cpp +FILE: ../../../third_party/skia/docs/examples/Path_085.cpp +FILE: ../../../third_party/skia/docs/examples/Path_086.cpp +FILE: ../../../third_party/skia/docs/examples/Path_087.cpp +FILE: ../../../third_party/skia/docs/examples/Path_088.cpp +FILE: ../../../third_party/skia/docs/examples/Path_089.cpp +FILE: ../../../third_party/skia/docs/examples/Path_090.cpp +FILE: ../../../third_party/skia/docs/examples/Path_091.cpp +FILE: ../../../third_party/skia/docs/examples/Path_092.cpp +FILE: ../../../third_party/skia/docs/examples/Path_093.cpp +FILE: ../../../third_party/skia/docs/examples/Path_094.cpp +FILE: ../../../third_party/skia/docs/examples/Path_095.cpp +FILE: ../../../third_party/skia/docs/examples/Path_096.cpp +FILE: ../../../third_party/skia/docs/examples/Path_097.cpp +FILE: ../../../third_party/skia/docs/examples/Path_098.cpp +FILE: ../../../third_party/skia/docs/examples/Path_099.cpp +FILE: ../../../third_party/skia/docs/examples/Path_100.cpp +FILE: ../../../third_party/skia/docs/examples/Path_101.cpp +FILE: ../../../third_party/skia/docs/examples/Path_102.cpp +FILE: ../../../third_party/skia/docs/examples/Path_103.cpp +FILE: ../../../third_party/skia/docs/examples/Path_104.cpp +FILE: ../../../third_party/skia/docs/examples/Path_105.cpp +FILE: ../../../third_party/skia/docs/examples/Path_106.cpp +FILE: ../../../third_party/skia/docs/examples/Path_107.cpp +FILE: ../../../third_party/skia/docs/examples/Path_108.cpp +FILE: ../../../third_party/skia/docs/examples/Path_109.cpp +FILE: ../../../third_party/skia/docs/examples/Path_110.cpp +FILE: ../../../third_party/skia/docs/examples/Path_111.cpp +FILE: ../../../third_party/skia/docs/examples/Path_112.cpp +FILE: ../../../third_party/skia/docs/examples/Path_113.cpp +FILE: ../../../third_party/skia/docs/examples/Path_114.cpp +FILE: ../../../third_party/skia/docs/examples/Path_115.cpp +FILE: ../../../third_party/skia/docs/examples/Path_116.cpp +FILE: ../../../third_party/skia/docs/examples/Path_117.cpp +FILE: ../../../third_party/skia/docs/examples/Path_118.cpp +FILE: ../../../third_party/skia/docs/examples/Path_119.cpp +FILE: ../../../third_party/skia/docs/examples/Path_120.cpp +FILE: ../../../third_party/skia/docs/examples/Path_121.cpp +FILE: ../../../third_party/skia/docs/examples/Path_122.cpp +FILE: ../../../third_party/skia/docs/examples/Path_123.cpp +FILE: ../../../third_party/skia/docs/examples/Path_124.cpp +FILE: ../../../third_party/skia/docs/examples/Path_125.cpp +FILE: ../../../third_party/skia/docs/examples/Path_126.cpp +FILE: ../../../third_party/skia/docs/examples/Path_127.cpp +FILE: ../../../third_party/skia/docs/examples/Picture_000.cpp +FILE: ../../../third_party/skia/docs/examples/Picture_001.cpp +FILE: ../../../third_party/skia/docs/examples/Picture_002.cpp +FILE: ../../../third_party/skia/docs/examples/Picture_003.cpp +FILE: ../../../third_party/skia/docs/examples/Picture_004.cpp +FILE: ../../../third_party/skia/docs/examples/Picture_005.cpp +FILE: ../../../third_party/skia/docs/examples/Picture_006.cpp +FILE: ../../../third_party/skia/docs/examples/Picture_007.cpp +FILE: ../../../third_party/skia/docs/examples/Picture_008.cpp +FILE: ../../../third_party/skia/docs/examples/Picture_009.cpp +FILE: ../../../third_party/skia/docs/examples/Picture_010.cpp +FILE: ../../../third_party/skia/docs/examples/Picture_011.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_000.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_001.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_002.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_003.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_004.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_005.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_006.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_007.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_008.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_009.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_010.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_011.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_012.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_013.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_014.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_015.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_016.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_017.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_018.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_019.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_020.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_021.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_022.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_023.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_024.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_025.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_026.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_027.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_028.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_029.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_030.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_031.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_032.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_033.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_034.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_035.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_036.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_037.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_038.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_039.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_040.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_041.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_042.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_043.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_044.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_045.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_046.cpp +FILE: ../../../third_party/skia/docs/examples/Point_000.cpp +FILE: ../../../third_party/skia/docs/examples/Point_001.cpp +FILE: ../../../third_party/skia/docs/examples/Point_002.cpp +FILE: ../../../third_party/skia/docs/examples/Point_003.cpp +FILE: ../../../third_party/skia/docs/examples/Point_004.cpp +FILE: ../../../third_party/skia/docs/examples/Point_005.cpp +FILE: ../../../third_party/skia/docs/examples/Point_006.cpp +FILE: ../../../third_party/skia/docs/examples/Point_007.cpp +FILE: ../../../third_party/skia/docs/examples/Point_008.cpp +FILE: ../../../third_party/skia/docs/examples/Point_009.cpp +FILE: ../../../third_party/skia/docs/examples/Point_010.cpp +FILE: ../../../third_party/skia/docs/examples/Point_011.cpp +FILE: ../../../third_party/skia/docs/examples/Point_012.cpp +FILE: ../../../third_party/skia/docs/examples/Point_013.cpp +FILE: ../../../third_party/skia/docs/examples/Point_014.cpp +FILE: ../../../third_party/skia/docs/examples/Point_015.cpp +FILE: ../../../third_party/skia/docs/examples/Point_016.cpp +FILE: ../../../third_party/skia/docs/examples/Point_017.cpp +FILE: ../../../third_party/skia/docs/examples/Point_018.cpp +FILE: ../../../third_party/skia/docs/examples/Point_019.cpp +FILE: ../../../third_party/skia/docs/examples/Point_020.cpp +FILE: ../../../third_party/skia/docs/examples/Point_021.cpp +FILE: ../../../third_party/skia/docs/examples/Point_022.cpp +FILE: ../../../third_party/skia/docs/examples/Point_023.cpp +FILE: ../../../third_party/skia/docs/examples/Point_024.cpp +FILE: ../../../third_party/skia/docs/examples/Point_025.cpp +FILE: ../../../third_party/skia/docs/examples/Point_026.cpp +FILE: ../../../third_party/skia/docs/examples/Point_027.cpp +FILE: ../../../third_party/skia/docs/examples/Point_028.cpp +FILE: ../../../third_party/skia/docs/examples/Point_029.cpp +FILE: ../../../third_party/skia/docs/examples/Point_030.cpp +FILE: ../../../third_party/skia/docs/examples/Point_031.cpp +FILE: ../../../third_party/skia/docs/examples/Point_032.cpp +FILE: ../../../third_party/skia/docs/examples/Point_033.cpp +FILE: ../../../third_party/skia/docs/examples/Point_034.cpp +FILE: ../../../third_party/skia/docs/examples/Point_035.cpp +FILE: ../../../third_party/skia/docs/examples/Point_036.cpp +FILE: ../../../third_party/skia/docs/examples/Point_037.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_000.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_001.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_002.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_003.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_004.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_005.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_006.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_007.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_008.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_009.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_010.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_011.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_012.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_013.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_014.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_015.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_016.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_017.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_018.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_019.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_020.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_021.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_022.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_023.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_024.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_025.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_026.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_027.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_028.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_029.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_030.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_031.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_032.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_033.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_034.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_035.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_036.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_037.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_038.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_039.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_040.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_041.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_042.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_043.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_044.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_000.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_001.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_002.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_003.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_004.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_005.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_006.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_007.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_008.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_009.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_010.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_011.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_012.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_013.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_014.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_015.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_016.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_017.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_018.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_019.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_020.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_021.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_022.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_023.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_024.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_025.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_026.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_027.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_028.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_029.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_030.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_031.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_032.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_033.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_034.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_035.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_036.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_037.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_038.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_039.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_040.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_041.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_042.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_043.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_044.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_045.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_046.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_047.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_048.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_049.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_050.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_051.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_052.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_053.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_054.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_055.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_056.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_057.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_058.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_059.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_060.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_061.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_062.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_063.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_064.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_065.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_066.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_067.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_068.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_069.cpp +FILE: ../../../third_party/skia/docs/examples/Region_000.cpp +FILE: ../../../third_party/skia/docs/examples/Region_001.cpp +FILE: ../../../third_party/skia/docs/examples/Region_002.cpp +FILE: ../../../third_party/skia/docs/examples/Region_003.cpp +FILE: ../../../third_party/skia/docs/examples/Region_004.cpp +FILE: ../../../third_party/skia/docs/examples/Region_005.cpp +FILE: ../../../third_party/skia/docs/examples/Region_006.cpp +FILE: ../../../third_party/skia/docs/examples/Region_007.cpp +FILE: ../../../third_party/skia/docs/examples/Region_008.cpp +FILE: ../../../third_party/skia/docs/examples/Region_009.cpp +FILE: ../../../third_party/skia/docs/examples/Region_010.cpp +FILE: ../../../third_party/skia/docs/examples/Region_011.cpp +FILE: ../../../third_party/skia/docs/examples/Region_012.cpp +FILE: ../../../third_party/skia/docs/examples/Region_013.cpp +FILE: ../../../third_party/skia/docs/examples/Region_014.cpp +FILE: ../../../third_party/skia/docs/examples/Region_015.cpp +FILE: ../../../third_party/skia/docs/examples/Region_016.cpp +FILE: ../../../third_party/skia/docs/examples/Region_017.cpp +FILE: ../../../third_party/skia/docs/examples/Region_018.cpp +FILE: ../../../third_party/skia/docs/examples/Region_019.cpp +FILE: ../../../third_party/skia/docs/examples/Region_020.cpp +FILE: ../../../third_party/skia/docs/examples/Region_021.cpp +FILE: ../../../third_party/skia/docs/examples/Region_022.cpp +FILE: ../../../third_party/skia/docs/examples/Region_023.cpp +FILE: ../../../third_party/skia/docs/examples/Region_024.cpp +FILE: ../../../third_party/skia/docs/examples/Region_025.cpp +FILE: ../../../third_party/skia/docs/examples/Region_026.cpp +FILE: ../../../third_party/skia/docs/examples/Region_027.cpp +FILE: ../../../third_party/skia/docs/examples/Region_028.cpp +FILE: ../../../third_party/skia/docs/examples/Region_029.cpp +FILE: ../../../third_party/skia/docs/examples/Region_030.cpp +FILE: ../../../third_party/skia/docs/examples/Region_031.cpp +FILE: ../../../third_party/skia/docs/examples/Region_032.cpp +FILE: ../../../third_party/skia/docs/examples/Region_033.cpp +FILE: ../../../third_party/skia/docs/examples/Region_034.cpp +FILE: ../../../third_party/skia/docs/examples/Region_035.cpp +FILE: ../../../third_party/skia/docs/examples/Region_036.cpp +FILE: ../../../third_party/skia/docs/examples/Region_037.cpp +FILE: ../../../third_party/skia/docs/examples/Region_038.cpp +FILE: ../../../third_party/skia/docs/examples/Region_039.cpp +FILE: ../../../third_party/skia/docs/examples/Region_040.cpp +FILE: ../../../third_party/skia/docs/examples/Region_041.cpp +FILE: ../../../third_party/skia/docs/examples/Region_042.cpp +FILE: ../../../third_party/skia/docs/examples/Region_043.cpp +FILE: ../../../third_party/skia/docs/examples/Region_044.cpp +FILE: ../../../third_party/skia/docs/examples/Region_045.cpp +FILE: ../../../third_party/skia/docs/examples/Region_046.cpp +FILE: ../../../third_party/skia/docs/examples/Region_047.cpp +FILE: ../../../third_party/skia/docs/examples/Region_048.cpp +FILE: ../../../third_party/skia/docs/examples/Region_049.cpp +FILE: ../../../third_party/skia/docs/examples/Region_050.cpp +FILE: ../../../third_party/skia/docs/examples/Region_051.cpp +FILE: ../../../third_party/skia/docs/examples/Region_052.cpp +FILE: ../../../third_party/skia/docs/examples/Region_053.cpp +FILE: ../../../third_party/skia/docs/examples/Region_054.cpp +FILE: ../../../third_party/skia/docs/examples/Surface_000.cpp +FILE: ../../../third_party/skia/docs/examples/Surface_001.cpp +FILE: ../../../third_party/skia/docs/examples/Surface_002.cpp +FILE: ../../../third_party/skia/docs/examples/Surface_003.cpp +FILE: ../../../third_party/skia/docs/examples/Surface_004.cpp +FILE: ../../../third_party/skia/docs/examples/Surface_005.cpp +FILE: ../../../third_party/skia/docs/examples/Surface_006.cpp +FILE: ../../../third_party/skia/docs/examples/Surface_007.cpp +FILE: ../../../third_party/skia/docs/examples/Surface_008.cpp +FILE: ../../../third_party/skia/docs/examples/Surface_009.cpp +FILE: ../../../third_party/skia/docs/examples/Surface_010.cpp +FILE: ../../../third_party/skia/docs/examples/Surface_011.cpp +FILE: ../../../third_party/skia/docs/examples/Surface_012.cpp +FILE: ../../../third_party/skia/docs/examples/Surface_013.cpp +FILE: ../../../third_party/skia/docs/examples/Surface_014.cpp +FILE: ../../../third_party/skia/docs/examples/Surface_015.cpp +FILE: ../../../third_party/skia/docs/examples/Surface_016.cpp +FILE: ../../../third_party/skia/docs/examples/Surface_017.cpp +FILE: ../../../third_party/skia/docs/examples/Surface_018.cpp +FILE: ../../../third_party/skia/docs/examples/Surface_019.cpp +FILE: ../../../third_party/skia/docs/examples/Surface_020.cpp +FILE: ../../../third_party/skia/docs/examples/Surface_021.cpp +FILE: ../../../third_party/skia/docs/examples/Surface_022.cpp +FILE: ../../../third_party/skia/docs/examples/Surface_023.cpp +FILE: ../../../third_party/skia/docs/examples/Surface_024.cpp +FILE: ../../../third_party/skia/docs/examples/Surface_025.cpp +FILE: ../../../third_party/skia/docs/examples/Surface_026.cpp +FILE: ../../../third_party/skia/docs/examples/Surface_027.cpp +FILE: ../../../third_party/skia/docs/examples/Surface_028.cpp +FILE: ../../../third_party/skia/docs/examples/TextBlobBuilder_000.cpp +FILE: ../../../third_party/skia/docs/examples/TextBlobBuilder_001.cpp +FILE: ../../../third_party/skia/docs/examples/TextBlobBuilder_002.cpp +FILE: ../../../third_party/skia/docs/examples/TextBlobBuilder_003.cpp +FILE: ../../../third_party/skia/docs/examples/TextBlobBuilder_004.cpp +FILE: ../../../third_party/skia/docs/examples/TextBlob_000.cpp +FILE: ../../../third_party/skia/docs/examples/TextBlob_001.cpp +FILE: ../../../third_party/skia/docs/examples/TextBlob_002.cpp +FILE: ../../../third_party/skia/docs/examples/TextBlob_003.cpp +FILE: ../../../third_party/skia/docs/examples/TextBlob_004.cpp +FILE: ../../../third_party/skia/docs/examples/TextBlob_005.cpp +FILE: ../../../third_party/skia/docs/examples/TextBlob_006.cpp +FILE: ../../../third_party/skia/docs/examples/TextBlob_007.cpp +FILE: ../../../third_party/skia/gm/crbug_918512.cpp +---------------------------------------------------------------------------------------------------- +Copyright 2019 Google LLC. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +==================================================================================================== + ==================================================================================================== LIBRARY: skia ORIGIN: ../../../third_party/skia/experimental/wasm-skp-debugger/debugger_bindings.cpp + ../../../third_party/skia/LICENSE @@ -4985,41 +6148,6 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ==================================================================================================== -==================================================================================================== -LIBRARY: skia -ORIGIN: ../../../third_party/skia/gm/crbug_918512.cpp + ../../../third_party/skia/LICENSE -TYPE: LicenseType.bsd -FILE: ../../../third_party/skia/gm/crbug_918512.cpp ----------------------------------------------------------------------------------------------------- -Copyright 2019 Google LLC. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -==================================================================================================== - ==================================================================================================== LIBRARY: skia ORIGIN: ../../../third_party/skia/include/config/SkUserConfig.h + ../../../third_party/skia/LICENSE From 0e0e0a98f5111ebf4032ef25eaf568f19867ecf1 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Fri, 15 Mar 2019 16:04:11 -0400 Subject: [PATCH 1393/1537] Roll src/third_party/skia 46f5ee156155..49ea3194535c (8 commits) (#8179) https://skia.googlesource.com/skia.git/%2Blog/46f5ee156155..49ea3194535c git log 46f5ee1561558857a1c669b43b71ca84f6ba6f22..49ea3194535c1783554149aab1d17f931512497e --date=short --no-merges --format=%ad %ae %s 2019-03-15 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader f3b57974620d..1e6a9898b73b (1 commits) 2019-02-26 halcanary@google.com GN: split out skia_*_public from skia_*_sources 2019-03-15 robertphillips@google.com Reduce work done by GrYUVtoRGBEffect for kIdentity_SkYUVColorSpace 2019-03-15 halcanary@google.com Revert "Compile all fiddle examples locally" 2019-03-15 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader 36411219ff2b..f3b57974620d (3 commits) 2019-03-15 brianosman@google.com Standardize naming on CoverageAsAlpha (rather than AlphaAsCoverage) 2019-03-08 bsalomon@google.com Revert "Revert "Distinguish between "flushed" and "finished" idle state callbacks on GrTexture."" 2019-03-15 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader e37ce613d1c7..36411219ff2b (1 commits) The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (benjaminwagner@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 1199 +----------------------------- 2 files changed, 37 insertions(+), 1164 deletions(-) diff --git a/DEPS b/DEPS index c304f870ff095..ac0eaddc36797 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '46f5ee1561558857a1c669b43b71ca84f6ba6f22', + 'skia_revision': '49ea3194535c1783554149aab1d17f931512497e', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 92e606ef6f905..aead963c45d9f 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: bd6c6df433f7f05bc56ed2578837d560 +Signature: f4dfa9d74e47ae57a6f9aa3dac650510 UNUSED LICENSES: @@ -4649,1168 +4649,6 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ==================================================================================================== -==================================================================================================== -LIBRARY: skia -ORIGIN: ../../../third_party/skia/docs/examples/AutoCanvasRestore_000.cpp + ../../../third_party/skia/LICENSE -TYPE: LicenseType.bsd -FILE: ../../../third_party/skia/docs/examples/AutoCanvasRestore_000.cpp -FILE: ../../../third_party/skia/docs/examples/AutoCanvasRestore_001.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_000.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_001.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_002.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_003.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_004.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_005.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_006.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_007.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_008.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_009.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_010.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_011.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_012.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_013.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_014.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_015.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_016.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_017.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_018.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_019.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_020.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_021.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_022.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_023.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_024.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_025.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_026.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_027.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_028.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_029.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_030.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_031.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_032.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_033.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_034.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_035.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_036.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_037.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_038.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_039.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_040.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_041.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_042.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_043.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_044.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_045.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_046.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_047.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_048.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_049.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_050.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_051.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_052.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_053.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_054.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_055.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_056.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_057.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_058.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_059.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_060.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_061.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_062.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_063.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_064.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_065.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_066.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_067.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_068.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_069.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_070.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_071.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_072.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_073.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_074.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_075.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_076.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_077.cpp -FILE: ../../../third_party/skia/docs/examples/BlendMode_000.cpp -FILE: ../../../third_party/skia/docs/examples/BlendMode_001.cpp -FILE: ../../../third_party/skia/docs/examples/BlendMode_002.cpp -FILE: ../../../third_party/skia/docs/examples/BlendMode_003.cpp -FILE: ../../../third_party/skia/docs/examples/BlendMode_004.cpp -FILE: ../../../third_party/skia/docs/examples/BlendMode_005.cpp -FILE: ../../../third_party/skia/docs/examples/BlendMode_006.cpp -FILE: ../../../third_party/skia/docs/examples/BlendMode_007.cpp -FILE: ../../../third_party/skia/docs/examples/BlendMode_008.cpp -FILE: ../../../third_party/skia/docs/examples/BlendMode_009.cpp -FILE: ../../../third_party/skia/docs/examples/BlendMode_010.cpp -FILE: ../../../third_party/skia/docs/examples/BlendMode_011.cpp -FILE: ../../../third_party/skia/docs/examples/BlendMode_012.cpp -FILE: ../../../third_party/skia/docs/examples/BlendMode_013.cpp -FILE: ../../../third_party/skia/docs/examples/BlendMode_014.cpp -FILE: ../../../third_party/skia/docs/examples/BlendMode_015.cpp -FILE: ../../../third_party/skia/docs/examples/BlendMode_016.cpp -FILE: ../../../third_party/skia/docs/examples/BlendMode_017.cpp -FILE: ../../../third_party/skia/docs/examples/BlendMode_018.cpp -FILE: ../../../third_party/skia/docs/examples/BlendMode_019.cpp -FILE: ../../../third_party/skia/docs/examples/BlendMode_020.cpp -FILE: ../../../third_party/skia/docs/examples/BlendMode_021.cpp -FILE: ../../../third_party/skia/docs/examples/BlendMode_022.cpp -FILE: ../../../third_party/skia/docs/examples/BlendMode_023.cpp -FILE: ../../../third_party/skia/docs/examples/BlendMode_024.cpp -FILE: ../../../third_party/skia/docs/examples/BlendMode_025.cpp -FILE: ../../../third_party/skia/docs/examples/BlendMode_026.cpp -FILE: ../../../third_party/skia/docs/examples/BlendMode_027.cpp -FILE: ../../../third_party/skia/docs/examples/BlendMode_028.cpp -FILE: ../../../third_party/skia/docs/examples/BlendMode_029.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_000.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_001.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_002.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_003.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_004.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_005.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_006.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_008.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_009.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_010.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_011.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_012.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_013.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_014.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_015.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_016.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_017.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_018.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_019.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_020.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_021.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_022.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_023.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_024.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_025.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_026.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_027.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_028.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_029.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_030.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_031.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_032.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_033.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_034.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_035.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_036.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_037.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_038.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_039.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_040.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_041.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_042.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_043.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_044.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_045.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_046.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_047.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_048.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_049.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_050.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_051.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_052.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_053.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_054.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_055.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_056.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_057.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_058.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_059.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_060.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_061.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_062.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_063.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_064.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_065.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_066.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_067.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_068.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_069.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_070.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_071.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_072.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_073.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_074.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_075.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_076.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_077.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_078.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_079.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_080.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_081.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_082.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_083.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_084.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_085.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_086.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_087.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_088.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_089.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_090.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_091.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_092.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_093.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_094.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_095.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_096.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_097.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_098.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_099.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_100.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_101.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_102.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_103.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_104.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_105.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_106.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_107.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_108.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_109.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_110.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_111.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_112.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_113.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_114.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_115.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_116.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_117.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_118.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_119.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_120.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_121.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_122.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_123.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_124.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_125.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_126.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_127.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_128.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_129.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_130.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_131.cpp -FILE: ../../../third_party/skia/docs/examples/Color4f_000.cpp -FILE: ../../../third_party/skia/docs/examples/Color4f_001.cpp -FILE: ../../../third_party/skia/docs/examples/Color4f_002.cpp -FILE: ../../../third_party/skia/docs/examples/Color4f_003.cpp -FILE: ../../../third_party/skia/docs/examples/Color4f_004.cpp -FILE: ../../../third_party/skia/docs/examples/Color4f_005.cpp -FILE: ../../../third_party/skia/docs/examples/Color_000.cpp -FILE: ../../../third_party/skia/docs/examples/Color_001.cpp -FILE: ../../../third_party/skia/docs/examples/Color_002.cpp -FILE: ../../../third_party/skia/docs/examples/Color_003.cpp -FILE: ../../../third_party/skia/docs/examples/Color_004.cpp -FILE: ../../../third_party/skia/docs/examples/Color_005.cpp -FILE: ../../../third_party/skia/docs/examples/Color_006.cpp -FILE: ../../../third_party/skia/docs/examples/Color_007.cpp -FILE: ../../../third_party/skia/docs/examples/Color_008.cpp -FILE: ../../../third_party/skia/docs/examples/Color_009.cpp -FILE: ../../../third_party/skia/docs/examples/Color_010.cpp -FILE: ../../../third_party/skia/docs/examples/Color_011.cpp -FILE: ../../../third_party/skia/docs/examples/Color_012.cpp -FILE: ../../../third_party/skia/docs/examples/Color_013.cpp -FILE: ../../../third_party/skia/docs/examples/Color_014.cpp -FILE: ../../../third_party/skia/docs/examples/Color_015.cpp -FILE: ../../../third_party/skia/docs/examples/Color_016.cpp -FILE: ../../../third_party/skia/docs/examples/Color_017.cpp -FILE: ../../../third_party/skia/docs/examples/Color_018.cpp -FILE: ../../../third_party/skia/docs/examples/Font_000.cpp -FILE: ../../../third_party/skia/docs/examples/Font_001.cpp -FILE: ../../../third_party/skia/docs/examples/Font_002.cpp -FILE: ../../../third_party/skia/docs/examples/Font_003.cpp -FILE: ../../../third_party/skia/docs/examples/Font_004.cpp -FILE: ../../../third_party/skia/docs/examples/Font_005.cpp -FILE: ../../../third_party/skia/docs/examples/Font_006.cpp -FILE: ../../../third_party/skia/docs/examples/Font_007.cpp -FILE: ../../../third_party/skia/docs/examples/Font_008.cpp -FILE: ../../../third_party/skia/docs/examples/Font_009.cpp -FILE: ../../../third_party/skia/docs/examples/Font_010.cpp -FILE: ../../../third_party/skia/docs/examples/Font_011.cpp -FILE: ../../../third_party/skia/docs/examples/Font_012.cpp -FILE: ../../../third_party/skia/docs/examples/Font_013.cpp -FILE: ../../../third_party/skia/docs/examples/Font_014.cpp -FILE: ../../../third_party/skia/docs/examples/Font_015.cpp -FILE: ../../../third_party/skia/docs/examples/Font_016.cpp -FILE: ../../../third_party/skia/docs/examples/Font_017.cpp -FILE: ../../../third_party/skia/docs/examples/Font_018.cpp -FILE: ../../../third_party/skia/docs/examples/Font_019.cpp -FILE: ../../../third_party/skia/docs/examples/Font_020.cpp -FILE: ../../../third_party/skia/docs/examples/Font_021.cpp -FILE: ../../../third_party/skia/docs/examples/Font_022.cpp -FILE: ../../../third_party/skia/docs/examples/Font_023.cpp -FILE: ../../../third_party/skia/docs/examples/Font_024.cpp -FILE: ../../../third_party/skia/docs/examples/Font_025.cpp -FILE: ../../../third_party/skia/docs/examples/Font_026.cpp -FILE: ../../../third_party/skia/docs/examples/Font_027.cpp -FILE: ../../../third_party/skia/docs/examples/Font_028.cpp -FILE: ../../../third_party/skia/docs/examples/Font_029.cpp -FILE: ../../../third_party/skia/docs/examples/Font_030.cpp -FILE: ../../../third_party/skia/docs/examples/Font_031.cpp -FILE: ../../../third_party/skia/docs/examples/Font_032.cpp -FILE: ../../../third_party/skia/docs/examples/Font_033.cpp -FILE: ../../../third_party/skia/docs/examples/Font_034.cpp -FILE: ../../../third_party/skia/docs/examples/Font_035.cpp -FILE: ../../../third_party/skia/docs/examples/Font_036.cpp -FILE: ../../../third_party/skia/docs/examples/Font_037.cpp -FILE: ../../../third_party/skia/docs/examples/Font_038.cpp -FILE: ../../../third_party/skia/docs/examples/IPoint_000.cpp -FILE: ../../../third_party/skia/docs/examples/IPoint_001.cpp -FILE: ../../../third_party/skia/docs/examples/IPoint_002.cpp -FILE: ../../../third_party/skia/docs/examples/IPoint_003.cpp -FILE: ../../../third_party/skia/docs/examples/IPoint_004.cpp -FILE: ../../../third_party/skia/docs/examples/IPoint_005.cpp -FILE: ../../../third_party/skia/docs/examples/IPoint_006.cpp -FILE: ../../../third_party/skia/docs/examples/IPoint_007.cpp -FILE: ../../../third_party/skia/docs/examples/IPoint_008.cpp -FILE: ../../../third_party/skia/docs/examples/IPoint_009.cpp -FILE: ../../../third_party/skia/docs/examples/IPoint_010.cpp -FILE: ../../../third_party/skia/docs/examples/IPoint_011.cpp -FILE: ../../../third_party/skia/docs/examples/IPoint_012.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_000.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_001.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_002.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_003.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_004.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_005.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_006.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_007.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_008.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_009.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_010.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_011.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_012.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_013.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_014.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_015.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_016.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_017.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_018.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_019.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_020.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_021.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_022.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_023.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_024.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_025.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_026.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_027.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_028.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_029.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_030.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_031.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_032.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_033.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_034.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_035.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_036.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_037.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_038.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_039.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_040.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_041.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_042.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_043.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_044.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_045.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_046.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_047.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_048.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_049.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_000.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_001.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_002.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_003.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_004.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_005.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_006.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_007.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_008.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_009.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_010.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_011.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_012.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_013.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_014.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_015.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_016.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_017.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_018.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_019.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_020.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_021.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_022.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_023.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_024.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_025.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_026.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_027.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_028.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_029.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_030.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_031.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_032.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_033.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_034.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_035.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_036.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_037.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_038.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_039.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_040.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_041.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_042.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_043.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_044.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_045.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_046.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_047.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_048.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_049.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_050.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_051.cpp -FILE: ../../../third_party/skia/docs/examples/Image_000.cpp -FILE: ../../../third_party/skia/docs/examples/Image_001.cpp -FILE: ../../../third_party/skia/docs/examples/Image_002.cpp -FILE: ../../../third_party/skia/docs/examples/Image_003.cpp -FILE: ../../../third_party/skia/docs/examples/Image_004.cpp -FILE: ../../../third_party/skia/docs/examples/Image_005.cpp -FILE: ../../../third_party/skia/docs/examples/Image_006.cpp -FILE: ../../../third_party/skia/docs/examples/Image_007.cpp -FILE: ../../../third_party/skia/docs/examples/Image_008.cpp -FILE: ../../../third_party/skia/docs/examples/Image_009.cpp -FILE: ../../../third_party/skia/docs/examples/Image_010.cpp -FILE: ../../../third_party/skia/docs/examples/Image_011.cpp -FILE: ../../../third_party/skia/docs/examples/Image_012.cpp -FILE: ../../../third_party/skia/docs/examples/Image_013.cpp -FILE: ../../../third_party/skia/docs/examples/Image_014.cpp -FILE: ../../../third_party/skia/docs/examples/Image_015.cpp -FILE: ../../../third_party/skia/docs/examples/Image_016.cpp -FILE: ../../../third_party/skia/docs/examples/Image_017.cpp -FILE: ../../../third_party/skia/docs/examples/Image_018.cpp -FILE: ../../../third_party/skia/docs/examples/Image_019.cpp -FILE: ../../../third_party/skia/docs/examples/Image_020.cpp -FILE: ../../../third_party/skia/docs/examples/Image_021.cpp -FILE: ../../../third_party/skia/docs/examples/Image_022.cpp -FILE: ../../../third_party/skia/docs/examples/Image_023.cpp -FILE: ../../../third_party/skia/docs/examples/Image_024.cpp -FILE: ../../../third_party/skia/docs/examples/Image_025.cpp -FILE: ../../../third_party/skia/docs/examples/Image_026.cpp -FILE: ../../../third_party/skia/docs/examples/Image_027.cpp -FILE: ../../../third_party/skia/docs/examples/Image_028.cpp -FILE: ../../../third_party/skia/docs/examples/Image_029.cpp -FILE: ../../../third_party/skia/docs/examples/Image_030.cpp -FILE: ../../../third_party/skia/docs/examples/Image_031.cpp -FILE: ../../../third_party/skia/docs/examples/Image_032.cpp -FILE: ../../../third_party/skia/docs/examples/Image_033.cpp -FILE: ../../../third_party/skia/docs/examples/Image_034.cpp -FILE: ../../../third_party/skia/docs/examples/Image_035.cpp -FILE: ../../../third_party/skia/docs/examples/Image_036.cpp -FILE: ../../../third_party/skia/docs/examples/Image_037.cpp -FILE: ../../../third_party/skia/docs/examples/Image_038.cpp -FILE: ../../../third_party/skia/docs/examples/Image_039.cpp -FILE: ../../../third_party/skia/docs/examples/Image_040.cpp -FILE: ../../../third_party/skia/docs/examples/Image_041.cpp -FILE: ../../../third_party/skia/docs/examples/Image_042.cpp -FILE: ../../../third_party/skia/docs/examples/Image_043.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_000.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_001.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_002.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_003.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_004.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_005.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_006.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_007.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_008.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_009.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_010.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_011.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_012.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_013.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_014.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_015.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_016.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_017.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_018.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_019.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_020.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_021.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_022.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_023.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_024.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_025.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_026.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_027.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_028.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_029.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_030.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_031.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_032.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_033.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_034.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_035.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_036.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_037.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_038.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_039.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_040.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_041.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_042.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_043.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_044.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_045.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_046.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_047.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_048.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_049.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_050.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_051.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_052.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_053.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_054.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_055.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_056.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_057.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_058.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_059.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_060.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_061.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_062.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_063.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_064.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_065.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_066.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_067.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_068.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_069.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_070.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_071.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_072.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_073.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_074.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_075.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_076.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_077.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_078.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_079.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_080.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_081.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_082.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_083.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_084.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_085.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_086.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_087.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_088.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_089.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_090.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_091.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_092.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_093.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_094.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_095.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_096.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_097.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_098.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_099.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_100.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_101.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_102.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_103.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_104.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_105.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_106.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_107.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_000.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_001.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_002.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_003.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_004.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_005.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_006.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_007.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_008.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_009.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_010.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_011.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_012.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_013.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_014.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_015.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_016.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_017.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_018.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_019.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_020.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_021.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_022.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_023.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_024.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_025.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_026.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_027.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_028.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_029.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_030.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_031.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_032.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_033.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_034.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_035.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_036.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_037.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_038.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_039.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_040.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_041.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_042.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_043.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_044.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_045.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_046.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_047.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_048.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_049.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_050.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_051.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_052.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_053.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_054.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_055.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_056.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_057.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_058.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_059.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_060.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_061.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_062.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_063.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_064.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_065.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_066.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_067.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_068.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_069.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_070.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_071.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_072.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_073.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_074.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_075.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_076.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_077.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_078.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_079.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_080.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_081.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_082.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_083.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_084.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_085.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_086.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_087.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_088.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_089.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_090.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_091.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_092.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_093.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_094.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_095.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_096.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_097.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_098.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_099.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_100.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_101.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_102.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_103.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_104.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_105.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_106.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_107.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_108.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_109.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_110.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_111.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_112.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_113.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_114.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_115.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_116.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_117.cpp -FILE: ../../../third_party/skia/docs/examples/Path_000.cpp -FILE: ../../../third_party/skia/docs/examples/Path_001.cpp -FILE: ../../../third_party/skia/docs/examples/Path_002.cpp -FILE: ../../../third_party/skia/docs/examples/Path_003.cpp -FILE: ../../../third_party/skia/docs/examples/Path_004.cpp -FILE: ../../../third_party/skia/docs/examples/Path_005.cpp -FILE: ../../../third_party/skia/docs/examples/Path_006.cpp -FILE: ../../../third_party/skia/docs/examples/Path_007.cpp -FILE: ../../../third_party/skia/docs/examples/Path_008.cpp -FILE: ../../../third_party/skia/docs/examples/Path_009.cpp -FILE: ../../../third_party/skia/docs/examples/Path_010.cpp -FILE: ../../../third_party/skia/docs/examples/Path_011.cpp -FILE: ../../../third_party/skia/docs/examples/Path_012.cpp -FILE: ../../../third_party/skia/docs/examples/Path_013.cpp -FILE: ../../../third_party/skia/docs/examples/Path_014.cpp -FILE: ../../../third_party/skia/docs/examples/Path_015.cpp -FILE: ../../../third_party/skia/docs/examples/Path_016.cpp -FILE: ../../../third_party/skia/docs/examples/Path_017.cpp -FILE: ../../../third_party/skia/docs/examples/Path_018.cpp -FILE: ../../../third_party/skia/docs/examples/Path_019.cpp -FILE: ../../../third_party/skia/docs/examples/Path_020.cpp -FILE: ../../../third_party/skia/docs/examples/Path_021.cpp -FILE: ../../../third_party/skia/docs/examples/Path_022.cpp -FILE: ../../../third_party/skia/docs/examples/Path_023.cpp -FILE: ../../../third_party/skia/docs/examples/Path_024.cpp -FILE: ../../../third_party/skia/docs/examples/Path_025.cpp -FILE: ../../../third_party/skia/docs/examples/Path_026.cpp -FILE: ../../../third_party/skia/docs/examples/Path_027.cpp -FILE: ../../../third_party/skia/docs/examples/Path_028.cpp -FILE: ../../../third_party/skia/docs/examples/Path_029.cpp -FILE: ../../../third_party/skia/docs/examples/Path_030.cpp -FILE: ../../../third_party/skia/docs/examples/Path_031.cpp -FILE: ../../../third_party/skia/docs/examples/Path_032.cpp -FILE: ../../../third_party/skia/docs/examples/Path_033.cpp -FILE: ../../../third_party/skia/docs/examples/Path_034.cpp -FILE: ../../../third_party/skia/docs/examples/Path_035.cpp -FILE: ../../../third_party/skia/docs/examples/Path_036.cpp -FILE: ../../../third_party/skia/docs/examples/Path_037.cpp -FILE: ../../../third_party/skia/docs/examples/Path_038.cpp -FILE: ../../../third_party/skia/docs/examples/Path_039.cpp -FILE: ../../../third_party/skia/docs/examples/Path_040.cpp -FILE: ../../../third_party/skia/docs/examples/Path_041.cpp -FILE: ../../../third_party/skia/docs/examples/Path_042.cpp -FILE: ../../../third_party/skia/docs/examples/Path_043.cpp -FILE: ../../../third_party/skia/docs/examples/Path_044.cpp -FILE: ../../../third_party/skia/docs/examples/Path_045.cpp -FILE: ../../../third_party/skia/docs/examples/Path_046.cpp -FILE: ../../../third_party/skia/docs/examples/Path_047.cpp -FILE: ../../../third_party/skia/docs/examples/Path_048.cpp -FILE: ../../../third_party/skia/docs/examples/Path_049.cpp -FILE: ../../../third_party/skia/docs/examples/Path_050.cpp -FILE: ../../../third_party/skia/docs/examples/Path_051.cpp -FILE: ../../../third_party/skia/docs/examples/Path_052.cpp -FILE: ../../../third_party/skia/docs/examples/Path_053.cpp -FILE: ../../../third_party/skia/docs/examples/Path_054.cpp -FILE: ../../../third_party/skia/docs/examples/Path_055.cpp -FILE: ../../../third_party/skia/docs/examples/Path_056.cpp -FILE: ../../../third_party/skia/docs/examples/Path_057.cpp -FILE: ../../../third_party/skia/docs/examples/Path_058.cpp -FILE: ../../../third_party/skia/docs/examples/Path_059.cpp -FILE: ../../../third_party/skia/docs/examples/Path_060.cpp -FILE: ../../../third_party/skia/docs/examples/Path_061.cpp -FILE: ../../../third_party/skia/docs/examples/Path_062.cpp -FILE: ../../../third_party/skia/docs/examples/Path_063.cpp -FILE: ../../../third_party/skia/docs/examples/Path_064.cpp -FILE: ../../../third_party/skia/docs/examples/Path_065.cpp -FILE: ../../../third_party/skia/docs/examples/Path_066.cpp -FILE: ../../../third_party/skia/docs/examples/Path_067.cpp -FILE: ../../../third_party/skia/docs/examples/Path_068.cpp -FILE: ../../../third_party/skia/docs/examples/Path_069.cpp -FILE: ../../../third_party/skia/docs/examples/Path_070.cpp -FILE: ../../../third_party/skia/docs/examples/Path_071.cpp -FILE: ../../../third_party/skia/docs/examples/Path_072.cpp -FILE: ../../../third_party/skia/docs/examples/Path_073.cpp -FILE: ../../../third_party/skia/docs/examples/Path_074.cpp -FILE: ../../../third_party/skia/docs/examples/Path_075.cpp -FILE: ../../../third_party/skia/docs/examples/Path_076.cpp -FILE: ../../../third_party/skia/docs/examples/Path_077.cpp -FILE: ../../../third_party/skia/docs/examples/Path_078.cpp -FILE: ../../../third_party/skia/docs/examples/Path_079.cpp -FILE: ../../../third_party/skia/docs/examples/Path_080.cpp -FILE: ../../../third_party/skia/docs/examples/Path_081.cpp -FILE: ../../../third_party/skia/docs/examples/Path_082.cpp -FILE: ../../../third_party/skia/docs/examples/Path_083.cpp -FILE: ../../../third_party/skia/docs/examples/Path_084.cpp -FILE: ../../../third_party/skia/docs/examples/Path_085.cpp -FILE: ../../../third_party/skia/docs/examples/Path_086.cpp -FILE: ../../../third_party/skia/docs/examples/Path_087.cpp -FILE: ../../../third_party/skia/docs/examples/Path_088.cpp -FILE: ../../../third_party/skia/docs/examples/Path_089.cpp -FILE: ../../../third_party/skia/docs/examples/Path_090.cpp -FILE: ../../../third_party/skia/docs/examples/Path_091.cpp -FILE: ../../../third_party/skia/docs/examples/Path_092.cpp -FILE: ../../../third_party/skia/docs/examples/Path_093.cpp -FILE: ../../../third_party/skia/docs/examples/Path_094.cpp -FILE: ../../../third_party/skia/docs/examples/Path_095.cpp -FILE: ../../../third_party/skia/docs/examples/Path_096.cpp -FILE: ../../../third_party/skia/docs/examples/Path_097.cpp -FILE: ../../../third_party/skia/docs/examples/Path_098.cpp -FILE: ../../../third_party/skia/docs/examples/Path_099.cpp -FILE: ../../../third_party/skia/docs/examples/Path_100.cpp -FILE: ../../../third_party/skia/docs/examples/Path_101.cpp -FILE: ../../../third_party/skia/docs/examples/Path_102.cpp -FILE: ../../../third_party/skia/docs/examples/Path_103.cpp -FILE: ../../../third_party/skia/docs/examples/Path_104.cpp -FILE: ../../../third_party/skia/docs/examples/Path_105.cpp -FILE: ../../../third_party/skia/docs/examples/Path_106.cpp -FILE: ../../../third_party/skia/docs/examples/Path_107.cpp -FILE: ../../../third_party/skia/docs/examples/Path_108.cpp -FILE: ../../../third_party/skia/docs/examples/Path_109.cpp -FILE: ../../../third_party/skia/docs/examples/Path_110.cpp -FILE: ../../../third_party/skia/docs/examples/Path_111.cpp -FILE: ../../../third_party/skia/docs/examples/Path_112.cpp -FILE: ../../../third_party/skia/docs/examples/Path_113.cpp -FILE: ../../../third_party/skia/docs/examples/Path_114.cpp -FILE: ../../../third_party/skia/docs/examples/Path_115.cpp -FILE: ../../../third_party/skia/docs/examples/Path_116.cpp -FILE: ../../../third_party/skia/docs/examples/Path_117.cpp -FILE: ../../../third_party/skia/docs/examples/Path_118.cpp -FILE: ../../../third_party/skia/docs/examples/Path_119.cpp -FILE: ../../../third_party/skia/docs/examples/Path_120.cpp -FILE: ../../../third_party/skia/docs/examples/Path_121.cpp -FILE: ../../../third_party/skia/docs/examples/Path_122.cpp -FILE: ../../../third_party/skia/docs/examples/Path_123.cpp -FILE: ../../../third_party/skia/docs/examples/Path_124.cpp -FILE: ../../../third_party/skia/docs/examples/Path_125.cpp -FILE: ../../../third_party/skia/docs/examples/Path_126.cpp -FILE: ../../../third_party/skia/docs/examples/Path_127.cpp -FILE: ../../../third_party/skia/docs/examples/Picture_000.cpp -FILE: ../../../third_party/skia/docs/examples/Picture_001.cpp -FILE: ../../../third_party/skia/docs/examples/Picture_002.cpp -FILE: ../../../third_party/skia/docs/examples/Picture_003.cpp -FILE: ../../../third_party/skia/docs/examples/Picture_004.cpp -FILE: ../../../third_party/skia/docs/examples/Picture_005.cpp -FILE: ../../../third_party/skia/docs/examples/Picture_006.cpp -FILE: ../../../third_party/skia/docs/examples/Picture_007.cpp -FILE: ../../../third_party/skia/docs/examples/Picture_008.cpp -FILE: ../../../third_party/skia/docs/examples/Picture_009.cpp -FILE: ../../../third_party/skia/docs/examples/Picture_010.cpp -FILE: ../../../third_party/skia/docs/examples/Picture_011.cpp -FILE: ../../../third_party/skia/docs/examples/Pixmap_000.cpp -FILE: ../../../third_party/skia/docs/examples/Pixmap_001.cpp -FILE: ../../../third_party/skia/docs/examples/Pixmap_002.cpp -FILE: ../../../third_party/skia/docs/examples/Pixmap_003.cpp -FILE: ../../../third_party/skia/docs/examples/Pixmap_004.cpp -FILE: ../../../third_party/skia/docs/examples/Pixmap_005.cpp -FILE: ../../../third_party/skia/docs/examples/Pixmap_006.cpp -FILE: ../../../third_party/skia/docs/examples/Pixmap_007.cpp -FILE: ../../../third_party/skia/docs/examples/Pixmap_008.cpp -FILE: ../../../third_party/skia/docs/examples/Pixmap_009.cpp -FILE: ../../../third_party/skia/docs/examples/Pixmap_010.cpp -FILE: ../../../third_party/skia/docs/examples/Pixmap_011.cpp -FILE: ../../../third_party/skia/docs/examples/Pixmap_012.cpp -FILE: ../../../third_party/skia/docs/examples/Pixmap_013.cpp -FILE: ../../../third_party/skia/docs/examples/Pixmap_014.cpp -FILE: ../../../third_party/skia/docs/examples/Pixmap_015.cpp -FILE: ../../../third_party/skia/docs/examples/Pixmap_016.cpp -FILE: ../../../third_party/skia/docs/examples/Pixmap_017.cpp -FILE: ../../../third_party/skia/docs/examples/Pixmap_018.cpp -FILE: ../../../third_party/skia/docs/examples/Pixmap_019.cpp -FILE: ../../../third_party/skia/docs/examples/Pixmap_020.cpp -FILE: ../../../third_party/skia/docs/examples/Pixmap_021.cpp -FILE: ../../../third_party/skia/docs/examples/Pixmap_022.cpp -FILE: ../../../third_party/skia/docs/examples/Pixmap_023.cpp -FILE: ../../../third_party/skia/docs/examples/Pixmap_024.cpp -FILE: ../../../third_party/skia/docs/examples/Pixmap_025.cpp -FILE: ../../../third_party/skia/docs/examples/Pixmap_026.cpp -FILE: ../../../third_party/skia/docs/examples/Pixmap_027.cpp -FILE: ../../../third_party/skia/docs/examples/Pixmap_028.cpp -FILE: ../../../third_party/skia/docs/examples/Pixmap_029.cpp -FILE: ../../../third_party/skia/docs/examples/Pixmap_030.cpp -FILE: ../../../third_party/skia/docs/examples/Pixmap_031.cpp -FILE: ../../../third_party/skia/docs/examples/Pixmap_032.cpp -FILE: ../../../third_party/skia/docs/examples/Pixmap_033.cpp -FILE: ../../../third_party/skia/docs/examples/Pixmap_034.cpp -FILE: ../../../third_party/skia/docs/examples/Pixmap_035.cpp -FILE: ../../../third_party/skia/docs/examples/Pixmap_036.cpp -FILE: ../../../third_party/skia/docs/examples/Pixmap_037.cpp -FILE: ../../../third_party/skia/docs/examples/Pixmap_038.cpp -FILE: ../../../third_party/skia/docs/examples/Pixmap_039.cpp -FILE: ../../../third_party/skia/docs/examples/Pixmap_040.cpp -FILE: ../../../third_party/skia/docs/examples/Pixmap_041.cpp -FILE: ../../../third_party/skia/docs/examples/Pixmap_042.cpp -FILE: ../../../third_party/skia/docs/examples/Pixmap_043.cpp -FILE: ../../../third_party/skia/docs/examples/Pixmap_044.cpp -FILE: ../../../third_party/skia/docs/examples/Pixmap_045.cpp -FILE: ../../../third_party/skia/docs/examples/Pixmap_046.cpp -FILE: ../../../third_party/skia/docs/examples/Point_000.cpp -FILE: ../../../third_party/skia/docs/examples/Point_001.cpp -FILE: ../../../third_party/skia/docs/examples/Point_002.cpp -FILE: ../../../third_party/skia/docs/examples/Point_003.cpp -FILE: ../../../third_party/skia/docs/examples/Point_004.cpp -FILE: ../../../third_party/skia/docs/examples/Point_005.cpp -FILE: ../../../third_party/skia/docs/examples/Point_006.cpp -FILE: ../../../third_party/skia/docs/examples/Point_007.cpp -FILE: ../../../third_party/skia/docs/examples/Point_008.cpp -FILE: ../../../third_party/skia/docs/examples/Point_009.cpp -FILE: ../../../third_party/skia/docs/examples/Point_010.cpp -FILE: ../../../third_party/skia/docs/examples/Point_011.cpp -FILE: ../../../third_party/skia/docs/examples/Point_012.cpp -FILE: ../../../third_party/skia/docs/examples/Point_013.cpp -FILE: ../../../third_party/skia/docs/examples/Point_014.cpp -FILE: ../../../third_party/skia/docs/examples/Point_015.cpp -FILE: ../../../third_party/skia/docs/examples/Point_016.cpp -FILE: ../../../third_party/skia/docs/examples/Point_017.cpp -FILE: ../../../third_party/skia/docs/examples/Point_018.cpp -FILE: ../../../third_party/skia/docs/examples/Point_019.cpp -FILE: ../../../third_party/skia/docs/examples/Point_020.cpp -FILE: ../../../third_party/skia/docs/examples/Point_021.cpp -FILE: ../../../third_party/skia/docs/examples/Point_022.cpp -FILE: ../../../third_party/skia/docs/examples/Point_023.cpp -FILE: ../../../third_party/skia/docs/examples/Point_024.cpp -FILE: ../../../third_party/skia/docs/examples/Point_025.cpp -FILE: ../../../third_party/skia/docs/examples/Point_026.cpp -FILE: ../../../third_party/skia/docs/examples/Point_027.cpp -FILE: ../../../third_party/skia/docs/examples/Point_028.cpp -FILE: ../../../third_party/skia/docs/examples/Point_029.cpp -FILE: ../../../third_party/skia/docs/examples/Point_030.cpp -FILE: ../../../third_party/skia/docs/examples/Point_031.cpp -FILE: ../../../third_party/skia/docs/examples/Point_032.cpp -FILE: ../../../third_party/skia/docs/examples/Point_033.cpp -FILE: ../../../third_party/skia/docs/examples/Point_034.cpp -FILE: ../../../third_party/skia/docs/examples/Point_035.cpp -FILE: ../../../third_party/skia/docs/examples/Point_036.cpp -FILE: ../../../third_party/skia/docs/examples/Point_037.cpp -FILE: ../../../third_party/skia/docs/examples/RRect_000.cpp -FILE: ../../../third_party/skia/docs/examples/RRect_001.cpp -FILE: ../../../third_party/skia/docs/examples/RRect_002.cpp -FILE: ../../../third_party/skia/docs/examples/RRect_003.cpp -FILE: ../../../third_party/skia/docs/examples/RRect_004.cpp -FILE: ../../../third_party/skia/docs/examples/RRect_005.cpp -FILE: ../../../third_party/skia/docs/examples/RRect_006.cpp -FILE: ../../../third_party/skia/docs/examples/RRect_007.cpp -FILE: ../../../third_party/skia/docs/examples/RRect_008.cpp -FILE: ../../../third_party/skia/docs/examples/RRect_009.cpp -FILE: ../../../third_party/skia/docs/examples/RRect_010.cpp -FILE: ../../../third_party/skia/docs/examples/RRect_011.cpp -FILE: ../../../third_party/skia/docs/examples/RRect_012.cpp -FILE: ../../../third_party/skia/docs/examples/RRect_013.cpp -FILE: ../../../third_party/skia/docs/examples/RRect_014.cpp -FILE: ../../../third_party/skia/docs/examples/RRect_015.cpp -FILE: ../../../third_party/skia/docs/examples/RRect_016.cpp -FILE: ../../../third_party/skia/docs/examples/RRect_017.cpp -FILE: ../../../third_party/skia/docs/examples/RRect_018.cpp -FILE: ../../../third_party/skia/docs/examples/RRect_019.cpp -FILE: ../../../third_party/skia/docs/examples/RRect_020.cpp -FILE: ../../../third_party/skia/docs/examples/RRect_021.cpp -FILE: ../../../third_party/skia/docs/examples/RRect_022.cpp -FILE: ../../../third_party/skia/docs/examples/RRect_023.cpp -FILE: ../../../third_party/skia/docs/examples/RRect_024.cpp -FILE: ../../../third_party/skia/docs/examples/RRect_025.cpp -FILE: ../../../third_party/skia/docs/examples/RRect_026.cpp -FILE: ../../../third_party/skia/docs/examples/RRect_027.cpp -FILE: ../../../third_party/skia/docs/examples/RRect_028.cpp -FILE: ../../../third_party/skia/docs/examples/RRect_029.cpp -FILE: ../../../third_party/skia/docs/examples/RRect_030.cpp -FILE: ../../../third_party/skia/docs/examples/RRect_031.cpp -FILE: ../../../third_party/skia/docs/examples/RRect_032.cpp -FILE: ../../../third_party/skia/docs/examples/RRect_033.cpp -FILE: ../../../third_party/skia/docs/examples/RRect_034.cpp -FILE: ../../../third_party/skia/docs/examples/RRect_035.cpp -FILE: ../../../third_party/skia/docs/examples/RRect_036.cpp -FILE: ../../../third_party/skia/docs/examples/RRect_037.cpp -FILE: ../../../third_party/skia/docs/examples/RRect_038.cpp -FILE: ../../../third_party/skia/docs/examples/RRect_039.cpp -FILE: ../../../third_party/skia/docs/examples/RRect_040.cpp -FILE: ../../../third_party/skia/docs/examples/RRect_041.cpp -FILE: ../../../third_party/skia/docs/examples/RRect_042.cpp -FILE: ../../../third_party/skia/docs/examples/RRect_043.cpp -FILE: ../../../third_party/skia/docs/examples/RRect_044.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_000.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_001.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_002.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_003.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_004.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_005.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_006.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_007.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_008.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_009.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_010.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_011.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_012.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_013.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_014.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_015.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_016.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_017.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_018.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_019.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_020.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_021.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_022.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_023.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_024.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_025.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_026.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_027.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_028.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_029.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_030.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_031.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_032.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_033.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_034.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_035.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_036.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_037.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_038.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_039.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_040.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_041.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_042.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_043.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_044.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_045.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_046.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_047.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_048.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_049.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_050.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_051.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_052.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_053.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_054.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_055.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_056.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_057.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_058.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_059.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_060.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_061.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_062.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_063.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_064.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_065.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_066.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_067.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_068.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_069.cpp -FILE: ../../../third_party/skia/docs/examples/Region_000.cpp -FILE: ../../../third_party/skia/docs/examples/Region_001.cpp -FILE: ../../../third_party/skia/docs/examples/Region_002.cpp -FILE: ../../../third_party/skia/docs/examples/Region_003.cpp -FILE: ../../../third_party/skia/docs/examples/Region_004.cpp -FILE: ../../../third_party/skia/docs/examples/Region_005.cpp -FILE: ../../../third_party/skia/docs/examples/Region_006.cpp -FILE: ../../../third_party/skia/docs/examples/Region_007.cpp -FILE: ../../../third_party/skia/docs/examples/Region_008.cpp -FILE: ../../../third_party/skia/docs/examples/Region_009.cpp -FILE: ../../../third_party/skia/docs/examples/Region_010.cpp -FILE: ../../../third_party/skia/docs/examples/Region_011.cpp -FILE: ../../../third_party/skia/docs/examples/Region_012.cpp -FILE: ../../../third_party/skia/docs/examples/Region_013.cpp -FILE: ../../../third_party/skia/docs/examples/Region_014.cpp -FILE: ../../../third_party/skia/docs/examples/Region_015.cpp -FILE: ../../../third_party/skia/docs/examples/Region_016.cpp -FILE: ../../../third_party/skia/docs/examples/Region_017.cpp -FILE: ../../../third_party/skia/docs/examples/Region_018.cpp -FILE: ../../../third_party/skia/docs/examples/Region_019.cpp -FILE: ../../../third_party/skia/docs/examples/Region_020.cpp -FILE: ../../../third_party/skia/docs/examples/Region_021.cpp -FILE: ../../../third_party/skia/docs/examples/Region_022.cpp -FILE: ../../../third_party/skia/docs/examples/Region_023.cpp -FILE: ../../../third_party/skia/docs/examples/Region_024.cpp -FILE: ../../../third_party/skia/docs/examples/Region_025.cpp -FILE: ../../../third_party/skia/docs/examples/Region_026.cpp -FILE: ../../../third_party/skia/docs/examples/Region_027.cpp -FILE: ../../../third_party/skia/docs/examples/Region_028.cpp -FILE: ../../../third_party/skia/docs/examples/Region_029.cpp -FILE: ../../../third_party/skia/docs/examples/Region_030.cpp -FILE: ../../../third_party/skia/docs/examples/Region_031.cpp -FILE: ../../../third_party/skia/docs/examples/Region_032.cpp -FILE: ../../../third_party/skia/docs/examples/Region_033.cpp -FILE: ../../../third_party/skia/docs/examples/Region_034.cpp -FILE: ../../../third_party/skia/docs/examples/Region_035.cpp -FILE: ../../../third_party/skia/docs/examples/Region_036.cpp -FILE: ../../../third_party/skia/docs/examples/Region_037.cpp -FILE: ../../../third_party/skia/docs/examples/Region_038.cpp -FILE: ../../../third_party/skia/docs/examples/Region_039.cpp -FILE: ../../../third_party/skia/docs/examples/Region_040.cpp -FILE: ../../../third_party/skia/docs/examples/Region_041.cpp -FILE: ../../../third_party/skia/docs/examples/Region_042.cpp -FILE: ../../../third_party/skia/docs/examples/Region_043.cpp -FILE: ../../../third_party/skia/docs/examples/Region_044.cpp -FILE: ../../../third_party/skia/docs/examples/Region_045.cpp -FILE: ../../../third_party/skia/docs/examples/Region_046.cpp -FILE: ../../../third_party/skia/docs/examples/Region_047.cpp -FILE: ../../../third_party/skia/docs/examples/Region_048.cpp -FILE: ../../../third_party/skia/docs/examples/Region_049.cpp -FILE: ../../../third_party/skia/docs/examples/Region_050.cpp -FILE: ../../../third_party/skia/docs/examples/Region_051.cpp -FILE: ../../../third_party/skia/docs/examples/Region_052.cpp -FILE: ../../../third_party/skia/docs/examples/Region_053.cpp -FILE: ../../../third_party/skia/docs/examples/Region_054.cpp -FILE: ../../../third_party/skia/docs/examples/Surface_000.cpp -FILE: ../../../third_party/skia/docs/examples/Surface_001.cpp -FILE: ../../../third_party/skia/docs/examples/Surface_002.cpp -FILE: ../../../third_party/skia/docs/examples/Surface_003.cpp -FILE: ../../../third_party/skia/docs/examples/Surface_004.cpp -FILE: ../../../third_party/skia/docs/examples/Surface_005.cpp -FILE: ../../../third_party/skia/docs/examples/Surface_006.cpp -FILE: ../../../third_party/skia/docs/examples/Surface_007.cpp -FILE: ../../../third_party/skia/docs/examples/Surface_008.cpp -FILE: ../../../third_party/skia/docs/examples/Surface_009.cpp -FILE: ../../../third_party/skia/docs/examples/Surface_010.cpp -FILE: ../../../third_party/skia/docs/examples/Surface_011.cpp -FILE: ../../../third_party/skia/docs/examples/Surface_012.cpp -FILE: ../../../third_party/skia/docs/examples/Surface_013.cpp -FILE: ../../../third_party/skia/docs/examples/Surface_014.cpp -FILE: ../../../third_party/skia/docs/examples/Surface_015.cpp -FILE: ../../../third_party/skia/docs/examples/Surface_016.cpp -FILE: ../../../third_party/skia/docs/examples/Surface_017.cpp -FILE: ../../../third_party/skia/docs/examples/Surface_018.cpp -FILE: ../../../third_party/skia/docs/examples/Surface_019.cpp -FILE: ../../../third_party/skia/docs/examples/Surface_020.cpp -FILE: ../../../third_party/skia/docs/examples/Surface_021.cpp -FILE: ../../../third_party/skia/docs/examples/Surface_022.cpp -FILE: ../../../third_party/skia/docs/examples/Surface_023.cpp -FILE: ../../../third_party/skia/docs/examples/Surface_024.cpp -FILE: ../../../third_party/skia/docs/examples/Surface_025.cpp -FILE: ../../../third_party/skia/docs/examples/Surface_026.cpp -FILE: ../../../third_party/skia/docs/examples/Surface_027.cpp -FILE: ../../../third_party/skia/docs/examples/Surface_028.cpp -FILE: ../../../third_party/skia/docs/examples/TextBlobBuilder_000.cpp -FILE: ../../../third_party/skia/docs/examples/TextBlobBuilder_001.cpp -FILE: ../../../third_party/skia/docs/examples/TextBlobBuilder_002.cpp -FILE: ../../../third_party/skia/docs/examples/TextBlobBuilder_003.cpp -FILE: ../../../third_party/skia/docs/examples/TextBlobBuilder_004.cpp -FILE: ../../../third_party/skia/docs/examples/TextBlob_000.cpp -FILE: ../../../third_party/skia/docs/examples/TextBlob_001.cpp -FILE: ../../../third_party/skia/docs/examples/TextBlob_002.cpp -FILE: ../../../third_party/skia/docs/examples/TextBlob_003.cpp -FILE: ../../../third_party/skia/docs/examples/TextBlob_004.cpp -FILE: ../../../third_party/skia/docs/examples/TextBlob_005.cpp -FILE: ../../../third_party/skia/docs/examples/TextBlob_006.cpp -FILE: ../../../third_party/skia/docs/examples/TextBlob_007.cpp -FILE: ../../../third_party/skia/gm/crbug_918512.cpp ----------------------------------------------------------------------------------------------------- -Copyright 2019 Google LLC. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -==================================================================================================== - ==================================================================================================== LIBRARY: skia ORIGIN: ../../../third_party/skia/experimental/wasm-skp-debugger/debugger_bindings.cpp + ../../../third_party/skia/LICENSE @@ -6148,6 +4986,41 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ==================================================================================================== +==================================================================================================== +LIBRARY: skia +ORIGIN: ../../../third_party/skia/gm/crbug_918512.cpp + ../../../third_party/skia/LICENSE +TYPE: LicenseType.bsd +FILE: ../../../third_party/skia/gm/crbug_918512.cpp +---------------------------------------------------------------------------------------------------- +Copyright 2019 Google LLC. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +==================================================================================================== + ==================================================================================================== LIBRARY: skia ORIGIN: ../../../third_party/skia/include/config/SkUserConfig.h + ../../../third_party/skia/LICENSE From d92f9373014f3e62016033c38bf83173ed3e22bc Mon Sep 17 00:00:00 2001 From: Jonah Williams Date: Fri, 15 Mar 2019 13:13:44 -0700 Subject: [PATCH 1394/1537] Add flag to allow only building full sdk on release to speed up bots (#8080) --- tools/gn | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/tools/gn b/tools/gn index 344d8475e5f96..4cb0fe099bf9f 100755 --- a/tools/gn +++ b/tools/gn @@ -234,9 +234,9 @@ def to_gn_args(args): if args.arm_float_abi: gn_args['arm_float_abi'] = args.arm_float_abi - # Switch flutter to full Dart SDK when building for the host system. - if args.target_os is None: - gn_args['dart_platform_sdk'] = False + # Whether to build all dart snapshots. + if args.full_dart_sdk: + gn_args['dart_platform_sdk'] = False return gn_args @@ -289,6 +289,9 @@ def parse_args(args): parser.add_argument('--out-dir', default='', type=str) + parser.add_argument('--full-dart-sdk', default=True, action='store_true', + help='include trained dart2js and dartdevc snapshots. Enable only on steps that create an sdk') + return parser.parse_args(args) def main(argv): From c033aa469685b865d185b39296cd502cfa0c18f0 Mon Sep 17 00:00:00 2001 From: "P.Y. Laligand" Date: Fri, 15 Mar 2019 13:58:25 -0700 Subject: [PATCH 1395/1537] Fix include of libzx. (#8181) --- flow/export_node.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flow/export_node.h b/flow/export_node.h index 20be1e45f7bfa..50df904bc4116 100644 --- a/flow/export_node.h +++ b/flow/export_node.h @@ -7,7 +7,7 @@ #include -#include +#include #include "dart-pkg/zircon/sdk_ext/handle.h" #include "flutter/flow/scene_update_context.h" From 015c0246aebc6fc23f30004e3319b6d1e85a885a Mon Sep 17 00:00:00 2001 From: liyuqian Date: Fri, 15 Mar 2019 14:01:23 -0700 Subject: [PATCH 1396/1537] Fix log level typo from ERROR to INFO (#8180) The old typo is probably caused by https://github.com/flutter/flutter/issues/29320 which has just been fixed. TBR: chinmaygarde@google.com --- shell/common/persistent_cache.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shell/common/persistent_cache.cc b/shell/common/persistent_cache.cc index e771ab502acb3..64d29f15c2b58 100644 --- a/shell/common/persistent_cache.cc +++ b/shell/common/persistent_cache.cc @@ -172,7 +172,7 @@ void PersistentCache::DumpSkp(const SkData& data) { auto ticks = fml::TimePoint::Now().ToEpochDelta().ToNanoseconds(); name_stream << "shader_dump_" << std::to_string(ticks) << ".skp"; std::string file_name = name_stream.str(); - FML_LOG(ERROR) << "Dumping " << file_name; + FML_LOG(INFO) << "Dumping " << file_name; auto mapping = std::make_unique( std::vector{data.bytes(), data.bytes() + data.size()}); PersistentCacheStore(GetWorkerTaskRunner(), cache_directory_, From 575d61f49910a6df7718b99723eecfc5902222b6 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Fri, 15 Mar 2019 21:18:11 -0400 Subject: [PATCH 1397/1537] Roll src/third_party/skia 49ea3194535c..d3cfbcae10eb (9 commits) (#8184) https://skia.googlesource.com/skia.git/%2Blog/49ea3194535c..d3cfbcae10eb git log 49ea3194535c1783554149aab1d17f931512497e..d3cfbcae10eb903841819cb6fbf0ad6e35f7f88a --date=short --no-merges --format=%ad %ae %s 2019-03-15 kjlubick@google.com [canvaskit] Add TextOnPath helper to TextBlob 2019-03-07 mtklein@google.com hash and encode rework, wip 2019-03-15 reed@google.com use load_f32_dst 2019-03-15 reed@google.com allow mixer to defer to a shader 2019-03-15 jvanverth@google.com Fix asserts in Metal tests. 2019-03-15 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader 1e6a9898b73b..71673c81fb1e (8 commits) 2019-03-15 enne@chromium.org Enforce alignment in SkDescriptor deserialization 2019-03-15 benjaminwagner@google.com [infra] Update Win10 in Skolo. 2019-03-15 recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com Roll recipe dependencies (trivial). The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (benjaminwagner@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index ac0eaddc36797..69982320f7193 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '49ea3194535c1783554149aab1d17f931512497e', + 'skia_revision': 'd3cfbcae10eb903841819cb6fbf0ad6e35f7f88a', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index aead963c45d9f..c607fee655854 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: f4dfa9d74e47ae57a6f9aa3dac650510 +Signature: f6b0590d46f66bd65f23d97a1d980916 UNUSED LICENSES: From 926e65531cab90dfff23c22b7b5028e0ddc36fac Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Sat, 16 Mar 2019 00:50:11 -0400 Subject: [PATCH 1398/1537] Roll src/third_party/skia d3cfbcae10eb..f34d0c79dc6c (2 commits) (#8186) https://skia.googlesource.com/skia.git/%2Blog/d3cfbcae10eb..f34d0c79dc6c git log d3cfbcae10eb903841819cb6fbf0ad6e35f7f88a..f34d0c79dc6cc5595f8452696bc9e88d27f34452 --date=short --no-merges --format=%ad %ae %s 2019-03-15 mtklein@google.com re-hash images once more artificially 2019-03-15 halcanary@google.com Revert "Revert "Compile all fiddle examples locally"" The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (benjaminwagner@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 1199 +++++++++++++++++++++++++++++- 2 files changed, 1164 insertions(+), 37 deletions(-) diff --git a/DEPS b/DEPS index 69982320f7193..fffef129d7020 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'd3cfbcae10eb903841819cb6fbf0ad6e35f7f88a', + 'skia_revision': 'f34d0c79dc6cc5595f8452696bc9e88d27f34452', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index c607fee655854..d93b05557d55c 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: f6b0590d46f66bd65f23d97a1d980916 +Signature: 6c5efbff1420dc3200e1c15a1406967f UNUSED LICENSES: @@ -4649,6 +4649,1168 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ==================================================================================================== +==================================================================================================== +LIBRARY: skia +ORIGIN: ../../../third_party/skia/docs/examples/AutoCanvasRestore_000.cpp + ../../../third_party/skia/LICENSE +TYPE: LicenseType.bsd +FILE: ../../../third_party/skia/docs/examples/AutoCanvasRestore_000.cpp +FILE: ../../../third_party/skia/docs/examples/AutoCanvasRestore_001.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_000.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_001.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_002.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_003.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_004.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_005.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_006.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_007.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_008.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_009.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_010.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_011.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_012.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_013.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_014.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_015.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_016.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_017.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_018.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_019.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_020.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_021.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_022.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_023.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_024.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_025.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_026.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_027.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_028.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_029.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_030.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_031.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_032.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_033.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_034.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_035.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_036.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_037.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_038.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_039.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_040.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_041.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_042.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_043.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_044.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_045.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_046.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_047.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_048.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_049.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_050.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_051.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_052.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_053.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_054.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_055.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_056.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_057.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_058.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_059.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_060.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_061.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_062.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_063.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_064.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_065.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_066.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_067.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_068.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_069.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_070.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_071.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_072.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_073.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_074.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_075.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_076.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_077.cpp +FILE: ../../../third_party/skia/docs/examples/BlendMode_000.cpp +FILE: ../../../third_party/skia/docs/examples/BlendMode_001.cpp +FILE: ../../../third_party/skia/docs/examples/BlendMode_002.cpp +FILE: ../../../third_party/skia/docs/examples/BlendMode_003.cpp +FILE: ../../../third_party/skia/docs/examples/BlendMode_004.cpp +FILE: ../../../third_party/skia/docs/examples/BlendMode_005.cpp +FILE: ../../../third_party/skia/docs/examples/BlendMode_006.cpp +FILE: ../../../third_party/skia/docs/examples/BlendMode_007.cpp +FILE: ../../../third_party/skia/docs/examples/BlendMode_008.cpp +FILE: ../../../third_party/skia/docs/examples/BlendMode_009.cpp +FILE: ../../../third_party/skia/docs/examples/BlendMode_010.cpp +FILE: ../../../third_party/skia/docs/examples/BlendMode_011.cpp +FILE: ../../../third_party/skia/docs/examples/BlendMode_012.cpp +FILE: ../../../third_party/skia/docs/examples/BlendMode_013.cpp +FILE: ../../../third_party/skia/docs/examples/BlendMode_014.cpp +FILE: ../../../third_party/skia/docs/examples/BlendMode_015.cpp +FILE: ../../../third_party/skia/docs/examples/BlendMode_016.cpp +FILE: ../../../third_party/skia/docs/examples/BlendMode_017.cpp +FILE: ../../../third_party/skia/docs/examples/BlendMode_018.cpp +FILE: ../../../third_party/skia/docs/examples/BlendMode_019.cpp +FILE: ../../../third_party/skia/docs/examples/BlendMode_020.cpp +FILE: ../../../third_party/skia/docs/examples/BlendMode_021.cpp +FILE: ../../../third_party/skia/docs/examples/BlendMode_022.cpp +FILE: ../../../third_party/skia/docs/examples/BlendMode_023.cpp +FILE: ../../../third_party/skia/docs/examples/BlendMode_024.cpp +FILE: ../../../third_party/skia/docs/examples/BlendMode_025.cpp +FILE: ../../../third_party/skia/docs/examples/BlendMode_026.cpp +FILE: ../../../third_party/skia/docs/examples/BlendMode_027.cpp +FILE: ../../../third_party/skia/docs/examples/BlendMode_028.cpp +FILE: ../../../third_party/skia/docs/examples/BlendMode_029.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_000.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_001.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_002.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_003.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_004.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_005.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_006.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_008.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_009.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_010.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_011.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_012.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_013.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_014.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_015.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_016.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_017.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_018.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_019.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_020.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_021.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_022.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_023.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_024.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_025.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_026.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_027.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_028.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_029.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_030.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_031.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_032.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_033.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_034.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_035.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_036.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_037.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_038.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_039.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_040.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_041.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_042.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_043.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_044.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_045.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_046.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_047.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_048.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_049.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_050.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_051.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_052.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_053.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_054.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_055.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_056.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_057.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_058.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_059.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_060.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_061.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_062.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_063.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_064.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_065.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_066.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_067.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_068.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_069.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_070.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_071.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_072.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_073.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_074.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_075.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_076.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_077.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_078.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_079.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_080.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_081.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_082.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_083.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_084.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_085.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_086.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_087.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_088.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_089.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_090.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_091.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_092.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_093.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_094.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_095.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_096.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_097.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_098.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_099.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_100.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_101.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_102.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_103.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_104.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_105.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_106.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_107.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_108.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_109.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_110.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_111.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_112.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_113.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_114.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_115.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_116.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_117.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_118.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_119.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_120.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_121.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_122.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_123.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_124.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_125.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_126.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_127.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_128.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_129.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_130.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_131.cpp +FILE: ../../../third_party/skia/docs/examples/Color4f_000.cpp +FILE: ../../../third_party/skia/docs/examples/Color4f_001.cpp +FILE: ../../../third_party/skia/docs/examples/Color4f_002.cpp +FILE: ../../../third_party/skia/docs/examples/Color4f_003.cpp +FILE: ../../../third_party/skia/docs/examples/Color4f_004.cpp +FILE: ../../../third_party/skia/docs/examples/Color4f_005.cpp +FILE: ../../../third_party/skia/docs/examples/Color_000.cpp +FILE: ../../../third_party/skia/docs/examples/Color_001.cpp +FILE: ../../../third_party/skia/docs/examples/Color_002.cpp +FILE: ../../../third_party/skia/docs/examples/Color_003.cpp +FILE: ../../../third_party/skia/docs/examples/Color_004.cpp +FILE: ../../../third_party/skia/docs/examples/Color_005.cpp +FILE: ../../../third_party/skia/docs/examples/Color_006.cpp +FILE: ../../../third_party/skia/docs/examples/Color_007.cpp +FILE: ../../../third_party/skia/docs/examples/Color_008.cpp +FILE: ../../../third_party/skia/docs/examples/Color_009.cpp +FILE: ../../../third_party/skia/docs/examples/Color_010.cpp +FILE: ../../../third_party/skia/docs/examples/Color_011.cpp +FILE: ../../../third_party/skia/docs/examples/Color_012.cpp +FILE: ../../../third_party/skia/docs/examples/Color_013.cpp +FILE: ../../../third_party/skia/docs/examples/Color_014.cpp +FILE: ../../../third_party/skia/docs/examples/Color_015.cpp +FILE: ../../../third_party/skia/docs/examples/Color_016.cpp +FILE: ../../../third_party/skia/docs/examples/Color_017.cpp +FILE: ../../../third_party/skia/docs/examples/Color_018.cpp +FILE: ../../../third_party/skia/docs/examples/Font_000.cpp +FILE: ../../../third_party/skia/docs/examples/Font_001.cpp +FILE: ../../../third_party/skia/docs/examples/Font_002.cpp +FILE: ../../../third_party/skia/docs/examples/Font_003.cpp +FILE: ../../../third_party/skia/docs/examples/Font_004.cpp +FILE: ../../../third_party/skia/docs/examples/Font_005.cpp +FILE: ../../../third_party/skia/docs/examples/Font_006.cpp +FILE: ../../../third_party/skia/docs/examples/Font_007.cpp +FILE: ../../../third_party/skia/docs/examples/Font_008.cpp +FILE: ../../../third_party/skia/docs/examples/Font_009.cpp +FILE: ../../../third_party/skia/docs/examples/Font_010.cpp +FILE: ../../../third_party/skia/docs/examples/Font_011.cpp +FILE: ../../../third_party/skia/docs/examples/Font_012.cpp +FILE: ../../../third_party/skia/docs/examples/Font_013.cpp +FILE: ../../../third_party/skia/docs/examples/Font_014.cpp +FILE: ../../../third_party/skia/docs/examples/Font_015.cpp +FILE: ../../../third_party/skia/docs/examples/Font_016.cpp +FILE: ../../../third_party/skia/docs/examples/Font_017.cpp +FILE: ../../../third_party/skia/docs/examples/Font_018.cpp +FILE: ../../../third_party/skia/docs/examples/Font_019.cpp +FILE: ../../../third_party/skia/docs/examples/Font_020.cpp +FILE: ../../../third_party/skia/docs/examples/Font_021.cpp +FILE: ../../../third_party/skia/docs/examples/Font_022.cpp +FILE: ../../../third_party/skia/docs/examples/Font_023.cpp +FILE: ../../../third_party/skia/docs/examples/Font_024.cpp +FILE: ../../../third_party/skia/docs/examples/Font_025.cpp +FILE: ../../../third_party/skia/docs/examples/Font_026.cpp +FILE: ../../../third_party/skia/docs/examples/Font_027.cpp +FILE: ../../../third_party/skia/docs/examples/Font_028.cpp +FILE: ../../../third_party/skia/docs/examples/Font_029.cpp +FILE: ../../../third_party/skia/docs/examples/Font_030.cpp +FILE: ../../../third_party/skia/docs/examples/Font_031.cpp +FILE: ../../../third_party/skia/docs/examples/Font_032.cpp +FILE: ../../../third_party/skia/docs/examples/Font_033.cpp +FILE: ../../../third_party/skia/docs/examples/Font_034.cpp +FILE: ../../../third_party/skia/docs/examples/Font_035.cpp +FILE: ../../../third_party/skia/docs/examples/Font_036.cpp +FILE: ../../../third_party/skia/docs/examples/Font_037.cpp +FILE: ../../../third_party/skia/docs/examples/Font_038.cpp +FILE: ../../../third_party/skia/docs/examples/IPoint_000.cpp +FILE: ../../../third_party/skia/docs/examples/IPoint_001.cpp +FILE: ../../../third_party/skia/docs/examples/IPoint_002.cpp +FILE: ../../../third_party/skia/docs/examples/IPoint_003.cpp +FILE: ../../../third_party/skia/docs/examples/IPoint_004.cpp +FILE: ../../../third_party/skia/docs/examples/IPoint_005.cpp +FILE: ../../../third_party/skia/docs/examples/IPoint_006.cpp +FILE: ../../../third_party/skia/docs/examples/IPoint_007.cpp +FILE: ../../../third_party/skia/docs/examples/IPoint_008.cpp +FILE: ../../../third_party/skia/docs/examples/IPoint_009.cpp +FILE: ../../../third_party/skia/docs/examples/IPoint_010.cpp +FILE: ../../../third_party/skia/docs/examples/IPoint_011.cpp +FILE: ../../../third_party/skia/docs/examples/IPoint_012.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_000.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_001.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_002.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_003.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_004.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_005.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_006.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_007.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_008.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_009.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_010.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_011.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_012.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_013.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_014.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_015.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_016.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_017.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_018.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_019.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_020.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_021.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_022.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_023.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_024.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_025.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_026.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_027.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_028.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_029.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_030.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_031.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_032.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_033.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_034.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_035.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_036.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_037.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_038.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_039.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_040.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_041.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_042.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_043.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_044.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_045.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_046.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_047.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_048.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_049.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_000.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_001.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_002.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_003.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_004.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_005.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_006.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_007.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_008.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_009.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_010.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_011.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_012.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_013.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_014.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_015.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_016.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_017.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_018.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_019.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_020.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_021.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_022.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_023.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_024.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_025.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_026.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_027.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_028.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_029.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_030.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_031.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_032.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_033.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_034.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_035.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_036.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_037.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_038.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_039.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_040.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_041.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_042.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_043.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_044.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_045.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_046.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_047.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_048.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_049.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_050.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_051.cpp +FILE: ../../../third_party/skia/docs/examples/Image_000.cpp +FILE: ../../../third_party/skia/docs/examples/Image_001.cpp +FILE: ../../../third_party/skia/docs/examples/Image_002.cpp +FILE: ../../../third_party/skia/docs/examples/Image_003.cpp +FILE: ../../../third_party/skia/docs/examples/Image_004.cpp +FILE: ../../../third_party/skia/docs/examples/Image_005.cpp +FILE: ../../../third_party/skia/docs/examples/Image_006.cpp +FILE: ../../../third_party/skia/docs/examples/Image_007.cpp +FILE: ../../../third_party/skia/docs/examples/Image_008.cpp +FILE: ../../../third_party/skia/docs/examples/Image_009.cpp +FILE: ../../../third_party/skia/docs/examples/Image_010.cpp +FILE: ../../../third_party/skia/docs/examples/Image_011.cpp +FILE: ../../../third_party/skia/docs/examples/Image_012.cpp +FILE: ../../../third_party/skia/docs/examples/Image_013.cpp +FILE: ../../../third_party/skia/docs/examples/Image_014.cpp +FILE: ../../../third_party/skia/docs/examples/Image_015.cpp +FILE: ../../../third_party/skia/docs/examples/Image_016.cpp +FILE: ../../../third_party/skia/docs/examples/Image_017.cpp +FILE: ../../../third_party/skia/docs/examples/Image_018.cpp +FILE: ../../../third_party/skia/docs/examples/Image_019.cpp +FILE: ../../../third_party/skia/docs/examples/Image_020.cpp +FILE: ../../../third_party/skia/docs/examples/Image_021.cpp +FILE: ../../../third_party/skia/docs/examples/Image_022.cpp +FILE: ../../../third_party/skia/docs/examples/Image_023.cpp +FILE: ../../../third_party/skia/docs/examples/Image_024.cpp +FILE: ../../../third_party/skia/docs/examples/Image_025.cpp +FILE: ../../../third_party/skia/docs/examples/Image_026.cpp +FILE: ../../../third_party/skia/docs/examples/Image_027.cpp +FILE: ../../../third_party/skia/docs/examples/Image_028.cpp +FILE: ../../../third_party/skia/docs/examples/Image_029.cpp +FILE: ../../../third_party/skia/docs/examples/Image_030.cpp +FILE: ../../../third_party/skia/docs/examples/Image_031.cpp +FILE: ../../../third_party/skia/docs/examples/Image_032.cpp +FILE: ../../../third_party/skia/docs/examples/Image_033.cpp +FILE: ../../../third_party/skia/docs/examples/Image_034.cpp +FILE: ../../../third_party/skia/docs/examples/Image_035.cpp +FILE: ../../../third_party/skia/docs/examples/Image_036.cpp +FILE: ../../../third_party/skia/docs/examples/Image_037.cpp +FILE: ../../../third_party/skia/docs/examples/Image_038.cpp +FILE: ../../../third_party/skia/docs/examples/Image_039.cpp +FILE: ../../../third_party/skia/docs/examples/Image_040.cpp +FILE: ../../../third_party/skia/docs/examples/Image_041.cpp +FILE: ../../../third_party/skia/docs/examples/Image_042.cpp +FILE: ../../../third_party/skia/docs/examples/Image_043.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_000.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_001.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_002.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_003.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_004.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_005.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_006.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_007.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_008.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_009.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_010.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_011.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_012.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_013.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_014.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_015.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_016.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_017.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_018.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_019.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_020.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_021.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_022.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_023.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_024.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_025.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_026.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_027.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_028.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_029.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_030.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_031.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_032.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_033.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_034.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_035.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_036.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_037.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_038.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_039.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_040.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_041.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_042.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_043.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_044.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_045.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_046.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_047.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_048.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_049.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_050.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_051.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_052.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_053.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_054.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_055.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_056.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_057.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_058.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_059.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_060.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_061.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_062.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_063.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_064.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_065.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_066.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_067.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_068.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_069.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_070.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_071.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_072.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_073.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_074.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_075.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_076.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_077.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_078.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_079.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_080.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_081.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_082.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_083.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_084.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_085.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_086.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_087.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_088.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_089.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_090.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_091.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_092.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_093.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_094.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_095.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_096.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_097.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_098.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_099.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_100.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_101.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_102.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_103.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_104.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_105.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_106.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_107.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_000.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_001.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_002.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_003.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_004.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_005.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_006.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_007.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_008.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_009.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_010.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_011.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_012.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_013.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_014.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_015.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_016.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_017.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_018.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_019.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_020.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_021.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_022.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_023.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_024.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_025.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_026.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_027.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_028.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_029.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_030.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_031.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_032.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_033.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_034.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_035.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_036.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_037.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_038.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_039.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_040.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_041.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_042.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_043.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_044.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_045.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_046.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_047.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_048.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_049.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_050.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_051.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_052.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_053.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_054.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_055.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_056.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_057.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_058.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_059.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_060.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_061.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_062.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_063.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_064.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_065.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_066.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_067.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_068.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_069.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_070.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_071.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_072.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_073.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_074.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_075.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_076.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_077.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_078.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_079.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_080.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_081.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_082.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_083.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_084.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_085.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_086.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_087.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_088.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_089.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_090.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_091.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_092.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_093.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_094.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_095.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_096.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_097.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_098.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_099.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_100.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_101.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_102.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_103.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_104.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_105.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_106.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_107.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_108.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_109.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_110.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_111.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_112.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_113.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_114.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_115.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_116.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_117.cpp +FILE: ../../../third_party/skia/docs/examples/Path_000.cpp +FILE: ../../../third_party/skia/docs/examples/Path_001.cpp +FILE: ../../../third_party/skia/docs/examples/Path_002.cpp +FILE: ../../../third_party/skia/docs/examples/Path_003.cpp +FILE: ../../../third_party/skia/docs/examples/Path_004.cpp +FILE: ../../../third_party/skia/docs/examples/Path_005.cpp +FILE: ../../../third_party/skia/docs/examples/Path_006.cpp +FILE: ../../../third_party/skia/docs/examples/Path_007.cpp +FILE: ../../../third_party/skia/docs/examples/Path_008.cpp +FILE: ../../../third_party/skia/docs/examples/Path_009.cpp +FILE: ../../../third_party/skia/docs/examples/Path_010.cpp +FILE: ../../../third_party/skia/docs/examples/Path_011.cpp +FILE: ../../../third_party/skia/docs/examples/Path_012.cpp +FILE: ../../../third_party/skia/docs/examples/Path_013.cpp +FILE: ../../../third_party/skia/docs/examples/Path_014.cpp +FILE: ../../../third_party/skia/docs/examples/Path_015.cpp +FILE: ../../../third_party/skia/docs/examples/Path_016.cpp +FILE: ../../../third_party/skia/docs/examples/Path_017.cpp +FILE: ../../../third_party/skia/docs/examples/Path_018.cpp +FILE: ../../../third_party/skia/docs/examples/Path_019.cpp +FILE: ../../../third_party/skia/docs/examples/Path_020.cpp +FILE: ../../../third_party/skia/docs/examples/Path_021.cpp +FILE: ../../../third_party/skia/docs/examples/Path_022.cpp +FILE: ../../../third_party/skia/docs/examples/Path_023.cpp +FILE: ../../../third_party/skia/docs/examples/Path_024.cpp +FILE: ../../../third_party/skia/docs/examples/Path_025.cpp +FILE: ../../../third_party/skia/docs/examples/Path_026.cpp +FILE: ../../../third_party/skia/docs/examples/Path_027.cpp +FILE: ../../../third_party/skia/docs/examples/Path_028.cpp +FILE: ../../../third_party/skia/docs/examples/Path_029.cpp +FILE: ../../../third_party/skia/docs/examples/Path_030.cpp +FILE: ../../../third_party/skia/docs/examples/Path_031.cpp +FILE: ../../../third_party/skia/docs/examples/Path_032.cpp +FILE: ../../../third_party/skia/docs/examples/Path_033.cpp +FILE: ../../../third_party/skia/docs/examples/Path_034.cpp +FILE: ../../../third_party/skia/docs/examples/Path_035.cpp +FILE: ../../../third_party/skia/docs/examples/Path_036.cpp +FILE: ../../../third_party/skia/docs/examples/Path_037.cpp +FILE: ../../../third_party/skia/docs/examples/Path_038.cpp +FILE: ../../../third_party/skia/docs/examples/Path_039.cpp +FILE: ../../../third_party/skia/docs/examples/Path_040.cpp +FILE: ../../../third_party/skia/docs/examples/Path_041.cpp +FILE: ../../../third_party/skia/docs/examples/Path_042.cpp +FILE: ../../../third_party/skia/docs/examples/Path_043.cpp +FILE: ../../../third_party/skia/docs/examples/Path_044.cpp +FILE: ../../../third_party/skia/docs/examples/Path_045.cpp +FILE: ../../../third_party/skia/docs/examples/Path_046.cpp +FILE: ../../../third_party/skia/docs/examples/Path_047.cpp +FILE: ../../../third_party/skia/docs/examples/Path_048.cpp +FILE: ../../../third_party/skia/docs/examples/Path_049.cpp +FILE: ../../../third_party/skia/docs/examples/Path_050.cpp +FILE: ../../../third_party/skia/docs/examples/Path_051.cpp +FILE: ../../../third_party/skia/docs/examples/Path_052.cpp +FILE: ../../../third_party/skia/docs/examples/Path_053.cpp +FILE: ../../../third_party/skia/docs/examples/Path_054.cpp +FILE: ../../../third_party/skia/docs/examples/Path_055.cpp +FILE: ../../../third_party/skia/docs/examples/Path_056.cpp +FILE: ../../../third_party/skia/docs/examples/Path_057.cpp +FILE: ../../../third_party/skia/docs/examples/Path_058.cpp +FILE: ../../../third_party/skia/docs/examples/Path_059.cpp +FILE: ../../../third_party/skia/docs/examples/Path_060.cpp +FILE: ../../../third_party/skia/docs/examples/Path_061.cpp +FILE: ../../../third_party/skia/docs/examples/Path_062.cpp +FILE: ../../../third_party/skia/docs/examples/Path_063.cpp +FILE: ../../../third_party/skia/docs/examples/Path_064.cpp +FILE: ../../../third_party/skia/docs/examples/Path_065.cpp +FILE: ../../../third_party/skia/docs/examples/Path_066.cpp +FILE: ../../../third_party/skia/docs/examples/Path_067.cpp +FILE: ../../../third_party/skia/docs/examples/Path_068.cpp +FILE: ../../../third_party/skia/docs/examples/Path_069.cpp +FILE: ../../../third_party/skia/docs/examples/Path_070.cpp +FILE: ../../../third_party/skia/docs/examples/Path_071.cpp +FILE: ../../../third_party/skia/docs/examples/Path_072.cpp +FILE: ../../../third_party/skia/docs/examples/Path_073.cpp +FILE: ../../../third_party/skia/docs/examples/Path_074.cpp +FILE: ../../../third_party/skia/docs/examples/Path_075.cpp +FILE: ../../../third_party/skia/docs/examples/Path_076.cpp +FILE: ../../../third_party/skia/docs/examples/Path_077.cpp +FILE: ../../../third_party/skia/docs/examples/Path_078.cpp +FILE: ../../../third_party/skia/docs/examples/Path_079.cpp +FILE: ../../../third_party/skia/docs/examples/Path_080.cpp +FILE: ../../../third_party/skia/docs/examples/Path_081.cpp +FILE: ../../../third_party/skia/docs/examples/Path_082.cpp +FILE: ../../../third_party/skia/docs/examples/Path_083.cpp +FILE: ../../../third_party/skia/docs/examples/Path_084.cpp +FILE: ../../../third_party/skia/docs/examples/Path_085.cpp +FILE: ../../../third_party/skia/docs/examples/Path_086.cpp +FILE: ../../../third_party/skia/docs/examples/Path_087.cpp +FILE: ../../../third_party/skia/docs/examples/Path_088.cpp +FILE: ../../../third_party/skia/docs/examples/Path_089.cpp +FILE: ../../../third_party/skia/docs/examples/Path_090.cpp +FILE: ../../../third_party/skia/docs/examples/Path_091.cpp +FILE: ../../../third_party/skia/docs/examples/Path_092.cpp +FILE: ../../../third_party/skia/docs/examples/Path_093.cpp +FILE: ../../../third_party/skia/docs/examples/Path_094.cpp +FILE: ../../../third_party/skia/docs/examples/Path_095.cpp +FILE: ../../../third_party/skia/docs/examples/Path_096.cpp +FILE: ../../../third_party/skia/docs/examples/Path_097.cpp +FILE: ../../../third_party/skia/docs/examples/Path_098.cpp +FILE: ../../../third_party/skia/docs/examples/Path_099.cpp +FILE: ../../../third_party/skia/docs/examples/Path_100.cpp +FILE: ../../../third_party/skia/docs/examples/Path_101.cpp +FILE: ../../../third_party/skia/docs/examples/Path_102.cpp +FILE: ../../../third_party/skia/docs/examples/Path_103.cpp +FILE: ../../../third_party/skia/docs/examples/Path_104.cpp +FILE: ../../../third_party/skia/docs/examples/Path_105.cpp +FILE: ../../../third_party/skia/docs/examples/Path_106.cpp +FILE: ../../../third_party/skia/docs/examples/Path_107.cpp +FILE: ../../../third_party/skia/docs/examples/Path_108.cpp +FILE: ../../../third_party/skia/docs/examples/Path_109.cpp +FILE: ../../../third_party/skia/docs/examples/Path_110.cpp +FILE: ../../../third_party/skia/docs/examples/Path_111.cpp +FILE: ../../../third_party/skia/docs/examples/Path_112.cpp +FILE: ../../../third_party/skia/docs/examples/Path_113.cpp +FILE: ../../../third_party/skia/docs/examples/Path_114.cpp +FILE: ../../../third_party/skia/docs/examples/Path_115.cpp +FILE: ../../../third_party/skia/docs/examples/Path_116.cpp +FILE: ../../../third_party/skia/docs/examples/Path_117.cpp +FILE: ../../../third_party/skia/docs/examples/Path_118.cpp +FILE: ../../../third_party/skia/docs/examples/Path_119.cpp +FILE: ../../../third_party/skia/docs/examples/Path_120.cpp +FILE: ../../../third_party/skia/docs/examples/Path_121.cpp +FILE: ../../../third_party/skia/docs/examples/Path_122.cpp +FILE: ../../../third_party/skia/docs/examples/Path_123.cpp +FILE: ../../../third_party/skia/docs/examples/Path_124.cpp +FILE: ../../../third_party/skia/docs/examples/Path_125.cpp +FILE: ../../../third_party/skia/docs/examples/Path_126.cpp +FILE: ../../../third_party/skia/docs/examples/Path_127.cpp +FILE: ../../../third_party/skia/docs/examples/Picture_000.cpp +FILE: ../../../third_party/skia/docs/examples/Picture_001.cpp +FILE: ../../../third_party/skia/docs/examples/Picture_002.cpp +FILE: ../../../third_party/skia/docs/examples/Picture_003.cpp +FILE: ../../../third_party/skia/docs/examples/Picture_004.cpp +FILE: ../../../third_party/skia/docs/examples/Picture_005.cpp +FILE: ../../../third_party/skia/docs/examples/Picture_006.cpp +FILE: ../../../third_party/skia/docs/examples/Picture_007.cpp +FILE: ../../../third_party/skia/docs/examples/Picture_008.cpp +FILE: ../../../third_party/skia/docs/examples/Picture_009.cpp +FILE: ../../../third_party/skia/docs/examples/Picture_010.cpp +FILE: ../../../third_party/skia/docs/examples/Picture_011.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_000.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_001.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_002.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_003.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_004.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_005.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_006.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_007.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_008.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_009.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_010.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_011.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_012.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_013.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_014.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_015.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_016.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_017.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_018.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_019.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_020.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_021.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_022.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_023.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_024.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_025.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_026.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_027.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_028.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_029.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_030.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_031.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_032.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_033.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_034.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_035.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_036.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_037.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_038.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_039.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_040.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_041.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_042.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_043.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_044.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_045.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_046.cpp +FILE: ../../../third_party/skia/docs/examples/Point_000.cpp +FILE: ../../../third_party/skia/docs/examples/Point_001.cpp +FILE: ../../../third_party/skia/docs/examples/Point_002.cpp +FILE: ../../../third_party/skia/docs/examples/Point_003.cpp +FILE: ../../../third_party/skia/docs/examples/Point_004.cpp +FILE: ../../../third_party/skia/docs/examples/Point_005.cpp +FILE: ../../../third_party/skia/docs/examples/Point_006.cpp +FILE: ../../../third_party/skia/docs/examples/Point_007.cpp +FILE: ../../../third_party/skia/docs/examples/Point_008.cpp +FILE: ../../../third_party/skia/docs/examples/Point_009.cpp +FILE: ../../../third_party/skia/docs/examples/Point_010.cpp +FILE: ../../../third_party/skia/docs/examples/Point_011.cpp +FILE: ../../../third_party/skia/docs/examples/Point_012.cpp +FILE: ../../../third_party/skia/docs/examples/Point_013.cpp +FILE: ../../../third_party/skia/docs/examples/Point_014.cpp +FILE: ../../../third_party/skia/docs/examples/Point_015.cpp +FILE: ../../../third_party/skia/docs/examples/Point_016.cpp +FILE: ../../../third_party/skia/docs/examples/Point_017.cpp +FILE: ../../../third_party/skia/docs/examples/Point_018.cpp +FILE: ../../../third_party/skia/docs/examples/Point_019.cpp +FILE: ../../../third_party/skia/docs/examples/Point_020.cpp +FILE: ../../../third_party/skia/docs/examples/Point_021.cpp +FILE: ../../../third_party/skia/docs/examples/Point_022.cpp +FILE: ../../../third_party/skia/docs/examples/Point_023.cpp +FILE: ../../../third_party/skia/docs/examples/Point_024.cpp +FILE: ../../../third_party/skia/docs/examples/Point_025.cpp +FILE: ../../../third_party/skia/docs/examples/Point_026.cpp +FILE: ../../../third_party/skia/docs/examples/Point_027.cpp +FILE: ../../../third_party/skia/docs/examples/Point_028.cpp +FILE: ../../../third_party/skia/docs/examples/Point_029.cpp +FILE: ../../../third_party/skia/docs/examples/Point_030.cpp +FILE: ../../../third_party/skia/docs/examples/Point_031.cpp +FILE: ../../../third_party/skia/docs/examples/Point_032.cpp +FILE: ../../../third_party/skia/docs/examples/Point_033.cpp +FILE: ../../../third_party/skia/docs/examples/Point_034.cpp +FILE: ../../../third_party/skia/docs/examples/Point_035.cpp +FILE: ../../../third_party/skia/docs/examples/Point_036.cpp +FILE: ../../../third_party/skia/docs/examples/Point_037.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_000.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_001.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_002.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_003.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_004.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_005.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_006.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_007.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_008.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_009.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_010.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_011.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_012.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_013.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_014.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_015.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_016.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_017.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_018.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_019.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_020.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_021.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_022.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_023.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_024.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_025.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_026.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_027.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_028.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_029.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_030.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_031.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_032.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_033.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_034.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_035.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_036.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_037.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_038.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_039.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_040.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_041.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_042.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_043.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_044.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_000.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_001.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_002.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_003.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_004.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_005.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_006.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_007.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_008.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_009.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_010.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_011.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_012.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_013.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_014.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_015.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_016.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_017.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_018.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_019.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_020.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_021.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_022.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_023.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_024.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_025.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_026.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_027.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_028.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_029.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_030.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_031.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_032.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_033.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_034.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_035.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_036.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_037.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_038.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_039.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_040.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_041.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_042.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_043.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_044.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_045.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_046.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_047.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_048.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_049.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_050.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_051.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_052.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_053.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_054.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_055.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_056.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_057.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_058.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_059.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_060.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_061.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_062.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_063.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_064.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_065.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_066.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_067.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_068.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_069.cpp +FILE: ../../../third_party/skia/docs/examples/Region_000.cpp +FILE: ../../../third_party/skia/docs/examples/Region_001.cpp +FILE: ../../../third_party/skia/docs/examples/Region_002.cpp +FILE: ../../../third_party/skia/docs/examples/Region_003.cpp +FILE: ../../../third_party/skia/docs/examples/Region_004.cpp +FILE: ../../../third_party/skia/docs/examples/Region_005.cpp +FILE: ../../../third_party/skia/docs/examples/Region_006.cpp +FILE: ../../../third_party/skia/docs/examples/Region_007.cpp +FILE: ../../../third_party/skia/docs/examples/Region_008.cpp +FILE: ../../../third_party/skia/docs/examples/Region_009.cpp +FILE: ../../../third_party/skia/docs/examples/Region_010.cpp +FILE: ../../../third_party/skia/docs/examples/Region_011.cpp +FILE: ../../../third_party/skia/docs/examples/Region_012.cpp +FILE: ../../../third_party/skia/docs/examples/Region_013.cpp +FILE: ../../../third_party/skia/docs/examples/Region_014.cpp +FILE: ../../../third_party/skia/docs/examples/Region_015.cpp +FILE: ../../../third_party/skia/docs/examples/Region_016.cpp +FILE: ../../../third_party/skia/docs/examples/Region_017.cpp +FILE: ../../../third_party/skia/docs/examples/Region_018.cpp +FILE: ../../../third_party/skia/docs/examples/Region_019.cpp +FILE: ../../../third_party/skia/docs/examples/Region_020.cpp +FILE: ../../../third_party/skia/docs/examples/Region_021.cpp +FILE: ../../../third_party/skia/docs/examples/Region_022.cpp +FILE: ../../../third_party/skia/docs/examples/Region_023.cpp +FILE: ../../../third_party/skia/docs/examples/Region_024.cpp +FILE: ../../../third_party/skia/docs/examples/Region_025.cpp +FILE: ../../../third_party/skia/docs/examples/Region_026.cpp +FILE: ../../../third_party/skia/docs/examples/Region_027.cpp +FILE: ../../../third_party/skia/docs/examples/Region_028.cpp +FILE: ../../../third_party/skia/docs/examples/Region_029.cpp +FILE: ../../../third_party/skia/docs/examples/Region_030.cpp +FILE: ../../../third_party/skia/docs/examples/Region_031.cpp +FILE: ../../../third_party/skia/docs/examples/Region_032.cpp +FILE: ../../../third_party/skia/docs/examples/Region_033.cpp +FILE: ../../../third_party/skia/docs/examples/Region_034.cpp +FILE: ../../../third_party/skia/docs/examples/Region_035.cpp +FILE: ../../../third_party/skia/docs/examples/Region_036.cpp +FILE: ../../../third_party/skia/docs/examples/Region_037.cpp +FILE: ../../../third_party/skia/docs/examples/Region_038.cpp +FILE: ../../../third_party/skia/docs/examples/Region_039.cpp +FILE: ../../../third_party/skia/docs/examples/Region_040.cpp +FILE: ../../../third_party/skia/docs/examples/Region_041.cpp +FILE: ../../../third_party/skia/docs/examples/Region_042.cpp +FILE: ../../../third_party/skia/docs/examples/Region_043.cpp +FILE: ../../../third_party/skia/docs/examples/Region_044.cpp +FILE: ../../../third_party/skia/docs/examples/Region_045.cpp +FILE: ../../../third_party/skia/docs/examples/Region_046.cpp +FILE: ../../../third_party/skia/docs/examples/Region_047.cpp +FILE: ../../../third_party/skia/docs/examples/Region_048.cpp +FILE: ../../../third_party/skia/docs/examples/Region_049.cpp +FILE: ../../../third_party/skia/docs/examples/Region_050.cpp +FILE: ../../../third_party/skia/docs/examples/Region_051.cpp +FILE: ../../../third_party/skia/docs/examples/Region_052.cpp +FILE: ../../../third_party/skia/docs/examples/Region_053.cpp +FILE: ../../../third_party/skia/docs/examples/Region_054.cpp +FILE: ../../../third_party/skia/docs/examples/Surface_000.cpp +FILE: ../../../third_party/skia/docs/examples/Surface_001.cpp +FILE: ../../../third_party/skia/docs/examples/Surface_002.cpp +FILE: ../../../third_party/skia/docs/examples/Surface_003.cpp +FILE: ../../../third_party/skia/docs/examples/Surface_004.cpp +FILE: ../../../third_party/skia/docs/examples/Surface_005.cpp +FILE: ../../../third_party/skia/docs/examples/Surface_006.cpp +FILE: ../../../third_party/skia/docs/examples/Surface_007.cpp +FILE: ../../../third_party/skia/docs/examples/Surface_008.cpp +FILE: ../../../third_party/skia/docs/examples/Surface_009.cpp +FILE: ../../../third_party/skia/docs/examples/Surface_010.cpp +FILE: ../../../third_party/skia/docs/examples/Surface_011.cpp +FILE: ../../../third_party/skia/docs/examples/Surface_012.cpp +FILE: ../../../third_party/skia/docs/examples/Surface_013.cpp +FILE: ../../../third_party/skia/docs/examples/Surface_014.cpp +FILE: ../../../third_party/skia/docs/examples/Surface_015.cpp +FILE: ../../../third_party/skia/docs/examples/Surface_016.cpp +FILE: ../../../third_party/skia/docs/examples/Surface_017.cpp +FILE: ../../../third_party/skia/docs/examples/Surface_018.cpp +FILE: ../../../third_party/skia/docs/examples/Surface_019.cpp +FILE: ../../../third_party/skia/docs/examples/Surface_020.cpp +FILE: ../../../third_party/skia/docs/examples/Surface_021.cpp +FILE: ../../../third_party/skia/docs/examples/Surface_022.cpp +FILE: ../../../third_party/skia/docs/examples/Surface_023.cpp +FILE: ../../../third_party/skia/docs/examples/Surface_024.cpp +FILE: ../../../third_party/skia/docs/examples/Surface_025.cpp +FILE: ../../../third_party/skia/docs/examples/Surface_026.cpp +FILE: ../../../third_party/skia/docs/examples/Surface_027.cpp +FILE: ../../../third_party/skia/docs/examples/Surface_028.cpp +FILE: ../../../third_party/skia/docs/examples/TextBlobBuilder_000.cpp +FILE: ../../../third_party/skia/docs/examples/TextBlobBuilder_001.cpp +FILE: ../../../third_party/skia/docs/examples/TextBlobBuilder_002.cpp +FILE: ../../../third_party/skia/docs/examples/TextBlobBuilder_003.cpp +FILE: ../../../third_party/skia/docs/examples/TextBlobBuilder_004.cpp +FILE: ../../../third_party/skia/docs/examples/TextBlob_000.cpp +FILE: ../../../third_party/skia/docs/examples/TextBlob_001.cpp +FILE: ../../../third_party/skia/docs/examples/TextBlob_002.cpp +FILE: ../../../third_party/skia/docs/examples/TextBlob_003.cpp +FILE: ../../../third_party/skia/docs/examples/TextBlob_004.cpp +FILE: ../../../third_party/skia/docs/examples/TextBlob_005.cpp +FILE: ../../../third_party/skia/docs/examples/TextBlob_006.cpp +FILE: ../../../third_party/skia/docs/examples/TextBlob_007.cpp +FILE: ../../../third_party/skia/gm/crbug_918512.cpp +---------------------------------------------------------------------------------------------------- +Copyright 2019 Google LLC. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +==================================================================================================== + ==================================================================================================== LIBRARY: skia ORIGIN: ../../../third_party/skia/experimental/wasm-skp-debugger/debugger_bindings.cpp + ../../../third_party/skia/LICENSE @@ -4986,41 +6148,6 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ==================================================================================================== -==================================================================================================== -LIBRARY: skia -ORIGIN: ../../../third_party/skia/gm/crbug_918512.cpp + ../../../third_party/skia/LICENSE -TYPE: LicenseType.bsd -FILE: ../../../third_party/skia/gm/crbug_918512.cpp ----------------------------------------------------------------------------------------------------- -Copyright 2019 Google LLC. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -==================================================================================================== - ==================================================================================================== LIBRARY: skia ORIGIN: ../../../third_party/skia/include/config/SkUserConfig.h + ../../../third_party/skia/LICENSE From 39fea550209f34a74e4f00b813d5ef098e2c4507 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Sat, 16 Mar 2019 09:19:11 -0400 Subject: [PATCH 1399/1537] Roll src/third_party/skia f34d0c79dc6c..3d42a0521d12 (1 commits) (#8187) https://skia.googlesource.com/skia.git/%2Blog/f34d0c79dc6c..3d42a0521d12 git log f34d0c79dc6cc5595f8452696bc9e88d27f34452..3d42a0521d12745bd580a53b920a23e65f6f3f5b --date=short --no-merges --format=%ad %ae %s 2019-03-15 halcanary@google.com Examples: Two changes from kevin The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (benjaminwagner@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index fffef129d7020..3dfa22a629157 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'f34d0c79dc6cc5595f8452696bc9e88d27f34452', + 'skia_revision': '3d42a0521d12745bd580a53b920a23e65f6f3f5b', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index d93b05557d55c..76955de5a3d74 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 6c5efbff1420dc3200e1c15a1406967f +Signature: a7dfe7c35edb35fa264989d522147b7c UNUSED LICENSES: From 4a4f1823eb5b3a08b703f0190ab309af8b65f721 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Sat, 16 Mar 2019 12:50:11 -0400 Subject: [PATCH 1400/1537] Roll src/third_party/skia 3d42a0521d12..f3f7059cb736 (6 commits) (#8188) https://skia.googlesource.com/skia.git/%2Blog/3d42a0521d12..f3f7059cb736 git log 3d42a0521d12745bd580a53b920a23e65f6f3f5b..f3f7059cb73661fc647a60e8eab5bb7fc471a71a --date=short --no-merges --format=%ad %ae %s 2019-03-16 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader faed9d31b44d..4af8826ee423 (9 commits) 2019-03-16 skia-autoroll@skia-public.iam.gserviceaccount.com Roll ../src 558a982945cf..f4c60d43323d (337 commits) 2019-03-15 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/angle2 de52ca373d98..f06076396afa (3 commits) 2019-03-15 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader 71673c81fb1e..faed9d31b44d (1 commits) 2019-03-16 skia-recreate-skps@skia-swarming-bots.iam.gserviceaccount.com Update go_deps asset 2019-03-15 kjlubick@google.com Clean up some types in SkFont The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (benjaminwagner@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 3dfa22a629157..c18a9b4fb851b 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '3d42a0521d12745bd580a53b920a23e65f6f3f5b', + 'skia_revision': 'f3f7059cb73661fc647a60e8eab5bb7fc471a71a', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 76955de5a3d74..452f7c03357a8 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: a7dfe7c35edb35fa264989d522147b7c +Signature: 0de493b18e4c66bb5f9abd4f7c6c0d7f UNUSED LICENSES: From 0f97c920ff90aaa0cbfd960ef61089a124ffafae Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Sat, 16 Mar 2019 16:22:11 -0400 Subject: [PATCH 1401/1537] Roll src/third_party/skia f3f7059cb736..90155edf140b (1 commits) (#8189) https://skia.googlesource.com/skia.git/%2Blog/f3f7059cb736..90155edf140b git log f3f7059cb73661fc647a60e8eab5bb7fc471a71a..90155edf140bb337f512f91d0a10bd2c20c3d7e6 --date=short --no-merges --format=%ad %ae %s 2019-03-16 reed@google.com add bench for mixers The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (benjaminwagner@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 169 ++++++++++++++++--------------- 2 files changed, 86 insertions(+), 85 deletions(-) diff --git a/DEPS b/DEPS index c18a9b4fb851b..6dbc881657c21 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'f3f7059cb73661fc647a60e8eab5bb7fc471a71a', + 'skia_revision': '90155edf140bb337f512f91d0a10bd2c20c3d7e6', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 452f7c03357a8..6633397bc33ca 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 0de493b18e4c66bb5f9abd4f7c6c0d7f +Signature: a2cfef3a5a4d95324bb583d3320800d2 UNUSED LICENSES: @@ -4596,6 +4596,90 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ==================================================================================================== +==================================================================================================== +LIBRARY: skia +ORIGIN: ../../../third_party/skia/bench/MixerBench.cpp + ../../../third_party/skia/LICENSE +TYPE: LicenseType.bsd +FILE: ../../../third_party/skia/bench/MixerBench.cpp +FILE: ../../../third_party/skia/gm/backdrop.cpp +FILE: ../../../third_party/skia/gm/compositor_quads.cpp +FILE: ../../../third_party/skia/gm/crbug_938592.cpp +FILE: ../../../third_party/skia/gm/mac_aa_explorer.cpp +FILE: ../../../third_party/skia/gm/mixercolorfilter.cpp +FILE: ../../../third_party/skia/gm/samplelocations.cpp +FILE: ../../../third_party/skia/gm/skbug_8664.cpp +FILE: ../../../third_party/skia/include/core/SkMixer.h +FILE: ../../../third_party/skia/include/gpu/GrContextThreadSafeProxy.h +FILE: ../../../third_party/skia/include/private/GrContext_Base.h +FILE: ../../../third_party/skia/include/private/GrImageContext.h +FILE: ../../../third_party/skia/include/private/GrRecordingContext.h +FILE: ../../../third_party/skia/include/private/SkVx.h +FILE: ../../../third_party/skia/modules/sksg/include/SkSGRenderEffect.h +FILE: ../../../third_party/skia/modules/sksg/src/SkSGRenderEffect.cpp +FILE: ../../../third_party/skia/modules/sksg/src/SkSGTransformPriv.h +FILE: ../../../third_party/skia/samplecode/SampleDegenerateQuads.cpp +FILE: ../../../third_party/skia/samplecode/SampleSG.cpp +FILE: ../../../third_party/skia/samplecode/SampleThinAA.cpp +FILE: ../../../third_party/skia/src/core/SkDescriptor.cpp +FILE: ../../../third_party/skia/src/core/SkEffectPriv.h +FILE: ../../../third_party/skia/src/core/SkMixer.cpp +FILE: ../../../third_party/skia/src/core/SkMixerBase.h +FILE: ../../../third_party/skia/src/core/SkStrikeInterface.h +FILE: ../../../third_party/skia/src/gpu/GrAHardwareBufferUtils.cpp +FILE: ../../../third_party/skia/src/gpu/GrAHardwareBufferUtils.h +FILE: ../../../third_party/skia/src/gpu/GrBaseContextPriv.h +FILE: ../../../third_party/skia/src/gpu/GrBuffer.h +FILE: ../../../third_party/skia/src/gpu/GrContextPriv.cpp +FILE: ../../../third_party/skia/src/gpu/GrContextThreadSafeProxy.cpp +FILE: ../../../third_party/skia/src/gpu/GrContext_Base.cpp +FILE: ../../../third_party/skia/src/gpu/GrCpuBuffer.h +FILE: ../../../third_party/skia/src/gpu/GrGpuBuffer.cpp +FILE: ../../../third_party/skia/src/gpu/GrGpuBuffer.h +FILE: ../../../third_party/skia/src/gpu/GrImageContext.cpp +FILE: ../../../third_party/skia/src/gpu/GrImageContextPriv.h +FILE: ../../../third_party/skia/src/gpu/GrRecordingContext.cpp +FILE: ../../../third_party/skia/src/gpu/GrRecordingContextPriv.h +FILE: ../../../third_party/skia/src/gpu/GrSamplePatternDictionary.cpp +FILE: ../../../third_party/skia/src/gpu/GrSamplePatternDictionary.h +FILE: ../../../third_party/skia/src/gpu/effects/GrMixerEffect.cpp +FILE: ../../../third_party/skia/src/gpu/effects/GrMixerEffect.fp +FILE: ../../../third_party/skia/src/gpu/effects/GrMixerEffect.h +FILE: ../../../third_party/skia/src/gpu/vk/GrVkSecondaryCBDrawContext.cpp +FILE: ../../../third_party/skia/src/gpu/vk/GrVkSecondaryCBDrawContext.h +FILE: ../../../third_party/skia/src/shaders/SkMixerShader.cpp +FILE: ../../../third_party/skia/src/shaders/SkMixerShader.h +FILE: ../../../third_party/skia/src/sksl/SkSLDefines.h +FILE: ../../../third_party/skia/src/sksl/SkSLOutputStream.cpp +---------------------------------------------------------------------------------------------------- +Copyright 2019 Google Inc. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +==================================================================================================== + ==================================================================================================== LIBRARY: skia ORIGIN: ../../../third_party/skia/bench/ReadPixBench.cpp + ../../../third_party/skia/LICENSE @@ -6030,89 +6114,6 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ==================================================================================================== -==================================================================================================== -LIBRARY: skia -ORIGIN: ../../../third_party/skia/gm/backdrop.cpp + ../../../third_party/skia/LICENSE -TYPE: LicenseType.bsd -FILE: ../../../third_party/skia/gm/backdrop.cpp -FILE: ../../../third_party/skia/gm/compositor_quads.cpp -FILE: ../../../third_party/skia/gm/crbug_938592.cpp -FILE: ../../../third_party/skia/gm/mac_aa_explorer.cpp -FILE: ../../../third_party/skia/gm/mixercolorfilter.cpp -FILE: ../../../third_party/skia/gm/samplelocations.cpp -FILE: ../../../third_party/skia/gm/skbug_8664.cpp -FILE: ../../../third_party/skia/include/core/SkMixer.h -FILE: ../../../third_party/skia/include/gpu/GrContextThreadSafeProxy.h -FILE: ../../../third_party/skia/include/private/GrContext_Base.h -FILE: ../../../third_party/skia/include/private/GrImageContext.h -FILE: ../../../third_party/skia/include/private/GrRecordingContext.h -FILE: ../../../third_party/skia/include/private/SkVx.h -FILE: ../../../third_party/skia/modules/sksg/include/SkSGRenderEffect.h -FILE: ../../../third_party/skia/modules/sksg/src/SkSGRenderEffect.cpp -FILE: ../../../third_party/skia/modules/sksg/src/SkSGTransformPriv.h -FILE: ../../../third_party/skia/samplecode/SampleDegenerateQuads.cpp -FILE: ../../../third_party/skia/samplecode/SampleSG.cpp -FILE: ../../../third_party/skia/samplecode/SampleThinAA.cpp -FILE: ../../../third_party/skia/src/core/SkDescriptor.cpp -FILE: ../../../third_party/skia/src/core/SkEffectPriv.h -FILE: ../../../third_party/skia/src/core/SkMixer.cpp -FILE: ../../../third_party/skia/src/core/SkMixerBase.h -FILE: ../../../third_party/skia/src/core/SkStrikeInterface.h -FILE: ../../../third_party/skia/src/gpu/GrAHardwareBufferUtils.cpp -FILE: ../../../third_party/skia/src/gpu/GrAHardwareBufferUtils.h -FILE: ../../../third_party/skia/src/gpu/GrBaseContextPriv.h -FILE: ../../../third_party/skia/src/gpu/GrBuffer.h -FILE: ../../../third_party/skia/src/gpu/GrContextPriv.cpp -FILE: ../../../third_party/skia/src/gpu/GrContextThreadSafeProxy.cpp -FILE: ../../../third_party/skia/src/gpu/GrContext_Base.cpp -FILE: ../../../third_party/skia/src/gpu/GrCpuBuffer.h -FILE: ../../../third_party/skia/src/gpu/GrGpuBuffer.cpp -FILE: ../../../third_party/skia/src/gpu/GrGpuBuffer.h -FILE: ../../../third_party/skia/src/gpu/GrImageContext.cpp -FILE: ../../../third_party/skia/src/gpu/GrImageContextPriv.h -FILE: ../../../third_party/skia/src/gpu/GrRecordingContext.cpp -FILE: ../../../third_party/skia/src/gpu/GrRecordingContextPriv.h -FILE: ../../../third_party/skia/src/gpu/GrSamplePatternDictionary.cpp -FILE: ../../../third_party/skia/src/gpu/GrSamplePatternDictionary.h -FILE: ../../../third_party/skia/src/gpu/effects/GrMixerEffect.cpp -FILE: ../../../third_party/skia/src/gpu/effects/GrMixerEffect.fp -FILE: ../../../third_party/skia/src/gpu/effects/GrMixerEffect.h -FILE: ../../../third_party/skia/src/gpu/vk/GrVkSecondaryCBDrawContext.cpp -FILE: ../../../third_party/skia/src/gpu/vk/GrVkSecondaryCBDrawContext.h -FILE: ../../../third_party/skia/src/shaders/SkMixerShader.cpp -FILE: ../../../third_party/skia/src/shaders/SkMixerShader.h -FILE: ../../../third_party/skia/src/sksl/SkSLDefines.h -FILE: ../../../third_party/skia/src/sksl/SkSLOutputStream.cpp ----------------------------------------------------------------------------------------------------- -Copyright 2019 Google Inc. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -==================================================================================================== - ==================================================================================================== LIBRARY: skia ORIGIN: ../../../third_party/skia/gm/circles.cpp + ../../../third_party/skia/LICENSE From c6f9fe7e00e2648de1a7aa02673b7771a9b92c49 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Sat, 16 Mar 2019 19:55:11 -0400 Subject: [PATCH 1402/1537] Roll src/third_party/skia 90155edf140b..d95286de1dda (2 commits) (#8190) https://skia.googlesource.com/skia.git/%2Blog/90155edf140b..d95286de1dda git log 90155edf140bb337f512f91d0a10bd2c20c3d7e6..d95286de1dda8c1c0403de22151e1b2a9b7ddf96 --date=short --no-merges --format=%ad %ae %s 2019-03-16 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/angle2 f06076396afa..38e282570676 (4 commits) 2019-03-16 reed@google.com add animated version of mixer gm The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (benjaminwagner@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 6dbc881657c21..5859f178659ce 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '90155edf140bb337f512f91d0a10bd2c20c3d7e6', + 'skia_revision': 'd95286de1dda8c1c0403de22151e1b2a9b7ddf96', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 6633397bc33ca..456558576caad 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: a2cfef3a5a4d95324bb583d3320800d2 +Signature: 40d0169084d7987c00d4bb2ddd612a20 UNUSED LICENSES: From c14fde8416ab7cf0cc6cf178c1fa3c08c24491f9 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Sun, 17 Mar 2019 02:28:11 -0400 Subject: [PATCH 1403/1537] Roll src/third_party/skia d95286de1dda..e1f2a572cec0 (1 commits) (#8191) https://skia.googlesource.com/skia.git/%2Blog/d95286de1dda..e1f2a572cec0 git log d95286de1dda8c1c0403de22151e1b2a9b7ddf96..e1f2a572cec06bcf86e392b3f40647f8e485efb4 --date=short --no-merges --format=%ad %ae %s 2019-03-17 skia-recreate-skps@skia-swarming-bots.iam.gserviceaccount.com Update go_deps asset The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (brianosman@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 5859f178659ce..3cfb86a318209 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'd95286de1dda8c1c0403de22151e1b2a9b7ddf96', + 'skia_revision': 'e1f2a572cec06bcf86e392b3f40647f8e485efb4', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 456558576caad..b51404b2d1bc9 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 40d0169084d7987c00d4bb2ddd612a20 +Signature: 59458d2a878023794e0b4075ed701845 UNUSED LICENSES: From 4d9b9aacd07602031ab9cee863a74ecf02686ed4 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Sun, 17 Mar 2019 05:59:11 -0400 Subject: [PATCH 1404/1537] Roll src/third_party/skia e1f2a572cec0..143542fa28e9 (1 commits) (#8192) https://skia.googlesource.com/skia.git/%2Blog/e1f2a572cec0..143542fa28e9 git log e1f2a572cec06bcf86e392b3f40647f8e485efb4..143542fa28e92485df53f0d2ad33f8cd096b5eb0 --date=short --no-merges --format=%ad %ae %s 2019-03-17 skia-recreate-skps@skia-swarming-bots.iam.gserviceaccount.com Update SKP version The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (brianosman@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 3cfb86a318209..dc6a2821321f9 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'e1f2a572cec06bcf86e392b3f40647f8e485efb4', + 'skia_revision': '143542fa28e92485df53f0d2ad33f8cd096b5eb0', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index b51404b2d1bc9..6a7539b8494ed 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 59458d2a878023794e0b4075ed701845 +Signature: cb2c5204335c1c2da3e7fc6998215b42 UNUSED LICENSES: From 5ca92fbe9eeab46f11fab434d96b47a59553c8f3 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Sun, 17 Mar 2019 11:21:11 -0400 Subject: [PATCH 1405/1537] Roll src/third_party/skia 143542fa28e9..3ea586f9f959 (1 commits) (#8193) https://skia.googlesource.com/skia.git/%2Blog/143542fa28e9..3ea586f9f959 git log 143542fa28e92485df53f0d2ad33f8cd096b5eb0..3ea586f9f95904090ae780b22b514b18686a8038 --date=short --no-merges --format=%ad %ae %s 2019-03-17 skia-autoroll@skia-public.iam.gserviceaccount.com Roll ../src f4c60d43323d..ad85caa87461 (55 commits) The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (brianosman@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index dc6a2821321f9..1e46a0ff026b9 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '143542fa28e92485df53f0d2ad33f8cd096b5eb0', + 'skia_revision': '3ea586f9f95904090ae780b22b514b18686a8038', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 6a7539b8494ed..91a2908097b77 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: cb2c5204335c1c2da3e7fc6998215b42 +Signature: 4cfaf6117dd349c9ae3d13265b68aa9e UNUSED LICENSES: From a47e12d259cd5ac8fd28acb7546f968504d73bed Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Sun, 17 Mar 2019 14:42:11 -0400 Subject: [PATCH 1406/1537] Roll src/third_party/skia 3ea586f9f959..72ef2d519a0e (1 commits) (#8194) https://skia.googlesource.com/skia.git/%2Blog/3ea586f9f959..72ef2d519a0e git log 3ea586f9f95904090ae780b22b514b18686a8038..72ef2d519a0eecfffa9bf10ef6d027a58942875c --date=short --no-merges --format=%ad %ae %s 2019-03-17 brianosman@google.com Suppress MSVC C4756 (constant arithmetic overflow) in fiddle examples The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (brianosman@google.com), and stop the roller if necessary. --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index 1e46a0ff026b9..d1e1617456fec 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '3ea586f9f95904090ae780b22b514b18686a8038', + 'skia_revision': '72ef2d519a0eecfffa9bf10ef6d027a58942875c', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the From 5b09204e3037a8e03fcffc9161cd474b41f4db3b Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Sun, 17 Mar 2019 18:12:11 -0400 Subject: [PATCH 1407/1537] Roll src/third_party/skia 72ef2d519a0e..895e1eedb420 (1 commits) (#8195) https://skia.googlesource.com/skia.git/%2Blog/72ef2d519a0e..895e1eedb420 git log 72ef2d519a0eecfffa9bf10ef6d027a58942875c..895e1eedb4205ad2246f5670a8aa50dd01add5cc --date=short --no-merges --format=%ad %ae %s 2019-03-16 reed@google.com lowp stages for load/stores and lerp-native The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (brianosman@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index d1e1617456fec..25aece49d2310 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '72ef2d519a0eecfffa9bf10ef6d027a58942875c', + 'skia_revision': '895e1eedb4205ad2246f5670a8aa50dd01add5cc', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 91a2908097b77..4e53424fbff32 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 4cfaf6117dd349c9ae3d13265b68aa9e +Signature: ce945b43dbdf5c785a103ee114166c52 UNUSED LICENSES: From d9fda1c208193cc9e2a5600ccbd149d2adb420b1 Mon Sep 17 00:00:00 2001 From: Chris Bracken Date: Sun, 17 Mar 2019 15:52:41 -0700 Subject: [PATCH 1408/1537] Add --no-full-dart-sdk option to GN (#8196) Allows enabling/disabling building trained snapshots for dart2js and dartdevc. --- tools/gn | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tools/gn b/tools/gn index 4cb0fe099bf9f..ff0f29978e2de 100755 --- a/tools/gn +++ b/tools/gn @@ -234,9 +234,8 @@ def to_gn_args(args): if args.arm_float_abi: gn_args['arm_float_abi'] = args.arm_float_abi - # Whether to build all dart snapshots. - if args.full_dart_sdk: - gn_args['dart_platform_sdk'] = False + # Whether to build trained Dart SDK snapshots of dart2js and dartdevc. + gn_args['dart_platform_sdk'] = not args.full_dart_sdk return gn_args @@ -289,8 +288,9 @@ def parse_args(args): parser.add_argument('--out-dir', default='', type=str) - parser.add_argument('--full-dart-sdk', default=True, action='store_true', - help='include trained dart2js and dartdevc snapshots. Enable only on steps that create an sdk') + parser.add_argument('--full-dart-sdk', default=False, action='store_true', + help='include trained dart2js and dartdevc snapshots. Enable only on steps that create an SDK') + parser.add_argument('--no-full-dart-sdk', dest='full_dart_sdk', action='store_false') return parser.parse_args(args) From e75f6de01fee738eb15f24efb0ec549587009f1a Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Mon, 18 Mar 2019 01:44:12 -0400 Subject: [PATCH 1409/1537] Roll src/third_party/skia 895e1eedb420..576b2a5596bc (1 commits) (#8198) https://skia.googlesource.com/skia.git/%2Blog/895e1eedb420..576b2a5596bc git log 895e1eedb4205ad2246f5670a8aa50dd01add5cc..576b2a5596bc8dda294a069e3fdc6b8b8e48ffcf --date=short --no-merges --format=%ad %ae %s 2019-03-15 csmartdalton@google.com Disable coverage counting by default The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (brianosman@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 25aece49d2310..f1b8dc2de7b96 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '895e1eedb4205ad2246f5670a8aa50dd01add5cc', + 'skia_revision': '576b2a5596bc8dda294a069e3fdc6b8b8e48ffcf', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 4e53424fbff32..993a854d4c418 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: ce945b43dbdf5c785a103ee114166c52 +Signature: ee805bb38a883c424fed98ccbbcde946 UNUSED LICENSES: From e0782dec717049413679318ecf61e30788bf143c Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Mon, 18 Mar 2019 08:11:12 -0400 Subject: [PATCH 1410/1537] Roll src/third_party/skia 576b2a5596bc..2c043c288169 (2 commits) (#8200) https://skia.googlesource.com/skia.git/%2Blog/576b2a5596bc..2c043c288169 git log 576b2a5596bc8dda294a069e3fdc6b8b8e48ffcf..2c043c28816981f4002e72a12d7ec446672aeb1c --date=short --no-merges --format=%ad %ae %s 2019-03-18 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader 4af8826ee423..62758f581672 (1 commits) 2019-03-18 skia-recreate-skps@skia-swarming-bots.iam.gserviceaccount.com Update go_deps asset The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (brianosman@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index f1b8dc2de7b96..6a2ffd4f37f84 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '576b2a5596bc8dda294a069e3fdc6b8b8e48ffcf', + 'skia_revision': '2c043c28816981f4002e72a12d7ec446672aeb1c', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 993a854d4c418..0f1a4f155a80b 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: ee805bb38a883c424fed98ccbbcde946 +Signature: a3c1d11b2ee8f43fdf008204a0b26395 UNUSED LICENSES: From 048d70bc0948de3bad60e2056f186f336cd5aad9 Mon Sep 17 00:00:00 2001 From: Jonah Williams Date: Mon, 18 Mar 2019 11:58:35 -0700 Subject: [PATCH 1411/1537] Support dartdevc, dart2js with shared source files, dartdevc sdk (#8105) --- BUILD.gn | 13 +- ci/licenses_golden/licenses_flutter | 1 + tools/gn | 4 +- web_sdk/BUILD.gn | 95 +++++++++------ web_sdk/flutter_kernel_sdk.dart | 109 +++++++++++++++++ web_sdk/libraries.json | 176 ++++++++++++++-------------- web_sdk/libraries.yaml | 176 ++++++++++++++-------------- 7 files changed, 359 insertions(+), 215 deletions(-) create mode 100644 web_sdk/flutter_kernel_sdk.dart diff --git a/BUILD.gn b/BUILD.gn index 248524f872551..b57d63f91fde2 100644 --- a/BUILD.gn +++ b/BUILD.gn @@ -4,6 +4,12 @@ import("$flutter_root/common/config.gni") +# Whether to build the dartdevc sdk, libraries, and source files +# required for the flutter web sdk. +declare_args() { + full_dart_sdk = false +} + group("flutter") { testonly = true @@ -23,8 +29,13 @@ group("flutter") { public_deps += [ "$flutter_root/frontend_server", "//third_party/dart:create_sdk", - "$flutter_root/web_sdk", ] + + if (full_dart_sdk) { + public_deps += [ + "$flutter_root/web_sdk", + ] + } } } diff --git a/ci/licenses_golden/licenses_flutter b/ci/licenses_golden/licenses_flutter index 7f1d66782caae..6196b918d31a5 100644 --- a/ci/licenses_golden/licenses_flutter +++ b/ci/licenses_golden/licenses_flutter @@ -704,6 +704,7 @@ FILE: ../../../flutter/vulkan/vulkan_utilities.cc FILE: ../../../flutter/vulkan/vulkan_utilities.h FILE: ../../../flutter/vulkan/vulkan_window.cc FILE: ../../../flutter/vulkan/vulkan_window.h +FILE: ../../../flutter/web_sdk/flutter_kernel_sdk.dart FILE: ../../../flutter/web_sdk/libraries.json ---------------------------------------------------------------------------------------------------- Copyright 2013 The Flutter Authors. All rights reserved. diff --git a/tools/gn b/tools/gn index ff0f29978e2de..c1f381b64642b 100755 --- a/tools/gn +++ b/tools/gn @@ -234,8 +234,10 @@ def to_gn_args(args): if args.arm_float_abi: gn_args['arm_float_abi'] = args.arm_float_abi - # Whether to build trained Dart SDK snapshots of dart2js and dartdevc. + # Whether to build trained Dart SDK snapshots of dart2js and dartdevc, + # including the web sdk kernel and source files. gn_args['dart_platform_sdk'] = not args.full_dart_sdk + gn_args['full_dart_sdk'] = args.full_dart_sdk return gn_args diff --git a/web_sdk/BUILD.gn b/web_sdk/BUILD.gn index 47d8121cbec45..925f6000499b5 100644 --- a/web_sdk/BUILD.gn +++ b/web_sdk/BUILD.gn @@ -2,63 +2,82 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. +import("//third_party/dart/build/dart/dart_action.gni") +import("//third_party/dart/utils/compile_platform.gni") + +sdk_dill = "$root_out_dir/flutter_web_sdk/kernel/flutter_ddc_sdk.dill" +sdk_libraries_json = "$flutter_root/web_sdk/libraries.json" + +web_ui_sources = [ + "$flutter_root/lib/stub_ui/compositing.dart", + "$flutter_root/lib/stub_ui/geometry.dart", + "$flutter_root/lib/stub_ui/hash_codes.dart", + "$flutter_root/lib/stub_ui/hooks.dart", + "$flutter_root/lib/stub_ui/isolate_name_server.dart", + "$flutter_root/lib/stub_ui/lerp.dart", + "$flutter_root/lib/stub_ui/natives.dart", + "$flutter_root/lib/stub_ui/painting.dart", + "$flutter_root/lib/stub_ui/plugins.dart", + "$flutter_root/lib/stub_ui/pointer.dart", + "$flutter_root/lib/stub_ui/semantics.dart", + "$flutter_root/lib/stub_ui/text.dart", + "$flutter_root/lib/stub_ui/ui.dart", + "$flutter_root/lib/stub_ui/versions.dart", + "$flutter_root/lib/stub_ui/window.dart", +] + group("web_sdk") { deps = [ ":web_ui_sources", - ":web_libraries_json", - #":dart_sdk_internal", + ":web_ui_library", + ":flutter_dartdevc_kernel_sdk", ] } copy("web_ui_sources") { - sources = [ - "$flutter_root/lib/stub_ui/compositing.dart", - "$flutter_root/lib/stub_ui/geometry.dart", - "$flutter_root/lib/stub_ui/hash_codes.dart", - "$flutter_root/lib/stub_ui/hooks.dart", - "$flutter_root/lib/stub_ui/isolate_name_server.dart", - "$flutter_root/lib/stub_ui/lerp.dart", - "$flutter_root/lib/stub_ui/natives.dart", - "$flutter_root/lib/stub_ui/painting.dart", - "$flutter_root/lib/stub_ui/plugins.dart", - "$flutter_root/lib/stub_ui/pointer.dart", - "$flutter_root/lib/stub_ui/semantics.dart", - "$flutter_root/lib/stub_ui/text.dart", - "$flutter_root/lib/stub_ui/ui.dart", - "$flutter_root/lib/stub_ui/versions.dart", - "$flutter_root/lib/stub_ui/window.dart", - ] + sources = web_ui_sources outputs = [ "$root_out_dir/flutter_web_sdk/lib/ui/{{source_file_part}}" ] } -copy("web_libraries_json") { +copy("web_ui_library") { sources = [ - "libraries.json" + "$flutter_root/web_sdk/libraries.json", ] outputs = [ - "$root_out_dir/flutter_web_sdk/lib/libraries.json" + "$root_out_dir/flutter_web_sdk/{{source_file_part}}" ] } -# copy("dart_sdk_internal") { -# deps = [ -# "//third_party/dart:create_sdk" -# ] +prebuilt_dart_action("flutter_dartdevc_kernel_sdk") { + deps = [ + "//third_party/dart/pkg:pkg_files_stamp", + "//third_party/dart/utils/dartdevc:dartdevc_files_stamp", + "//third_party/dart/utils/dartdevc:dartdevc_sdk_patch_stamp", + ] -# sources = [ -# "$root_out_dir/dart-sdk/lib/_internal/ddc_sdk.dill", -# "$root_out_dir/dart-sdk/lib/_internal/dart2js_platform.dill", -# "$root_out_dir/dart-sdk/lib/_internal/dart2js_server_platform.dill", -# "$root_out_dir/dart-sdk/lib/_internal/ddc_sdk.sum", -# "$root_out_dir/dart-sdk/lib/_internal/strong.sum", -# "$root_out_dir/dart-sdk/lib/_internal/vm_platform_strong.dill", -# ] + inputs = [ + "//third_party/dart/pkg/dev_compiler/tool/kernel_sdk.dart", + ] -# outputs = [ -# "$root_out_dir/flutter_web_sdk/lib/_internal/{{source_file_part}}" -# ] -# } + outputs = [ + sdk_dill, + "$root_out_dir/flutter_web_sdk/lib/_internal/libraries.json", + "$root_out_dir/flutter_web_sdk/kernel/amd/dart_sdk.js", + "$root_out_dir/flutter_web_sdk/kernel/amd/dart_sdk.js.map", + ] + + script = "flutter_kernel_sdk.dart" + packages = "//third_party/dart/.packages" + + output_path = rebase_path(sdk_dill) + libraries_path = rebase_path(sdk_libraries_json) + + args = [ + "--output=$output_path", + "--libraries=$libraries_path", + ] +} diff --git a/web_sdk/flutter_kernel_sdk.dart b/web_sdk/flutter_kernel_sdk.dart new file mode 100644 index 0000000000000..dea21c2de8ae5 --- /dev/null +++ b/web_sdk/flutter_kernel_sdk.dart @@ -0,0 +1,109 @@ +// 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. + +import 'dart:async'; +import 'dart:convert' show json; +import 'dart:io'; +import 'package:args/args.dart' show ArgParser; +import 'package:dev_compiler/src/compiler/module_builder.dart'; +import 'package:dev_compiler/src/compiler/shared_command.dart' show SharedCompilerOptions; +import 'package:dev_compiler/src/kernel/target.dart'; +import 'package:dev_compiler/src/kernel/command.dart'; +import 'package:dev_compiler/src/kernel/compiler.dart'; +import 'package:front_end/src/api_unstable/ddc.dart' show CompilerOptions, kernelForComponent; +import 'package:kernel/kernel.dart'; +import 'package:path/path.dart' as path; + +// This script is forked from https://github.com/dart-lang/sdk/blob/master/pkg/dev_compiler/tool/kernel_sdk.dart +// and produces the precompiled sdk for dartdevc. This has been modified to include a dart:ui target. +Future main(List args) async { + var ddcPath = path.dirname(path.dirname(path.fromUri(Platform.script))); + + // Parse flags. + var parser = ArgParser() + ..addOption('output') + ..addOption('libraries', + defaultsTo: path.join(ddcPath, '../../sdk/lib/libraries.json')); + var parserOptions = parser.parse(args); + + var outputPath = parserOptions['output'] as String; + if (outputPath == null) { + var sdkRoot = path.absolute(path.dirname(path.dirname(ddcPath))); + var buildDir = path.join(sdkRoot, Platform.isMacOS ? 'xcodebuild' : 'out'); + var genDir = path.join(buildDir, 'ReleaseX64', 'gen', 'utils', 'dartdevc'); + outputPath = path.join(genDir, 'kernel', 'ddc_sdk.dill'); + } + + var librarySpecPath = parserOptions['libraries'] as String; + + var target = FlutterDevCompilerTarget(); + var options = CompilerOptions() + ..compileSdk = true + // TODO(sigmund): remove this unnecessary option when possible. + ..sdkRoot = Uri.base + ..librariesSpecificationUri = Uri.base.resolveUri(Uri.file(librarySpecPath)) + ..target = target; + + var inputs = target.extraRequiredLibraries.map(Uri.parse).toList(); + var component = await kernelForComponent(inputs, options); + + var outputDir = path.dirname(outputPath); + await Directory(outputDir).create(recursive: true); + await writeComponentToBinary(component, outputPath); + + var jsModule = ProgramCompiler( + component, + target.hierarchy, + SharedCompilerOptions(moduleName: 'dart_sdk'), + {}).emitModule(component, [], [], {}); + var moduleFormats = { + 'amd': ModuleFormat.amd, + }; + + for (var name in moduleFormats.keys) { + var format = moduleFormats[name]; + var jsDir = path.join(outputDir, name); + var jsPath = path.join(jsDir, 'dart_sdk.js'); + await Directory(jsDir).create(); + var jsCode = jsProgramToCode(jsModule, format); + await File(jsPath).writeAsString(jsCode.code); + await File('$jsPath.map').writeAsString(json.encode(jsCode.sourceMap)); + } +} + +class FlutterDevCompilerTarget extends DevCompilerTarget { + @override + List get extraRequiredLibraries => const [ + 'dart:_runtime', + 'dart:_debugger', + 'dart:_foreign_helper', + 'dart:_interceptors', + 'dart:_internal', + 'dart:_isolate_helper', + 'dart:_js_helper', + 'dart:_js_mirrors', + 'dart:_js_primitives', + 'dart:_metadata', + 'dart:_native_typed_data', + 'dart:async', + 'dart:collection', + 'dart:convert', + 'dart:developer', + 'dart:io', + 'dart:isolate', + 'dart:js', + 'dart:js_util', + 'dart:math', + 'dart:mirrors', + 'dart:typed_data', + 'dart:indexed_db', + 'dart:html', + 'dart:html_common', + 'dart:svg', + 'dart:web_audio', + 'dart:web_gl', + 'dart:web_sql', + 'dart:ui', + ]; +} diff --git a/web_sdk/libraries.json b/web_sdk/libraries.json index a9203707e82f4..38eb0788b0516 100644 --- a/web_sdk/libraries.json +++ b/web_sdk/libraries.json @@ -1,235 +1,235 @@ { "comment:0": "NOTE: THIS FILE IS GENERATED. DO NOT EDIT.", - "comment:1": "Instead modify 'flutter/flutter_web/libraries.yaml' and follow the instructions therein.", + "comment:1": "Instead modify 'flutter/web_sdk/libraries.yaml' and follow the instructions therein.", "dart2js": { "libraries": { "async": { - "patches": "lib/_internal/js_runtime/lib/async_patch.dart", - "uri": "lib/async/async.dart" + "patches": "../dart-sdk/lib/_internal/js_runtime/lib/async_patch.dart", + "uri": "../dart-sdk/lib/async/async.dart" }, "_interceptors": { - "uri": "lib/_internal/js_runtime/lib/interceptors.dart" + "uri": "../dart-sdk/lib/_internal/js_runtime/lib/interceptors.dart" }, "mirrors": { - "patches": "lib/_internal/js_runtime/lib/mirrors_patch_cfe.dart", + "patches": "../dart-sdk/lib/_internal/js_runtime/lib/mirrors_patch_cfe.dart", "supported": false, - "uri": "lib/mirrors/mirrors.dart" + "uri": "../dart-sdk/lib/mirrors/mirrors.dart" }, "_js_embedded_names": { - "uri": "lib/_internal/js_runtime/lib/shared/embedded_names.dart" + "uri": "../dart-sdk/lib/_internal/js_runtime/lib/shared/embedded_names.dart" }, "io": { - "patches": "lib/_internal/js_runtime/lib/io_patch.dart", + "patches": "io_patch.dart", "supported": false, - "uri": "lib/io/io.dart" + "uri": "../dart-sdk/lib/io/io.dart" }, "_internal": { - "patches": "lib/_internal/js_runtime/lib/internal_patch.dart", - "uri": "lib/internal/internal.dart" + "patches": "../dart-sdk/lib/_internal/js_runtime/lib/internal_patch.dart", + "uri": "../dart-sdk/lib/internal/internal.dart" }, "_metadata": { - "uri": "lib/html/html_common/metadata.dart" + "uri": "../dart-sdk/lib/html/html_common/metadata.dart" }, "_async_await_error_codes": { - "uri": "lib/_internal/js_runtime/lib/shared/async_await_error_codes.dart" + "uri": "../dart-sdk/lib/_internal/js_runtime/lib/shared/async_await_error_codes.dart" }, "_http": { - "uri": "lib/_http/http.dart" + "uri": "../dart-sdk/lib/_http/http.dart" }, "_js_primitives": { - "uri": "lib/_internal/js_runtime/lib/js_primitives.dart" + "uri": "../dart-sdk/lib/_internal/js_runtime/lib/js_primitives.dart" }, "_js_helper": { - "uri": "lib/_internal/js_runtime/lib/js_helper.dart" + "uri": "../dart-sdk/lib/_internal/js_runtime/lib/js_helper.dart" }, "_chrome": { - "uri": "lib/_chrome/dart2js/chrome_dart2js.dart" + "uri": "../dart-sdk/lib/_chrome/dart2js/chrome_dart2js.dart" }, "html_common": { - "uri": "lib/html/html_common/html_common_dart2js.dart" + "uri": "../dart-sdk/lib/html/html_common/html_common_dart2js.dart" }, "ui": { - "uri": "../lib/ui/ui.dart" + "uri": "lib/ui/ui.dart" }, "js": { - "uri": "lib/js/dart2js/js_dart2js.dart" + "uri": "../dart-sdk/lib/js/dart2js/js_dart2js.dart" }, "_native_typed_data": { - "uri": "lib/_internal/js_runtime/lib/native_typed_data.dart" + "uri": "../dart-sdk/lib/_internal/js_runtime/lib/native_typed_data.dart" }, "_js_names": { - "uri": "lib/_internal/js_runtime/lib/js_names.dart" + "uri": "../dart-sdk/lib/_internal/js_runtime/lib/js_names.dart" }, "core": { - "patches": "lib/_internal/js_runtime/lib/core_patch.dart", - "uri": "lib/core/core.dart" + "patches": "../dart-sdk/lib/_internal/js_runtime/lib/core_patch.dart", + "uri": "../dart-sdk/lib/core/core.dart" }, "collection": { - "patches": "lib/_internal/js_runtime/lib/collection_patch.dart", - "uri": "lib/collection/collection.dart" + "patches": "../dart-sdk/lib/_internal/js_runtime/lib/collection_patch.dart", + "uri": "../dart-sdk/lib/collection/collection.dart" }, "js_util": { - "uri": "lib/js_util/dart2js/js_util_dart2js.dart" + "uri": "../dart-sdk/lib/js_util/dart2js/js_util_dart2js.dart" }, "typed_data": { - "patches": "lib/_internal/js_runtime/lib/typed_data_patch.dart", - "uri": "lib/typed_data/typed_data.dart" + "patches": "../dart-sdk/lib/_internal/js_runtime/lib/typed_data_patch.dart", + "uri": "../dart-sdk/lib/typed_data/typed_data.dart" }, "web_audio": { - "uri": "lib/web_audio/dart2js/web_audio_dart2js.dart" + "uri": "../dart-sdk/lib/web_audio/dart2js/web_audio_dart2js.dart" }, "html": { - "uri": "lib/html/dart2js/html_dart2js.dart" + "uri": "../dart-sdk/lib/html/dart2js/html_dart2js.dart" }, "isolate": { - "patches": "lib/_internal/js_runtime/lib/isolate_patch.dart", + "patches": "../dart-sdk/lib/_internal/js_runtime/lib/isolate_patch.dart", "supported": false, - "uri": "lib/isolate/isolate.dart" + "uri": "../dart-sdk/lib/isolate/isolate.dart" }, "developer": { - "patches": "lib/_internal/js_runtime/lib/developer_patch.dart", - "uri": "lib/developer/developer.dart" + "patches": "../dart-sdk/lib/_internal/js_runtime/lib/developer_patch.dart", + "uri": "../dart-sdk/lib/developer/developer.dart" }, "web_gl": { - "uri": "lib/web_gl/dart2js/web_gl_dart2js.dart" + "uri": "../dart-sdk/lib/web_gl/dart2js/web_gl_dart2js.dart" }, "indexed_db": { - "uri": "lib/indexed_db/dart2js/indexed_db_dart2js.dart" + "uri": "../dart-sdk/lib/indexed_db/dart2js/indexed_db_dart2js.dart" }, "_js": { - "patches": "lib/js/_js_client.dart", - "uri": "lib/js/_js.dart" + "patches": "../dart-sdk/lib/js/_js_client.dart", + "uri": "../dart-sdk/lib/js/_js.dart" }, "convert": { - "patches": "lib/_internal/js_runtime/lib/convert_patch.dart", - "uri": "lib/convert/convert.dart" + "patches": "../dart-sdk/lib/_internal/js_runtime/lib/convert_patch.dart", + "uri": "../dart-sdk/lib/convert/convert.dart" }, "math": { - "patches": "lib/_internal/js_runtime/lib/math_patch.dart", - "uri": "lib/math/math.dart" + "patches": "../dart-sdk/lib/_internal/js_runtime/lib/math_patch.dart", + "uri": "../dart-sdk/lib/math/math.dart" }, "_foreign_helper": { - "uri": "lib/_internal/js_runtime/lib/foreign_helper.dart" + "uri": "../dart-sdk/lib/_internal/js_runtime/lib/foreign_helper.dart" }, "web_sql": { - "uri": "lib/web_sql/dart2js/web_sql_dart2js.dart" + "uri": "../dart-sdk/lib/web_sql/dart2js/web_sql_dart2js.dart" }, "svg": { - "uri": "lib/svg/dart2js/svg_dart2js.dart" + "uri": "../dart-sdk/lib/svg/dart2js/svg_dart2js.dart" } } }, "dartdevc": { "libraries": { "async": { - "patches": "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/patch/async_patch.dart", - "uri": "lib/async/async.dart" + "patches": "../../third_party/dart/pkg/dev_compiler/tool/input_sdk/patch/async_patch.dart", + "uri": "../../third_party/dart/sdk/lib/async/async.dart" }, "_runtime": { - "uri": "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/private/ddc_runtime/runtime.dart" + "uri": "../../third_party/dart/pkg/dev_compiler/tool/input_sdk/private/ddc_runtime/runtime.dart" }, "_interceptors": { - "uri": "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/private/interceptors.dart" + "uri": "../../third_party/dart/pkg/dev_compiler/tool/input_sdk/private/interceptors.dart" }, "mirrors": { - "patches": "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/patch/mirrors_patch.dart", + "patches": "../../third_party/dart/pkg/dev_compiler/tool/input_sdk/patch/mirrors_patch.dart", "supported": false, - "uri": "lib/mirrors/mirrors.dart" + "uri": "../../third_party/dart/sdk/lib/mirrors/mirrors.dart" }, "_debugger": { - "uri": "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/private/debugger.dart" + "uri": "../../third_party/dart/pkg/dev_compiler/tool/input_sdk/private/debugger.dart" }, "io": { - "patches": "io_patch.dart", + "patches": "../../third_party/dart/pkg/dev_compiler/tool/input_sdk/patch/io_patch.dart", "supported": false, - "uri": "lib/io/io.dart" + "uri": "../../third_party/dart/sdk/lib/io/io.dart" }, "_internal": { - "patches": "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/patch/internal_patch.dart", - "uri": "lib/internal/internal.dart" + "patches": "../../third_party/dart/pkg/dev_compiler/tool/input_sdk/patch/internal_patch.dart", + "uri": "../../third_party/dart/sdk/lib/internal/internal.dart" }, "_metadata": { - "uri": "lib/html/html_common/metadata.dart" + "uri": "../../third_party/dart/sdk/lib/html/html_common/metadata.dart" }, "_http": { - "uri": "lib/_http/http.dart" + "uri": "../../third_party/dart/sdk/lib/_http/http.dart" }, "_js_primitives": { - "uri": "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/private/js_primitives.dart" + "uri": "../../third_party/dart/pkg/dev_compiler/tool/input_sdk/private/js_primitives.dart" }, "_js_helper": { - "uri": "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/private/js_helper.dart" + "uri": "../../third_party/dart/pkg/dev_compiler/tool/input_sdk/private/js_helper.dart" }, "ui": { "uri": "../lib/ui/ui.dart" }, "js": { - "uri": "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/lib/js/dart2js/js_dart2js.dart" + "uri": "../../third_party/dart/pkg/dev_compiler/tool/input_sdk/lib/js/dart2js/js_dart2js.dart" }, "_js_mirrors": { - "uri": "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/private/js_mirrors.dart" + "uri": "../../third_party/dart/pkg/dev_compiler/tool/input_sdk/private/js_mirrors.dart" }, "html_common": { - "uri": "lib/html/html_common/html_common_dart2js.dart" + "uri": "../../third_party/dart/sdk/lib/html/html_common/html_common_dart2js.dart" }, "_native_typed_data": { - "uri": "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/private/native_typed_data.dart" + "uri": "../../third_party/dart/pkg/dev_compiler/tool/input_sdk/private/native_typed_data.dart" }, "core": { - "patches": "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/patch/core_patch.dart", - "uri": "lib/core/core.dart" + "patches": "../../third_party/dart/pkg/dev_compiler/tool/input_sdk/patch/core_patch.dart", + "uri": "../../third_party/dart/sdk/lib/core/core.dart" }, "js_util": { - "uri": "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/lib/js_util/dart2js/js_util_dart2js.dart" + "uri": "../../third_party/dart/pkg/dev_compiler/tool/input_sdk/lib/js_util/dart2js/js_util_dart2js.dart" }, "collection": { - "patches": "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/patch/collection_patch.dart", - "uri": "lib/collection/collection.dart" + "patches": "../../third_party/dart/pkg/dev_compiler/tool/input_sdk/patch/collection_patch.dart", + "uri": "../../third_party/dart/sdk/lib/collection/collection.dart" }, "typed_data": { - "patches": "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/patch/typed_data_patch.dart", - "uri": "lib/typed_data/typed_data.dart" + "patches": "../../third_party/dart/pkg/dev_compiler/tool/input_sdk/patch/typed_data_patch.dart", + "uri": "../../third_party/dart/sdk/lib/typed_data/typed_data.dart" }, "web_audio": { - "uri": "lib/web_audio/dart2js/web_audio_dart2js.dart" + "uri": "../../third_party/dart/sdk/lib/web_audio/dart2js/web_audio_dart2js.dart" }, "html": { - "uri": "lib/html/dart2js/html_dart2js.dart" + "uri": "../../third_party/dart/sdk/lib/html/dart2js/html_dart2js.dart" }, "developer": { - "patches": "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/patch/developer_patch.dart", - "uri": "lib/developer/developer.dart" + "patches": "../../third_party/dart/pkg/dev_compiler/tool/input_sdk/patch/developer_patch.dart", + "uri": "../../third_party/dart/sdk/lib/developer/developer.dart" }, "isolate": { - "patches": "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/patch/isolate_patch.dart", + "patches": "../../third_party/dart/pkg/dev_compiler/tool/input_sdk/patch/isolate_patch.dart", "supported": false, - "uri": "lib/isolate/isolate.dart" + "uri": "../../third_party/dart/sdk/lib/isolate/isolate.dart" }, "web_gl": { - "uri": "lib/web_gl/dart2js/web_gl_dart2js.dart" + "uri": "../../third_party/dart/sdk/lib/web_gl/dart2js/web_gl_dart2js.dart" }, "indexed_db": { - "uri": "lib/indexed_db/dart2js/indexed_db_dart2js.dart" + "uri": "../../third_party/dart/sdk/lib/indexed_db/dart2js/indexed_db_dart2js.dart" }, "convert": { - "patches": "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/patch/convert_patch.dart", - "uri": "lib/convert/convert.dart" + "patches": "../../third_party/dart/pkg/dev_compiler/tool/input_sdk/patch/convert_patch.dart", + "uri": "../../third_party/dart/sdk/lib/convert/convert.dart" }, "_isolate_helper": { - "uri": "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/private/isolate_helper.dart" + "uri": "../../third_party/dart/pkg/dev_compiler/tool/input_sdk/private/isolate_helper.dart" }, "math": { - "patches": "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/patch/math_patch.dart", - "uri": "lib/math/math.dart" + "patches": "../../third_party/dart/pkg/dev_compiler/tool/input_sdk/patch/math_patch.dart", + "uri": "../../third_party/dart/sdk/lib/math/math.dart" }, "_foreign_helper": { - "uri": "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/private/foreign_helper.dart" + "uri": "../../third_party/dart/pkg/dev_compiler/tool/input_sdk/private/foreign_helper.dart" }, "web_sql": { - "uri": "lib/web_sql/dart2js/web_sql_dart2js.dart" + "uri": "../../third_party/dart/sdk/lib/web_sql/dart2js/web_sql_dart2js.dart" }, "svg": { - "uri": "lib/svg/dart2js/svg_dart2js.dart" + "uri": "../../third_party/dart/sdk/lib/svg/dart2js/svg_dart2js.dart" } } } diff --git a/web_sdk/libraries.yaml b/web_sdk/libraries.yaml index 2516e18d4fdbf..56e100b6c11ad 100644 --- a/web_sdk/libraries.yaml +++ b/web_sdk/libraries.yaml @@ -2,10 +2,12 @@ # for details. All rights reserved. Use of this source code is governed by a # BSD-style license that can be found in the LICENSE file. +# This libraries file is only used for building the ddc kernel. +# # Note: if you edit this file, you must also edit libraries.json in this # directory: # -#. python third_party/dart/tools/yaml2json.py flutter/lib/snapshot/libraries.yaml flutter/lib/snapshot/libraries.json +#. python third_party/dart/tools/yaml2json.py flutter/web_sdk/libraries.yaml flutter/web_sdk/libraries.json # # We currently have several different files that needs to be updated when # changing libraries, sources, and patch files. See @@ -14,111 +16,111 @@ dartdevc: libraries: _runtime: - uri: "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/private/ddc_runtime/runtime.dart" + uri: "../../third_party/dart/pkg/dev_compiler/tool/input_sdk/private/ddc_runtime/runtime.dart" _debugger: - uri: "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/private/debugger.dart" + uri: "../../third_party/dart/pkg/dev_compiler/tool/input_sdk/private/debugger.dart" _foreign_helper: - uri: "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/private/foreign_helper.dart" + uri: "../../third_party/dart/pkg/dev_compiler/tool/input_sdk/private/foreign_helper.dart" _http: - uri: "lib/_http/http.dart" + uri: "../../third_party/dart/sdk/lib/_http/http.dart" _interceptors: - uri: "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/private/interceptors.dart" + uri: "../../third_party/dart/pkg/dev_compiler/tool/input_sdk/private/interceptors.dart" _internal: - uri: "lib/internal/internal.dart" - patches: "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/patch/internal_patch.dart" + uri: "../../third_party/dart/sdk/lib/internal/internal.dart" + patches: "../../third_party/dart/pkg/dev_compiler/tool/input_sdk/patch/internal_patch.dart" _isolate_helper: - uri: "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/private/isolate_helper.dart" + uri: "../../third_party/dart/pkg/dev_compiler/tool/input_sdk/private/isolate_helper.dart" _js_helper: - uri: "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/private/js_helper.dart" + uri: "../../third_party/dart/pkg/dev_compiler/tool/input_sdk/private/js_helper.dart" _js_mirrors: - uri: "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/private/js_mirrors.dart" + uri: "../../third_party/dart/pkg/dev_compiler/tool/input_sdk/private/js_mirrors.dart" _js_primitives: - uri: "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/private/js_primitives.dart" + uri: "../../third_party/dart/pkg/dev_compiler/tool/input_sdk/private/js_primitives.dart" _metadata: - uri: "lib/html/html_common/metadata.dart" + uri: "../../third_party/dart/sdk/lib/html/html_common/metadata.dart" _native_typed_data: - uri: "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/private/native_typed_data.dart" + uri: "../../third_party/dart/pkg/dev_compiler/tool/input_sdk/private/native_typed_data.dart" async: - uri: "lib/async/async.dart" - patches: "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/patch/async_patch.dart" + uri: "../../third_party/dart/sdk/lib/async/async.dart" + patches: "../../third_party/dart/pkg/dev_compiler/tool/input_sdk/patch/async_patch.dart" collection: - uri: "lib/collection/collection.dart" - patches: "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/patch/collection_patch.dart" + uri: "../../third_party/dart/sdk/lib/collection/collection.dart" + patches: "../../third_party/dart/pkg/dev_compiler/tool/input_sdk/patch/collection_patch.dart" convert: - uri: "lib/convert/convert.dart" - patches: "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/patch/convert_patch.dart" + uri: "../../third_party/dart/sdk/lib/convert/convert.dart" + patches: "../../third_party/dart/pkg/dev_compiler/tool/input_sdk/patch/convert_patch.dart" core: - uri: "lib/core/core.dart" - patches: "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/patch/core_patch.dart" + uri: "../../third_party/dart/sdk/lib/core/core.dart" + patches: "../../third_party/dart/pkg/dev_compiler/tool/input_sdk/patch/core_patch.dart" developer: - uri: "lib/developer/developer.dart" - patches: "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/patch/developer_patch.dart" + uri: "../../third_party/dart/sdk/lib/developer/developer.dart" + patches: "../../third_party/dart/pkg/dev_compiler/tool/input_sdk/patch/developer_patch.dart" io: - uri: "lib/io/io.dart" - patches: "io_patch.dart" + uri: "../../third_party/dart/sdk/lib/io/io.dart" + patches: "../../third_party/dart/pkg/dev_compiler/tool/input_sdk/patch/io_patch.dart" supported: false isolate: - uri: "lib/isolate/isolate.dart" - patches: "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/patch/isolate_patch.dart" + uri: "../../third_party/dart/sdk/lib/isolate/isolate.dart" + patches: "../../third_party/dart/pkg/dev_compiler/tool/input_sdk/patch/isolate_patch.dart" supported: false mirrors: - uri: "lib/mirrors/mirrors.dart" - patches: "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/patch/mirrors_patch.dart" + uri: "../../third_party/dart/sdk/lib/mirrors/mirrors.dart" + patches: "../../third_party/dart/pkg/dev_compiler/tool/input_sdk/patch/mirrors_patch.dart" supported: false math: - uri: "lib/math/math.dart" - patches: "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/patch/math_patch.dart" + uri: "../../third_party/dart/sdk/lib/math/math.dart" + patches: "../../third_party/dart/pkg/dev_compiler/tool/input_sdk/patch/math_patch.dart" typed_data: - uri: "lib/typed_data/typed_data.dart" - patches: "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/patch/typed_data_patch.dart" + uri: "../../third_party/dart/sdk/lib/typed_data/typed_data.dart" + patches: "../../third_party/dart/pkg/dev_compiler/tool/input_sdk/patch/typed_data_patch.dart" html: - uri: "lib/html/dart2js/html_dart2js.dart" + uri: "../../third_party/dart/sdk/lib/html/dart2js/html_dart2js.dart" html_common: - uri: "lib/html/html_common/html_common_dart2js.dart" + uri: "../../third_party/dart/sdk/lib/html/html_common/html_common_dart2js.dart" indexed_db: - uri: "lib/indexed_db/dart2js/indexed_db_dart2js.dart" + uri: "../../third_party/dart/sdk/lib/indexed_db/dart2js/indexed_db_dart2js.dart" js: - uri: "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/lib/js/dart2js/js_dart2js.dart" + uri: "../../third_party/dart/pkg/dev_compiler/tool/input_sdk/lib/js/dart2js/js_dart2js.dart" js_util: - uri: "../../../third_party/dart/pkg/dev_compiler/tool/input_sdk/lib/js_util/dart2js/js_util_dart2js.dart" + uri: "../../third_party/dart/pkg/dev_compiler/tool/input_sdk/lib/js_util/dart2js/js_util_dart2js.dart" svg: - uri: "lib/svg/dart2js/svg_dart2js.dart" + uri: "../../third_party/dart/sdk/lib/svg/dart2js/svg_dart2js.dart" web_audio: - uri: "lib/web_audio/dart2js/web_audio_dart2js.dart" + uri: "../../third_party/dart/sdk/lib/web_audio/dart2js/web_audio_dart2js.dart" web_gl: - uri: "lib/web_gl/dart2js/web_gl_dart2js.dart" + uri: "../../third_party/dart/sdk/lib/web_gl/dart2js/web_gl_dart2js.dart" web_sql: - uri: "lib/web_sql/dart2js/web_sql_dart2js.dart" + uri: "../../third_party/dart/sdk/lib/web_sql/dart2js/web_sql_dart2js.dart" ui: uri: "../lib/ui/ui.dart" @@ -126,115 +128,115 @@ dartdevc: dart2js: libraries: ui: - uri: "../lib/ui/ui.dart" + uri: "lib/ui/ui.dart" async: - uri: "lib/async/async.dart" - patches: "lib/_internal/js_runtime/lib/async_patch.dart" + uri: "../dart-sdk/lib/async/async.dart" + patches: "../dart-sdk/lib/_internal/js_runtime/lib/async_patch.dart" _chrome: - uri: "lib/_chrome/dart2js/chrome_dart2js.dart" + uri: "../dart-sdk/lib/_chrome/dart2js/chrome_dart2js.dart" collection: - uri: "lib/collection/collection.dart" - patches: "lib/_internal/js_runtime/lib/collection_patch.dart" + uri: "../dart-sdk/lib/collection/collection.dart" + patches: "../dart-sdk/lib/_internal/js_runtime/lib/collection_patch.dart" convert: - uri: "lib/convert/convert.dart" - patches: "lib/_internal/js_runtime/lib/convert_patch.dart" + uri: "../dart-sdk/lib/convert/convert.dart" + patches: "../dart-sdk/lib/_internal/js_runtime/lib/convert_patch.dart" core: - uri: "lib/core/core.dart" - patches: "lib/_internal/js_runtime/lib/core_patch.dart" + uri: "../dart-sdk/lib/core/core.dart" + patches: "../dart-sdk/lib/_internal/js_runtime/lib/core_patch.dart" developer: - uri: "lib/developer/developer.dart" - patches: "lib/_internal/js_runtime/lib/developer_patch.dart" + uri: "../dart-sdk/lib/developer/developer.dart" + patches: "../dart-sdk/lib/_internal/js_runtime/lib/developer_patch.dart" html: - uri: "lib/html/dart2js/html_dart2js.dart" + uri: "../dart-sdk/lib/html/dart2js/html_dart2js.dart" html_common: - uri: "lib/html/html_common/html_common_dart2js.dart" + uri: "../dart-sdk/lib/html/html_common/html_common_dart2js.dart" indexed_db: - uri: "lib/indexed_db/dart2js/indexed_db_dart2js.dart" + uri: "../dart-sdk/lib/indexed_db/dart2js/indexed_db_dart2js.dart" _http: - uri: "lib/_http/http.dart" + uri: "../dart-sdk/lib/_http/http.dart" io: - uri: "lib/io/io.dart" + uri: "../dart-sdk/lib/io/io.dart" patches: "io_patch.dart" supported: false isolate: - uri: "lib/isolate/isolate.dart" - patches: "lib/_internal/js_runtime/lib/isolate_patch.dart" + uri: "../dart-sdk/lib/isolate/isolate.dart" + patches: "../dart-sdk/lib/_internal/js_runtime/lib/isolate_patch.dart" supported: false js: - uri: "lib/js/dart2js/js_dart2js.dart" + uri: "../dart-sdk/lib/js/dart2js/js_dart2js.dart" _js: - uri: "lib/js/_js.dart" - patches: "lib/js/_js_client.dart" + uri: "../dart-sdk/lib/js/_js.dart" + patches: "../dart-sdk/lib/js/_js_client.dart" js_util: - uri: "lib/js_util/dart2js/js_util_dart2js.dart" + uri: "../dart-sdk/lib/js_util/dart2js/js_util_dart2js.dart" math: - uri: "lib/math/math.dart" - patches: "lib/_internal/js_runtime/lib/math_patch.dart" + uri: "../dart-sdk/lib/math/math.dart" + patches: "../dart-sdk/lib/_internal/js_runtime/lib/math_patch.dart" mirrors: - uri: "lib/mirrors/mirrors.dart" - patches: "lib/_internal/js_runtime/lib/mirrors_patch_cfe.dart" + uri: "../dart-sdk/lib/mirrors/mirrors.dart" + patches: "../dart-sdk/lib/_internal/js_runtime/lib/mirrors_patch_cfe.dart" supported: false typed_data: - uri: "lib/typed_data/typed_data.dart" - patches: "lib/_internal/js_runtime/lib/typed_data_patch.dart" + uri: "../dart-sdk/lib/typed_data/typed_data.dart" + patches: "../dart-sdk/lib/_internal/js_runtime/lib/typed_data_patch.dart" _native_typed_data: - uri: "lib/_internal/js_runtime/lib/native_typed_data.dart" + uri: "../dart-sdk/lib/_internal/js_runtime/lib/native_typed_data.dart" svg: - uri: "lib/svg/dart2js/svg_dart2js.dart" + uri: "../dart-sdk/lib/svg/dart2js/svg_dart2js.dart" web_audio: - uri: "lib/web_audio/dart2js/web_audio_dart2js.dart" + uri: "../dart-sdk/lib/web_audio/dart2js/web_audio_dart2js.dart" web_gl: - uri: "lib/web_gl/dart2js/web_gl_dart2js.dart" + uri: "../dart-sdk/lib/web_gl/dart2js/web_gl_dart2js.dart" web_sql: - uri: "lib/web_sql/dart2js/web_sql_dart2js.dart" + uri: "../dart-sdk/lib/web_sql/dart2js/web_sql_dart2js.dart" _internal: - uri: "lib/internal/internal.dart" - patches: "lib/_internal/js_runtime/lib/internal_patch.dart" + uri: "../dart-sdk/lib/internal/internal.dart" + patches: "../dart-sdk/lib/_internal/js_runtime/lib/internal_patch.dart" _js_helper: - uri: "lib/_internal/js_runtime/lib/js_helper.dart" + uri: "../dart-sdk/lib/_internal/js_runtime/lib/js_helper.dart" _interceptors: - uri: "lib/_internal/js_runtime/lib/interceptors.dart" + uri: "../dart-sdk/lib/_internal/js_runtime/lib/interceptors.dart" _foreign_helper: - uri: "lib/_internal/js_runtime/lib/foreign_helper.dart" + uri: "../dart-sdk/lib/_internal/js_runtime/lib/foreign_helper.dart" _js_names: - uri: "lib/_internal/js_runtime/lib/js_names.dart" + uri: "../dart-sdk/lib/_internal/js_runtime/lib/js_names.dart" _js_primitives: - uri: "lib/_internal/js_runtime/lib/js_primitives.dart" + uri: "../dart-sdk/lib/_internal/js_runtime/lib/js_primitives.dart" _js_embedded_names: - uri: "lib/_internal/js_runtime/lib/shared/embedded_names.dart" + uri: "../dart-sdk/lib/_internal/js_runtime/lib/shared/embedded_names.dart" _async_await_error_codes: - uri: "lib/_internal/js_runtime/lib/shared/async_await_error_codes.dart" + uri: "../dart-sdk/lib/_internal/js_runtime/lib/shared/async_await_error_codes.dart" _metadata: - uri: "lib/html/html_common/metadata.dart" \ No newline at end of file + uri: "../dart-sdk/lib/html/html_common/metadata.dart" \ No newline at end of file From 8818a6c4188ed330d363db8bd5eabb606429a287 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Mon, 18 Mar 2019 15:35:14 -0400 Subject: [PATCH 1412/1537] Roll src/third_party/skia 2c043c288169..4a522b7e916c (3 commits) (#8201) https://skia.googlesource.com/skia.git/%2Blog/2c043c288169..4a522b7e916c git log 2c043c28816981f4002e72a12d7ec446672aeb1c..4a522b7e916c85c53df9d21351652857e3ff2512 --date=short --no-merges --format=%ad %ae %s 2019-03-18 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader c2bb50b73101..00424c1bc233 (1 commits) 2019-03-18 yikong@google.com [Android] Do not build for Windows 2019-03-18 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader 62758f581672..c2bb50b73101 (1 commits) The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (brianosman@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 6a2ffd4f37f84..48326a25e05d8 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '2c043c28816981f4002e72a12d7ec446672aeb1c', + 'skia_revision': '4a522b7e916c85c53df9d21351652857e3ff2512', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 0f1a4f155a80b..cdd4d31d3e33b 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: a3c1d11b2ee8f43fdf008204a0b26395 +Signature: aa6c73966a5ec1867116b4523182926d UNUSED LICENSES: From 5088735e5f54f7fb34215b6665cb4da1fd8f075d Mon Sep 17 00:00:00 2001 From: liyuqian Date: Mon, 18 Mar 2019 12:43:41 -0700 Subject: [PATCH 1413/1537] Clip to clip_rect instead of paint bounds (#8183) Otherwise, we'll have issues such as https://github.com/flutter/flutter/issues/29070 The engine roll that includes this PR needs a tiny golden image update. Will do a manual roll. --- flow/layers/clip_rect_layer.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/flow/layers/clip_rect_layer.cc b/flow/layers/clip_rect_layer.cc index 9e4d06df8b18e..73c76bff33118 100644 --- a/flow/layers/clip_rect_layer.cc +++ b/flow/layers/clip_rect_layer.cc @@ -48,10 +48,10 @@ void ClipRectLayer::Paint(PaintContext& context) const { FML_DCHECK(needs_painting()); SkAutoCanvasRestore save(context.internal_nodes_canvas, true); - context.internal_nodes_canvas->clipRect(paint_bounds(), + context.internal_nodes_canvas->clipRect(clip_rect_, clip_behavior_ != Clip::hardEdge); if (clip_behavior_ == Clip::antiAliasWithSaveLayer) { - context.internal_nodes_canvas->saveLayer(paint_bounds(), nullptr); + context.internal_nodes_canvas->saveLayer(clip_rect_, nullptr); } PaintChildren(context); if (clip_behavior_ == Clip::antiAliasWithSaveLayer) { From 629072277dc73e0628afab7ba7142f7d582996ad Mon Sep 17 00:00:00 2001 From: Amir Hardon Date: Mon, 18 Mar 2019 14:13:30 -0700 Subject: [PATCH 1414/1537] Merge only gpu and platform threads for platform views, fix deadlock. (#8045) The reason we didn't merge just the gpu and platform threads from the get go was a deadlock in Shell:OnPlatformViewCreated and Shell:OnPlatformViewDestroyed. The deadlock was caused by the platform thread starting a thread-hopping flow that ends ends up with the gpu thread releasing a latch that the platform thread is waiting on just after starting the cross-thread dance. If the platform and gpu threads are the same, that last task that is posted to the gpu thread will never get executed as the gpu/platform thread is blocked on a latch. This works around the deadlock by having a special case in the code for the scenario where the gpu and platform threads are the same. Fixes: flutter/flutter#23974 --- shell/common/shell.cc | 60 +++++++++++++++++-- shell/common/shell_unittests.cc | 2 +- .../ios/framework/Source/FlutterEngine.mm | 10 ++-- 3 files changed, 61 insertions(+), 11 deletions(-) diff --git a/shell/common/shell.cc b/shell/common/shell.cc index 3c43ef2d12f50..6ba709e879f19 100644 --- a/shell/common/shell.cc +++ b/shell/common/shell.cc @@ -437,16 +437,35 @@ void Shell::OnPlatformViewCreated(std::unique_ptr surface) { latch.Signal(); }); + // The normal flow exectued by this method is that the platform thread is + // starting the sequence and waiting on the latch. Later the UI thread posts + // gpu_task to the GPU thread which signals the latch. If the GPU the and + // platform threads are the same this results in a deadlock as the gpu_task + // will never be posted to the plaform/gpu thread that is blocked on a latch. + // To avoid the described deadlock, if the gpu and the platform threads are + // the same, should_post_gpu_task will be false, and then instead of posting a + // task to the gpu thread, the ui thread just signals the latch and the + // platform/gpu thread follows with executing gpu_task. + bool should_post_gpu_task = + task_runners_.GetGPUTaskRunner() != task_runners_.GetPlatformTaskRunner(); + auto ui_task = [engine = engine_->GetWeakPtr(), // gpu_task_runner = task_runners_.GetGPUTaskRunner(), // - gpu_task // + gpu_task, should_post_gpu_task, + &latch // ] { if (engine) { engine->OnOutputSurfaceCreated(); } // Step 2: Next, tell the GPU thread that it should create a surface for its // rasterizer. - fml::TaskRunner::RunNowOrPostTask(gpu_task_runner, gpu_task); + if (should_post_gpu_task) { + fml::TaskRunner::RunNowOrPostTask(gpu_task_runner, gpu_task); + } else { + // See comment on should_post_gpu_task, in this case we just unblock + // the platform thread. + latch.Signal(); + } }; // Threading: Capture platform view by raw pointer and not the weak pointer. @@ -471,6 +490,12 @@ void Shell::OnPlatformViewCreated(std::unique_ptr surface) { fml::TaskRunner::RunNowOrPostTask(task_runners_.GetIOTaskRunner(), io_task); latch.Wait(); + if (!should_post_gpu_task) { + // See comment on should_post_gpu_task, in this case the gpu_task + // wasn't executed, and we just run it here as the platform thread + // is the GPU thread. + gpu_task(); + } } // |shell::PlatformView::Delegate| @@ -504,21 +529,46 @@ void Shell::OnPlatformViewDestroyed() { fml::TaskRunner::RunNowOrPostTask(io_task_runner, io_task); }; + // The normal flow exectued by this method is that the platform thread is + // starting the sequence and waiting on the latch. Later the UI thread posts + // gpu_task to the GPU thread triggers signaling the latch(on the IO thread). + // If the GPU the and platform threads are the same this results in a deadlock + // as the gpu_task will never be posted to the plaform/gpu thread that is + // blocked on a latch. To avoid the described deadlock, if the gpu and the + // platform threads are the same, should_post_gpu_task will be false, and then + // instead of posting a task to the gpu thread, the ui thread just signals the + // latch and the platform/gpu thread follows with executing gpu_task. + bool should_post_gpu_task = + task_runners_.GetGPUTaskRunner() != task_runners_.GetPlatformTaskRunner(); + auto ui_task = [engine = engine_->GetWeakPtr(), - gpu_task_runner = task_runners_.GetGPUTaskRunner(), - gpu_task]() { + gpu_task_runner = task_runners_.GetGPUTaskRunner(), gpu_task, + should_post_gpu_task, &latch]() { if (engine) { engine->OnOutputSurfaceDestroyed(); } // Step 1: Next, tell the GPU thread that its rasterizer should suspend // access to the underlying surface. - fml::TaskRunner::RunNowOrPostTask(gpu_task_runner, gpu_task); + if (should_post_gpu_task) { + fml::TaskRunner::RunNowOrPostTask(gpu_task_runner, gpu_task); + } else { + // See comment on should_post_gpu_task, in this case we just unblock + // the platform thread. + latch.Signal(); + } }; // Step 0: Post a task onto the UI thread to tell the engine that its output // surface is about to go away. fml::TaskRunner::RunNowOrPostTask(task_runners_.GetUITaskRunner(), ui_task); latch.Wait(); + if (!should_post_gpu_task) { + // See comment on should_post_gpu_task, in this case the gpu_task + // wasn't executed, and we just run it here as the platform thread + // is the GPU thread. + gpu_task(); + latch.Wait(); + } } // |shell::PlatformView::Delegate| diff --git a/shell/common/shell_unittests.cc b/shell/common/shell_unittests.cc index 9e09bbc6366a2..85c6b7962ae55 100644 --- a/shell/common/shell_unittests.cc +++ b/shell/common/shell_unittests.cc @@ -193,7 +193,7 @@ TEST(ShellTest, InitializeWithMultipleThreadButCallingThreadAsPlatformThread) { // Reported in Bug: Engine deadlocks when gpu and platforms threads are the same // #21398 (https://github.com/flutter/flutter/issues/21398) -TEST(ShellTest, DISABLED_InitializeWithGPUAndPlatformThreadsTheSame) { +TEST(ShellTest, InitializeWithGPUAndPlatformThreadsTheSame) { blink::Settings settings = {}; settings.task_observer_add = [](intptr_t, fml::closure) {}; settings.task_observer_remove = [](intptr_t) {}; diff --git a/shell/platform/darwin/ios/framework/Source/FlutterEngine.mm b/shell/platform/darwin/ios/framework/Source/FlutterEngine.mm index a90e49c7085fa..00fead7de304c 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterEngine.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterEngine.mm @@ -355,16 +355,16 @@ - (BOOL)createShell:(NSString*)entrypoint libraryURI:(NSString*)libraryURI { // Embedded views requires the gpu and the platform views to be the same. // The plan is to eventually dynamically merge the threads when there's a // platform view in the layer tree. - // For now we run in a single threaded configuration. - // TODO(amirh/chinmaygarde): merge only the gpu and platform threads. - // https://github.com/flutter/flutter/issues/23974 + // For now we use a fixed thread configuration with the same thread used as the + // gpu and platform task runner. // TODO(amirh/chinmaygarde): remove this, and dynamically change the thread configuration. // https://github.com/flutter/flutter/issues/23975 + blink::TaskRunners task_runners(threadLabel.UTF8String, // label fml::MessageLoop::GetCurrent().GetTaskRunner(), // platform fml::MessageLoop::GetCurrent().GetTaskRunner(), // gpu - fml::MessageLoop::GetCurrent().GetTaskRunner(), // ui - fml::MessageLoop::GetCurrent().GetTaskRunner() // io + _threadHost.ui_thread->GetTaskRunner(), // ui + _threadHost.io_thread->GetTaskRunner() // io ); // Create the shell. This is a blocking operation. _shell = shell::Shell::Create(std::move(task_runners), // task runners From 568841923653c9048fbae97eac7e269d32ebf2e7 Mon Sep 17 00:00:00 2001 From: Chinmay Garde Date: Mon, 18 Mar 2019 15:33:06 -0700 Subject: [PATCH 1415/1537] Disable build_ios due to large queue times. (#8204) --- .cirrus.yml | 33 --------------------------------- 1 file changed, 33 deletions(-) diff --git a/.cirrus.yml b/.cirrus.yml index 2492afbd0fbf4..cc6796b3faf69 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -60,39 +60,6 @@ task: mkdir javadoc_tmp ./flutter/tools/gen_javadoc.py --out-dir javadoc_tmp -task: - name: build_ios - use_compute_credits: $CIRRUS_USER_COLLABORATOR == 'true' - osx_instance: - image: high-sierra-xcode-9.4.1 - env: - CIRRUS_WORKING_DIR: "/tmp/github_repo" - ENGINE_PATH: "/tmp/engine" - DEPOT_TOOLS: "/tmp/depot_tools" - PATH: "$DEPOT_TOOLS:$PATH" - depot_tools_script: - git clone --depth 1 https://chromium.googlesource.com/chromium/tools/depot_tools.git $DEPOT_TOOLS - # jazzy_script: - # sudo gem install jazzy@0.9.4 - gclient_sync_script: | - mkdir -p $ENGINE_PATH/src - echo 'solutions = [{"managed": False,"name": "src/flutter","url": "git@github.com:flutter/engine.git","deps_file": "DEPS", "custom_vars": {"download_android_deps" : False, "download_windows_deps" : False,},},]' > $ENGINE_PATH/.gclient - cd $ENGINE_PATH/src - rm -rf flutter - rm -rf out - mv $CIRRUS_WORKING_DIR flutter - gclient sync - compile_host_script: | - cd $ENGINE_PATH/src - ./flutter/tools/gn --ios --unoptimized - ninja -C out/ios_debug_unopt - # TODO(dnfield): when we can install jazzy properly, we should do this. - # AFAICT we can't because of Xcode version. - # mkdir objcdoc_tmp - # pushd flutter - # ./tools/gen_objcdoc.sh ../objcdoc_tmp - # popd - format_and_dart_test_task: container: image: gcr.io/flutter-cirrus/build-engine-image:latest From 6980a83563146edb3c8b6017f7a629aa3f3e9a4c Mon Sep 17 00:00:00 2001 From: Chris Yang Date: Mon, 18 Mar 2019 15:38:40 -0700 Subject: [PATCH 1416/1537] [platform_view] iOSP platformView composition optimize. (#8202) Optimize the performance of the platform view composition. When recomposition is required, we previously remove all the platform view related views (intercepting view, platform view) and re-add them for each frame. This is mentioned in flutter/flutter#23793. This PR enhanced the performance by re-arrange the existing UIViews and only add the newly created Views. As a result, it would also fix flutter/flutter#29427 --- .../framework/Source/FlutterPlatformViews.mm | 41 +++++++++++++------ .../Source/FlutterPlatformViews_Internal.h | 1 + 2 files changed, 30 insertions(+), 12 deletions(-) diff --git a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm index fddc75fa541a0..82659b4fe2481 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm @@ -225,22 +225,24 @@ composition_order_.clear(); return did_submit; } + DetachUnusedLayers(); + active_composition_order_.clear(); UIView* flutter_view = flutter_view_.get(); - // This can be more efficient, instead of removing all views and then re-attaching them, - // we should only remove the views that has been completly removed from the layer tree, and - // reorder the views using UIView's bringSubviewToFront. - // TODO(amirh): make this more efficient. - // https://github.com/flutter/flutter/issues/23793 - for (UIView* sub_view in [flutter_view subviews]) { - [sub_view removeFromSuperview]; - } - - active_composition_order_.clear(); for (size_t i = 0; i < composition_order_.size(); i++) { int view_id = composition_order_[i]; - [flutter_view addSubview:touch_interceptors_[view_id].get()]; - [flutter_view addSubview:overlays_[view_id]->overlay_view.get()]; + UIView* intercepter = touch_interceptors_[view_id].get(); + UIView* overlay = overlays_[view_id]->overlay_view; + FML_CHECK(intercepter.superview == overlay.superview); + + if (intercepter.superview == flutter_view) { + [flutter_view bringSubviewToFront:intercepter]; + [flutter_view bringSubviewToFront:overlay]; + } else { + [flutter_view addSubview:intercepter]; + [flutter_view addSubview:overlay]; + } + active_composition_order_.push_back(view_id); } @@ -248,6 +250,21 @@ return did_submit; } +void FlutterPlatformViewsController::DetachUnusedLayers() { + std::unordered_set composition_order_set; + + for (int64_t view_id : composition_order_) { + composition_order_set.insert(view_id); + } + + for (int64_t view_id : active_composition_order_) { + if (composition_order_set.find(view_id) == composition_order_set.end()) { + [touch_interceptors_[view_id].get() removeFromSuperview]; + [overlays_[view_id]->overlay_view.get() removeFromSuperview]; + } + } +} + void FlutterPlatformViewsController::EnsureOverlayInitialized(int64_t overlay_id) { if (overlays_.count(overlay_id) != 0) { return; diff --git a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h index a89a2ff9bc3f3..118822c3b7962 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h +++ b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h @@ -98,6 +98,7 @@ class FlutterPlatformViewsController { void OnAcceptGesture(FlutterMethodCall* call, FlutterResult& result); void OnRejectGesture(FlutterMethodCall* call, FlutterResult& result); + void DetachUnusedLayers(); void EnsureOverlayInitialized(int64_t overlay_id); void EnsureGLOverlayInitialized(int64_t overlay_id, std::shared_ptr gl_context, From ad5b722a722394008195d46c173990217f8c7f88 Mon Sep 17 00:00:00 2001 From: Chinmay Garde Date: Mon, 18 Mar 2019 15:49:16 -0700 Subject: [PATCH 1417/1537] Simplify the fallback waiter and add traces for vsync scheduling overhead. (#8185) --- fml/trace_event.cc | 29 ++++++++++++++++++++++++++ fml/trace_event.h | 5 +++++ shell/common/vsync_waiter.cc | 24 ++++++++++++++++++++- shell/common/vsync_waiter.h | 3 ++- shell/common/vsync_waiter_fallback.cc | 30 ++++++++++----------------- shell/common/vsync_waiter_fallback.h | 1 - 6 files changed, 70 insertions(+), 22 deletions(-) diff --git a/fml/trace_event.cc b/fml/trace_event.cc index 843aa6b6d5b92..826e37f189eca 100644 --- a/fml/trace_event.cc +++ b/fml/trace_event.cc @@ -6,6 +6,7 @@ #include #include +#include #include "flutter/fml/build_config.h" #include "flutter/fml/logging.h" @@ -124,6 +125,34 @@ void TraceEventEnd(TraceArg name) { ); } +void TraceEventAsyncComplete(TraceArg category_group, + TraceArg name, + TimePoint begin, + TimePoint end) { + auto identifier = TraceNonce(); + + if (begin > end) { + std::swap(begin, end); + } + + Dart_TimelineEvent(DCHECK_LITERAL(name), // label + begin.ToEpochDelta().ToMicroseconds(), // timestamp0 + identifier, // timestamp1_or_async_id + Dart_Timeline_Event_Async_Begin, // event type + 0, // argument_count + nullptr, // argument_names + nullptr // argument_values + ); + Dart_TimelineEvent(DCHECK_LITERAL(name), // label + end.ToEpochDelta().ToMicroseconds(), // timestamp0 + identifier, // timestamp1_or_async_id + Dart_Timeline_Event_Async_End, // event type + 0, // argument_count + nullptr, // argument_names + nullptr // argument_values + ); +} + void TraceEventAsyncBegin0(TraceArg category_group, TraceArg name, TraceIDArg id) { diff --git a/fml/trace_event.h b/fml/trace_event.h index 45221a09c4108..b3a58a04d6ef9 100644 --- a/fml/trace_event.h +++ b/fml/trace_event.h @@ -193,6 +193,11 @@ void TraceEvent2(TraceArg category_group, void TraceEventEnd(TraceArg name); +void TraceEventAsyncComplete(TraceArg category_group, + TraceArg name, + TimePoint begin, + TimePoint end); + void TraceEventAsyncBegin0(TraceArg category_group, TraceArg name, TraceIDArg id); diff --git a/shell/common/vsync_waiter.cc b/shell/common/vsync_waiter.cc index b6b55df11b227..87ead7cc205cf 100644 --- a/shell/common/vsync_waiter.cc +++ b/shell/common/vsync_waiter.cc @@ -28,9 +28,23 @@ VsyncWaiter::VsyncWaiter(blink::TaskRunners task_runners) VsyncWaiter::~VsyncWaiter() = default; +// Public method invoked by the animator. void VsyncWaiter::AsyncWaitForVsync(Callback callback) { + if (!callback) { + return; + } + + TRACE_EVENT0("flutter", "AsyncWaitForVsync"); + { std::lock_guard lock(callback_mutex_); + if (callback_) { + // The animator may request a frame more than once within a frame + // interval. Multiple calls to request frame must result in a single + // callback per frame interval. + TRACE_EVENT_INSTANT0("flutter", "MultipleCallsToVsyncInFrameInterval"); + return; + } callback_ = std::move(callback); } AwaitVSync(); @@ -46,6 +60,10 @@ void VsyncWaiter::FireCallback(fml::TimePoint frame_start_time, } if (!callback) { + // This means that the vsync waiter implementation fired a callback for a + // request we did not make. This is a paranoid check but we still want to + // make sure we catch misbehaving vsync implementations. + TRACE_EVENT_INSTANT0("flutter", "MismatchedFrameCallback"); return; } @@ -56,14 +74,18 @@ void VsyncWaiter::FireCallback(fml::TimePoint frame_start_time, // While all our message loops insert a base trace trace // (MessageLoop::RunExpiredTasks), embedders may not. TRACE_EVENT0("flutter", "VsyncFireCallback"); + TRACE_FLOW_BEGIN("flutter", kVsyncFlowName, flow_identifier); task_runners_.GetUITaskRunner()->PostTaskForTime( [callback, flow_identifier, frame_start_time, frame_target_time]() { FML_TRACE_EVENT("flutter", kVsyncTraceName, "StartTime", frame_start_time, "TargetTime", frame_target_time); - TRACE_FLOW_END("flutter", kVsyncFlowName, flow_identifier); + fml::tracing::TraceEventAsyncComplete( + "flutter", "VsyncSchedulingOverhead", fml::TimePoint::Now(), + frame_start_time); callback(frame_start_time, frame_target_time); + TRACE_FLOW_END("flutter", kVsyncFlowName, flow_identifier); }, frame_start_time); } diff --git a/shell/common/vsync_waiter.h b/shell/common/vsync_waiter.h index 4c6251da8e277..afb7d3cd36b72 100644 --- a/shell/common/vsync_waiter.h +++ b/shell/common/vsync_waiter.h @@ -10,6 +10,7 @@ #include #include "flutter/common/task_runners.h" +#include "flutter/fml/synchronization/thread_annotations.h" #include "flutter/fml/time/time_point.h" namespace shell { @@ -50,7 +51,7 @@ class VsyncWaiter : public std::enable_shared_from_this { private: std::mutex callback_mutex_; - Callback callback_; + Callback callback_ FML_GUARDED_BY(callback_mutex_); FML_DISALLOW_COPY_AND_ASSIGN(VsyncWaiter); }; diff --git a/shell/common/vsync_waiter_fallback.cc b/shell/common/vsync_waiter_fallback.cc index a768380c4314b..602770ba677ff 100644 --- a/shell/common/vsync_waiter_fallback.cc +++ b/shell/common/vsync_waiter_fallback.cc @@ -9,9 +9,9 @@ namespace shell { namespace { -fml::TimePoint SnapToNextTick(fml::TimePoint value, - fml::TimePoint tick_phase, - fml::TimeDelta tick_interval) { +static fml::TimePoint SnapToNextTick(fml::TimePoint value, + fml::TimePoint tick_phase, + fml::TimeDelta tick_interval) { fml::TimeDelta offset = (tick_phase - value) % tick_interval; if (offset != fml::TimeDelta::Zero()) offset = offset + tick_interval; @@ -21,27 +21,19 @@ fml::TimePoint SnapToNextTick(fml::TimePoint value, } // namespace VsyncWaiterFallback::VsyncWaiterFallback(blink::TaskRunners task_runners) - : VsyncWaiter(std::move(task_runners)), - phase_(fml::TimePoint::Now()), - weak_factory_(this) {} + : VsyncWaiter(std::move(task_runners)), phase_(fml::TimePoint::Now()) {} VsyncWaiterFallback::~VsyncWaiterFallback() = default; -constexpr fml::TimeDelta interval = fml::TimeDelta::FromSecondsF(1.0 / 60.0); - // |shell::VsyncWaiter| void VsyncWaiterFallback::AwaitVSync() { - fml::TimePoint now = fml::TimePoint::Now(); - fml::TimePoint next = SnapToNextTick(now, phase_, interval); - - task_runners_.GetUITaskRunner()->PostDelayedTask( - [self = weak_factory_.GetWeakPtr()] { - if (self) { - const auto frame_time = fml::TimePoint::Now(); - self->FireCallback(frame_time, frame_time + interval); - } - }, - next - now); + constexpr fml::TimeDelta kSingleFrameInterval = + fml::TimeDelta::FromSecondsF(1.0 / 60.0); + + auto next = + SnapToNextTick(fml::TimePoint::Now(), phase_, kSingleFrameInterval); + + FireCallback(next, next + kSingleFrameInterval); } } // namespace shell diff --git a/shell/common/vsync_waiter_fallback.h b/shell/common/vsync_waiter_fallback.h index 92930ee192c61..b3ab8db9f43f2 100644 --- a/shell/common/vsync_waiter_fallback.h +++ b/shell/common/vsync_waiter_fallback.h @@ -20,7 +20,6 @@ class VsyncWaiterFallback final : public VsyncWaiter { private: fml::TimePoint phase_; - fml::WeakPtrFactory weak_factory_; // |shell::VsyncWaiter| void AwaitVSync() override; From 71e2d7d8c0f5a3d6596e8fc68c0a8a42cbddc812 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Mon, 18 Mar 2019 19:05:12 -0400 Subject: [PATCH 1418/1537] Roll src/third_party/skia 4a522b7e916c..389b4b267d15 (32 commits) (#8205) https://skia.googlesource.com/skia.git/%2Blog/4a522b7e916c..389b4b267d15 git log 4a522b7e916c85c53df9d21351652857e3ff2512..389b4b267d15c1e06cc4d8b2222d96e50e6ddb00 --date=short --no-merges --format=%ad %ae %s 2019-03-18 brianosman@google.com Fix the preallocated size of string arrays in GrGLSLShaderBuilder 2019-03-18 halcanary@google.com Docs: Give documentation examples better names 2019-03-18 kjlubick@google.com Add SkSL2Pipeline fuzzer 2019-03-18 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader 1bd9e2f80b9a..bbf5cf1e4762 (1 commits) 2019-03-18 brianosman@google.com Remove unused variant of compileAndAttachShaders 2019-03-18 recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com Roll recipe dependencies (trivial). 2019-03-18 mtklein@google.com SkScan_AAAPath style and refactoring 2019-03-18 jvanverth@google.com Fix more failing tests on Metal. 2019-03-18 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader 1cef4e693fc3..1bd9e2f80b9a (1 commits) 2019-03-15 khushalsagar@chromium.org remote fonts: Make DiscardableManager for tests thread-safe. 2019-03-08 bsalomon@google.com Revert "Revert "Change promise image contract to for when Release and Done are called."" 2019-03-18 benjaminwagner@google.com Revert "Omit some SKPs that seem to cause GalaxyS9 to crash." 2019-03-18 kjlubick@google.com Break out GrGLAssembleInterface into a few files 2019-03-18 recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com Roll recipe dependencies (trivial). 2019-03-18 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/angle2 38e282570676..cda4383919b9 (1 commits) 2019-03-18 mtklein@google.com don't bother passing lowp kernels dummy unnamed variables 2019-03-18 mtklein@google.com limit n7/np to main thread 2019-03-18 bsalomon@google.com Revert "Add small offset to t in GrLinearGradientLayout." 2019-03-18 robertphillips@google.com Mark tmp path in shadow utils as volatile 2019-03-18 mtklein@google.com shard failing bots 2019-03-18 mtklein@google.com rework --ignoreSigInt 2019-03-18 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader 036614c8468c..1cef4e693fc3 (1 commits) 2019-03-18 csmartdalton@google.com Reland "Disable coverage counting by default" 2019-03-18 csmartdalton@google.com Revert "Disable coverage counting by default" 2019-03-18 kjlubick@google.com [canvaskit] Various cleanups around docs/build 2019-03-18 robertphillips@google.com Unblock Flutter 2019-03-18 skia-autoroll@skia-public.iam.gserviceaccount.com Roll ../src ad85caa87461..69be71e10036 (116 commits) 2019-03-18 brianosman@google.com Suppress /RTCc error about losing information during case to smaller type 2019-03-13 bsalomon@google.com Add small offset to t in GrLinearGradientLayout. 2019-03-18 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader 00424c1bc233..036614c8468c (2 commits) 2019-03-18 borenet@google.com [infra] Add some logging to go_deps asset creation 2019-03-18 brianosman@google.com Delay half-float vertex color determination until Op::finalize The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (brianosman@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 53 +++++--------------------------- 2 files changed, 8 insertions(+), 47 deletions(-) diff --git a/DEPS b/DEPS index 48326a25e05d8..d988130830c2e 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '4a522b7e916c85c53df9d21351652857e3ff2512', + 'skia_revision': '389b4b267d15c1e06cc4d8b2222d96e50e6ddb00', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index cdd4d31d3e33b..541ac47398145 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: aa6c73966a5ec1867116b4523182926d +Signature: 7bd6f84ef1b06ea794bfafa29dbf8044 UNUSED LICENSES: @@ -2241,7 +2241,6 @@ FILE: ../../../third_party/skia/infra/bots/recipes/compute_test.expected/Test-De FILE: ../../../third_party/skia/infra/bots/recipes/housekeeper.expected/Housekeeper-PerCommit-Trybot.json FILE: ../../../third_party/skia/infra/bots/recipes/housekeeper.expected/Housekeeper-PerCommit.json FILE: ../../../third_party/skia/infra/bots/recipes/infra.expected/infra_tests.json -FILE: ../../../third_party/skia/infra/bots/recipes/perf.expected/Perf-Android-Clang-GalaxyS9-GPU-MaliG72-arm64-Debug-All-Android_Vulkan.json FILE: ../../../third_party/skia/infra/bots/recipes/perf.expected/Perf-Android-Clang-Nexus5-GPU-Adreno330-arm-Debug-All-Android.json FILE: ../../../third_party/skia/infra/bots/recipes/perf.expected/Perf-Android-Clang-Nexus5x-GPU-Adreno418-arm64-Release-All-Android_NoGPUThreads.json FILE: ../../../third_party/skia/infra/bots/recipes/perf.expected/Perf-ChromeOS-Clang-ASUSChromebookFlipC100-GPU-MaliT764-arm-Release-All.json @@ -2382,6 +2381,7 @@ FILE: ../../../third_party/skia/modules/canvaskit/canvaskit/NotoSerif-Regular.tt FILE: ../../../third_party/skia/modules/canvaskit/canvaskit/Roboto-Regular.ttf FILE: ../../../third_party/skia/modules/canvaskit/canvaskit/Roboto-Regular.woff FILE: ../../../third_party/skia/modules/canvaskit/canvaskit/example.html +FILE: ../../../third_party/skia/modules/canvaskit/canvaskit/extra.html FILE: ../../../third_party/skia/modules/canvaskit/canvaskit/node.example.js FILE: ../../../third_party/skia/modules/canvaskit/canvaskit/package.json FILE: ../../../third_party/skia/modules/canvaskit/canvaskit/test.png @@ -4942,7 +4942,6 @@ FILE: ../../../third_party/skia/docs/examples/Canvas_092.cpp FILE: ../../../third_party/skia/docs/examples/Canvas_093.cpp FILE: ../../../third_party/skia/docs/examples/Canvas_094.cpp FILE: ../../../third_party/skia/docs/examples/Canvas_095.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_096.cpp FILE: ../../../third_party/skia/docs/examples/Canvas_097.cpp FILE: ../../../third_party/skia/docs/examples/Canvas_098.cpp FILE: ../../../third_party/skia/docs/examples/Canvas_099.cpp @@ -4959,7 +4958,6 @@ FILE: ../../../third_party/skia/docs/examples/Canvas_109.cpp FILE: ../../../third_party/skia/docs/examples/Canvas_110.cpp FILE: ../../../third_party/skia/docs/examples/Canvas_111.cpp FILE: ../../../third_party/skia/docs/examples/Canvas_112.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_113.cpp FILE: ../../../third_party/skia/docs/examples/Canvas_114.cpp FILE: ../../../third_party/skia/docs/examples/Canvas_115.cpp FILE: ../../../third_party/skia/docs/examples/Canvas_116.cpp @@ -5003,45 +5001,7 @@ FILE: ../../../third_party/skia/docs/examples/Color_015.cpp FILE: ../../../third_party/skia/docs/examples/Color_016.cpp FILE: ../../../third_party/skia/docs/examples/Color_017.cpp FILE: ../../../third_party/skia/docs/examples/Color_018.cpp -FILE: ../../../third_party/skia/docs/examples/Font_000.cpp -FILE: ../../../third_party/skia/docs/examples/Font_001.cpp -FILE: ../../../third_party/skia/docs/examples/Font_002.cpp -FILE: ../../../third_party/skia/docs/examples/Font_003.cpp -FILE: ../../../third_party/skia/docs/examples/Font_004.cpp -FILE: ../../../third_party/skia/docs/examples/Font_005.cpp -FILE: ../../../third_party/skia/docs/examples/Font_006.cpp -FILE: ../../../third_party/skia/docs/examples/Font_007.cpp -FILE: ../../../third_party/skia/docs/examples/Font_008.cpp -FILE: ../../../third_party/skia/docs/examples/Font_009.cpp -FILE: ../../../third_party/skia/docs/examples/Font_010.cpp -FILE: ../../../third_party/skia/docs/examples/Font_011.cpp -FILE: ../../../third_party/skia/docs/examples/Font_012.cpp -FILE: ../../../third_party/skia/docs/examples/Font_013.cpp -FILE: ../../../third_party/skia/docs/examples/Font_014.cpp -FILE: ../../../third_party/skia/docs/examples/Font_015.cpp -FILE: ../../../third_party/skia/docs/examples/Font_016.cpp -FILE: ../../../third_party/skia/docs/examples/Font_017.cpp -FILE: ../../../third_party/skia/docs/examples/Font_018.cpp -FILE: ../../../third_party/skia/docs/examples/Font_019.cpp -FILE: ../../../third_party/skia/docs/examples/Font_020.cpp -FILE: ../../../third_party/skia/docs/examples/Font_021.cpp -FILE: ../../../third_party/skia/docs/examples/Font_022.cpp -FILE: ../../../third_party/skia/docs/examples/Font_023.cpp -FILE: ../../../third_party/skia/docs/examples/Font_024.cpp -FILE: ../../../third_party/skia/docs/examples/Font_025.cpp -FILE: ../../../third_party/skia/docs/examples/Font_026.cpp -FILE: ../../../third_party/skia/docs/examples/Font_027.cpp -FILE: ../../../third_party/skia/docs/examples/Font_028.cpp -FILE: ../../../third_party/skia/docs/examples/Font_029.cpp -FILE: ../../../third_party/skia/docs/examples/Font_030.cpp -FILE: ../../../third_party/skia/docs/examples/Font_031.cpp -FILE: ../../../third_party/skia/docs/examples/Font_032.cpp FILE: ../../../third_party/skia/docs/examples/Font_033.cpp -FILE: ../../../third_party/skia/docs/examples/Font_034.cpp -FILE: ../../../third_party/skia/docs/examples/Font_035.cpp -FILE: ../../../third_party/skia/docs/examples/Font_036.cpp -FILE: ../../../third_party/skia/docs/examples/Font_037.cpp -FILE: ../../../third_party/skia/docs/examples/Font_038.cpp FILE: ../../../third_party/skia/docs/examples/IPoint_000.cpp FILE: ../../../third_party/skia/docs/examples/IPoint_001.cpp FILE: ../../../third_party/skia/docs/examples/IPoint_002.cpp @@ -5226,7 +5186,6 @@ FILE: ../../../third_party/skia/docs/examples/Matrix_021.cpp FILE: ../../../third_party/skia/docs/examples/Matrix_022.cpp FILE: ../../../third_party/skia/docs/examples/Matrix_023.cpp FILE: ../../../third_party/skia/docs/examples/Matrix_024.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_025.cpp FILE: ../../../third_party/skia/docs/examples/Matrix_026.cpp FILE: ../../../third_party/skia/docs/examples/Matrix_027.cpp FILE: ../../../third_party/skia/docs/examples/Matrix_028.cpp @@ -5382,7 +5341,6 @@ FILE: ../../../third_party/skia/docs/examples/Paint_069.cpp FILE: ../../../third_party/skia/docs/examples/Paint_070.cpp FILE: ../../../third_party/skia/docs/examples/Paint_071.cpp FILE: ../../../third_party/skia/docs/examples/Paint_072.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_073.cpp FILE: ../../../third_party/skia/docs/examples/Paint_074.cpp FILE: ../../../third_party/skia/docs/examples/Paint_075.cpp FILE: ../../../third_party/skia/docs/examples/Paint_076.cpp @@ -5502,7 +5460,6 @@ FILE: ../../../third_party/skia/docs/examples/Path_071.cpp FILE: ../../../third_party/skia/docs/examples/Path_072.cpp FILE: ../../../third_party/skia/docs/examples/Path_073.cpp FILE: ../../../third_party/skia/docs/examples/Path_074.cpp -FILE: ../../../third_party/skia/docs/examples/Path_075.cpp FILE: ../../../third_party/skia/docs/examples/Path_076.cpp FILE: ../../../third_party/skia/docs/examples/Path_077.cpp FILE: ../../../third_party/skia/docs/examples/Path_078.cpp @@ -5836,7 +5793,6 @@ FILE: ../../../third_party/skia/docs/examples/Surface_010.cpp FILE: ../../../third_party/skia/docs/examples/Surface_011.cpp FILE: ../../../third_party/skia/docs/examples/Surface_012.cpp FILE: ../../../third_party/skia/docs/examples/Surface_013.cpp -FILE: ../../../third_party/skia/docs/examples/Surface_014.cpp FILE: ../../../third_party/skia/docs/examples/Surface_015.cpp FILE: ../../../third_party/skia/docs/examples/Surface_016.cpp FILE: ../../../third_party/skia/docs/examples/Surface_017.cpp @@ -5901,6 +5857,7 @@ ORIGIN: ../../../third_party/skia/experimental/wasm-skp-debugger/debugger_bindin TYPE: LicenseType.bsd FILE: ../../../third_party/skia/experimental/wasm-skp-debugger/debugger_bindings.cpp FILE: ../../../third_party/skia/gm/runtimecolorfilter.cpp +FILE: ../../../third_party/skia/include/gpu/gl/GrGLAssembleHelpers.h FILE: ../../../third_party/skia/modules/canvaskit/WasmAliases.h FILE: ../../../third_party/skia/modules/canvaskit/particles_bindings.cpp FILE: ../../../third_party/skia/modules/canvaskit/skottie_bindings.cpp @@ -5917,6 +5874,9 @@ FILE: ../../../third_party/skia/modules/particles/src/SkParticleDrawable.cpp FILE: ../../../third_party/skia/modules/particles/src/SkParticleEffect.cpp FILE: ../../../third_party/skia/modules/particles/src/SkReflected.cpp FILE: ../../../third_party/skia/src/core/SkColorFilterPriv.h +FILE: ../../../third_party/skia/src/gpu/gl/GrGLAssembleHelpers.cpp +FILE: ../../../third_party/skia/src/gpu/gl/GrGLAssembleInterface_gl.cpp +FILE: ../../../third_party/skia/src/gpu/gl/GrGLAssembleInterface_gles.cpp ---------------------------------------------------------------------------------------------------- Copyright 2019 Google LLC @@ -6083,6 +6043,7 @@ ORIGIN: ../../../third_party/skia/fuzz/oss_fuzz/FuzzSKSL2GLSL.cpp + ../../../thi TYPE: LicenseType.bsd FILE: ../../../third_party/skia/fuzz/oss_fuzz/FuzzSKSL2GLSL.cpp FILE: ../../../third_party/skia/fuzz/oss_fuzz/FuzzSKSL2Metal.cpp +FILE: ../../../third_party/skia/fuzz/oss_fuzz/FuzzSKSL2Pipeline.cpp FILE: ../../../third_party/skia/fuzz/oss_fuzz/FuzzSKSL2SPIRV.cpp ---------------------------------------------------------------------------------------------------- Copyright 2019 Google, LLC From b404c69fdb8aa6a7272240ccab15c327ea1b63a9 Mon Sep 17 00:00:00 2001 From: freiling Date: Mon, 18 Mar 2019 16:33:57 -0700 Subject: [PATCH 1419/1537] [scenic][SCN-1054] Move back off of SetTranslationRH (#8174) The behavior of SetTranslation() is now in its final state so we can migrate back off the temporary function. --- flow/export_node.cc | 2 +- flow/scene_update_context.cc | 26 +++++++++++++------------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/flow/export_node.cc b/flow/export_node.cc index 3bf840dbc6a89..acf7e42da3215 100644 --- a/flow/export_node.cc +++ b/flow/export_node.cc @@ -56,7 +56,7 @@ void ExportNode::Bind(SceneUpdateContext& context, if (node_) { container.AddChild(*node_); - node_->SetTranslationRH(offset.x(), offset.y(), 0.f); + node_->SetTranslation(offset.x(), offset.y(), 0.f); node_->SetHitTestBehavior( hit_testable ? fuchsia::ui::gfx::HitTestBehavior::kDefault : fuchsia::ui::gfx::HitTestBehavior::kSuppress); diff --git a/flow/scene_update_context.cc b/flow/scene_update_context.cc index 0e057edc2f0a7..d0e9f5b930b69 100644 --- a/flow/scene_update_context.cc +++ b/flow/scene_update_context.cc @@ -110,9 +110,9 @@ void SceneUpdateContext::CreateFrame( ); scenic::ShapeNode shape_node(session_); shape_node.SetShape(shape); - shape_node.SetTranslationRH(shape_bounds.width() * 0.5f + shape_bounds.left(), - shape_bounds.height() * 0.5f + shape_bounds.top(), - 0.f); + shape_node.SetTranslation(shape_bounds.width() * 0.5f + shape_bounds.left(), + shape_bounds.height() * 0.5f + shape_bounds.top(), + 0.f); // TODO(SCN-1274): AddPart() and SetClip() will be deleted. entity_node->AddPart(shape_node); @@ -141,9 +141,9 @@ void SceneUpdateContext::CreateFrame( inner_bounds.height()); scenic::ShapeNode inner_node(session_); inner_node.SetShape(inner_shape); - inner_node.SetTranslationRH( - inner_bounds.width() * 0.5f + inner_bounds.left(), - inner_bounds.height() * 0.5f + inner_bounds.top(), 0.f); + inner_node.SetTranslation(inner_bounds.width() * 0.5f + inner_bounds.left(), + inner_bounds.height() * 0.5f + inner_bounds.top(), + 0.f); entity_node->AddPart(inner_node); SetShapeTextureOrColor(inner_node, color, scale_x, scale_y, inner_bounds, std::move(paint_layers), layer, @@ -282,9 +282,9 @@ SceneUpdateContext::Clip::Clip(SceneUpdateContext& context, : Entity(context) { scenic::ShapeNode shape_node(context.session()); shape_node.SetShape(shape); - shape_node.SetTranslationRH(shape_bounds.width() * 0.5f + shape_bounds.left(), - shape_bounds.height() * 0.5f + shape_bounds.top(), - 0.f); + shape_node.SetTranslation(shape_bounds.width() * 0.5f + shape_bounds.left(), + shape_bounds.height() * 0.5f + shape_bounds.top(), + 0.f); // TODO(SCN-1274): AddPart() and SetClip() will be deleted. entity_node().AddPart(shape_node); @@ -305,9 +305,9 @@ SceneUpdateContext::Transform::Transform(SceneUpdateContext& context, // are not handled correctly. MatrixDecomposition decomposition(transform); if (decomposition.IsValid()) { - entity_node().SetTranslationRH(decomposition.translation().x(), // - decomposition.translation().y(), // - decomposition.translation().z() // + entity_node().SetTranslation(decomposition.translation().x(), // + decomposition.translation().y(), // + decomposition.translation().z() // ); entity_node().SetScale(decomposition.scale().x(), // @@ -356,7 +356,7 @@ SceneUpdateContext::Frame::Frame(SceneUpdateContext& context, paint_bounds_(SkRect::MakeEmpty()), layer_(layer) { if (elevation != 0.0) - entity_node().SetTranslationRH(0.f, 0.f, -elevation); + entity_node().SetTranslation(0.f, 0.f, -elevation); } SceneUpdateContext::Frame::~Frame() { From bc8ebcb96bae717ee4cc2c152f66260007bd1d0f Mon Sep 17 00:00:00 2001 From: Dan Field Date: Mon, 18 Mar 2019 19:32:49 -0700 Subject: [PATCH 1420/1537] Export FlutterSemanticsUpdateNotification and improve docs (#8203) * Export FlutterSemanticsUpdateNotification and improve docs --- .../platform/darwin/ios/framework/Headers/FlutterEngine.h | 8 +++++++- .../darwin/ios/framework/Headers/FlutterViewController.h | 1 + 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/shell/platform/darwin/ios/framework/Headers/FlutterEngine.h b/shell/platform/darwin/ios/framework/Headers/FlutterEngine.h index e70877609c032..bf1e757687695 100644 --- a/shell/platform/darwin/ios/framework/Headers/FlutterEngine.h +++ b/shell/platform/darwin/ios/framework/Headers/FlutterEngine.h @@ -146,10 +146,16 @@ FLUTTER_EXPORT * This method must only be called after launching the engine via * `-runWithEntrypoint:` or `-runWithEntryPoint:libraryURI`. * + * Although this method returns synchronously, it does not guarantee that a + * semantics tree is actually available when the method returns. It + * synchronously ensures that the next frame the Flutter framework creates will + * have a semantics tree. + * * You can subscribe to semantics updates via `NSNotificationCenter` by adding * an observer for the name `FlutterSemanticsUpdateNotification`. The `object` * parameter will be the `FlutterViewController` associated with the semantics - * update. + * update. This will asynchronously fire after a semantics tree has actually + * built (which may be some time after the frame has been rendered). */ - (void)ensureSemanticsEnabled; diff --git a/shell/platform/darwin/ios/framework/Headers/FlutterViewController.h b/shell/platform/darwin/ios/framework/Headers/FlutterViewController.h index 5881b3c1aeff6..b38b118fff9cd 100644 --- a/shell/platform/darwin/ios/framework/Headers/FlutterViewController.h +++ b/shell/platform/darwin/ios/framework/Headers/FlutterViewController.h @@ -23,6 +23,7 @@ * The object passed as the sender is the `FlutterViewController` associated * with the update. */ +FLUTTER_EXPORT extern NSNotificationName const FlutterSemanticsUpdateNotification; /** From e73dbf6a6f991332315e20cd712314750051d885 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Mon, 18 Mar 2019 22:34:12 -0400 Subject: [PATCH 1421/1537] Roll src/third_party/skia 389b4b267d15..7eba20aef187 (2 commits) (#8209) https://skia.googlesource.com/skia.git/%2Blog/389b4b267d15..7eba20aef187 git log 389b4b267d15c1e06cc4d8b2222d96e50e6ddb00..7eba20aef187388ba81afa5aa3165a2914f319c8 --date=short --no-merges --format=%ad %ae %s 2019-03-18 recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com Roll recipe dependencies (trivial). 2019-03-18 recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com Roll recipe dependencies (trivial). The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (brianosman@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index d988130830c2e..c4db7cab58548 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '389b4b267d15c1e06cc4d8b2222d96e50e6ddb00', + 'skia_revision': '7eba20aef187388ba81afa5aa3165a2914f319c8', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 541ac47398145..abf628a547833 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 7bd6f84ef1b06ea794bfafa29dbf8044 +Signature: 2d480ae491e3a95acaa84857a25734e7 UNUSED LICENSES: From e28fc3c810ee3c62ad201bc49f4934f0ed20a82c Mon Sep 17 00:00:00 2001 From: Jason Simmons Date: Tue, 19 Mar 2019 09:43:17 -0700 Subject: [PATCH 1422/1537] Define the dart_platform_sdk GN variable only on host targets (#8206) dart_platform_sdk is not available in Android builds --- tools/gn | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tools/gn b/tools/gn index c1f381b64642b..083b8c821554f 100755 --- a/tools/gn +++ b/tools/gn @@ -236,7 +236,9 @@ def to_gn_args(args): # Whether to build trained Dart SDK snapshots of dart2js and dartdevc, # including the web sdk kernel and source files. - gn_args['dart_platform_sdk'] = not args.full_dart_sdk + if args.target_os is None: + # dart_platform_sdk is not declared for Android targets. + gn_args['dart_platform_sdk'] = not args.full_dart_sdk gn_args['full_dart_sdk'] = args.full_dart_sdk return gn_args From 571964e1d7b49e5424c800b461006207d670736f Mon Sep 17 00:00:00 2001 From: Dan Field Date: Tue, 19 Mar 2019 11:56:55 -0700 Subject: [PATCH 1423/1537] Allow exported __const on iOS (#8217) --- testing/symbols/verify_exported.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/testing/symbols/verify_exported.dart b/testing/symbols/verify_exported.dart index df9770988fd54..921f90c0d01f5 100644 --- a/testing/symbols/verify_exported.dart +++ b/testing/symbols/verify_exported.dart @@ -69,7 +69,7 @@ int _checkIos(String outPath, String nmPath, Iterable builds) { continue; } final Iterable unexpectedEntries = NmEntry.parse(nmResult.stdout).where((NmEntry entry) { - return !((entry.type == '(__DATA,__common)' && entry.name.startsWith('_Flutter')) + return !(((entry.type == '(__DATA,__common)' || entry.type == '(__DATA,__const)') && entry.name.startsWith('_Flutter')) || (entry.type == '(__DATA,__objc_data)' && (entry.name.startsWith('_OBJC_METACLASS_\$_Flutter') || entry.name.startsWith('_OBJC_CLASS_\$_Flutter')))); }); From e8bca6391091f323a9173165f7f8be7001ea252b Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Tue, 19 Mar 2019 16:23:56 -0400 Subject: [PATCH 1424/1537] Roll src/third_party/skia 7eba20aef187..dd0544078d05 (1 commits) (#8211) https://skia.googlesource.com/skia.git/%2Blog/7eba20aef187..dd0544078d05 git log 7eba20aef187388ba81afa5aa3165a2914f319c8..dd0544078d058e68cf91404745b493d7d5a184d0 --date=short --no-merges --format=%ad %ae %s 2019-03-19 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/angle2 cda4383919b9..eb986426cd6d (5 commits) The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (brianosman@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index c4db7cab58548..94a951c90599b 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '7eba20aef187388ba81afa5aa3165a2914f319c8', + 'skia_revision': 'dd0544078d058e68cf91404745b493d7d5a184d0', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index abf628a547833..bae76d3885006 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 2d480ae491e3a95acaa84857a25734e7 +Signature: c3be07455b3622a7b69ee4ec3797c619 UNUSED LICENSES: From 146646d1b992b9ba428be379321e0a4ad87e03ef Mon Sep 17 00:00:00 2001 From: Jonah Williams Date: Tue, 19 Mar 2019 13:41:47 -0700 Subject: [PATCH 1425/1537] Correct greater than or equal logic in offset base (#8210) --- lib/stub_ui/geometry.dart | 2 +- lib/ui/geometry.dart | 2 +- testing/dart/geometry_test.dart | 34 +++++++++++++++++++++++++++++++++ testing/dart/pubspec.yaml | 2 +- 4 files changed, 37 insertions(+), 3 deletions(-) diff --git a/lib/stub_ui/geometry.dart b/lib/stub_ui/geometry.dart index f0916021419c0..0bc96c2b1eb3a 100644 --- a/lib/stub_ui/geometry.dart +++ b/lib/stub_ui/geometry.dart @@ -73,7 +73,7 @@ abstract class OffsetBase { /// /// This is a partial ordering. It is possible for two values to be neither /// less, nor greater than, nor equal to, another. - bool operator >=(OffsetBase other) => _dx > other._dx && _dy >= other._dy; + bool operator >=(OffsetBase other) => _dx >= other._dx && _dy >= other._dy; /// Equality operator. Compares an [Offset] or [Size] to another [Offset] or /// [Size], and returns true if the horizontal and vertical values of the diff --git a/lib/ui/geometry.dart b/lib/ui/geometry.dart index 56b6e55759cdc..2e8a79980c2dc 100644 --- a/lib/ui/geometry.dart +++ b/lib/ui/geometry.dart @@ -73,7 +73,7 @@ abstract class OffsetBase { /// /// This is a partial ordering. It is possible for two values to be neither /// less, nor greater than, nor equal to, another. - bool operator >=(OffsetBase other) => _dx > other._dx && _dy >= other._dy; + bool operator >=(OffsetBase other) => _dx >= other._dx && _dy >= other._dy; /// Equality operator. Compares an [Offset] or [Size] to another [Offset] or /// [Size], and returns true if the horizontal and vertical values of the diff --git a/testing/dart/geometry_test.dart b/testing/dart/geometry_test.dart index 9d14a5c25a700..20445b862ca4e 100644 --- a/testing/dart/geometry_test.dart +++ b/testing/dart/geometry_test.dart @@ -9,6 +9,40 @@ import 'dart:ui'; import 'package:test/test.dart'; void main() { + test('OffsetBase.>=', () { + expect(const Offset(0, 0), greaterThanOrEqualTo(const Offset(0, -1))); + expect(const Offset(0, 0), greaterThanOrEqualTo(const Offset(-1, 0))); + expect(const Offset(0, 0), greaterThanOrEqualTo(const Offset(-1, -1))); + expect(const Offset(0, 0), greaterThanOrEqualTo(const Offset(0, 0))); + expect(const Offset(0, 0), isNot(greaterThanOrEqualTo(const Offset(0, double.nan)))); + expect(const Offset(0, 0), isNot(greaterThanOrEqualTo(const Offset(double.nan, 0)))); + expect(const Offset(0, 0), isNot(greaterThanOrEqualTo(const Offset(10, -10)))); + }); + test('OffsetBase.<=', () { + expect(const Offset(0, 0), lessThanOrEqualTo(const Offset(0, 1))); + expect(const Offset(0, 0), lessThanOrEqualTo(const Offset(1, 0))); + expect(const Offset(0, 0), lessThanOrEqualTo(const Offset(0, 0))); + expect(const Offset(0, 0), isNot(lessThanOrEqualTo(const Offset(0, double.nan)))); + expect(const Offset(0, 0), isNot(lessThanOrEqualTo(const Offset(double.nan, 0)))); + expect(const Offset(0, 0), isNot(lessThanOrEqualTo(const Offset(10, -10)))); + }); + test('OffsetBase.>', () { + expect(const Offset(0, 0), greaterThan(const Offset(-1, -1))); + expect(const Offset(0, 0), isNot(greaterThan(const Offset(0, -1)))); + expect(const Offset(0, 0), isNot(greaterThan(const Offset(-1, 0)))); + expect(const Offset(0, 0), isNot(greaterThan(const Offset(double.nan, -1)))); + }); + test('OffsetBase.<', () { + expect(const Offset(0, 0), lessThan(const Offset(1, 1))); + expect(const Offset(0, 0), isNot(lessThan(const Offset(0, 1)))); + expect(const Offset(0, 0), isNot(lessThan(const Offset(1, 0)))); + expect(const Offset(0, 0), isNot(lessThan(const Offset(double.nan, 1)))); + }); + test('OffsetBase.==', () { + expect(const Offset(0, 0), equals(const Offset(0, 0))); + expect(const Offset(0, 0), isNot(equals(const Offset(1, 0)))); + expect(const Offset(0, 0), isNot(equals(const Offset(0, 1)))); + }); test('Offset.direction', () { expect(const Offset(0.0, 0.0).direction, 0.0); expect(const Offset(0.0, 1.0).direction, pi / 2.0); diff --git a/testing/dart/pubspec.yaml b/testing/dart/pubspec.yaml index ccffd1626119b..1c06c331bf831 100644 --- a/testing/dart/pubspec.yaml +++ b/testing/dart/pubspec.yaml @@ -7,4 +7,4 @@ dependency_overrides: sky_engine: path: ../../../out/host_debug_unopt/gen/dart-pkg/sky_engine sky_services: - path: ../../../out/host_debug_unopt/gen/dart-pkg/sky_services \ No newline at end of file + path: ../../../out/host_debug_unopt/gen/dart-pkg/sky_services From 96ad0c8926b0493d4276a39ee9bc6de6fa97bece Mon Sep 17 00:00:00 2001 From: Ben Konyi Date: Tue, 19 Mar 2019 13:42:42 -0700 Subject: [PATCH 1426/1537] Roll src/third_party/dart 7418238239..70e3e67dd7 (108 commits) (#8216) * Updated protobuf and bazel_worker revs for SDK roll * Roll src/third_party/dart 7418238239..70e3e67dd7 (108 commits) 70e3e67dd7 Expect different errors depending on the state of the spread_collections experiment. c85108d2f9 Fix parse expression "a ~ b" f890800fb0 Rework tracking of variables in scope while resynthesizing expressions. e830338919 Updated spec_parser such that it runs with ANTLR v4 37c7992ac3 [testing] Make tests with multiple VMOptions have multiple names. af5fc2d4d2 [VM] Partial support for named regexp captures. efb3f85c7e Fix for element type inference tests. f5c16512cc [Tests] Pass VM options (Platform.executableArguments) to sub-processes 234a1726d3 bump linter to 0.1.83 eda9ccb744 Early exit on VM String.replaceAll 527b10879e Begin adding summary support for `for` elements. 42ab0a6a63 Handle downcasts for spreads fc7d25e0e3 Revert "[vm] Add data field to TypedData" 9c9ab11450 Reland "Handle ir constants in field analysis and impact tests" 91b62553ce Make scanner reportErrors field final 1c685bf370 Sort declarations in pkg/analyzer/lib/src/dart/ast/ast.dart 231061c15a [gardening] Moving patch to be based on dart hash. 1ea717f1c9 [CFE] Use Fasta diagnostics in constant evaluator. 22718f4d60 [CFE] Always call the constant evaluator by the evaluate method. c10ee9971f [CFE] Move constant evaluator to Fasta. ae72776312 New DomExceptions added to browsers. 9d3988eb67 [vm] First stab at a protobuf aware treeshaker e62391a162 Revert "Handle ir constants in field analysis and impact tests" 3b2e368376 Revert 5 changes with failures a6e2c5eb4c Rename import after moving file. e6d2751e9c [CFE] Check for null in constant evaluation c7b572aa29 [CFE] Use Fasta diagnostics in the constant evaluator. 91bc4ec2b9 [CFE] Always call the constant evaluator by the evaluate method. 845b5b2df1 [CFE] Move constant evaluator to Fasta. 0cd89e5bd1 Handle ir constants in field analysis and impact tests eeb8fc8ccd [dartdevc] Adding support for async operations in block expressions d7ad6b8c67 Ensure that all tests are run via test_all and add a test to ensure that it stays that way daa6ee6da9 Report NOT_ITERABLE_SPREAD and NOT_MAP_SPREAD. d920a2a5ab Report NON_CONSTANT_XYZ in not taken branches of IfElement. 976b897bd0 Report non-bool conditions in const expressions in evaluation 1d9f34963e Use StoreBasedSummaryResynthesizer directly in LibraryContext. 43a31ff24e Report equal keys in maps when the keys come from a spread element 0d5ab9380a Add getNotPotentiallyConstants() and isConstantTypeExpression(). cc1ddfb337 Issue 36212. Fix for updated part without library. d597166f9b Remove Dart tasks and work manager. 68bfd72e44 [dartdevc] fix #36174, add flutter inspector transform to DDC b9ce1496f1 Sort declarations in expr_builder_test.dart 8475338d58 Remove references to non-existent Resource type 724d956fd4 Move use_abi_version from vm directory to bin 44753660ec Prepare to publish analyzer 0.35.4 7a2949521d Handle ConstantExpression in ssa and kernel impact 7a90563ee3 [js_runtime] Try to avoid String.prototype.replace with replacement patterns 3dda726bca [gardening] Update flutter patch to reflect engine roll. d445d29fa3 [VM] Define layout of _*ArrayView/_ByteDataView in C+++ d267fb6bf3 change the SummaryTarget to extend the DevCompilerTarget 626cb68ad2 More spread test fixes. eb6f1b6abd Handle effectively constant fields in class stub generator efe9366eeb Remove references to pkg:plugin in DEPS and .packages 43c13284e4 Revert "Reland "Add hints to check the SDK constraints for both set literals and for the ui-as-code features"" d1085e80be [vm] Add data field to TypedData d53311866f [vm/bytecode] Support native methods in BytecodeFlowGraphBuilder 06eeeec92e [tests] Remove obsolete VM option --error-on-bad-type from tests 0a42e8e062 [dart/vm] fix potential buffer overrun in unicode utils 74a23b96b0 Add support for dart2js targets to kernel_worker 9b185051a9 Don't use lazy static initializer in Random.secure() 75679e06c2 Reland "Add hints to check the SDK constraints for both set literals and for the ui-as-code features" 7f8eed0862 Update the partial constant evaluator to handle a limited subset of map literals in unresolved code 02ffcb8f42 Add summary support for `if` elements. 025825dc0f [vm] Update ffi status files and fix function_stress_test on Windows. 638f13ff3d Revert "[ VM / dart:isolate ] Added ability to set names for spawned isolates." af633531ab Report key/value type mismatch. 8e550f6a4c Support super completions from superclass constraints in a mixin b216335e69 Add summary support for spread elements. 001d4ed85d [infra] Update checked in SDKs to 2.2.1-dev.1.1 85f8d3c047 [vm] Build FFI trampolines with IL. 4e68a04f3e [vm] Minor improvements to FFI function tests. 652948175e Use a `dynamic` downward inference context for invalid ambiguous set/map literals. d6ffee639b [co19] Roll co19 cded39ebf3 DEPS rename protobuf_tag to protobuf_rev e6c3bc4ba9 [gardening] update Flutter engine patch file d0c4d6b329 Take variance into account when computing rti checks 3e794ec16a Add tests for rti emission on function types 4ca57befd7 [dartfmt] Bump dart_style to 1.2.4 495b9c4519 Remove set-literals experimental flag from tests 7c496bfd76 Update protobuf version in DEPS eb47bc112e [gardening] Rename flutter/flutter patch so it matches engines hash. de2d83b9e3 [gardening] Fix flutter patch after recent dart roll into engine. 262878086d Extract _ConstLiteralVerifier and split it into literal / operation methods. 092a552a52 Fix spread disambiguation test. 888596af88 Add support for a production dart2js mode in test.dart 90d0443848 [dartdevc] Implementing block expressions and set constants c52e1b83fb [vm/frontend_server] Fix outdated flutter patch. 59525264e8 [ VM / dart:isolate ] Added ability to set names for spawned isolates. 0ee1413095 [dartdevc] Initial support for control flow collections c3005ee81f Add error codes for expressions in maps and map entries not in maps 1b5f7c1047 Remove unnecessary flags for dart2js from test.dart 1efe7e2518 [ VM / Service ] Added `getMemoryUsage` RPC and `MemoryUsage` object to service protocol 35fb67158b [vm/frontend] Change frontend server interface so compile response contains delta of sources files that were used by the compiler. 208f8b5441 Restore checks for leaf elements in ErrorVerifier. 0f4a208c3e Revert "Add hints to check the SDK constraints for both set literals and for the ui-as-code features" 00a478ca80 [VM runtime] Do not leak file descriptors of dual mappings to child processes. 5fdb3c5057 Add hints to check the SDK constraints for both set literals and for the ui-as-code features ca2fc831c4 Check types of values in constant List/Set against the element types. 7c3ab264e5 Change link methods to take a DeclaredVariables object. f7a36792b2 [vm] Fix memory leaks in --load_compilation_trace and --load_type_feedback. 5d6e17a20d Improve initializer missing comma recovery a8c94d0b52 Remove tools we no longer need to manage status files c5624274e1 Update the SDK constraints to match the fact that set literals are being used 28d697a6c1 Enforce override annotations in dart2js 5e1397fc4e Remove unused import ae8a47e92c Add changelog entry for RegExp lookbehind support. 1c02016b7b [infra] Fall back on inexact baseline commits in test.dart. e2a86d9081 [VM runtime] Use memfd_create instead of shm_open for dual mapping of code. --- DEPS | 8 +- ci/licenses_golden/licenses_third_party | 210 ++++++++++++------------ 2 files changed, 110 insertions(+), 108 deletions(-) diff --git a/DEPS b/DEPS index 94a951c90599b..bd1147f3e2e06 100644 --- a/DEPS +++ b/DEPS @@ -31,13 +31,13 @@ vars = { # Dart is: https://github.com/dart-lang/sdk/blob/master/DEPS. # You can use //tools/dart/create_updated_flutter_deps.py to produce # updated revision list of existing dependencies. - 'dart_revision': '7418238239f885ba92093c44a1768f8ec93b121f', + 'dart_revision': '70e3e67dd71267a611429602b342d484fca9b89b', # WARNING: DO NOT EDIT MANUALLY # The lines between blank lines above and below are generated by a script. See create_updated_flutter_deps.py 'dart_args_tag': '1.4.4', 'dart_async_tag': '2.0.8', - 'dart_bazel_worker_tag': '0.1.14', + 'dart_bazel_worker_tag': 'bazel_worker-v0.1.20', 'dart_boolean_selector_tag': '1.0.4', 'dart_boringssl_gen_rev': 'bbf52f18f425e29b1185f2f6753bec02ed8c5880', 'dart_boringssl_rev': '702e2b6d3831486535e958f262a05c75a5cb312e', @@ -74,7 +74,7 @@ vars = { 'dart_path_tag': '1.6.2', 'dart_plugin_tag': 'f5b4b0e32d1406d62daccea030ba6457d14b1c47', 'dart_pool_tag': '1.3.6', - 'dart_protobuf_tag': '0.9.0', + 'dart_protobuf_rev': '0c77167b16d00b561a6055bfe26690af7f26ae88', 'dart_pub_rev': '3c060aae47985e9a248b850f1d0450304a5c97e3', 'dart_pub_semver_tag': '1.4.2', 'dart_quiver_tag': '2.0.0+1', @@ -283,7 +283,7 @@ deps = { Var('dart_git') + '/plugin.git' + '@' + Var('dart_plugin_tag'), 'src/third_party/dart/third_party/pkg/protobuf': - Var('dart_git') + '/protobuf.git' + '@' + Var('dart_protobuf_tag'), + Var('dart_git') + '/protobuf.git' + '@' + Var('dart_protobuf_rev'), 'src/third_party/dart/third_party/pkg/pub_semver': Var('dart_git') + '/pub_semver.git' + '@' + Var('dart_pub_semver_tag'), diff --git a/ci/licenses_golden/licenses_third_party b/ci/licenses_golden/licenses_third_party index c447c7b75883c..fa339383e919c 100644 --- a/ci/licenses_golden/licenses_third_party +++ b/ci/licenses_golden/licenses_third_party @@ -1,4 +1,4 @@ -Signature: c9257a9b2c77469fbf18cd1859ef65ba +Signature: c306c24d471bef4884795341830a763e UNUSED LICENSES: @@ -5119,6 +5119,111 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ==================================================================================================== +==================================================================================================== +LIBRARY: dart +ORIGIN: ../../../third_party/dart/runtime/bin/abi_version.h + ../../../third_party/dart/LICENSE +TYPE: LicenseType.bsd +FILE: ../../../third_party/dart/runtime/bin/abi_version.h +FILE: ../../../third_party/dart/runtime/bin/abi_version_in.cc +FILE: ../../../third_party/dart/runtime/bin/entrypoints_verification_test_extension.cc +FILE: ../../../third_party/dart/runtime/bin/entrypoints_verification_test_extension_dllmain_win.cc +FILE: ../../../third_party/dart/runtime/bin/ffi_test_dynamic_library.cc +FILE: ../../../third_party/dart/runtime/bin/ffi_test_functions.cc +FILE: ../../../third_party/dart/runtime/bin/namespace_fuchsia.h +FILE: ../../../third_party/dart/runtime/lib/ffi.cc +FILE: ../../../third_party/dart/runtime/lib/ffi_dynamic_library.cc +FILE: ../../../third_party/dart/runtime/lib/ffi_dynamic_library_patch.dart +FILE: ../../../third_party/dart/runtime/lib/ffi_native_type_patch.dart +FILE: ../../../third_party/dart/runtime/lib/ffi_patch.dart +FILE: ../../../third_party/dart/runtime/tools/graphexplorer/graphexplorer.html +FILE: ../../../third_party/dart/runtime/tools/graphexplorer/graphexplorer.js +FILE: ../../../third_party/dart/runtime/vm/catch_entry_moves_test.cc +FILE: ../../../third_party/dart/runtime/vm/class_id.h +FILE: ../../../third_party/dart/runtime/vm/code_entry_kind.h +FILE: ../../../third_party/dart/runtime/vm/compiler/asm_intrinsifier.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/asm_intrinsifier.h +FILE: ../../../third_party/dart/runtime/vm/compiler/asm_intrinsifier_arm.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/asm_intrinsifier_arm64.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/asm_intrinsifier_ia32.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/asm_intrinsifier_x64.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/backend/flow_graph_checker.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/backend/flow_graph_checker.h +FILE: ../../../third_party/dart/runtime/vm/compiler/backend/slot_test.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/ffi.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/ffi.h +FILE: ../../../third_party/dart/runtime/vm/compiler/graph_intrinsifier.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/graph_intrinsifier.h +FILE: ../../../third_party/dart/runtime/vm/compiler/graph_intrinsifier_arm.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/graph_intrinsifier_arm64.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/graph_intrinsifier_ia32.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/graph_intrinsifier_x64.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/recognized_methods_list.h +FILE: ../../../third_party/dart/runtime/vm/compiler/relocation.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/runtime_api.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/runtime_api.h +FILE: ../../../third_party/dart/runtime/vm/compiler/stub_code_compiler.h +FILE: ../../../third_party/dart/runtime/vm/compiler/stub_code_compiler_arm.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/stub_code_compiler_arm64.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/stub_code_compiler_dbc.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/stub_code_compiler_ia32.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/stub_code_compiler_x64.cc +FILE: ../../../third_party/dart/runtime/vm/constants_x64.cc +FILE: ../../../third_party/dart/runtime/vm/ffi_trampoline_stubs_x64.cc +FILE: ../../../third_party/dart/runtime/vm/frame_layout.h +FILE: ../../../third_party/dart/runtime/vm/intrusive_dlist.h +FILE: ../../../third_party/dart/runtime/vm/intrusive_dlist_test.cc +FILE: ../../../third_party/dart/runtime/vm/longjump.h +FILE: ../../../third_party/dart/runtime/vm/pointer_tagging.h +FILE: ../../../third_party/dart/runtime/vm/static_type_exactness_state.h +FILE: ../../../third_party/dart/runtime/vm/stub_code_list.h +FILE: ../../../third_party/dart/runtime/vm/thread_stack_resource.cc +FILE: ../../../third_party/dart/runtime/vm/thread_stack_resource.h +FILE: ../../../third_party/dart/runtime/vm/thread_state.cc +FILE: ../../../third_party/dart/runtime/vm/thread_state.h +FILE: ../../../third_party/dart/runtime/vm/type_testing_stubs_arm.cc +FILE: ../../../third_party/dart/runtime/vm/type_testing_stubs_arm64.cc +FILE: ../../../third_party/dart/runtime/vm/type_testing_stubs_x64.cc +FILE: ../../../third_party/dart/samples/ffi/coordinate.dart +FILE: ../../../third_party/dart/samples/ffi/dylib_utils.dart +FILE: ../../../third_party/dart/samples/ffi/sample_ffi_data.dart +FILE: ../../../third_party/dart/samples/ffi/sample_ffi_dynamic_library.dart +FILE: ../../../third_party/dart/samples/ffi/sample_ffi_functions.dart +FILE: ../../../third_party/dart/samples/ffi/sample_ffi_functions_callbacks.dart +FILE: ../../../third_party/dart/samples/ffi/sample_ffi_functions_structs.dart +FILE: ../../../third_party/dart/samples/ffi/sample_ffi_structs.dart +FILE: ../../../third_party/dart/sdk/lib/ffi/annotations.dart +FILE: ../../../third_party/dart/sdk/lib/ffi/dynamic_library.dart +FILE: ../../../third_party/dart/sdk/lib/ffi/ffi.dart +FILE: ../../../third_party/dart/sdk/lib/ffi/native_type.dart +---------------------------------------------------------------------------------------------------- +Copyright (c) 2019, the Dart project authors. Please see the AUTHORS file +for details. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of Google Inc. nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +==================================================================================================== + ==================================================================================================== LIBRARY: dart ORIGIN: ../../../third_party/dart/runtime/bin/cli.cc + ../../../third_party/dart/LICENSE @@ -5692,109 +5797,6 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ==================================================================================================== -==================================================================================================== -LIBRARY: dart -ORIGIN: ../../../third_party/dart/runtime/bin/entrypoints_verification_test_extension.cc + ../../../third_party/dart/LICENSE -TYPE: LicenseType.bsd -FILE: ../../../third_party/dart/runtime/bin/entrypoints_verification_test_extension.cc -FILE: ../../../third_party/dart/runtime/bin/entrypoints_verification_test_extension_dllmain_win.cc -FILE: ../../../third_party/dart/runtime/bin/ffi_test_dynamic_library.cc -FILE: ../../../third_party/dart/runtime/bin/ffi_test_functions.cc -FILE: ../../../third_party/dart/runtime/bin/namespace_fuchsia.h -FILE: ../../../third_party/dart/runtime/lib/ffi.cc -FILE: ../../../third_party/dart/runtime/lib/ffi_dynamic_library.cc -FILE: ../../../third_party/dart/runtime/lib/ffi_dynamic_library_patch.dart -FILE: ../../../third_party/dart/runtime/lib/ffi_native_type_patch.dart -FILE: ../../../third_party/dart/runtime/lib/ffi_patch.dart -FILE: ../../../third_party/dart/runtime/tools/graphexplorer/graphexplorer.html -FILE: ../../../third_party/dart/runtime/tools/graphexplorer/graphexplorer.js -FILE: ../../../third_party/dart/runtime/vm/catch_entry_moves_test.cc -FILE: ../../../third_party/dart/runtime/vm/class_id.h -FILE: ../../../third_party/dart/runtime/vm/code_entry_kind.h -FILE: ../../../third_party/dart/runtime/vm/compiler/asm_intrinsifier.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/asm_intrinsifier.h -FILE: ../../../third_party/dart/runtime/vm/compiler/asm_intrinsifier_arm.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/asm_intrinsifier_arm64.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/asm_intrinsifier_ia32.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/asm_intrinsifier_x64.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/backend/flow_graph_checker.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/backend/flow_graph_checker.h -FILE: ../../../third_party/dart/runtime/vm/compiler/backend/slot_test.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/ffi.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/ffi.h -FILE: ../../../third_party/dart/runtime/vm/compiler/graph_intrinsifier.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/graph_intrinsifier.h -FILE: ../../../third_party/dart/runtime/vm/compiler/graph_intrinsifier_arm.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/graph_intrinsifier_arm64.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/graph_intrinsifier_ia32.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/graph_intrinsifier_x64.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/recognized_methods_list.h -FILE: ../../../third_party/dart/runtime/vm/compiler/relocation.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/runtime_api.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/runtime_api.h -FILE: ../../../third_party/dart/runtime/vm/compiler/stub_code_compiler.h -FILE: ../../../third_party/dart/runtime/vm/compiler/stub_code_compiler_arm.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/stub_code_compiler_arm64.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/stub_code_compiler_dbc.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/stub_code_compiler_ia32.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/stub_code_compiler_x64.cc -FILE: ../../../third_party/dart/runtime/vm/constants_x64.cc -FILE: ../../../third_party/dart/runtime/vm/ffi_trampoline_stubs_x64.cc -FILE: ../../../third_party/dart/runtime/vm/frame_layout.h -FILE: ../../../third_party/dart/runtime/vm/intrusive_dlist.h -FILE: ../../../third_party/dart/runtime/vm/intrusive_dlist_test.cc -FILE: ../../../third_party/dart/runtime/vm/longjump.h -FILE: ../../../third_party/dart/runtime/vm/pointer_tagging.h -FILE: ../../../third_party/dart/runtime/vm/static_type_exactness_state.h -FILE: ../../../third_party/dart/runtime/vm/stub_code_list.h -FILE: ../../../third_party/dart/runtime/vm/thread_stack_resource.cc -FILE: ../../../third_party/dart/runtime/vm/thread_stack_resource.h -FILE: ../../../third_party/dart/runtime/vm/thread_state.cc -FILE: ../../../third_party/dart/runtime/vm/thread_state.h -FILE: ../../../third_party/dart/runtime/vm/type_testing_stubs_arm.cc -FILE: ../../../third_party/dart/runtime/vm/type_testing_stubs_arm64.cc -FILE: ../../../third_party/dart/runtime/vm/type_testing_stubs_x64.cc -FILE: ../../../third_party/dart/samples/ffi/coordinate.dart -FILE: ../../../third_party/dart/samples/ffi/dylib_utils.dart -FILE: ../../../third_party/dart/samples/ffi/sample_ffi_data.dart -FILE: ../../../third_party/dart/samples/ffi/sample_ffi_dynamic_library.dart -FILE: ../../../third_party/dart/samples/ffi/sample_ffi_functions.dart -FILE: ../../../third_party/dart/samples/ffi/sample_ffi_functions_callbacks.dart -FILE: ../../../third_party/dart/samples/ffi/sample_ffi_functions_structs.dart -FILE: ../../../third_party/dart/samples/ffi/sample_ffi_structs.dart -FILE: ../../../third_party/dart/sdk/lib/ffi/annotations.dart -FILE: ../../../third_party/dart/sdk/lib/ffi/dynamic_library.dart -FILE: ../../../third_party/dart/sdk/lib/ffi/ffi.dart -FILE: ../../../third_party/dart/sdk/lib/ffi/native_type.dart ----------------------------------------------------------------------------------------------------- -Copyright (c) 2019, the Dart project authors. Please see the AUTHORS file -for details. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following - disclaimer in the documentation and/or other materials provided - with the distribution. - * Neither the name of Google Inc. nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -==================================================================================================== - ==================================================================================================== LIBRARY: dart ORIGIN: ../../../third_party/dart/runtime/bin/process_test.cc + ../../../third_party/dart/LICENSE From d764b69b28420cf616fd9c4378f81c7c7b1b0828 Mon Sep 17 00:00:00 2001 From: liyuqian Date: Tue, 19 Mar 2019 14:03:45 -0700 Subject: [PATCH 1427/1537] Add docs for helpful commands to fix format (#8171) --- ci/format.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci/format.sh b/ci/format.sh index de00b6d3a67b7..93f0be6c47618 100755 --- a/ci/format.sh +++ b/ci/format.sh @@ -57,7 +57,7 @@ done if [[ $FAILED_CHECKS -ne 0 ]]; then echo "" - echo "ERROR: Some files are formatted incorrectly. To fix, apply diffs above via patch -p0." + echo "ERROR: Some files are formatted incorrectly. To fix, run \`./ci/format.sh | patch -p0\` from the flutter/engine/src/flutter directory." exit 1 fi From 172810342dcbdc5d534768d92c4f59214bdd297b Mon Sep 17 00:00:00 2001 From: stuartmorgan Date: Tue, 19 Mar 2019 17:23:32 -0400 Subject: [PATCH 1428/1537] Add a build dependencies script for Linux desktop (#8160) Installs the dependencies necessary to build the Linux desktop shell. Similar to the existing install-build-deps.sh and install-build-deps-android.sh but specifically for the desktop shell requirements. --- build/install-build-deps-linux-desktop.sh | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100755 build/install-build-deps-linux-desktop.sh diff --git a/build/install-build-deps-linux-desktop.sh b/build/install-build-deps-linux-desktop.sh new file mode 100755 index 0000000000000..ce754c6f1464b --- /dev/null +++ b/build/install-build-deps-linux-desktop.sh @@ -0,0 +1,12 @@ +#!/bin/bash +# 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. + +# Installs the dependencies necessary to build the Linux Flutter shell, beyond +# those installed by install-build-deps.sh. + +set -e + +sudo apt-get -y install libglfw3-dev libepoxy-dev libjsoncpp-dev libgtk-3-dev \ + libx11-dev From 7cbbdb4002517cff02dffa9b1346398f40bab141 Mon Sep 17 00:00:00 2001 From: Jason Simmons Date: Tue, 19 Mar 2019 14:43:54 -0700 Subject: [PATCH 1429/1537] libtxt: more accurate tracking of run positioning and width for justified text (#8214) Fixes https://github.com/flutter/flutter/issues/28891 --- third_party/txt/src/txt/paragraph.cc | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/third_party/txt/src/txt/paragraph.cc b/third_party/txt/src/txt/paragraph.cc index 68c06fc143a21..cba46048d7b9e 100644 --- a/third_party/txt/src/txt/paragraph.cc +++ b/third_party/txt/src/txt/paragraph.cc @@ -677,6 +677,8 @@ void Paragraph::Layout(double width, bool force) { const SkTextBlobBuilder::RunBuffer& blob_buffer = builder.allocRunPos(font, glyph_blob.end - glyph_blob.start); + double justify_x_offset_delta = 0; + for (size_t glyph_index = glyph_blob.start; glyph_index < glyph_blob.end;) { size_t cluster_start_glyph_index = glyph_index; @@ -690,7 +692,7 @@ void Paragraph::Layout(double width, bool force) { size_t pos_index = blob_index * 2; blob_buffer.pos[pos_index] = - layout.getX(glyph_index) + justify_x_offset; + layout.getX(glyph_index) + justify_x_offset_delta; blob_buffer.pos[pos_index + 1] = layout.getY(glyph_index); if (glyph_index == cluster_start_glyph_index) @@ -770,7 +772,7 @@ void Paragraph::Layout(double width, bool force) { if (at_word_end) { if (justify_line) { - justify_x_offset += word_gap_width; + justify_x_offset_delta += word_gap_width; } word_index++; @@ -787,9 +789,11 @@ void Paragraph::Layout(double width, bool force) { continue; SkFontMetrics metrics; font.getMetrics(&metrics); - paint_records.emplace_back(run.style(), SkPoint::Make(run_x_offset, 0), - builder.make(), metrics, line_number, - layout.getAdvance(), run.is_ghost()); + paint_records.emplace_back( + run.style(), SkPoint::Make(run_x_offset + justify_x_offset, 0), + builder.make(), metrics, line_number, + layout.getAdvance() + justify_x_offset_delta, run.is_ghost()); + justify_x_offset += justify_x_offset_delta; line_glyph_positions.insert(line_glyph_positions.end(), glyph_positions.begin(), @@ -1050,13 +1054,7 @@ void Paragraph::PaintDecorations(SkCanvas* canvas, // Filled when drawing wavy decorations. SkPath path; - double width = 0; - if (paragraph_style_.text_align == TextAlign::justify && - record.line() != GetLineCount() - 1) { - width = width_; - } else { - width = record.GetRunWidth(); - } + double width = record.GetRunWidth(); SkScalar underline_thickness; if ((metrics.fFlags & From 45f69ac471b47e95dfeef36e5e81597b05ed19f5 Mon Sep 17 00:00:00 2001 From: Amir Hardon Date: Tue, 19 Mar 2019 15:48:45 -0700 Subject: [PATCH 1430/1537] Plumb a reference of PlatformViewsController and AccessibilityBridge to each other (#8208) This is in preparation for implementing platform views a11y on Android. And e2e working prototype is available here: https://github.com/amirh/engine/tree/a11y_hacks flutter/flutter#19418 --- ci/licenses_golden/licenses_flutter | 1 + shell/platform/android/BUILD.gn | 1 + .../io/flutter/app/FlutterPluginRegistry.java | 4 +++ .../embedding/engine/android/FlutterView.java | 5 ++- .../PlatformViewsAccessibilityDelegate.java | 13 +++++++ .../platform/PlatformViewsController.java | 36 ++++++++++++++++++- .../io/flutter/view/AccessibilityBridge.java | 12 +++++-- .../android/io/flutter/view/FlutterView.java | 7 +++- 8 files changed, 73 insertions(+), 6 deletions(-) create mode 100644 shell/platform/android/io/flutter/plugin/platform/PlatformViewsAccessibilityDelegate.java diff --git a/ci/licenses_golden/licenses_flutter b/ci/licenses_golden/licenses_flutter index 6196b918d31a5..55a5f63693062 100644 --- a/ci/licenses_golden/licenses_flutter +++ b/ci/licenses_golden/licenses_flutter @@ -516,6 +516,7 @@ FILE: ../../../flutter/shell/platform/android/io/flutter/plugin/platform/Platfor FILE: ../../../flutter/shell/platform/android/io/flutter/plugin/platform/PlatformViewFactory.java FILE: ../../../flutter/shell/platform/android/io/flutter/plugin/platform/PlatformViewRegistry.java FILE: ../../../flutter/shell/platform/android/io/flutter/plugin/platform/PlatformViewRegistryImpl.java +FILE: ../../../flutter/shell/platform/android/io/flutter/plugin/platform/PlatformViewsAccessibilityDelegate.java FILE: ../../../flutter/shell/platform/android/io/flutter/plugin/platform/PlatformViewsController.java FILE: ../../../flutter/shell/platform/android/io/flutter/plugin/platform/SingleViewPresentation.java FILE: ../../../flutter/shell/platform/android/io/flutter/plugin/platform/VirtualDisplayController.java diff --git a/shell/platform/android/BUILD.gn b/shell/platform/android/BUILD.gn index 9ff065b3ab830..bb5b74c05e5b7 100644 --- a/shell/platform/android/BUILD.gn +++ b/shell/platform/android/BUILD.gn @@ -158,6 +158,7 @@ java_library("flutter_shell_java") { "io/flutter/plugin/platform/PlatformViewFactory.java", "io/flutter/plugin/platform/PlatformViewRegistry.java", "io/flutter/plugin/platform/PlatformViewRegistryImpl.java", + "io/flutter/plugin/platform/PlatformViewsAccessibilityDelegate.java", "io/flutter/plugin/platform/PlatformViewsController.java", "io/flutter/plugin/platform/SingleViewPresentation.java", "io/flutter/plugin/platform/VirtualDisplayController.java", diff --git a/shell/platform/android/io/flutter/app/FlutterPluginRegistry.java b/shell/platform/android/io/flutter/app/FlutterPluginRegistry.java index 7710a6089830d..13297ae5921ab 100644 --- a/shell/platform/android/io/flutter/app/FlutterPluginRegistry.java +++ b/shell/platform/android/io/flutter/app/FlutterPluginRegistry.java @@ -94,6 +94,10 @@ public void onPreEngineRestart() { mPlatformViewsController.onPreEngineRestart(); } + public PlatformViewsController getPlatformViewsController() { + return mPlatformViewsController; + } + private class FlutterRegistrar implements Registrar { private final String pluginKey; diff --git a/shell/platform/android/io/flutter/embedding/engine/android/FlutterView.java b/shell/platform/android/io/flutter/embedding/engine/android/FlutterView.java index e8216f97b360a..3c104b32c61f3 100644 --- a/shell/platform/android/io/flutter/embedding/engine/android/FlutterView.java +++ b/shell/platform/android/io/flutter/embedding/engine/android/FlutterView.java @@ -447,7 +447,10 @@ public void attachToFlutterEngine(@NonNull FlutterEngine flutterEngine) { this, flutterEngine.getAccessibilityChannel(), (AccessibilityManager) getContext().getSystemService(Context.ACCESSIBILITY_SERVICE), - getContext().getContentResolver() + getContext().getContentResolver(), + // TODO(mattcaroll): plumb the platform views controller to the accessibility bridge. + // https://github.com/flutter/flutter/issues/29618 + null ); accessibilityBridge.setOnAccessibilityChangeListener(onAccessibilityChangeListener); resetWillNotDraw( diff --git a/shell/platform/android/io/flutter/plugin/platform/PlatformViewsAccessibilityDelegate.java b/shell/platform/android/io/flutter/plugin/platform/PlatformViewsAccessibilityDelegate.java new file mode 100644 index 0000000000000..8f07f6b0c5b5b --- /dev/null +++ b/shell/platform/android/io/flutter/plugin/platform/PlatformViewsAccessibilityDelegate.java @@ -0,0 +1,13 @@ +// 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. + +package io.flutter.plugin.platform; + +/** + * Facilitates interaction between the accessibility bridge and embedded platform views. + */ +public interface PlatformViewsAccessibilityDelegate { + // TODO(amirh): add a View getViewById(int id) here. + // not filing a tracking issue as this is going to be done in the next PR. +} diff --git a/shell/platform/android/io/flutter/plugin/platform/PlatformViewsController.java b/shell/platform/android/io/flutter/plugin/platform/PlatformViewsController.java index e7297567e198c..bd2ba001e22d3 100644 --- a/shell/platform/android/io/flutter/plugin/platform/PlatformViewsController.java +++ b/shell/platform/android/io/flutter/plugin/platform/PlatformViewsController.java @@ -14,6 +14,7 @@ import io.flutter.plugin.common.MethodCall; import io.flutter.plugin.common.MethodChannel; import io.flutter.plugin.common.StandardMethodCodec; +import io.flutter.view.AccessibilityBridge; import io.flutter.view.TextureRegistry; import java.nio.ByteBuffer; @@ -31,7 +32,7 @@ * Each {@link io.flutter.app.FlutterPluginRegistry} has a single platform views controller. * A platform views controller can be attached to at most one Flutter view. */ -public class PlatformViewsController implements MethodChannel.MethodCallHandler { +public class PlatformViewsController implements MethodChannel.MethodCallHandler, PlatformViewsAccessibilityDelegate { private static final String TAG = "PlatformViewsController"; private static final String CHANNEL_NAME = "flutter/platform_views"; @@ -50,6 +51,9 @@ public class PlatformViewsController implements MethodChannel.MethodCallHandler // The messenger used to communicate with the framework over the platform views channel. private BinaryMessenger mMessenger; + // The accessibility bridge to which accessibility events form the platform views will be dispatched. + private AccessibilityBridge accessibilityBridge; + private final HashMap vdControllers; public PlatformViewsController() { @@ -94,6 +98,25 @@ public void detach() { mTextureRegistry = null; } + /** + * Attaches an accessibility bridge for this platform views controller. + * + * Accessibility events sent by platform views that belonging to this controller will be + * dispatched to this accessibility bridge. + */ + public void attachAccessibilityBridge(AccessibilityBridge accessibilityBridge) { + this.accessibilityBridge = accessibilityBridge; + } + + /** + * Detaches the current accessibility bridge. + * + * Any accessibility events sent by platform views belonging to this controller will be ignored. + */ + public void detachAccessibiltyBridge() { + this.accessibilityBridge = null; + } + public PlatformViewRegistry getRegistry() { return mRegistry; } @@ -106,6 +129,17 @@ public void onPreEngineRestart() { flushAllViews(); } + /** + * Returns the embedded view with id, or null if no view with this id is registered. + */ + public View getPlatformViewById(Integer id) { + VirtualDisplayController controller = vdControllers.get(id); + if (controller == null) { + return null; + } + return controller.getView(); + } + @Override public void onMethodCall(final MethodCall call, final MethodChannel.Result result) { if (Build.VERSION.SDK_INT < MINIMAL_SDK) { diff --git a/shell/platform/android/io/flutter/view/AccessibilityBridge.java b/shell/platform/android/io/flutter/view/AccessibilityBridge.java index b0f8e92888de7..f18616b1578e9 100644 --- a/shell/platform/android/io/flutter/view/AccessibilityBridge.java +++ b/shell/platform/android/io/flutter/view/AccessibilityBridge.java @@ -15,7 +15,6 @@ import android.os.Bundle; import android.os.Handler; import android.provider.Settings; -import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.annotation.NonNull; import android.support.annotation.RequiresApi; @@ -27,8 +26,8 @@ import android.view.accessibility.AccessibilityNodeInfo; import android.view.accessibility.AccessibilityNodeProvider; -import io.flutter.embedding.engine.FlutterJNI; import io.flutter.embedding.engine.systemchannels.AccessibilityChannel; +import io.flutter.plugin.platform.PlatformViewsAccessibilityDelegate; import io.flutter.util.Predicate; import java.nio.ByteBuffer; @@ -90,6 +89,11 @@ public class AccessibilityBridge extends AccessibilityNodeProvider { @NonNull private final AccessibilityManager accessibilityManager; + // The delegate for interacting with embedded platform views. Used to embed accessibility data for an embedded + // view in the accessibility tree. + @NonNull + private final PlatformViewsAccessibilityDelegate platformViewsAccessibilityDelegate; + // Android's {@link ContentResolver}, which is used to observe the global TRANSITION_ANIMATION_SCALE, // which determines whether Flutter's animations should be enabled or disabled for accessibility // purposes. @@ -307,12 +311,14 @@ public AccessibilityBridge( @NonNull View rootAccessibilityView, @NonNull AccessibilityChannel accessibilityChannel, @NonNull AccessibilityManager accessibilityManager, - @NonNull ContentResolver contentResolver + @NonNull ContentResolver contentResolver, + @NonNull PlatformViewsAccessibilityDelegate platformViewsAccessibilityDelegate ) { this.rootAccessibilityView = rootAccessibilityView; this.accessibilityChannel = accessibilityChannel; this.accessibilityManager = accessibilityManager; this.contentResolver = contentResolver; + this.platformViewsAccessibilityDelegate = platformViewsAccessibilityDelegate; decorView = ((Activity) rootAccessibilityView.getContext()).getWindow().getDecorView(); diff --git a/shell/platform/android/io/flutter/view/FlutterView.java b/shell/platform/android/io/flutter/view/FlutterView.java index 0ef972ebdcbe1..0935ab6af2e86 100644 --- a/shell/platform/android/io/flutter/view/FlutterView.java +++ b/shell/platform/android/io/flutter/view/FlutterView.java @@ -43,6 +43,7 @@ import io.flutter.plugin.common.*; import io.flutter.plugin.editing.TextInputPlugin; import io.flutter.plugin.platform.PlatformPlugin; +import io.flutter.plugin.platform.PlatformViewsController; import java.nio.ByteBuffer; import java.nio.ByteOrder; @@ -660,12 +661,15 @@ public void onFirstFrame() { protected void onAttachedToWindow() { super.onAttachedToWindow(); + PlatformViewsController platformViewsController = getPluginRegistry().getPlatformViewsController(); mAccessibilityNodeProvider = new AccessibilityBridge( this, new AccessibilityChannel(dartExecutor, getFlutterNativeView().getFlutterJNI()), (AccessibilityManager) getContext().getSystemService(Context.ACCESSIBILITY_SERVICE), - getContext().getContentResolver() + getContext().getContentResolver(), + platformViewsController ); + platformViewsController.attachAccessibilityBridge(mAccessibilityNodeProvider); mAccessibilityNodeProvider.setOnAccessibilityChangeListener(onAccessibilityChangeListener); resetWillNotDraw( @@ -678,6 +682,7 @@ protected void onAttachedToWindow() { protected void onDetachedFromWindow() { super.onDetachedFromWindow(); + getPluginRegistry().getPlatformViewsController().detachAccessibiltyBridge(); mAccessibilityNodeProvider.release(); mAccessibilityNodeProvider = null; } From fa1931f6a054a6641c267487e04754def15bf894 Mon Sep 17 00:00:00 2001 From: Francisco Magdaleno Date: Tue, 19 Mar 2019 15:58:11 -0700 Subject: [PATCH 1431/1537] Send macOS keyboard data to the engine (#8219) --- .../macos/framework/Source/FLEViewController.mm | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/shell/platform/darwin/macos/framework/Source/FLEViewController.mm b/shell/platform/darwin/macos/framework/Source/FLEViewController.mm index 76a1e08557004..b0f732e31015b 100644 --- a/shell/platform/darwin/macos/framework/Source/FLEViewController.mm +++ b/shell/platform/darwin/macos/framework/Source/FLEViewController.mm @@ -16,12 +16,6 @@ static const int kDefaultWindowFramebuffer = 0; -// Android KeyEvent constants from https://developer.android.com/reference/android/view/KeyEvent -static const int kAndroidMetaStateShift = 1 << 0; -static const int kAndroidMetaStateAlt = 1 << 1; -static const int kAndroidMetaStateCtrl = 1 << 12; -static const int kAndroidMetaStateMeta = 1 << 16; - #pragma mark - Private interface declaration. /** @@ -476,14 +470,12 @@ - (void)dispatchMouseEvent:(NSEvent*)event phase:(FlutterPointerPhase)phase { - (void)dispatchKeyEvent:(NSEvent*)event ofType:(NSString*)type { [_keyEventChannel sendMessage:@{ - @"keymap" : @"android", + @"keymap" : @"macos", @"type" : type, @"keyCode" : @(event.keyCode), - @"metaState" : - @(((event.modifierFlags & NSEventModifierFlagShift) ? kAndroidMetaStateShift : 0) | - ((event.modifierFlags & NSEventModifierFlagOption) ? kAndroidMetaStateAlt : 0) | - ((event.modifierFlags & NSEventModifierFlagControl) ? kAndroidMetaStateCtrl : 0) | - ((event.modifierFlags & NSEventModifierFlagCommand) ? kAndroidMetaStateMeta : 0)) + @"modifiers" : @(event.modifierFlags), + @"characters" : event.characters, + @"charactersIgnoringModifiers" : event.charactersIgnoringModifiers, }]; } From a1dcb2ea987efe0e257832160a1b0583ac219584 Mon Sep 17 00:00:00 2001 From: Kaushik Iska Date: Tue, 19 Mar 2019 16:36:11 -0700 Subject: [PATCH 1432/1537] [ios] Set contentsScale before we commit CATransaction (#8218) Layout occurs after [CATransaction commit]. layoutSubviews was where we set the contentsScale on the CALayer. This meant that for one frame, we would see content on the overlay view which was did not have the correct content scale. This change makes it so that we initialize the FlutterOverlayView with the correct contentsScale. This also updates the overlay_gr_context_ when we first create the overlay_view. This is an artifact of #8175. This manifests as jank as seen in: flutter/flutter#29573 --- .../ios/framework/Source/FlutterOverlayView.h | 1 + .../ios/framework/Source/FlutterOverlayView.mm | 15 ++++++++------- .../ios/framework/Source/FlutterPlatformViews.mm | 6 ++++-- 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/shell/platform/darwin/ios/framework/Source/FlutterOverlayView.h b/shell/platform/darwin/ios/framework/Source/FlutterOverlayView.h index a344179057bab..7332e46115313 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterOverlayView.h +++ b/shell/platform/darwin/ios/framework/Source/FlutterOverlayView.h @@ -23,6 +23,7 @@ - (instancetype)initWithCoder:(NSCoder*)aDecoder NS_UNAVAILABLE; - (instancetype)init NS_DESIGNATED_INITIALIZER; +- (instancetype)initWithContentsScale:(CGFloat)contentsScale; - (std::unique_ptr)createSoftwareSurface; - (std::unique_ptr)createGLSurfaceWithContext: (std::shared_ptr)gl_context; diff --git a/shell/platform/darwin/ios/framework/Source/FlutterOverlayView.mm b/shell/platform/darwin/ios/framework/Source/FlutterOverlayView.mm index 83f59d24e0b81..394ae89550150 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterOverlayView.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterOverlayView.mm @@ -21,13 +21,13 @@ @implementation FlutterOverlayView - (instancetype)initWithFrame:(CGRect)frame { - @throw([NSException exceptionWithName:@"FlutterOverlayView must initWithDelegate" + @throw([NSException exceptionWithName:@"FlutterOverlayView must init or initWithContentsScale" reason:nil userInfo:nil]); } - (instancetype)initWithCoder:(NSCoder*)aDecoder { - @throw([NSException exceptionWithName:@"FlutterOverlayView must initWithDelegate" + @throw([NSException exceptionWithName:@"FlutterOverlayView must init or initWithContentsScale" reason:nil userInfo:nil]); } @@ -43,16 +43,17 @@ - (instancetype)init { return self; } -- (void)layoutSubviews { +- (instancetype)initWithContentsScale:(CGFloat)contentsScale { + self = [self init]; + if ([self.layer isKindOfClass:[CAEAGLLayer class]]) { CAEAGLLayer* layer = reinterpret_cast(self.layer); layer.allowsGroupOpacity = NO; - CGFloat screenScale = [UIScreen mainScreen].scale; - layer.contentsScale = screenScale; - layer.rasterizationScale = screenScale; + layer.contentsScale = contentsScale; + layer.rasterizationScale = contentsScale; } - [super layoutSubviews]; + return self; } + (Class)layerClass { diff --git a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm index 82659b4fe2481..4eb773532a183 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm @@ -245,7 +245,6 @@ active_composition_order_.push_back(view_id); } - composition_order_.clear(); return did_submit; } @@ -294,7 +293,9 @@ } return; } - FlutterOverlayView* overlay_view = [[FlutterOverlayView alloc] init]; + auto contentsScale = flutter_view_.get().layer.contentsScale; + FlutterOverlayView* overlay_view = + [[FlutterOverlayView alloc] initWithContentsScale:contentsScale]; overlay_view.frame = flutter_view_.get().bounds; overlay_view.autoresizingMask = (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight); @@ -303,6 +304,7 @@ std::unique_ptr surface = ios_surface->CreateSecondaryGPUSurface(gr_context); overlays_[overlay_id] = std::make_unique( fml::scoped_nsobject(overlay_view), std::move(ios_surface), std::move(surface)); + overlays_gr_context_ = gr_context; } } // namespace shell From 3496156bd9bfe61788bf64ce3ca3cf1bc2663f95 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Tue, 19 Mar 2019 19:54:21 -0400 Subject: [PATCH 1433/1537] Roll src/third_party/skia dd0544078d05..2894d13a0d9b (33 commits) (#8220) https://skia.googlesource.com/skia.git/%2Blog/dd0544078d05..2894d13a0d9b git log dd0544078d058e68cf91404745b493d7d5a184d0..2894d13a0d9b133587760f50c6026d536f869c29 --date=short --no-merges --format=%ad %ae %s 2019-03-19 recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com Roll recipe dependencies (trivial). 2019-03-19 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader 2dc0303903b1..f2564656e7af (3 commits) 2019-03-19 recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com Roll recipe dependencies (trivial). 2019-03-19 halcanary@google.com Documentation: notes on example fiddles 2019-03-19 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/angle2 9b050f846a06..df35e382de78 (2 commits) 2019-03-19 bsalomon@google.com Reland "Add small offset to t in GrLinearGradientLayout." 2019-03-19 fmalita@chromium.org [skottie] Turn on AA for solid layers 2019-03-19 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader 0e712410582f..2dc0303903b1 (1 commits) 2019-03-19 ethannicholas@google.com Revert "more relaxed precision decorations for SPIR-V output" 2019-03-19 halcanary@google.com Docs: fix more case-sensitive names 2019-03-19 fmalita@chromium.org [skottie] Initial camera support 2019-03-19 michaelludwig@google.com Respect strict constraint in drawEdgeAAImageSet 2019-03-19 egdaniel@google.com Don't directly map vertex/index buffers on qualcomm vulkan. 2019-03-19 halcanary@google.com Docs: rename examples files to match names 2019-03-19 kjlubick@google.com Add macro to decide GrGLStandard 2019-03-19 michaelludwig@google.com Add SK_API to ImageSetEntry 2019-03-08 bungeman@google.com Add planet emoji font. 2019-03-19 mtklein@google.com regen from .fp files after .clang-format change 2019-03-19 mtklein@google.com try 2 threads on n7/np 2019-03-19 skia-autoroll@skia-public.iam.gserviceaccount.com Roll ../src 69be71e10036..ca0130108117 (351 commits) 2019-03-18 ethannicholas@google.com more relaxed precision decorations for SPIR-V output 2019-03-19 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader 7cdf79cccb8e..0e712410582f (1 commits) 2019-03-18 mtklein@google.com tweak .clang-format 2019-03-19 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader 24cb99d44e9c..7cdf79cccb8e (3 commits) 2019-03-19 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader b8c63935328f..24cb99d44e9c (1 commits) 2019-03-19 michaelludwig@google.com Reland "Reland "Update SkCanvas' experimental SkiaRenderer API"" 2019-03-19 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader 289a576d337a..b8c63935328f (1 commits) 2019-03-18 robertphillips@google.com Have DM's "--pr ~*" processing start from the default list of path renderers 2019-03-19 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/angle2 eb986426cd6d..9b050f846a06 (1 commits) 2019-03-19 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader bbf5cf1e4762..289a576d337a (1 commits) 2019-03-19 recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com Roll recipe dependencies (trivial). 2019-03-18 recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com Roll recipe dependencies (trivial). 2019-03-19 skia-recreate-skps@skia-swarming-bots.iam.gserviceaccount.com Update go_deps asset The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (brianosman@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2158 +++++++++++++++--------------- 2 files changed, 1080 insertions(+), 1080 deletions(-) diff --git a/DEPS b/DEPS index bd1147f3e2e06..385733c55aaca 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'dd0544078d058e68cf91404745b493d7d5a184d0', + 'skia_revision': '2894d13a0d9b133587760f50c6026d536f869c29', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index bae76d3885006..82c2d1c9653b0 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: c3be07455b3622a7b69ee4ec3797c619 +Signature: 3d1439a49fb74adc7f9c3154a6738954 UNUSED LICENSES: @@ -4735,1091 +4735,1091 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ==================================================================================================== LIBRARY: skia -ORIGIN: ../../../third_party/skia/docs/examples/AutoCanvasRestore_000.cpp + ../../../third_party/skia/LICENSE +ORIGIN: ../../../third_party/skia/docs/examples/Alpha_Constants_a.cpp + ../../../third_party/skia/LICENSE TYPE: LicenseType.bsd -FILE: ../../../third_party/skia/docs/examples/AutoCanvasRestore_000.cpp -FILE: ../../../third_party/skia/docs/examples/AutoCanvasRestore_001.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_000.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_001.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_002.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_003.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_004.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_005.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_006.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_007.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_008.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_009.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_010.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_011.cpp +FILE: ../../../third_party/skia/docs/examples/Alpha_Constants_a.cpp +FILE: ../../../third_party/skia/docs/examples/Alpha_Constants_b.cpp +FILE: ../../../third_party/skia/docs/examples/Alpha_Type_Opaque.cpp +FILE: ../../../third_party/skia/docs/examples/Alpha_Type_Premul.cpp +FILE: ../../../third_party/skia/docs/examples/Alpha_Type_Unpremul.cpp +FILE: ../../../third_party/skia/docs/examples/Anti_Alias.cpp +FILE: ../../../third_party/skia/docs/examples/Arc.cpp +FILE: ../../../third_party/skia/docs/examples/AutoCanvasRestore_SkCanvas_star.cpp +FILE: ../../../third_party/skia/docs/examples/AutoCanvasRestore_restore.cpp FILE: ../../../third_party/skia/docs/examples/Bitmap_012.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_013.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_014.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_015.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_016.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_017.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_018.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_019.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_020.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_021.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_022.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_023.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_024.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_025.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_026.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_027.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_028.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_029.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_030.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_031.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_032.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_033.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_034.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_035.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_036.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_037.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_038.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_039.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_040.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_041.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_042.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_043.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_044.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_045.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_046.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_047.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_048.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_049.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_050.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_051.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_052.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_053.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_054.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_055.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_056.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_057.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_058.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_059.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_060.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_061.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_062.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_063.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_064.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_065.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_066.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_067.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_068.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_069.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_070.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_071.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_072.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_073.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_074.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_075.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_076.cpp -FILE: ../../../third_party/skia/docs/examples/Bitmap_077.cpp -FILE: ../../../third_party/skia/docs/examples/BlendMode_000.cpp -FILE: ../../../third_party/skia/docs/examples/BlendMode_001.cpp -FILE: ../../../third_party/skia/docs/examples/BlendMode_002.cpp -FILE: ../../../third_party/skia/docs/examples/BlendMode_003.cpp -FILE: ../../../third_party/skia/docs/examples/BlendMode_004.cpp -FILE: ../../../third_party/skia/docs/examples/BlendMode_005.cpp -FILE: ../../../third_party/skia/docs/examples/BlendMode_006.cpp -FILE: ../../../third_party/skia/docs/examples/BlendMode_007.cpp -FILE: ../../../third_party/skia/docs/examples/BlendMode_008.cpp -FILE: ../../../third_party/skia/docs/examples/BlendMode_009.cpp -FILE: ../../../third_party/skia/docs/examples/BlendMode_010.cpp -FILE: ../../../third_party/skia/docs/examples/BlendMode_011.cpp -FILE: ../../../third_party/skia/docs/examples/BlendMode_012.cpp -FILE: ../../../third_party/skia/docs/examples/BlendMode_013.cpp -FILE: ../../../third_party/skia/docs/examples/BlendMode_014.cpp -FILE: ../../../third_party/skia/docs/examples/BlendMode_015.cpp -FILE: ../../../third_party/skia/docs/examples/BlendMode_016.cpp -FILE: ../../../third_party/skia/docs/examples/BlendMode_017.cpp -FILE: ../../../third_party/skia/docs/examples/BlendMode_018.cpp -FILE: ../../../third_party/skia/docs/examples/BlendMode_019.cpp -FILE: ../../../third_party/skia/docs/examples/BlendMode_020.cpp -FILE: ../../../third_party/skia/docs/examples/BlendMode_021.cpp -FILE: ../../../third_party/skia/docs/examples/BlendMode_022.cpp -FILE: ../../../third_party/skia/docs/examples/BlendMode_023.cpp -FILE: ../../../third_party/skia/docs/examples/BlendMode_024.cpp -FILE: ../../../third_party/skia/docs/examples/BlendMode_025.cpp -FILE: ../../../third_party/skia/docs/examples/BlendMode_026.cpp -FILE: ../../../third_party/skia/docs/examples/BlendMode_027.cpp -FILE: ../../../third_party/skia/docs/examples/BlendMode_028.cpp -FILE: ../../../third_party/skia/docs/examples/BlendMode_029.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_000.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_001.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_002.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_003.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_004.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_005.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_006.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_008.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_009.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_010.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_011.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_012.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_013.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_014.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_015.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_016.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_017.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_018.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_019.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_020.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_021.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_022.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_023.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_024.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_025.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_026.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_027.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_028.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_029.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_030.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_031.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_032.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_033.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_034.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_035.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_036.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_037.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_038.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_039.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_040.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_041.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_042.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_043.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_044.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_045.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_046.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_047.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_048.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_049.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_050.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_051.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_052.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_053.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_054.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_055.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_056.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_057.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_058.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_059.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_060.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_061.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_062.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_063.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_064.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_065.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_066.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_067.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_068.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_069.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_070.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_071.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_072.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_073.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_074.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_075.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_076.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_077.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_078.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_079.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_080.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_081.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_082.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_083.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_084.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_085.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_086.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_087.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_088.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_089.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_090.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_091.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_092.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_093.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_094.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_095.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_097.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_098.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_099.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_100.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_101.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_102.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_103.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_104.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_105.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_106.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_107.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_108.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_109.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_110.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_111.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_112.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_114.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_115.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_116.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_117.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_118.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_119.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_120.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_121.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_122.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_123.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_124.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_125.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_126.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_127.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_128.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_ComputeIsOpaque.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_HeapAllocator_allocPixelRef.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_allocN32Pixels.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_allocPixels.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_allocPixelsFlags.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_allocPixels_2.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_allocPixels_3.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_allocPixels_4.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_bounds.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_bytesPerPixel.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_colorSpace.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_colorType.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_computeByteSize.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_copy_const_SkBitmap.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_copy_operator.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_dimensions.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_drawsNothing.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_empty.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_empty_constructor.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_erase.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_eraseARGB.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_eraseColor.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_extractAlpha.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_extractAlpha_2.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_extractAlpha_3.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_extractSubset.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_getAddr.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_getAddr16.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_getAddr32.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_getAddr8.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_getBounds.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_getBounds_2.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_getColor.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_getGenerationID.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_getPixels.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_getSubset.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_height.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_info.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_installPixels.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_installPixels_2.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_installPixels_3.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_isImmutable.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_isNull.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_isOpaque.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_isVolatile.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_move_SkBitmap.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_move_operator.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_notifyPixelsChanged.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_peekPixels.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_pixelRef.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_pixelRefOrigin.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_pixmap.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_readPixels.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_readPixels_2.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_readPixels_3.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_readyToDraw.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_refColorSpace.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_reset.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_rowBytes.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_rowBytesAsPixels.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_setAlphaType.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_setImmutable.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_setInfo.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_setIsVolatile.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_setPixelRef.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_setPixels.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_shiftPerPixel.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_swap.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_tryAllocN32Pixels.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_tryAllocPixels.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_tryAllocPixelsFlags.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_tryAllocPixels_2.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_tryAllocPixels_3.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_tryAllocPixels_4.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_width.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_writePixels.cpp +FILE: ../../../third_party/skia/docs/examples/Bitmap_writePixels_2.cpp +FILE: ../../../third_party/skia/docs/examples/BlendMode_Name.cpp +FILE: ../../../third_party/skia/docs/examples/Blend_Mode_Methods.cpp FILE: ../../../third_party/skia/docs/examples/Canvas_129.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_130.cpp -FILE: ../../../third_party/skia/docs/examples/Canvas_131.cpp -FILE: ../../../third_party/skia/docs/examples/Color4f_000.cpp -FILE: ../../../third_party/skia/docs/examples/Color4f_001.cpp -FILE: ../../../third_party/skia/docs/examples/Color4f_002.cpp -FILE: ../../../third_party/skia/docs/examples/Color4f_003.cpp -FILE: ../../../third_party/skia/docs/examples/Color4f_004.cpp -FILE: ../../../third_party/skia/docs/examples/Color4f_005.cpp -FILE: ../../../third_party/skia/docs/examples/Color_000.cpp -FILE: ../../../third_party/skia/docs/examples/Color_001.cpp -FILE: ../../../third_party/skia/docs/examples/Color_002.cpp -FILE: ../../../third_party/skia/docs/examples/Color_003.cpp -FILE: ../../../third_party/skia/docs/examples/Color_004.cpp -FILE: ../../../third_party/skia/docs/examples/Color_005.cpp -FILE: ../../../third_party/skia/docs/examples/Color_006.cpp -FILE: ../../../third_party/skia/docs/examples/Color_007.cpp -FILE: ../../../third_party/skia/docs/examples/Color_008.cpp -FILE: ../../../third_party/skia/docs/examples/Color_009.cpp -FILE: ../../../third_party/skia/docs/examples/Color_010.cpp -FILE: ../../../third_party/skia/docs/examples/Color_011.cpp -FILE: ../../../third_party/skia/docs/examples/Color_012.cpp -FILE: ../../../third_party/skia/docs/examples/Color_013.cpp -FILE: ../../../third_party/skia/docs/examples/Color_014.cpp -FILE: ../../../third_party/skia/docs/examples/Color_015.cpp -FILE: ../../../third_party/skia/docs/examples/Color_016.cpp -FILE: ../../../third_party/skia/docs/examples/Color_017.cpp -FILE: ../../../third_party/skia/docs/examples/Color_018.cpp -FILE: ../../../third_party/skia/docs/examples/Font_033.cpp -FILE: ../../../third_party/skia/docs/examples/IPoint_000.cpp -FILE: ../../../third_party/skia/docs/examples/IPoint_001.cpp -FILE: ../../../third_party/skia/docs/examples/IPoint_002.cpp -FILE: ../../../third_party/skia/docs/examples/IPoint_003.cpp -FILE: ../../../third_party/skia/docs/examples/IPoint_004.cpp -FILE: ../../../third_party/skia/docs/examples/IPoint_005.cpp -FILE: ../../../third_party/skia/docs/examples/IPoint_006.cpp -FILE: ../../../third_party/skia/docs/examples/IPoint_007.cpp -FILE: ../../../third_party/skia/docs/examples/IPoint_008.cpp -FILE: ../../../third_party/skia/docs/examples/IPoint_009.cpp -FILE: ../../../third_party/skia/docs/examples/IPoint_010.cpp -FILE: ../../../third_party/skia/docs/examples/IPoint_011.cpp -FILE: ../../../third_party/skia/docs/examples/IPoint_012.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_000.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_001.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_002.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_003.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_004.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_005.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_006.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_007.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_008.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_009.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_010.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_011.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_012.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_013.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_014.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_015.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_016.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_017.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_018.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_019.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_020.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_021.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_022.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_023.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_024.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_025.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_026.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_027.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_028.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_029.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_030.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_031.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_032.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_033.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_034.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_035.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_036.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_037.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_038.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_039.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_040.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_041.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_042.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_043.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_044.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_045.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_046.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_047.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_048.cpp -FILE: ../../../third_party/skia/docs/examples/IRect_049.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_000.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_001.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_002.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_003.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_004.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_005.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_006.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_007.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_008.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_009.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_010.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_011.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_012.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_013.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_014.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_015.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_016.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_017.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_018.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_019.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_020.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_021.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_022.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_023.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_024.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_025.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_026.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_027.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_028.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_029.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_030.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_031.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_032.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_033.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_034.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_035.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_036.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_037.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_038.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_039.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_040.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_041.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_042.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_043.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_044.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_045.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_046.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_047.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_048.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_049.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_050.cpp -FILE: ../../../third_party/skia/docs/examples/ImageInfo_051.cpp -FILE: ../../../third_party/skia/docs/examples/Image_000.cpp -FILE: ../../../third_party/skia/docs/examples/Image_001.cpp -FILE: ../../../third_party/skia/docs/examples/Image_002.cpp -FILE: ../../../third_party/skia/docs/examples/Image_003.cpp -FILE: ../../../third_party/skia/docs/examples/Image_004.cpp -FILE: ../../../third_party/skia/docs/examples/Image_005.cpp -FILE: ../../../third_party/skia/docs/examples/Image_006.cpp -FILE: ../../../third_party/skia/docs/examples/Image_007.cpp -FILE: ../../../third_party/skia/docs/examples/Image_008.cpp -FILE: ../../../third_party/skia/docs/examples/Image_009.cpp -FILE: ../../../third_party/skia/docs/examples/Image_010.cpp -FILE: ../../../third_party/skia/docs/examples/Image_011.cpp -FILE: ../../../third_party/skia/docs/examples/Image_012.cpp -FILE: ../../../third_party/skia/docs/examples/Image_013.cpp -FILE: ../../../third_party/skia/docs/examples/Image_014.cpp -FILE: ../../../third_party/skia/docs/examples/Image_015.cpp -FILE: ../../../third_party/skia/docs/examples/Image_016.cpp -FILE: ../../../third_party/skia/docs/examples/Image_017.cpp -FILE: ../../../third_party/skia/docs/examples/Image_018.cpp -FILE: ../../../third_party/skia/docs/examples/Image_019.cpp -FILE: ../../../third_party/skia/docs/examples/Image_020.cpp -FILE: ../../../third_party/skia/docs/examples/Image_021.cpp -FILE: ../../../third_party/skia/docs/examples/Image_022.cpp -FILE: ../../../third_party/skia/docs/examples/Image_023.cpp -FILE: ../../../third_party/skia/docs/examples/Image_024.cpp -FILE: ../../../third_party/skia/docs/examples/Image_025.cpp -FILE: ../../../third_party/skia/docs/examples/Image_026.cpp -FILE: ../../../third_party/skia/docs/examples/Image_027.cpp -FILE: ../../../third_party/skia/docs/examples/Image_028.cpp -FILE: ../../../third_party/skia/docs/examples/Image_029.cpp -FILE: ../../../third_party/skia/docs/examples/Image_030.cpp -FILE: ../../../third_party/skia/docs/examples/Image_031.cpp -FILE: ../../../third_party/skia/docs/examples/Image_032.cpp -FILE: ../../../third_party/skia/docs/examples/Image_033.cpp -FILE: ../../../third_party/skia/docs/examples/Image_034.cpp -FILE: ../../../third_party/skia/docs/examples/Image_035.cpp -FILE: ../../../third_party/skia/docs/examples/Image_036.cpp -FILE: ../../../third_party/skia/docs/examples/Image_037.cpp -FILE: ../../../third_party/skia/docs/examples/Image_038.cpp -FILE: ../../../third_party/skia/docs/examples/Image_039.cpp -FILE: ../../../third_party/skia/docs/examples/Image_040.cpp -FILE: ../../../third_party/skia/docs/examples/Image_041.cpp -FILE: ../../../third_party/skia/docs/examples/Image_042.cpp -FILE: ../../../third_party/skia/docs/examples/Image_043.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_000.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_001.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_002.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_003.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_004.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_005.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_006.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_007.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_008.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_009.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_010.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_011.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_012.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_013.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_014.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_015.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_016.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_017.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_018.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_019.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_020.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_021.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_022.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_023.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_024.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_026.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_027.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_028.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_029.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_030.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_031.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_032.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_033.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_034.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_035.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_036.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_037.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_038.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_039.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_040.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_041.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_042.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_043.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_044.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_045.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_046.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_047.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_048.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_049.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_050.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_051.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_052.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_053.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_054.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_055.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_056.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_057.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_058.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_059.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_060.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_061.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_062.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_MakeRasterDirect.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_MakeRasterDirectN32.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_PointMode.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_SaveLayerRec.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_SaveLayerRec_SaveLayerRec.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_SaveLayerRec_const_SkRect_star_const_SkPaint_star.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_SaveLayerRec_const_SkRect_star_const_SkPaint_star_const_SkImageFilter_star.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_SrcRectConstraint.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_accessTopLayerPixels_a.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_accessTopLayerPixels_b.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_accessTopRasterHandle.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_clear.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_clipPath.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_clipPath_2.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_clipPath_3.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_clipRRect.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_clipRRect_2.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_clipRRect_3.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_clipRect.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_clipRect_2.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_clipRect_3.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_clipRegion.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_concat.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_const_SkBitmap_const_SkSurfaceProps.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_copy_const_SkBitmap.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_destructor.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_drawAnnotation_2.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_drawArc_a.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_drawArc_b.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_drawAtlas.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_drawAtlas_2.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_drawAtlas_3.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_drawAtlas_4.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_drawBitmap.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_drawBitmapLattice.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_drawBitmapNine.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_drawBitmapRect.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_drawBitmapRect_2.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_drawBitmapRect_3.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_drawCircle.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_drawCircle_2.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_drawColor.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_drawDRRect_a.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_drawDRRect_b.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_drawDrawable.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_drawDrawable_2.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_drawIRect.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_drawImage.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_drawImageNine.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_drawImageNine_2.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_drawImageRect.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_drawImageRect_2.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_drawImageRect_3.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_drawImageRect_4.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_drawImageRect_5.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_drawImageRect_6.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_drawImage_2.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_drawLine.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_drawLine_2.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_drawOval.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_drawPaint.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_drawPatch.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_drawPatch_2_a.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_drawPatch_2_b.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_drawPath.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_drawPicture_2.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_drawPicture_3.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_drawPicture_4.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_drawPoint.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_drawPoint_2.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_drawPoints.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_drawPosText.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_drawPosTextH.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_drawRRect.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_drawRect.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_drawRegion.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_drawRoundRect.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_drawString.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_drawString_2.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_drawText.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_drawTextBlob.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_drawTextBlob_2.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_drawTextRSXform.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_drawVertices.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_drawVertices_2.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_empty_constructor.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_getBaseLayerSize.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_getDeviceClipBounds.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_getDeviceClipBounds_2.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_getGrContext.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_getLocalClipBounds.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_getLocalClipBounds_2.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_getProps.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_getSaveCount.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_getTotalMatrix.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_imageInfo.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_int_int_const_SkSurfaceProps_star.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_isClipEmpty.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_isClipRect.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_kInitWithPrevious_SaveLayerFlag.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_makeSurface.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_peekPixels.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_quickReject.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_quickReject_2.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_readPixels_2.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_readPixels_3.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_readPixels_a.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_readPixels_b.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_resetMatrix.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_restore.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_restoreToCount.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_rotate.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_rotate_2.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_save.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_saveLayer.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_saveLayerAlpha.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_saveLayerPreserveLCDTextRequests.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_saveLayer_2.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_saveLayer_3.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_scale.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_setMatrix.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_skew.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_translate.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_writePixels.cpp +FILE: ../../../third_party/skia/docs/examples/Canvas_writePixels_2.cpp +FILE: ../../../third_party/skia/docs/examples/Clear.cpp +FILE: ../../../third_party/skia/docs/examples/Clip.cpp +FILE: ../../../third_party/skia/docs/examples/Color.cpp +FILE: ../../../third_party/skia/docs/examples/ColorGetA.cpp +FILE: ../../../third_party/skia/docs/examples/ColorGetB.cpp +FILE: ../../../third_party/skia/docs/examples/ColorGetG.cpp +FILE: ../../../third_party/skia/docs/examples/ColorGetR.cpp +FILE: ../../../third_party/skia/docs/examples/ColorSetA.cpp +FILE: ../../../third_party/skia/docs/examples/ColorSetARGB.cpp +FILE: ../../../third_party/skia/docs/examples/ColorSetRGB.cpp +FILE: ../../../third_party/skia/docs/examples/ColorToHSV.cpp +FILE: ../../../third_party/skia/docs/examples/ColorTypeBytesPerPixel.cpp +FILE: ../../../third_party/skia/docs/examples/ColorTypeIsAlwaysOpaque.cpp +FILE: ../../../third_party/skia/docs/examples/ColorTypeValidateAlphaType.cpp +FILE: ../../../third_party/skia/docs/examples/Color_Burn.cpp +FILE: ../../../third_party/skia/docs/examples/Color_Constants_a.cpp +FILE: ../../../third_party/skia/docs/examples/Color_Constants_b.cpp +FILE: ../../../third_party/skia/docs/examples/Color_Constants_c.cpp +FILE: ../../../third_party/skia/docs/examples/Color_Constants_d.cpp +FILE: ../../../third_party/skia/docs/examples/Color_Dodge.cpp +FILE: ../../../third_party/skia/docs/examples/Color_Filter_Methods.cpp +FILE: ../../../third_party/skia/docs/examples/Color_Methods.cpp +FILE: ../../../third_party/skia/docs/examples/Color_Type_ARGB_4444.cpp +FILE: ../../../third_party/skia/docs/examples/Color_Type_Alpha_8.cpp +FILE: ../../../third_party/skia/docs/examples/Color_Type_BGRA_8888.cpp +FILE: ../../../third_party/skia/docs/examples/Color_Type_Gray_8.cpp +FILE: ../../../third_party/skia/docs/examples/Color_Type_RGBA_1010102.cpp +FILE: ../../../third_party/skia/docs/examples/Color_Type_RGBA_8888.cpp +FILE: ../../../third_party/skia/docs/examples/Color_Type_RGBA_F16.cpp +FILE: ../../../third_party/skia/docs/examples/Color_Type_RGB_101010.cpp +FILE: ../../../third_party/skia/docs/examples/Color_Type_RGB_565.cpp +FILE: ../../../third_party/skia/docs/examples/Color_Type_RGB_888.cpp +FILE: ../../../third_party/skia/docs/examples/Conic_Weight_a.cpp +FILE: ../../../third_party/skia/docs/examples/Conic_Weight_b.cpp +FILE: ../../../third_party/skia/docs/examples/Conic_Weight_c.cpp +FILE: ../../../third_party/skia/docs/examples/Cubic.cpp +FILE: ../../../third_party/skia/docs/examples/Darken.cpp +FILE: ../../../third_party/skia/docs/examples/Device_Text.cpp +FILE: ../../../third_party/skia/docs/examples/Difference.cpp +FILE: ../../../third_party/skia/docs/examples/Dither_a.cpp +FILE: ../../../third_party/skia/docs/examples/Dither_b.cpp +FILE: ../../../third_party/skia/docs/examples/Draw_Looper_Methods.cpp +FILE: ../../../third_party/skia/docs/examples/Dst.cpp +FILE: ../../../third_party/skia/docs/examples/Dst_Atop.cpp +FILE: ../../../third_party/skia/docs/examples/Dst_In.cpp +FILE: ../../../third_party/skia/docs/examples/Dst_Out.cpp +FILE: ../../../third_party/skia/docs/examples/Dst_Over.cpp +FILE: ../../../third_party/skia/docs/examples/Exclusion.cpp +FILE: ../../../third_party/skia/docs/examples/Fake_Bold.cpp +FILE: ../../../third_party/skia/docs/examples/Filter_Quality_Methods.cpp +FILE: ../../../third_party/skia/docs/examples/Font_breakText.cpp +FILE: ../../../third_party/skia/docs/examples/HSVToColor.cpp +FILE: ../../../third_party/skia/docs/examples/HSVToColor_2.cpp +FILE: ../../../third_party/skia/docs/examples/Hard_Light.cpp +FILE: ../../../third_party/skia/docs/examples/Hue.cpp +FILE: ../../../third_party/skia/docs/examples/IPoint_Make.cpp +FILE: ../../../third_party/skia/docs/examples/IPoint_add_operator.cpp +FILE: ../../../third_party/skia/docs/examples/IPoint_addto_operator.cpp +FILE: ../../../third_party/skia/docs/examples/IPoint_equal_operator.cpp +FILE: ../../../third_party/skia/docs/examples/IPoint_equals.cpp +FILE: ../../../third_party/skia/docs/examples/IPoint_isZero.cpp +FILE: ../../../third_party/skia/docs/examples/IPoint_minus_operator.cpp +FILE: ../../../third_party/skia/docs/examples/IPoint_notequal_operator.cpp +FILE: ../../../third_party/skia/docs/examples/IPoint_set.cpp +FILE: ../../../third_party/skia/docs/examples/IPoint_subtract_operator.cpp +FILE: ../../../third_party/skia/docs/examples/IPoint_subtractfrom_operator.cpp +FILE: ../../../third_party/skia/docs/examples/IPoint_x.cpp +FILE: ../../../third_party/skia/docs/examples/IPoint_y.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_EmptyIRect.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_Intersects.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_IntersectsNoEmptyCheck.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_MakeEmpty.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_MakeLTRB.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_MakeSize.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_MakeWH.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_MakeXYWH.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_adjust.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_bottom.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_contains.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_containsNoEmptyCheck.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_containsNoEmptyCheck_2.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_contains_2.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_contains_3.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_contains_4.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_equal_operator.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_height.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_height64.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_inset.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_intersect.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_intersectNoEmptyCheck.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_intersect_2.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_intersect_3.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_isEmpty.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_isEmpty64.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_join.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_join_2.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_left.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_makeInset.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_makeOffset.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_makeOutset.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_makeSorted.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_notequal_operator.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_offset.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_offsetTo.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_offset_2.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_outset.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_right.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_set.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_setEmpty.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_setLTRB.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_setXYWH.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_size.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_sort.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_top.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_width.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_width64.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_x.cpp +FILE: ../../../third_party/skia/docs/examples/IRect_y.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_ByteSizeOverflowed.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_Make.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_MakeA8.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_MakeN32.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_MakeN32Premul.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_MakeN32Premul_2.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_MakeS32.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_MakeUnknown.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_MakeUnknown_2.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_alphaType.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_bounds.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_bytesPerPixel.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_colorSpace.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_colorType.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_computeByteSize.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_computeMinByteSize.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_computeOffset.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_dimensions.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_empty_constructor.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_equal1_operator.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_gammaCloseToSRGB.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_height.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_isEmpty.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_isOpaque.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_makeAlphaType.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_makeColorSpace.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_makeColorType.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_makeWH.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_minRowBytes.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_minRowBytes64.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_notequal1_operator.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_refColorSpace.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_reset.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_shiftPerPixel.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_validRowBytes.cpp +FILE: ../../../third_party/skia/docs/examples/ImageInfo_width.cpp +FILE: ../../../third_party/skia/docs/examples/Image_Filter_Methods.cpp +FILE: ../../../third_party/skia/docs/examples/Image_MakeBackendTextureFromSkImage.cpp +FILE: ../../../third_party/skia/docs/examples/Image_MakeCrossContextFromEncoded.cpp +FILE: ../../../third_party/skia/docs/examples/Image_MakeCrossContextFromPixmap.cpp +FILE: ../../../third_party/skia/docs/examples/Image_MakeFromAdoptedTexture.cpp +FILE: ../../../third_party/skia/docs/examples/Image_MakeFromBitmap.cpp +FILE: ../../../third_party/skia/docs/examples/Image_MakeFromEncoded.cpp +FILE: ../../../third_party/skia/docs/examples/Image_MakeFromGenerator.cpp +FILE: ../../../third_party/skia/docs/examples/Image_MakeFromPicture.cpp +FILE: ../../../third_party/skia/docs/examples/Image_MakeFromRaster.cpp +FILE: ../../../third_party/skia/docs/examples/Image_MakeFromTexture.cpp +FILE: ../../../third_party/skia/docs/examples/Image_MakeFromTexture_2.cpp +FILE: ../../../third_party/skia/docs/examples/Image_MakeRasterCopy.cpp +FILE: ../../../third_party/skia/docs/examples/Image_MakeRasterData.cpp +FILE: ../../../third_party/skia/docs/examples/Image_alphaType.cpp +FILE: ../../../third_party/skia/docs/examples/Image_bounds.cpp +FILE: ../../../third_party/skia/docs/examples/Image_colorSpace.cpp +FILE: ../../../third_party/skia/docs/examples/Image_colorType.cpp +FILE: ../../../third_party/skia/docs/examples/Image_dimensions.cpp +FILE: ../../../third_party/skia/docs/examples/Image_encodeToData.cpp +FILE: ../../../third_party/skia/docs/examples/Image_encodeToData_2.cpp +FILE: ../../../third_party/skia/docs/examples/Image_getBackendTexture.cpp +FILE: ../../../third_party/skia/docs/examples/Image_height.cpp +FILE: ../../../third_party/skia/docs/examples/Image_isAlphaOnly.cpp +FILE: ../../../third_party/skia/docs/examples/Image_isLazyGenerated_a.cpp +FILE: ../../../third_party/skia/docs/examples/Image_isLazyGenerated_b.cpp +FILE: ../../../third_party/skia/docs/examples/Image_isOpaque.cpp +FILE: ../../../third_party/skia/docs/examples/Image_isTextureBacked.cpp +FILE: ../../../third_party/skia/docs/examples/Image_isValid.cpp +FILE: ../../../third_party/skia/docs/examples/Image_makeColorSpace.cpp +FILE: ../../../third_party/skia/docs/examples/Image_makeNonTextureImage.cpp +FILE: ../../../third_party/skia/docs/examples/Image_makeRasterImage.cpp +FILE: ../../../third_party/skia/docs/examples/Image_makeShader.cpp +FILE: ../../../third_party/skia/docs/examples/Image_makeShader_2.cpp +FILE: ../../../third_party/skia/docs/examples/Image_makeSubset.cpp +FILE: ../../../third_party/skia/docs/examples/Image_makeTextureImage.cpp +FILE: ../../../third_party/skia/docs/examples/Image_makeWithFilter.cpp +FILE: ../../../third_party/skia/docs/examples/Image_peekPixels.cpp +FILE: ../../../third_party/skia/docs/examples/Image_readPixels.cpp +FILE: ../../../third_party/skia/docs/examples/Image_readPixels_2.cpp +FILE: ../../../third_party/skia/docs/examples/Image_refColorSpace.cpp +FILE: ../../../third_party/skia/docs/examples/Image_refEncodedData.cpp +FILE: ../../../third_party/skia/docs/examples/Image_scalePixels.cpp +FILE: ../../../third_party/skia/docs/examples/Image_uniqueID.cpp +FILE: ../../../third_party/skia/docs/examples/Image_width.cpp +FILE: ../../../third_party/skia/docs/examples/Lighten.cpp +FILE: ../../../third_party/skia/docs/examples/Luminosity.cpp +FILE: ../../../third_party/skia/docs/examples/Mask_Filter_Methods.cpp FILE: ../../../third_party/skia/docs/examples/Matrix_063.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_064.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_065.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_066.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_067.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_068.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_069.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_070.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_071.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_072.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_073.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_074.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_075.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_076.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_077.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_078.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_079.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_080.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_081.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_082.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_083.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_084.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_085.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_086.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_087.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_088.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_089.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_090.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_091.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_092.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_093.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_094.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_095.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_096.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_097.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_098.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_099.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_100.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_101.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_102.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_103.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_104.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_105.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_106.cpp -FILE: ../../../third_party/skia/docs/examples/Matrix_107.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_000.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_001.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_002.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_003.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_004.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_005.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_006.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_007.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_008.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_009.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_010.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_011.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_012.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_013.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_014.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_015.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_016.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_017.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_018.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_019.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_020.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_021.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_022.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_023.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_024.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_025.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_026.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_027.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_028.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_029.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_030.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_031.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_032.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_033.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_034.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_035.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_036.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_037.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_038.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_039.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_040.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_041.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_042.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_043.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_044.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_045.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_046.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_047.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_048.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_049.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_050.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_051.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_052.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_Concat.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_I.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_InvalidMatrix.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_MakeAll.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_MakeRectToRect.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_MakeScale.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_MakeScale_2.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_MakeTrans.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_ScaleToFit.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_SetAffineIdentity.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_TypeMask.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_array_operator.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_asAffine.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_cheapEqualTo.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_decomposeScale.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_dirtyMatrixTypeCache.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_dump.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_equal_operator.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_fixedStepInX.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_get.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_get9.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_getMaxScale.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_getMinMaxScales.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_getMinScale.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_getPerspX.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_getPerspY.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_getScaleX.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_getScaleY.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_getSkewX.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_getSkewY.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_getTranslateX.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_getTranslateY.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_getType.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_hasPerspective.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_invert.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_isFinite.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_isFixedStepInX.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_isIdentity.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_isScaleTranslate.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_isSimilarity.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_isTranslate.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_mapHomogeneousPoints.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_mapPoints.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_mapPoints_2.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_mapRadius.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_mapRect.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_mapRectScaleTranslate.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_mapRectToQuad.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_mapRect_2.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_mapRect_3.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_mapVector.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_mapVector_2.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_mapVectors.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_mapVectors_2.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_mapXY.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_mapXY_2.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_notequal_operator.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_postConcat.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_postRotate.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_postRotate_2.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_postScale.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_postScale_2.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_postSkew.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_postSkew_2.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_postTranslate.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_preConcat.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_preRotate.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_preRotate_2.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_preScale.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_preScale_2.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_preSkew.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_preSkew_2.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_preTranslate.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_preservesAxisAlignment.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_preservesRightAngles.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_rectStaysRect.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_reset.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_set.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_set9.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_setAffine.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_setAll.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_setConcat.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_setIdentity.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_setPerspX.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_setPerspY.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_setPolyToPoly.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_setRSXform.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_setRectToRect.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_setRotate.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_setRotate_2.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_setScale.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_setScaleTranslate.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_setScaleX.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_setScaleY.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_setScale_2.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_setSinCos.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_setSinCos_2.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_setSkew.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_setSkewX.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_setSkewY.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_setSkew_2.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_setTranslate.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_setTranslateX.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_setTranslateY.cpp +FILE: ../../../third_party/skia/docs/examples/Matrix_setTranslate_2.cpp +FILE: ../../../third_party/skia/docs/examples/MemberIndex.cpp +FILE: ../../../third_party/skia/docs/examples/Miter_Limit.cpp +FILE: ../../../third_party/skia/docs/examples/Modulate.cpp +FILE: ../../../third_party/skia/docs/examples/Multiply.cpp +FILE: ../../../third_party/skia/docs/examples/Overlay.cpp FILE: ../../../third_party/skia/docs/examples/Paint_053.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_054.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_055.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_056.cpp FILE: ../../../third_party/skia/docs/examples/Paint_057.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_058.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_059.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_060.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_061.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_062.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_063.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_064.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_065.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_066.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_067.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_068.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_069.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_070.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_071.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_072.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_074.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_075.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_076.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_077.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_078.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_079.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_080.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_081.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_082.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_083.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_084.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_085.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_086.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_087.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_088.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_089.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_090.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_091.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_092.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_093.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_094.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_095.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_096.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_097.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_098.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_099.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_100.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_101.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_102.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_103.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_104.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_105.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_106.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_107.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_108.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_109.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_110.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_111.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_112.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_113.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_114.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_115.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_116.cpp -FILE: ../../../third_party/skia/docs/examples/Paint_117.cpp -FILE: ../../../third_party/skia/docs/examples/Path_000.cpp -FILE: ../../../third_party/skia/docs/examples/Path_001.cpp -FILE: ../../../third_party/skia/docs/examples/Path_002.cpp -FILE: ../../../third_party/skia/docs/examples/Path_003.cpp -FILE: ../../../third_party/skia/docs/examples/Path_004.cpp -FILE: ../../../third_party/skia/docs/examples/Path_005.cpp -FILE: ../../../third_party/skia/docs/examples/Path_006.cpp -FILE: ../../../third_party/skia/docs/examples/Path_007.cpp -FILE: ../../../third_party/skia/docs/examples/Path_008.cpp -FILE: ../../../third_party/skia/docs/examples/Path_009.cpp -FILE: ../../../third_party/skia/docs/examples/Path_010.cpp -FILE: ../../../third_party/skia/docs/examples/Path_011.cpp -FILE: ../../../third_party/skia/docs/examples/Path_012.cpp -FILE: ../../../third_party/skia/docs/examples/Path_013.cpp -FILE: ../../../third_party/skia/docs/examples/Path_014.cpp -FILE: ../../../third_party/skia/docs/examples/Path_015.cpp -FILE: ../../../third_party/skia/docs/examples/Path_016.cpp -FILE: ../../../third_party/skia/docs/examples/Path_017.cpp -FILE: ../../../third_party/skia/docs/examples/Path_018.cpp -FILE: ../../../third_party/skia/docs/examples/Path_019.cpp -FILE: ../../../third_party/skia/docs/examples/Path_020.cpp -FILE: ../../../third_party/skia/docs/examples/Path_021.cpp -FILE: ../../../third_party/skia/docs/examples/Path_022.cpp -FILE: ../../../third_party/skia/docs/examples/Path_023.cpp -FILE: ../../../third_party/skia/docs/examples/Path_024.cpp -FILE: ../../../third_party/skia/docs/examples/Path_025.cpp -FILE: ../../../third_party/skia/docs/examples/Path_026.cpp -FILE: ../../../third_party/skia/docs/examples/Path_027.cpp -FILE: ../../../third_party/skia/docs/examples/Path_028.cpp -FILE: ../../../third_party/skia/docs/examples/Path_029.cpp -FILE: ../../../third_party/skia/docs/examples/Path_030.cpp -FILE: ../../../third_party/skia/docs/examples/Path_031.cpp -FILE: ../../../third_party/skia/docs/examples/Path_032.cpp -FILE: ../../../third_party/skia/docs/examples/Path_033.cpp -FILE: ../../../third_party/skia/docs/examples/Path_034.cpp -FILE: ../../../third_party/skia/docs/examples/Path_035.cpp -FILE: ../../../third_party/skia/docs/examples/Path_036.cpp -FILE: ../../../third_party/skia/docs/examples/Path_037.cpp -FILE: ../../../third_party/skia/docs/examples/Path_038.cpp -FILE: ../../../third_party/skia/docs/examples/Path_039.cpp -FILE: ../../../third_party/skia/docs/examples/Path_040.cpp -FILE: ../../../third_party/skia/docs/examples/Path_041.cpp -FILE: ../../../third_party/skia/docs/examples/Path_042.cpp -FILE: ../../../third_party/skia/docs/examples/Path_043.cpp -FILE: ../../../third_party/skia/docs/examples/Path_044.cpp -FILE: ../../../third_party/skia/docs/examples/Path_045.cpp -FILE: ../../../third_party/skia/docs/examples/Path_046.cpp -FILE: ../../../third_party/skia/docs/examples/Path_047.cpp -FILE: ../../../third_party/skia/docs/examples/Path_048.cpp -FILE: ../../../third_party/skia/docs/examples/Path_049.cpp -FILE: ../../../third_party/skia/docs/examples/Path_050.cpp -FILE: ../../../third_party/skia/docs/examples/Path_051.cpp -FILE: ../../../third_party/skia/docs/examples/Path_052.cpp -FILE: ../../../third_party/skia/docs/examples/Path_053.cpp -FILE: ../../../third_party/skia/docs/examples/Path_054.cpp -FILE: ../../../third_party/skia/docs/examples/Path_055.cpp -FILE: ../../../third_party/skia/docs/examples/Path_056.cpp -FILE: ../../../third_party/skia/docs/examples/Path_057.cpp -FILE: ../../../third_party/skia/docs/examples/Path_058.cpp -FILE: ../../../third_party/skia/docs/examples/Path_059.cpp -FILE: ../../../third_party/skia/docs/examples/Path_060.cpp -FILE: ../../../third_party/skia/docs/examples/Path_061.cpp -FILE: ../../../third_party/skia/docs/examples/Path_062.cpp -FILE: ../../../third_party/skia/docs/examples/Path_063.cpp -FILE: ../../../third_party/skia/docs/examples/Path_064.cpp -FILE: ../../../third_party/skia/docs/examples/Path_065.cpp -FILE: ../../../third_party/skia/docs/examples/Path_066.cpp -FILE: ../../../third_party/skia/docs/examples/Path_067.cpp -FILE: ../../../third_party/skia/docs/examples/Path_068.cpp -FILE: ../../../third_party/skia/docs/examples/Path_069.cpp -FILE: ../../../third_party/skia/docs/examples/Path_070.cpp -FILE: ../../../third_party/skia/docs/examples/Path_071.cpp -FILE: ../../../third_party/skia/docs/examples/Path_072.cpp -FILE: ../../../third_party/skia/docs/examples/Path_073.cpp -FILE: ../../../third_party/skia/docs/examples/Path_074.cpp -FILE: ../../../third_party/skia/docs/examples/Path_076.cpp -FILE: ../../../third_party/skia/docs/examples/Path_077.cpp -FILE: ../../../third_party/skia/docs/examples/Path_078.cpp -FILE: ../../../third_party/skia/docs/examples/Path_079.cpp -FILE: ../../../third_party/skia/docs/examples/Path_080.cpp -FILE: ../../../third_party/skia/docs/examples/Path_081.cpp -FILE: ../../../third_party/skia/docs/examples/Path_082.cpp -FILE: ../../../third_party/skia/docs/examples/Path_083.cpp -FILE: ../../../third_party/skia/docs/examples/Path_084.cpp -FILE: ../../../third_party/skia/docs/examples/Path_085.cpp -FILE: ../../../third_party/skia/docs/examples/Path_086.cpp -FILE: ../../../third_party/skia/docs/examples/Path_087.cpp -FILE: ../../../third_party/skia/docs/examples/Path_088.cpp -FILE: ../../../third_party/skia/docs/examples/Path_089.cpp -FILE: ../../../third_party/skia/docs/examples/Path_090.cpp -FILE: ../../../third_party/skia/docs/examples/Path_091.cpp -FILE: ../../../third_party/skia/docs/examples/Path_092.cpp -FILE: ../../../third_party/skia/docs/examples/Path_093.cpp -FILE: ../../../third_party/skia/docs/examples/Path_094.cpp -FILE: ../../../third_party/skia/docs/examples/Path_095.cpp -FILE: ../../../third_party/skia/docs/examples/Path_096.cpp -FILE: ../../../third_party/skia/docs/examples/Path_097.cpp -FILE: ../../../third_party/skia/docs/examples/Path_098.cpp -FILE: ../../../third_party/skia/docs/examples/Path_099.cpp -FILE: ../../../third_party/skia/docs/examples/Path_100.cpp -FILE: ../../../third_party/skia/docs/examples/Path_101.cpp -FILE: ../../../third_party/skia/docs/examples/Path_102.cpp -FILE: ../../../third_party/skia/docs/examples/Path_103.cpp -FILE: ../../../third_party/skia/docs/examples/Path_104.cpp -FILE: ../../../third_party/skia/docs/examples/Path_105.cpp -FILE: ../../../third_party/skia/docs/examples/Path_106.cpp -FILE: ../../../third_party/skia/docs/examples/Path_107.cpp -FILE: ../../../third_party/skia/docs/examples/Path_108.cpp -FILE: ../../../third_party/skia/docs/examples/Path_109.cpp -FILE: ../../../third_party/skia/docs/examples/Path_110.cpp -FILE: ../../../third_party/skia/docs/examples/Path_111.cpp -FILE: ../../../third_party/skia/docs/examples/Path_112.cpp -FILE: ../../../third_party/skia/docs/examples/Path_113.cpp -FILE: ../../../third_party/skia/docs/examples/Path_114.cpp -FILE: ../../../third_party/skia/docs/examples/Path_115.cpp -FILE: ../../../third_party/skia/docs/examples/Path_116.cpp -FILE: ../../../third_party/skia/docs/examples/Path_117.cpp -FILE: ../../../third_party/skia/docs/examples/Path_118.cpp -FILE: ../../../third_party/skia/docs/examples/Path_119.cpp -FILE: ../../../third_party/skia/docs/examples/Path_120.cpp -FILE: ../../../third_party/skia/docs/examples/Path_121.cpp -FILE: ../../../third_party/skia/docs/examples/Path_122.cpp -FILE: ../../../third_party/skia/docs/examples/Path_123.cpp -FILE: ../../../third_party/skia/docs/examples/Path_124.cpp -FILE: ../../../third_party/skia/docs/examples/Path_125.cpp -FILE: ../../../third_party/skia/docs/examples/Path_126.cpp -FILE: ../../../third_party/skia/docs/examples/Path_127.cpp -FILE: ../../../third_party/skia/docs/examples/Picture_000.cpp -FILE: ../../../third_party/skia/docs/examples/Picture_001.cpp -FILE: ../../../third_party/skia/docs/examples/Picture_002.cpp -FILE: ../../../third_party/skia/docs/examples/Picture_003.cpp -FILE: ../../../third_party/skia/docs/examples/Picture_004.cpp -FILE: ../../../third_party/skia/docs/examples/Picture_005.cpp -FILE: ../../../third_party/skia/docs/examples/Picture_006.cpp -FILE: ../../../third_party/skia/docs/examples/Picture_007.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_containsText.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_copy_const_SkPaint.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_copy_operator.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_countText.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_empty_constructor.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_equal_operator.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_getAlpha.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_getBlendMode.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_getColor.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_getColor4f.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_getColorFilter.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_getDrawLooper.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_getFillPath.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_getFillPath_2.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_getFilterQuality.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_getFlags.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_getFontMetrics.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_getFontSpacing.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_getHash.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_getHinting.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_getImageFilter.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_getMaskFilter.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_getPathEffect.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_getPosTextPath.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_getShader.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_getStrokeCap.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_getStrokeJoin.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_getStrokeMiter.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_getStrokeWidth.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_getStyle.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_getTextEncoding.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_getTextPath.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_getTextScaleX.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_getTextSize.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_getTextSkewX.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_getTextWidths.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_getTypeface.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_isAntiAlias.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_isAutohinted.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_isDither.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_isEmbeddedBitmapText.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_isFakeBoldText.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_isLCDRenderText.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_isLinearText.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_isSubpixelText.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_measureText.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_measureText_2.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_move_SkPaint.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_move_operator.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_notequal_operator.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_nothingToDraw.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_refColorFilter.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_refDrawLooper.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_refImageFilter.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_refMaskFilter.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_refPathEffect.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_refShader.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_refTypeface.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_reset.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_setARGB.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_setAlpha.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_setAntiAlias.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_setAutohinted.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_setBlendMode.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_setColor.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_setColor4f.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_setColorFilter.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_setDither.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_setDrawLooper.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_setEmbeddedBitmapText.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_setFakeBoldText.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_setFilterQuality.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_setFlags.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_setHinting.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_setImageFilter.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_setLCDRenderText.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_setLinearText.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_setMaskFilter.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_setPathEffect.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_setShader.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_setStrokeCap_a.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_setStrokeCap_b.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_setStrokeJoin.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_setStrokeMiter.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_setStrokeWidth.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_setStyle.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_setSubpixelText.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_setTextEncoding.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_setTextScaleX.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_setTextSize.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_setTextSkewX.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_setTypeface.cpp +FILE: ../../../third_party/skia/docs/examples/Paint_textToGlyphs.cpp +FILE: ../../../third_party/skia/docs/examples/Path_AddPathMode.cpp +FILE: ../../../third_party/skia/docs/examples/Path_ArcSize.cpp +FILE: ../../../third_party/skia/docs/examples/Path_ConvertConicToQuads.cpp +FILE: ../../../third_party/skia/docs/examples/Path_ConvertToNonInverseFillType.cpp +FILE: ../../../third_party/skia/docs/examples/Path_Convexity.cpp +FILE: ../../../third_party/skia/docs/examples/Path_Direction.cpp +FILE: ../../../third_party/skia/docs/examples/Path_Effect_Methods.cpp +FILE: ../../../third_party/skia/docs/examples/Path_FillType_a.cpp +FILE: ../../../third_party/skia/docs/examples/Path_FillType_b.cpp +FILE: ../../../third_party/skia/docs/examples/Path_IsCubicDegenerate.cpp +FILE: ../../../third_party/skia/docs/examples/Path_IsInverseFillType.cpp +FILE: ../../../third_party/skia/docs/examples/Path_IsLineDegenerate.cpp +FILE: ../../../third_party/skia/docs/examples/Path_IsQuadDegenerate.cpp +FILE: ../../../third_party/skia/docs/examples/Path_Iter.cpp +FILE: ../../../third_party/skia/docs/examples/Path_Iter_Iter.cpp +FILE: ../../../third_party/skia/docs/examples/Path_Iter_conicWeight.cpp +FILE: ../../../third_party/skia/docs/examples/Path_Iter_const_SkPath.cpp +FILE: ../../../third_party/skia/docs/examples/Path_Iter_isCloseLine.cpp +FILE: ../../../third_party/skia/docs/examples/Path_Iter_isClosedContour.cpp +FILE: ../../../third_party/skia/docs/examples/Path_Iter_next.cpp +FILE: ../../../third_party/skia/docs/examples/Path_Iter_setPath.cpp +FILE: ../../../third_party/skia/docs/examples/Path_RawIter_conicWeight.cpp +FILE: ../../../third_party/skia/docs/examples/Path_RawIter_next.cpp +FILE: ../../../third_party/skia/docs/examples/Path_RawIter_peek.cpp +FILE: ../../../third_party/skia/docs/examples/Path_SegmentMask.cpp +FILE: ../../../third_party/skia/docs/examples/Path_Verb.cpp +FILE: ../../../third_party/skia/docs/examples/Path_addArc.cpp +FILE: ../../../third_party/skia/docs/examples/Path_addCircle.cpp +FILE: ../../../third_party/skia/docs/examples/Path_addOval.cpp +FILE: ../../../third_party/skia/docs/examples/Path_addOval_2.cpp +FILE: ../../../third_party/skia/docs/examples/Path_addPath.cpp +FILE: ../../../third_party/skia/docs/examples/Path_addPath_2.cpp +FILE: ../../../third_party/skia/docs/examples/Path_addPath_3.cpp +FILE: ../../../third_party/skia/docs/examples/Path_addPoly.cpp +FILE: ../../../third_party/skia/docs/examples/Path_addPoly_2.cpp +FILE: ../../../third_party/skia/docs/examples/Path_addRRect.cpp +FILE: ../../../third_party/skia/docs/examples/Path_addRRect_2.cpp +FILE: ../../../third_party/skia/docs/examples/Path_addRect.cpp +FILE: ../../../third_party/skia/docs/examples/Path_addRect_2.cpp +FILE: ../../../third_party/skia/docs/examples/Path_addRect_3.cpp +FILE: ../../../third_party/skia/docs/examples/Path_addRoundRect.cpp +FILE: ../../../third_party/skia/docs/examples/Path_addRoundRect_2.cpp +FILE: ../../../third_party/skia/docs/examples/Path_arcTo.cpp +FILE: ../../../third_party/skia/docs/examples/Path_arcTo_2_a.cpp +FILE: ../../../third_party/skia/docs/examples/Path_arcTo_2_b.cpp +FILE: ../../../third_party/skia/docs/examples/Path_arcTo_2_c.cpp +FILE: ../../../third_party/skia/docs/examples/Path_arcTo_3.cpp +FILE: ../../../third_party/skia/docs/examples/Path_arcTo_4.cpp +FILE: ../../../third_party/skia/docs/examples/Path_close.cpp +FILE: ../../../third_party/skia/docs/examples/Path_computeTightBounds.cpp +FILE: ../../../third_party/skia/docs/examples/Path_conicTo.cpp +FILE: ../../../third_party/skia/docs/examples/Path_conicTo_2.cpp +FILE: ../../../third_party/skia/docs/examples/Path_conservativelyContainsRect.cpp +FILE: ../../../third_party/skia/docs/examples/Path_contains.cpp +FILE: ../../../third_party/skia/docs/examples/Path_copy_const_SkPath.cpp +FILE: ../../../third_party/skia/docs/examples/Path_copy_operator.cpp +FILE: ../../../third_party/skia/docs/examples/Path_countPoints.cpp +FILE: ../../../third_party/skia/docs/examples/Path_countVerbs.cpp +FILE: ../../../third_party/skia/docs/examples/Path_cubicTo.cpp +FILE: ../../../third_party/skia/docs/examples/Path_cubicTo_2.cpp +FILE: ../../../third_party/skia/docs/examples/Path_destructor.cpp +FILE: ../../../third_party/skia/docs/examples/Path_dump.cpp +FILE: ../../../third_party/skia/docs/examples/Path_dumpHex.cpp +FILE: ../../../third_party/skia/docs/examples/Path_dump_2.cpp +FILE: ../../../third_party/skia/docs/examples/Path_empty_constructor.cpp +FILE: ../../../third_party/skia/docs/examples/Path_equal_operator.cpp +FILE: ../../../third_party/skia/docs/examples/Path_getBounds.cpp +FILE: ../../../third_party/skia/docs/examples/Path_getConvexity.cpp +FILE: ../../../third_party/skia/docs/examples/Path_getConvexityOrUnknown.cpp +FILE: ../../../third_party/skia/docs/examples/Path_getFillType.cpp +FILE: ../../../third_party/skia/docs/examples/Path_getGenerationID.cpp +FILE: ../../../third_party/skia/docs/examples/Path_getLastPt.cpp +FILE: ../../../third_party/skia/docs/examples/Path_getPoint.cpp +FILE: ../../../third_party/skia/docs/examples/Path_getPoints.cpp +FILE: ../../../third_party/skia/docs/examples/Path_getSegmentMasks.cpp +FILE: ../../../third_party/skia/docs/examples/Path_getVerbs.cpp +FILE: ../../../third_party/skia/docs/examples/Path_incReserve.cpp +FILE: ../../../third_party/skia/docs/examples/Path_interpolate.cpp +FILE: ../../../third_party/skia/docs/examples/Path_isConvex.cpp +FILE: ../../../third_party/skia/docs/examples/Path_isEmpty.cpp +FILE: ../../../third_party/skia/docs/examples/Path_isFinite.cpp +FILE: ../../../third_party/skia/docs/examples/Path_isInterpolatable.cpp +FILE: ../../../third_party/skia/docs/examples/Path_isInverseFillType_2.cpp +FILE: ../../../third_party/skia/docs/examples/Path_isLastContourClosed.cpp +FILE: ../../../third_party/skia/docs/examples/Path_isLine.cpp +FILE: ../../../third_party/skia/docs/examples/Path_isNestedFillRects.cpp +FILE: ../../../third_party/skia/docs/examples/Path_isOval.cpp +FILE: ../../../third_party/skia/docs/examples/Path_isRRect.cpp +FILE: ../../../third_party/skia/docs/examples/Path_isRect.cpp +FILE: ../../../third_party/skia/docs/examples/Path_isVolatile.cpp +FILE: ../../../third_party/skia/docs/examples/Path_lineTo.cpp +FILE: ../../../third_party/skia/docs/examples/Path_lineTo_2.cpp +FILE: ../../../third_party/skia/docs/examples/Path_moveTo.cpp +FILE: ../../../third_party/skia/docs/examples/Path_moveTo_2.cpp +FILE: ../../../third_party/skia/docs/examples/Path_notequal_operator.cpp +FILE: ../../../third_party/skia/docs/examples/Path_offset.cpp +FILE: ../../../third_party/skia/docs/examples/Path_offset_2.cpp +FILE: ../../../third_party/skia/docs/examples/Path_quadTo.cpp +FILE: ../../../third_party/skia/docs/examples/Path_quadTo_2.cpp +FILE: ../../../third_party/skia/docs/examples/Path_rArcTo.cpp +FILE: ../../../third_party/skia/docs/examples/Path_rConicTo.cpp +FILE: ../../../third_party/skia/docs/examples/Path_rCubicTo.cpp +FILE: ../../../third_party/skia/docs/examples/Path_rLineTo.cpp +FILE: ../../../third_party/skia/docs/examples/Path_rMoveTo.cpp +FILE: ../../../third_party/skia/docs/examples/Path_rQuadTo.cpp +FILE: ../../../third_party/skia/docs/examples/Path_readFromMemory.cpp +FILE: ../../../third_party/skia/docs/examples/Path_reset.cpp +FILE: ../../../third_party/skia/docs/examples/Path_reverseAddPath.cpp +FILE: ../../../third_party/skia/docs/examples/Path_rewind.cpp +FILE: ../../../third_party/skia/docs/examples/Path_serialize.cpp +FILE: ../../../third_party/skia/docs/examples/Path_setConvexity.cpp +FILE: ../../../third_party/skia/docs/examples/Path_setFillType.cpp +FILE: ../../../third_party/skia/docs/examples/Path_setIsVolatile.cpp +FILE: ../../../third_party/skia/docs/examples/Path_setLastPt.cpp +FILE: ../../../third_party/skia/docs/examples/Path_setLastPt_2.cpp +FILE: ../../../third_party/skia/docs/examples/Path_swap.cpp +FILE: ../../../third_party/skia/docs/examples/Path_toggleInverseFillType.cpp +FILE: ../../../third_party/skia/docs/examples/Path_transform.cpp +FILE: ../../../third_party/skia/docs/examples/Path_transform_2.cpp +FILE: ../../../third_party/skia/docs/examples/Path_updateBoundsCache.cpp +FILE: ../../../third_party/skia/docs/examples/Path_writeToMemory.cpp FILE: ../../../third_party/skia/docs/examples/Picture_008.cpp -FILE: ../../../third_party/skia/docs/examples/Picture_009.cpp -FILE: ../../../third_party/skia/docs/examples/Picture_010.cpp -FILE: ../../../third_party/skia/docs/examples/Picture_011.cpp -FILE: ../../../third_party/skia/docs/examples/Pixmap_000.cpp -FILE: ../../../third_party/skia/docs/examples/Pixmap_001.cpp -FILE: ../../../third_party/skia/docs/examples/Pixmap_002.cpp -FILE: ../../../third_party/skia/docs/examples/Pixmap_003.cpp -FILE: ../../../third_party/skia/docs/examples/Pixmap_004.cpp -FILE: ../../../third_party/skia/docs/examples/Pixmap_005.cpp -FILE: ../../../third_party/skia/docs/examples/Pixmap_006.cpp -FILE: ../../../third_party/skia/docs/examples/Pixmap_007.cpp -FILE: ../../../third_party/skia/docs/examples/Pixmap_008.cpp -FILE: ../../../third_party/skia/docs/examples/Pixmap_009.cpp -FILE: ../../../third_party/skia/docs/examples/Pixmap_010.cpp -FILE: ../../../third_party/skia/docs/examples/Pixmap_011.cpp -FILE: ../../../third_party/skia/docs/examples/Pixmap_012.cpp -FILE: ../../../third_party/skia/docs/examples/Pixmap_013.cpp -FILE: ../../../third_party/skia/docs/examples/Pixmap_014.cpp -FILE: ../../../third_party/skia/docs/examples/Pixmap_015.cpp -FILE: ../../../third_party/skia/docs/examples/Pixmap_016.cpp -FILE: ../../../third_party/skia/docs/examples/Pixmap_017.cpp -FILE: ../../../third_party/skia/docs/examples/Pixmap_018.cpp -FILE: ../../../third_party/skia/docs/examples/Pixmap_019.cpp -FILE: ../../../third_party/skia/docs/examples/Pixmap_020.cpp -FILE: ../../../third_party/skia/docs/examples/Pixmap_021.cpp -FILE: ../../../third_party/skia/docs/examples/Pixmap_022.cpp -FILE: ../../../third_party/skia/docs/examples/Pixmap_023.cpp -FILE: ../../../third_party/skia/docs/examples/Pixmap_024.cpp -FILE: ../../../third_party/skia/docs/examples/Pixmap_025.cpp -FILE: ../../../third_party/skia/docs/examples/Pixmap_026.cpp -FILE: ../../../third_party/skia/docs/examples/Pixmap_027.cpp -FILE: ../../../third_party/skia/docs/examples/Pixmap_028.cpp -FILE: ../../../third_party/skia/docs/examples/Pixmap_029.cpp -FILE: ../../../third_party/skia/docs/examples/Pixmap_030.cpp -FILE: ../../../third_party/skia/docs/examples/Pixmap_031.cpp -FILE: ../../../third_party/skia/docs/examples/Pixmap_032.cpp -FILE: ../../../third_party/skia/docs/examples/Pixmap_033.cpp -FILE: ../../../third_party/skia/docs/examples/Pixmap_034.cpp -FILE: ../../../third_party/skia/docs/examples/Pixmap_035.cpp -FILE: ../../../third_party/skia/docs/examples/Pixmap_036.cpp -FILE: ../../../third_party/skia/docs/examples/Pixmap_037.cpp -FILE: ../../../third_party/skia/docs/examples/Pixmap_038.cpp -FILE: ../../../third_party/skia/docs/examples/Pixmap_039.cpp -FILE: ../../../third_party/skia/docs/examples/Pixmap_040.cpp -FILE: ../../../third_party/skia/docs/examples/Pixmap_041.cpp -FILE: ../../../third_party/skia/docs/examples/Pixmap_042.cpp -FILE: ../../../third_party/skia/docs/examples/Pixmap_043.cpp -FILE: ../../../third_party/skia/docs/examples/Pixmap_044.cpp -FILE: ../../../third_party/skia/docs/examples/Pixmap_045.cpp -FILE: ../../../third_party/skia/docs/examples/Pixmap_046.cpp -FILE: ../../../third_party/skia/docs/examples/Point_000.cpp -FILE: ../../../third_party/skia/docs/examples/Point_001.cpp -FILE: ../../../third_party/skia/docs/examples/Point_002.cpp -FILE: ../../../third_party/skia/docs/examples/Point_003.cpp -FILE: ../../../third_party/skia/docs/examples/Point_004.cpp -FILE: ../../../third_party/skia/docs/examples/Point_005.cpp -FILE: ../../../third_party/skia/docs/examples/Point_006.cpp -FILE: ../../../third_party/skia/docs/examples/Point_007.cpp -FILE: ../../../third_party/skia/docs/examples/Point_008.cpp -FILE: ../../../third_party/skia/docs/examples/Point_009.cpp -FILE: ../../../third_party/skia/docs/examples/Point_010.cpp -FILE: ../../../third_party/skia/docs/examples/Point_011.cpp -FILE: ../../../third_party/skia/docs/examples/Point_012.cpp -FILE: ../../../third_party/skia/docs/examples/Point_013.cpp -FILE: ../../../third_party/skia/docs/examples/Point_014.cpp -FILE: ../../../third_party/skia/docs/examples/Point_015.cpp -FILE: ../../../third_party/skia/docs/examples/Point_016.cpp -FILE: ../../../third_party/skia/docs/examples/Point_017.cpp -FILE: ../../../third_party/skia/docs/examples/Point_018.cpp -FILE: ../../../third_party/skia/docs/examples/Point_019.cpp -FILE: ../../../third_party/skia/docs/examples/Point_020.cpp -FILE: ../../../third_party/skia/docs/examples/Point_021.cpp -FILE: ../../../third_party/skia/docs/examples/Point_022.cpp -FILE: ../../../third_party/skia/docs/examples/Point_023.cpp -FILE: ../../../third_party/skia/docs/examples/Point_024.cpp -FILE: ../../../third_party/skia/docs/examples/Point_025.cpp -FILE: ../../../third_party/skia/docs/examples/Point_026.cpp -FILE: ../../../third_party/skia/docs/examples/Point_027.cpp -FILE: ../../../third_party/skia/docs/examples/Point_028.cpp -FILE: ../../../third_party/skia/docs/examples/Point_029.cpp -FILE: ../../../third_party/skia/docs/examples/Point_030.cpp -FILE: ../../../third_party/skia/docs/examples/Point_031.cpp -FILE: ../../../third_party/skia/docs/examples/Point_032.cpp -FILE: ../../../third_party/skia/docs/examples/Point_033.cpp -FILE: ../../../third_party/skia/docs/examples/Point_034.cpp -FILE: ../../../third_party/skia/docs/examples/Point_035.cpp -FILE: ../../../third_party/skia/docs/examples/Point_036.cpp -FILE: ../../../third_party/skia/docs/examples/Point_037.cpp -FILE: ../../../third_party/skia/docs/examples/RRect_000.cpp -FILE: ../../../third_party/skia/docs/examples/RRect_001.cpp -FILE: ../../../third_party/skia/docs/examples/RRect_002.cpp -FILE: ../../../third_party/skia/docs/examples/RRect_003.cpp -FILE: ../../../third_party/skia/docs/examples/RRect_004.cpp -FILE: ../../../third_party/skia/docs/examples/RRect_005.cpp -FILE: ../../../third_party/skia/docs/examples/RRect_006.cpp -FILE: ../../../third_party/skia/docs/examples/RRect_007.cpp -FILE: ../../../third_party/skia/docs/examples/RRect_008.cpp -FILE: ../../../third_party/skia/docs/examples/RRect_009.cpp -FILE: ../../../third_party/skia/docs/examples/RRect_010.cpp -FILE: ../../../third_party/skia/docs/examples/RRect_011.cpp -FILE: ../../../third_party/skia/docs/examples/RRect_012.cpp -FILE: ../../../third_party/skia/docs/examples/RRect_013.cpp -FILE: ../../../third_party/skia/docs/examples/RRect_014.cpp -FILE: ../../../third_party/skia/docs/examples/RRect_015.cpp -FILE: ../../../third_party/skia/docs/examples/RRect_016.cpp -FILE: ../../../third_party/skia/docs/examples/RRect_017.cpp -FILE: ../../../third_party/skia/docs/examples/RRect_018.cpp -FILE: ../../../third_party/skia/docs/examples/RRect_019.cpp -FILE: ../../../third_party/skia/docs/examples/RRect_020.cpp -FILE: ../../../third_party/skia/docs/examples/RRect_021.cpp -FILE: ../../../third_party/skia/docs/examples/RRect_022.cpp -FILE: ../../../third_party/skia/docs/examples/RRect_023.cpp -FILE: ../../../third_party/skia/docs/examples/RRect_024.cpp -FILE: ../../../third_party/skia/docs/examples/RRect_025.cpp -FILE: ../../../third_party/skia/docs/examples/RRect_026.cpp -FILE: ../../../third_party/skia/docs/examples/RRect_027.cpp -FILE: ../../../third_party/skia/docs/examples/RRect_028.cpp -FILE: ../../../third_party/skia/docs/examples/RRect_029.cpp -FILE: ../../../third_party/skia/docs/examples/RRect_030.cpp -FILE: ../../../third_party/skia/docs/examples/RRect_031.cpp -FILE: ../../../third_party/skia/docs/examples/RRect_032.cpp -FILE: ../../../third_party/skia/docs/examples/RRect_033.cpp -FILE: ../../../third_party/skia/docs/examples/RRect_034.cpp -FILE: ../../../third_party/skia/docs/examples/RRect_035.cpp -FILE: ../../../third_party/skia/docs/examples/RRect_036.cpp -FILE: ../../../third_party/skia/docs/examples/RRect_037.cpp -FILE: ../../../third_party/skia/docs/examples/RRect_038.cpp -FILE: ../../../third_party/skia/docs/examples/RRect_039.cpp -FILE: ../../../third_party/skia/docs/examples/RRect_040.cpp -FILE: ../../../third_party/skia/docs/examples/RRect_041.cpp -FILE: ../../../third_party/skia/docs/examples/RRect_042.cpp -FILE: ../../../third_party/skia/docs/examples/RRect_043.cpp -FILE: ../../../third_party/skia/docs/examples/RRect_044.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_000.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_001.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_002.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_003.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_004.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_005.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_006.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_007.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_008.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_009.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_010.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_011.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_012.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_013.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_014.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_015.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_016.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_017.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_018.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_019.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_020.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_021.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_022.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_023.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_024.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_025.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_026.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_027.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_028.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_029.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_030.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_031.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_032.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_033.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_034.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_035.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_036.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_037.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_038.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_039.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_040.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_041.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_042.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_043.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_044.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_045.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_046.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_047.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_048.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_049.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_050.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_051.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_052.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_053.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_054.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_055.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_056.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_057.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_058.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_059.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_060.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_061.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_062.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_063.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_064.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_065.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_066.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_067.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_068.cpp -FILE: ../../../third_party/skia/docs/examples/Rect_069.cpp -FILE: ../../../third_party/skia/docs/examples/Region_000.cpp -FILE: ../../../third_party/skia/docs/examples/Region_001.cpp -FILE: ../../../third_party/skia/docs/examples/Region_002.cpp -FILE: ../../../third_party/skia/docs/examples/Region_003.cpp -FILE: ../../../third_party/skia/docs/examples/Region_004.cpp -FILE: ../../../third_party/skia/docs/examples/Region_005.cpp -FILE: ../../../third_party/skia/docs/examples/Region_006.cpp -FILE: ../../../third_party/skia/docs/examples/Region_007.cpp -FILE: ../../../third_party/skia/docs/examples/Region_008.cpp -FILE: ../../../third_party/skia/docs/examples/Region_009.cpp -FILE: ../../../third_party/skia/docs/examples/Region_010.cpp -FILE: ../../../third_party/skia/docs/examples/Region_011.cpp -FILE: ../../../third_party/skia/docs/examples/Region_012.cpp -FILE: ../../../third_party/skia/docs/examples/Region_013.cpp -FILE: ../../../third_party/skia/docs/examples/Region_014.cpp -FILE: ../../../third_party/skia/docs/examples/Region_015.cpp -FILE: ../../../third_party/skia/docs/examples/Region_016.cpp -FILE: ../../../third_party/skia/docs/examples/Region_017.cpp -FILE: ../../../third_party/skia/docs/examples/Region_018.cpp -FILE: ../../../third_party/skia/docs/examples/Region_019.cpp -FILE: ../../../third_party/skia/docs/examples/Region_020.cpp -FILE: ../../../third_party/skia/docs/examples/Region_021.cpp -FILE: ../../../third_party/skia/docs/examples/Region_022.cpp -FILE: ../../../third_party/skia/docs/examples/Region_023.cpp -FILE: ../../../third_party/skia/docs/examples/Region_024.cpp -FILE: ../../../third_party/skia/docs/examples/Region_025.cpp -FILE: ../../../third_party/skia/docs/examples/Region_026.cpp -FILE: ../../../third_party/skia/docs/examples/Region_027.cpp -FILE: ../../../third_party/skia/docs/examples/Region_028.cpp -FILE: ../../../third_party/skia/docs/examples/Region_029.cpp -FILE: ../../../third_party/skia/docs/examples/Region_030.cpp -FILE: ../../../third_party/skia/docs/examples/Region_031.cpp -FILE: ../../../third_party/skia/docs/examples/Region_032.cpp -FILE: ../../../third_party/skia/docs/examples/Region_033.cpp -FILE: ../../../third_party/skia/docs/examples/Region_034.cpp -FILE: ../../../third_party/skia/docs/examples/Region_035.cpp -FILE: ../../../third_party/skia/docs/examples/Region_036.cpp -FILE: ../../../third_party/skia/docs/examples/Region_037.cpp -FILE: ../../../third_party/skia/docs/examples/Region_038.cpp -FILE: ../../../third_party/skia/docs/examples/Region_039.cpp -FILE: ../../../third_party/skia/docs/examples/Region_040.cpp -FILE: ../../../third_party/skia/docs/examples/Region_041.cpp -FILE: ../../../third_party/skia/docs/examples/Region_042.cpp -FILE: ../../../third_party/skia/docs/examples/Region_043.cpp -FILE: ../../../third_party/skia/docs/examples/Region_044.cpp -FILE: ../../../third_party/skia/docs/examples/Region_045.cpp -FILE: ../../../third_party/skia/docs/examples/Region_046.cpp -FILE: ../../../third_party/skia/docs/examples/Region_047.cpp -FILE: ../../../third_party/skia/docs/examples/Region_048.cpp -FILE: ../../../third_party/skia/docs/examples/Region_049.cpp -FILE: ../../../third_party/skia/docs/examples/Region_050.cpp -FILE: ../../../third_party/skia/docs/examples/Region_051.cpp -FILE: ../../../third_party/skia/docs/examples/Region_052.cpp -FILE: ../../../third_party/skia/docs/examples/Region_053.cpp -FILE: ../../../third_party/skia/docs/examples/Region_054.cpp -FILE: ../../../third_party/skia/docs/examples/Surface_000.cpp -FILE: ../../../third_party/skia/docs/examples/Surface_001.cpp -FILE: ../../../third_party/skia/docs/examples/Surface_002.cpp -FILE: ../../../third_party/skia/docs/examples/Surface_003.cpp -FILE: ../../../third_party/skia/docs/examples/Surface_004.cpp -FILE: ../../../third_party/skia/docs/examples/Surface_005.cpp -FILE: ../../../third_party/skia/docs/examples/Surface_006.cpp -FILE: ../../../third_party/skia/docs/examples/Surface_007.cpp -FILE: ../../../third_party/skia/docs/examples/Surface_008.cpp -FILE: ../../../third_party/skia/docs/examples/Surface_009.cpp -FILE: ../../../third_party/skia/docs/examples/Surface_010.cpp -FILE: ../../../third_party/skia/docs/examples/Surface_011.cpp -FILE: ../../../third_party/skia/docs/examples/Surface_012.cpp -FILE: ../../../third_party/skia/docs/examples/Surface_013.cpp -FILE: ../../../third_party/skia/docs/examples/Surface_015.cpp -FILE: ../../../third_party/skia/docs/examples/Surface_016.cpp -FILE: ../../../third_party/skia/docs/examples/Surface_017.cpp -FILE: ../../../third_party/skia/docs/examples/Surface_018.cpp -FILE: ../../../third_party/skia/docs/examples/Surface_019.cpp -FILE: ../../../third_party/skia/docs/examples/Surface_020.cpp -FILE: ../../../third_party/skia/docs/examples/Surface_021.cpp -FILE: ../../../third_party/skia/docs/examples/Surface_022.cpp -FILE: ../../../third_party/skia/docs/examples/Surface_023.cpp -FILE: ../../../third_party/skia/docs/examples/Surface_024.cpp -FILE: ../../../third_party/skia/docs/examples/Surface_025.cpp -FILE: ../../../third_party/skia/docs/examples/Surface_026.cpp -FILE: ../../../third_party/skia/docs/examples/Surface_027.cpp -FILE: ../../../third_party/skia/docs/examples/Surface_028.cpp -FILE: ../../../third_party/skia/docs/examples/TextBlobBuilder_000.cpp -FILE: ../../../third_party/skia/docs/examples/TextBlobBuilder_001.cpp -FILE: ../../../third_party/skia/docs/examples/TextBlobBuilder_002.cpp -FILE: ../../../third_party/skia/docs/examples/TextBlobBuilder_003.cpp -FILE: ../../../third_party/skia/docs/examples/TextBlobBuilder_004.cpp -FILE: ../../../third_party/skia/docs/examples/TextBlob_000.cpp -FILE: ../../../third_party/skia/docs/examples/TextBlob_001.cpp -FILE: ../../../third_party/skia/docs/examples/TextBlob_002.cpp -FILE: ../../../third_party/skia/docs/examples/TextBlob_003.cpp -FILE: ../../../third_party/skia/docs/examples/TextBlob_004.cpp -FILE: ../../../third_party/skia/docs/examples/TextBlob_005.cpp -FILE: ../../../third_party/skia/docs/examples/TextBlob_006.cpp -FILE: ../../../third_party/skia/docs/examples/TextBlob_007.cpp +FILE: ../../../third_party/skia/docs/examples/Picture_AbortCallback_abort.cpp +FILE: ../../../third_party/skia/docs/examples/Picture_MakeFromData.cpp +FILE: ../../../third_party/skia/docs/examples/Picture_MakeFromStream.cpp +FILE: ../../../third_party/skia/docs/examples/Picture_MakePlaceholder.cpp +FILE: ../../../third_party/skia/docs/examples/Picture_approximateBytesUsed.cpp +FILE: ../../../third_party/skia/docs/examples/Picture_approximateOpCount.cpp +FILE: ../../../third_party/skia/docs/examples/Picture_cullRect.cpp +FILE: ../../../third_party/skia/docs/examples/Picture_playback.cpp +FILE: ../../../third_party/skia/docs/examples/Picture_serialize.cpp +FILE: ../../../third_party/skia/docs/examples/Picture_serialize_2.cpp +FILE: ../../../third_party/skia/docs/examples/Picture_uniqueID.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_addr.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_addr16.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_addr16_2.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_addr32.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_addr32_2.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_addr64.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_addr64_2.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_addr8.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_addr8_2.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_addrF16.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_addrF16_2.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_addr_2.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_alphaType.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_bounds.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_colorSpace.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_colorType.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_computeByteSize.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_computeIsOpaque.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_const_SkImageInfo_const_star.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_empty_constructor.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_erase.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_erase_2.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_erase_3.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_extractSubset.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_getColor.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_height.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_info.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_isOpaque.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_readPixels.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_readPixels_2.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_readPixels_3.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_readPixels_4.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_reset.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_reset_2.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_rowBytes.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_rowBytesAsPixels.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_scalePixels.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_setColorSpace.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_shiftPerPixel.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_width.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_writable_addr.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_writable_addr16.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_writable_addr32.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_writable_addr64.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_writable_addr8.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_writable_addrF16.cpp +FILE: ../../../third_party/skia/docs/examples/Pixmap_writable_addr_2.cpp +FILE: ../../../third_party/skia/docs/examples/Plus.cpp +FILE: ../../../third_party/skia/docs/examples/Point_CrossProduct.cpp +FILE: ../../../third_party/skia/docs/examples/Point_Distance.cpp +FILE: ../../../third_party/skia/docs/examples/Point_DotProduct.cpp +FILE: ../../../third_party/skia/docs/examples/Point_Length.cpp +FILE: ../../../third_party/skia/docs/examples/Point_Make.cpp +FILE: ../../../third_party/skia/docs/examples/Point_Normalize.cpp +FILE: ../../../third_party/skia/docs/examples/Point_Offset.cpp +FILE: ../../../third_party/skia/docs/examples/Point_Offset_2.cpp +FILE: ../../../third_party/skia/docs/examples/Point_add_operator.cpp +FILE: ../../../third_party/skia/docs/examples/Point_addto_operator.cpp +FILE: ../../../third_party/skia/docs/examples/Point_cross.cpp +FILE: ../../../third_party/skia/docs/examples/Point_distanceToOrigin.cpp +FILE: ../../../third_party/skia/docs/examples/Point_dot.cpp +FILE: ../../../third_party/skia/docs/examples/Point_equal_operator.cpp +FILE: ../../../third_party/skia/docs/examples/Point_equals.cpp +FILE: ../../../third_party/skia/docs/examples/Point_isFinite.cpp +FILE: ../../../third_party/skia/docs/examples/Point_isZero.cpp +FILE: ../../../third_party/skia/docs/examples/Point_iset.cpp +FILE: ../../../third_party/skia/docs/examples/Point_iset_2.cpp +FILE: ../../../third_party/skia/docs/examples/Point_length_2.cpp +FILE: ../../../third_party/skia/docs/examples/Point_minus_operator.cpp +FILE: ../../../third_party/skia/docs/examples/Point_multiply_operator.cpp +FILE: ../../../third_party/skia/docs/examples/Point_multiplyby_operator.cpp +FILE: ../../../third_party/skia/docs/examples/Point_negate.cpp +FILE: ../../../third_party/skia/docs/examples/Point_normalize_2.cpp +FILE: ../../../third_party/skia/docs/examples/Point_notequal_operator.cpp +FILE: ../../../third_party/skia/docs/examples/Point_offset_3.cpp +FILE: ../../../third_party/skia/docs/examples/Point_scale.cpp +FILE: ../../../third_party/skia/docs/examples/Point_scale_2.cpp +FILE: ../../../third_party/skia/docs/examples/Point_set.cpp +FILE: ../../../third_party/skia/docs/examples/Point_setAbs.cpp +FILE: ../../../third_party/skia/docs/examples/Point_setLength.cpp +FILE: ../../../third_party/skia/docs/examples/Point_setLength_2.cpp +FILE: ../../../third_party/skia/docs/examples/Point_setNormalize.cpp +FILE: ../../../third_party/skia/docs/examples/Point_subtract_operator.cpp +FILE: ../../../third_party/skia/docs/examples/Point_subtractfrom_operator.cpp +FILE: ../../../third_party/skia/docs/examples/Point_x.cpp +FILE: ../../../third_party/skia/docs/examples/Point_y.cpp +FILE: ../../../third_party/skia/docs/examples/PreMultiplyARGB.cpp +FILE: ../../../third_party/skia/docs/examples/PreMultiplyColor.cpp +FILE: ../../../third_party/skia/docs/examples/Quad_a.cpp +FILE: ../../../third_party/skia/docs/examples/Quad_b.cpp +FILE: ../../../third_party/skia/docs/examples/RGBA4f_FromColor.cpp +FILE: ../../../third_party/skia/docs/examples/RGBA4f_equal1_operator.cpp +FILE: ../../../third_party/skia/docs/examples/RGBA4f_notequal1_operator.cpp +FILE: ../../../third_party/skia/docs/examples/RGBA4f_toSkColor.cpp +FILE: ../../../third_party/skia/docs/examples/RGBA4f_vec.cpp +FILE: ../../../third_party/skia/docs/examples/RGBA4f_vec_2.cpp +FILE: ../../../third_party/skia/docs/examples/RGBToHSV.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_Corner.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_MakeEmpty.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_MakeOval.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_MakeRect.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_MakeRectXY.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_Type.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_contains.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_copy_const_SkRRect.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_copy_operator.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_dump.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_dumpHex.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_dump_2.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_empty_constructor.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_equal_operator.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_getBounds.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_getSimpleRadii.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_getType.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_height.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_inset.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_inset_2.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_isComplex.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_isEmpty.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_isNinePatch.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_isOval.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_isRect.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_isSimple.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_isValid.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_makeOffset.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_notequal_operator.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_offset.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_outset.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_outset_2.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_radii.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_readFromMemory.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_rect.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_setEmpty.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_setNinePatch.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_setOval.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_setRect.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_setRectRadii.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_setRectXY.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_transform.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_type_2.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_width.cpp +FILE: ../../../third_party/skia/docs/examples/RRect_writeToMemory.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_Intersects.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_Make.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_MakeEmpty.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_MakeIWH.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_MakeLTRB.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_MakeSize.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_MakeWH.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_MakeXYWH.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_Make_2.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_asScalars.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_bottom.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_centerX.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_centerY.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_contains.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_contains_2.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_contains_3.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_dump.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_dumpHex.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_dump_2.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_equal_operator.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_height.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_inset.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_intersect.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_intersect_2.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_intersect_3.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_intersects_2.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_intersects_3.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_isEmpty.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_isFinite.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_isSorted.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_iset.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_isetWH.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_join.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_joinNonEmptyArg.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_joinPossiblyEmptyRect.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_join_2.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_left.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_makeInset.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_makeOffset.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_makeOutset.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_makeSorted.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_notequal_operator.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_offset.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_offsetTo.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_offset_2.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_outset.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_right.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_round.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_roundIn.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_roundOut.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_roundOut_2.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_roundOut_3.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_round_2.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_set.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_setBounds.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_setBoundsCheck.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_setBoundsNoCheck.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_setEmpty.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_setLTRB.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_setWH.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_setXYWH.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_set_2.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_set_3.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_set_4.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_sort.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_toQuad.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_top.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_width.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_x.cpp +FILE: ../../../third_party/skia/docs/examples/Rect_y.cpp +FILE: ../../../third_party/skia/docs/examples/Region_Cliperator_const_SkRegion_const_SkIRect.cpp +FILE: ../../../third_party/skia/docs/examples/Region_Cliperator_done.cpp +FILE: ../../../third_party/skia/docs/examples/Region_Cliperator_next.cpp +FILE: ../../../third_party/skia/docs/examples/Region_Cliperator_rect.cpp +FILE: ../../../third_party/skia/docs/examples/Region_Iterator_Iterator.cpp +FILE: ../../../third_party/skia/docs/examples/Region_Iterator_copy_const_SkRegion.cpp +FILE: ../../../third_party/skia/docs/examples/Region_Iterator_done.cpp +FILE: ../../../third_party/skia/docs/examples/Region_Iterator_next.cpp +FILE: ../../../third_party/skia/docs/examples/Region_Iterator_rect.cpp +FILE: ../../../third_party/skia/docs/examples/Region_Iterator_reset.cpp +FILE: ../../../third_party/skia/docs/examples/Region_Iterator_rewind.cpp +FILE: ../../../third_party/skia/docs/examples/Region_Iterator_rgn.cpp +FILE: ../../../third_party/skia/docs/examples/Region_Op.cpp +FILE: ../../../third_party/skia/docs/examples/Region_Spanerator_const_SkRegion_int_int_int.cpp +FILE: ../../../third_party/skia/docs/examples/Region_Spanerator_next.cpp +FILE: ../../../third_party/skia/docs/examples/Region_computeRegionComplexity.cpp +FILE: ../../../third_party/skia/docs/examples/Region_contains.cpp +FILE: ../../../third_party/skia/docs/examples/Region_contains_2.cpp +FILE: ../../../third_party/skia/docs/examples/Region_contains_3.cpp +FILE: ../../../third_party/skia/docs/examples/Region_copy_const_SkIRect.cpp +FILE: ../../../third_party/skia/docs/examples/Region_copy_const_SkRegion.cpp +FILE: ../../../third_party/skia/docs/examples/Region_copy_operator.cpp +FILE: ../../../third_party/skia/docs/examples/Region_destructor.cpp +FILE: ../../../third_party/skia/docs/examples/Region_empty_constructor.cpp +FILE: ../../../third_party/skia/docs/examples/Region_equal1_operator.cpp +FILE: ../../../third_party/skia/docs/examples/Region_getBoundaryPath.cpp +FILE: ../../../third_party/skia/docs/examples/Region_getBounds.cpp +FILE: ../../../third_party/skia/docs/examples/Region_intersects.cpp +FILE: ../../../third_party/skia/docs/examples/Region_intersects_2.cpp +FILE: ../../../third_party/skia/docs/examples/Region_isComplex.cpp +FILE: ../../../third_party/skia/docs/examples/Region_isEmpty.cpp +FILE: ../../../third_party/skia/docs/examples/Region_isRect.cpp +FILE: ../../../third_party/skia/docs/examples/Region_notequal1_operator.cpp +FILE: ../../../third_party/skia/docs/examples/Region_op_1.cpp +FILE: ../../../third_party/skia/docs/examples/Region_op_2.cpp +FILE: ../../../third_party/skia/docs/examples/Region_op_3.cpp +FILE: ../../../third_party/skia/docs/examples/Region_op_4.cpp +FILE: ../../../third_party/skia/docs/examples/Region_op_5.cpp +FILE: ../../../third_party/skia/docs/examples/Region_op_6.cpp +FILE: ../../../third_party/skia/docs/examples/Region_quickContains.cpp +FILE: ../../../third_party/skia/docs/examples/Region_quickContains_2.cpp +FILE: ../../../third_party/skia/docs/examples/Region_quickReject.cpp +FILE: ../../../third_party/skia/docs/examples/Region_quickReject_2.cpp +FILE: ../../../third_party/skia/docs/examples/Region_readFromMemory.cpp +FILE: ../../../third_party/skia/docs/examples/Region_set.cpp +FILE: ../../../third_party/skia/docs/examples/Region_setEmpty.cpp +FILE: ../../../third_party/skia/docs/examples/Region_setPath.cpp +FILE: ../../../third_party/skia/docs/examples/Region_setRect.cpp +FILE: ../../../third_party/skia/docs/examples/Region_setRect_2.cpp +FILE: ../../../third_party/skia/docs/examples/Region_setRects.cpp +FILE: ../../../third_party/skia/docs/examples/Region_setRegion.cpp +FILE: ../../../third_party/skia/docs/examples/Region_swap.cpp +FILE: ../../../third_party/skia/docs/examples/Region_translate.cpp +FILE: ../../../third_party/skia/docs/examples/Region_translate_2.cpp +FILE: ../../../third_party/skia/docs/examples/Region_writeToMemory.cpp +FILE: ../../../third_party/skia/docs/examples/Saturation.cpp +FILE: ../../../third_party/skia/docs/examples/Screen.cpp +FILE: ../../../third_party/skia/docs/examples/Shader_Methods_a.cpp +FILE: ../../../third_party/skia/docs/examples/Shader_Methods_b.cpp +FILE: ../../../third_party/skia/docs/examples/Soft_Light.cpp +FILE: ../../../third_party/skia/docs/examples/Src.cpp +FILE: ../../../third_party/skia/docs/examples/Src_Atop.cpp +FILE: ../../../third_party/skia/docs/examples/Src_In.cpp +FILE: ../../../third_party/skia/docs/examples/Src_Out.cpp +FILE: ../../../third_party/skia/docs/examples/Src_Over.cpp +FILE: ../../../third_party/skia/docs/examples/State_Stack_a.cpp +FILE: ../../../third_party/skia/docs/examples/State_Stack_b.cpp +FILE: ../../../third_party/skia/docs/examples/Stroke_Width.cpp +FILE: ../../../third_party/skia/docs/examples/Surface_MakeFromBackendTexture.cpp +FILE: ../../../third_party/skia/docs/examples/Surface_MakeFromBackendTextureAsRenderTarget.cpp +FILE: ../../../third_party/skia/docs/examples/Surface_MakeNull.cpp +FILE: ../../../third_party/skia/docs/examples/Surface_MakeRaster.cpp +FILE: ../../../third_party/skia/docs/examples/Surface_MakeRasterDirect.cpp +FILE: ../../../third_party/skia/docs/examples/Surface_MakeRasterDirectReleaseProc.cpp +FILE: ../../../third_party/skia/docs/examples/Surface_MakeRasterN32Premul.cpp +FILE: ../../../third_party/skia/docs/examples/Surface_MakeRaster_2.cpp +FILE: ../../../third_party/skia/docs/examples/Surface_MakeRenderTarget.cpp +FILE: ../../../third_party/skia/docs/examples/Surface_MakeRenderTarget_2.cpp +FILE: ../../../third_party/skia/docs/examples/Surface_MakeRenderTarget_3.cpp +FILE: ../../../third_party/skia/docs/examples/Surface_characterize.cpp +FILE: ../../../third_party/skia/docs/examples/Surface_draw.cpp +FILE: ../../../third_party/skia/docs/examples/Surface_draw_2.cpp +FILE: ../../../third_party/skia/docs/examples/Surface_getCanvas.cpp +FILE: ../../../third_party/skia/docs/examples/Surface_height.cpp +FILE: ../../../third_party/skia/docs/examples/Surface_makeImageSnapshot.cpp +FILE: ../../../third_party/skia/docs/examples/Surface_makeImageSnapshot_2.cpp +FILE: ../../../third_party/skia/docs/examples/Surface_makeSurface.cpp +FILE: ../../../third_party/skia/docs/examples/Surface_notifyContentWillChange.cpp +FILE: ../../../third_party/skia/docs/examples/Surface_peekPixels.cpp +FILE: ../../../third_party/skia/docs/examples/Surface_props.cpp +FILE: ../../../third_party/skia/docs/examples/Surface_readPixels.cpp +FILE: ../../../third_party/skia/docs/examples/Surface_readPixels_2.cpp +FILE: ../../../third_party/skia/docs/examples/Surface_readPixels_3.cpp +FILE: ../../../third_party/skia/docs/examples/Surface_width.cpp +FILE: ../../../third_party/skia/docs/examples/Surface_writePixels.cpp +FILE: ../../../third_party/skia/docs/examples/Surface_writePixels_2.cpp +FILE: ../../../third_party/skia/docs/examples/TextBlobBuilder_allocRun.cpp +FILE: ../../../third_party/skia/docs/examples/TextBlobBuilder_allocRunPos.cpp +FILE: ../../../third_party/skia/docs/examples/TextBlobBuilder_allocRunPosH.cpp +FILE: ../../../third_party/skia/docs/examples/TextBlobBuilder_empty_constructor.cpp +FILE: ../../../third_party/skia/docs/examples/TextBlobBuilder_make.cpp +FILE: ../../../third_party/skia/docs/examples/TextBlob_Deserialize.cpp +FILE: ../../../third_party/skia/docs/examples/TextBlob_MakeFromString.cpp +FILE: ../../../third_party/skia/docs/examples/TextBlob_MakeFromText.cpp +FILE: ../../../third_party/skia/docs/examples/TextBlob_bounds.cpp +FILE: ../../../third_party/skia/docs/examples/TextBlob_getIntercepts.cpp +FILE: ../../../third_party/skia/docs/examples/TextBlob_serialize.cpp +FILE: ../../../third_party/skia/docs/examples/TextBlob_serialize_2.cpp +FILE: ../../../third_party/skia/docs/examples/TextBlob_uniqueID.cpp +FILE: ../../../third_party/skia/docs/examples/Text_Encoding.cpp +FILE: ../../../third_party/skia/docs/examples/Text_Scale_X.cpp +FILE: ../../../third_party/skia/docs/examples/Text_Size.cpp +FILE: ../../../third_party/skia/docs/examples/Text_Skew_X.cpp +FILE: ../../../third_party/skia/docs/examples/Typeface_Methods.cpp +FILE: ../../../third_party/skia/docs/examples/Xor.cpp FILE: ../../../third_party/skia/gm/crbug_918512.cpp ---------------------------------------------------------------------------------------------------- Copyright 2019 Google LLC. From ee4abba58ce8b7ca576497ebe0d804b0a51a3c2a Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Wed, 20 Mar 2019 01:23:56 -0400 Subject: [PATCH 1434/1537] Roll src/third_party/skia 2894d13a0d9b..37a9294d2eb9 (1 commits) (#8222) https://skia.googlesource.com/skia.git/%2Blog/2894d13a0d9b..37a9294d2eb9 git log 2894d13a0d9b133587760f50c6026d536f869c29..37a9294d2eb985c5c8bf1462646e7b8b70aef5cb --date=short --no-merges --format=%ad %ae %s 2019-03-19 recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com Roll recipe dependencies (trivial). The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (brianosman@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 385733c55aaca..1ae592d55e60e 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '2894d13a0d9b133587760f50c6026d536f869c29', + 'skia_revision': '37a9294d2eb985c5c8bf1462646e7b8b70aef5cb', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 82c2d1c9653b0..cfcc2fa934341 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 3d1439a49fb74adc7f9c3154a6738954 +Signature: d7f06ebd15c8ce18dc4e0d9f873af3fc UNUSED LICENSES: From be9067cc764d4adced316db8a96186089d87892e Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Wed, 20 Mar 2019 04:52:13 -0400 Subject: [PATCH 1435/1537] Roll src/third_party/skia 37a9294d2eb9..d7d93001ead2 (2 commits) (#8223) https://skia.googlesource.com/skia.git/%2Blog/37a9294d2eb9..d7d93001ead2 git log 37a9294d2eb985c5c8bf1462646e7b8b70aef5cb..d7d93001ead20ddf31d2c4352ccf2fd6b87f791b --date=short --no-merges --format=%ad %ae %s 2019-03-20 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/angle2 df35e382de78..6ce1be5a5a53 (2 commits) 2019-03-20 skia-recreate-skps@skia-swarming-bots.iam.gserviceaccount.com Update go_deps asset The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (brianosman@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 1ae592d55e60e..4d0bff78fbe2f 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '37a9294d2eb985c5c8bf1462646e7b8b70aef5cb', + 'skia_revision': 'd7d93001ead20ddf31d2c4352ccf2fd6b87f791b', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index cfcc2fa934341..64c2a23bb2907 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: d7f06ebd15c8ce18dc4e0d9f873af3fc +Signature: 8074c43ec379bde76e8bce94445a404b UNUSED LICENSES: From e88573aef75d3bb906512ad35ce7ab547cb4d9a2 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Wed, 20 Mar 2019 08:21:12 -0400 Subject: [PATCH 1436/1537] Roll src/third_party/skia d7d93001ead2..4273a150f84d (1 commits) (#8224) https://skia.googlesource.com/skia.git/%2Blog/d7d93001ead2..4273a150f84d git log d7d93001ead20ddf31d2c4352ccf2fd6b87f791b..4273a150f84d70a9acc340261fd5e7be1af310a5 --date=short --no-merges --format=%ad %ae %s 2019-03-20 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader f2564656e7af..3e485a4f3ec8 (1 commits) The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (brianosman@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 4d0bff78fbe2f..e54cf9ce84691 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'd7d93001ead20ddf31d2c4352ccf2fd6b87f791b', + 'skia_revision': '4273a150f84d70a9acc340261fd5e7be1af310a5', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 64c2a23bb2907..670d982e48c54 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 8074c43ec379bde76e8bce94445a404b +Signature: 0a2fd38c998e20b99ec89e55e3387451 UNUSED LICENSES: From d9b6629b61050a530dbe8d15b53c19068bc30c07 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Wed, 20 Mar 2019 11:51:14 -0400 Subject: [PATCH 1437/1537] Roll src/third_party/skia 4273a150f84d..ba91f65f2070 (6 commits) (#8225) https://skia.googlesource.com/skia.git/%2Blog/4273a150f84d..ba91f65f2070 git log 4273a150f84d70a9acc340261fd5e7be1af310a5..ba91f65f20701ce6ae6b43556d1ffb7c8be61a73 --date=short --no-merges --format=%ad %ae %s 2019-03-19 jvanverth@google.com Tweaks to Metal pipeline state. 2019-03-20 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader 3e485a4f3ec8..5851ef46d285 (1 commits) 2019-03-20 kjlubick@google.com Make ios actually fail 2019-03-20 brianosman@google.com Remove all of the _as_paths GMs 2019-03-19 kjlubick@google.com [canvaskit] Add requestAnimationFrame to SkSurface 2019-03-20 recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com Roll recipe dependencies (trivial). The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (brianosman@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/DEPS b/DEPS index e54cf9ce84691..c46ff955513f2 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '4273a150f84d70a9acc340261fd5e7be1af310a5', + 'skia_revision': 'ba91f65f20701ce6ae6b43556d1ffb7c8be61a73', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 670d982e48c54..f31176df3dbc4 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 0a2fd38c998e20b99ec89e55e3387451 +Signature: affcc1ae5b1bd60f3e3e4839e61b054a UNUSED LICENSES: @@ -4228,7 +4228,6 @@ FILE: ../../../third_party/skia/gm/pictureshadercache.cpp FILE: ../../../third_party/skia/gm/radial_gradient_precision.cpp FILE: ../../../third_party/skia/gm/savelayer.cpp FILE: ../../../third_party/skia/gm/shadowutils.cpp -FILE: ../../../third_party/skia/gm/shapes_as_paths.cpp FILE: ../../../third_party/skia/gm/simple_magnification.cpp FILE: ../../../third_party/skia/gm/srgb.cpp FILE: ../../../third_party/skia/gm/testgradient.cpp From 3b19a4d30f50e183ed998484c42b02607c674d5c Mon Sep 17 00:00:00 2001 From: Ben Konyi Date: Wed, 20 Mar 2019 08:42:25 -0700 Subject: [PATCH 1438/1537] Removed dart_plugin_tag from DEPS --- DEPS | 4 ---- 1 file changed, 4 deletions(-) diff --git a/DEPS b/DEPS index c46ff955513f2..14ff86a7710d6 100644 --- a/DEPS +++ b/DEPS @@ -72,7 +72,6 @@ vars = { 'dart_package_config_tag': '1.0.5', 'dart_package_resolver_tag': '1.0.10', 'dart_path_tag': '1.6.2', - 'dart_plugin_tag': 'f5b4b0e32d1406d62daccea030ba6457d14b1c47', 'dart_pool_tag': '1.3.6', 'dart_protobuf_rev': '0c77167b16d00b561a6055bfe26690af7f26ae88', 'dart_pub_rev': '3c060aae47985e9a248b850f1d0450304a5c97e3', @@ -279,9 +278,6 @@ deps = { 'src/third_party/dart/third_party/pkg/pool': Var('dart_git') + '/pool.git' + '@' + Var('dart_pool_tag'), - 'src/third_party/dart/third_party/pkg/plugin': - Var('dart_git') + '/plugin.git' + '@' + Var('dart_plugin_tag'), - 'src/third_party/dart/third_party/pkg/protobuf': Var('dart_git') + '/protobuf.git' + '@' + Var('dart_protobuf_rev'), From bb354363e0bb5cee5d8e561f144a9bc7e1d364cc Mon Sep 17 00:00:00 2001 From: Ben Konyi Date: Wed, 20 Mar 2019 09:44:09 -0700 Subject: [PATCH 1439/1537] Roll src/third_party/dart 70e3e67dd7..5e9df35a57 (45 commits) 5e9df35a57 [vm/ffi] Correctly sign- or zero-extend arguments and return values from native code. 33491a7d61 [infra] Remove unneeded check in test.py def9671d32 [VM/SIMDBC] Add simdbc64 bytecodes to allow LoadIndexed/StoreIndexed to work on untagged arrays 8af57275eb Can't override implied setter covariantly 578249629d [co19 DEPS updated] c4c0db440c Handle ir constants in noSuchMethod handling and deferred load 58882ffdd4 VM reads import uri if kernel binary version >= 22 3c2bfa554a Resolve type conflicts in dart:js e9e0daee5c Add importUri and fileUri to Source. 4daa9b94ea [cfe] Compile if elements in lists and sets c9efa472da Remove instrumentTopLevelInference as it is redundant with expectation files 57ac8b1ad9 Remove redundant instrumentation from tests and expectations. 6e1888af6b Circular type inference leads to InvalidType 479483ed13 Compute isGenericCovariantImpl in outline phase b18b626d78 Remove deprecated AST structures related to the "UI as code" feature. 7fe4253a4e [analyzer] fix #36158, implicit cast missing on covariant return type 7e14f2aded Removed mirror methods from DeferredLoadTask dec7e65334 Delete Flags.enableExperimentalMirrors 7eabbe70cd Make the --repl-compile option visible 9c8e6dc42c [analyzer] rewrite mostSpecificTypeArgument to use asInstanceOf 565e56dba6 [vm] Reduce cost of allocation tracing. eaf41e49bf Re-land Linter 0.1.83 337a252c31 [analyzer] UI as code test cleanup 89f00ab25f Add a build rule for bytecode version of kernel_service.dill fadf9b5fb3 [vm] Account for direct code calls from unoptimized code for --reused_instructions. d0bdfee041 Fix DDC cast -- cast key/value/element individually & don't clobber names. 67243e0396 AstTextPrinter that prints AST tokens into their original positions. d214646d89 Remove TestAnalysisContext and related. 22c535ac6e [dartdevc] simplify code for emitting constants 040fa0f83c Add undefined identifier test for for loops 21810c2aa1 Include gen_kernel_bytecode in create_sdk so that it can be uploaded by the builders 5614f8d771 Revert "bump linter to 0.1.83" 85e5684863 Remove OptionsWorkManager and GenerateOptionsErrorsTask is not a task. 33100aa1ce Delete some copy/pasted doc comments 2c001aacc0 [vm] Address various quirks observed in Fuchsia profiling samples. 9910374c20 Fix mistakes in control flow ambiguity test. 87108efecb [gardening] Update flutter patch so flutter compile_test passes. 55f3edadbe [dartdevc] Initial support for spread collections 2ceaccf5f6 Report EQUAL_ELEMENTS_IN_CONST_SET. 0c34bf13ea update ElementResolver postfix NNBD bang processing 9788949db8 Run dartfmt on pkg/analyzer/test/dart/ast/ast_test.dart d012972c8d [CFE] Fold the asExpression call into the unique function. ee1e036adf [CFE] Lazy constant evaluation for maybe-evaluated expressions. 330b958e20 [CFE] Check for null in constant evaluation. ca5ac975fe Fix for crash in _DartNavigationComputerVisitor._addUriDirectiveRegion when part has invalid URI. --- DEPS | 6 +++--- ci/licenses_golden/licenses_third_party | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/DEPS b/DEPS index 14ff86a7710d6..b5165ea9e0442 100644 --- a/DEPS +++ b/DEPS @@ -31,7 +31,7 @@ vars = { # Dart is: https://github.com/dart-lang/sdk/blob/master/DEPS. # You can use //tools/dart/create_updated_flutter_deps.py to produce # updated revision list of existing dependencies. - 'dart_revision': '70e3e67dd71267a611429602b342d484fca9b89b', + 'dart_revision': '5e9df35a5794413202fbcaf0c41f6d4c5d2e7b81', # WARNING: DO NOT EDIT MANUALLY # The lines between blank lines above and below are generated by a script. See create_updated_flutter_deps.py @@ -48,7 +48,7 @@ vars = { 'dart_crypto_tag': '2.0.6', 'dart_csslib_tag': '0.14.4+1', 'dart_dart2js_info_tag': '0.6.0', - 'dart_dart_style_tag': '1.2.2', + 'dart_dart_style_tag': '1.2.4', 'dart_dartdoc_tag': 'v0.28.2', 'dart_fixnum_tag': '0.10.9', 'dart_glob_tag': '1.1.7', @@ -60,7 +60,7 @@ vars = { 'dart_http_throttle_tag': '1.0.2', 'dart_intl_tag': '0.15.7', 'dart_json_rpc_2_tag': '2.0.9', - 'dart_linter_tag': '0.1.82', + 'dart_linter_tag': '0.1.83', 'dart_logging_tag': '0.11.3+2', 'dart_markdown_tag': '2.0.2', 'dart_matcher_tag': '0.12.3', diff --git a/ci/licenses_golden/licenses_third_party b/ci/licenses_golden/licenses_third_party index fa339383e919c..6e749b255b82f 100644 --- a/ci/licenses_golden/licenses_third_party +++ b/ci/licenses_golden/licenses_third_party @@ -1,4 +1,4 @@ -Signature: c306c24d471bef4884795341830a763e +Signature: d8611addc54dd5fe85355e2e888206d4 UNUSED LICENSES: From 1dbd2046b57a5d6a952a80365f12d8651e7cbd18 Mon Sep 17 00:00:00 2001 From: Matt Carroll Date: Wed, 20 Mar 2019 11:30:49 -0700 Subject: [PATCH 1440/1537] Moved io.flutter.embedding.engine.android package to io.flutter.embedding.android (#8221) --- ci/licenses_golden/licenses_flutter | 14 +++++++------- shell/platform/android/BUILD.gn | 14 +++++++------- .../{engine => }/android/AndroidKeyProcessor.java | 2 +- .../android/AndroidTouchProcessor.java | 6 ++++-- .../{engine => }/android/FlutterActivity.java | 2 +- .../{engine => }/android/FlutterFragment.java | 2 +- .../{engine => }/android/FlutterSurfaceView.java | 4 +--- .../{engine => }/android/FlutterTextureView.java | 4 +--- .../{engine => }/android/FlutterView.java | 6 +----- .../embedding/engine/renderer/FlutterRenderer.java | 3 ++- .../android/io/flutter/view/FlutterView.java | 5 ++--- tools/android_lint/baseline.xml | 2 +- 12 files changed, 29 insertions(+), 35 deletions(-) rename shell/platform/android/io/flutter/embedding/{engine => }/android/AndroidKeyProcessor.java (98%) rename shell/platform/android/io/flutter/embedding/{engine => }/android/AndroidTouchProcessor.java (98%) rename shell/platform/android/io/flutter/embedding/{engine => }/android/FlutterActivity.java (99%) rename shell/platform/android/io/flutter/embedding/{engine => }/android/FlutterFragment.java (99%) rename shell/platform/android/io/flutter/embedding/{engine => }/android/FlutterSurfaceView.java (98%) rename shell/platform/android/io/flutter/embedding/{engine => }/android/FlutterTextureView.java (98%) rename shell/platform/android/io/flutter/embedding/{engine => }/android/FlutterView.java (99%) diff --git a/ci/licenses_golden/licenses_flutter b/ci/licenses_golden/licenses_flutter index 55a5f63693062..6c669632c5213 100644 --- a/ci/licenses_golden/licenses_flutter +++ b/ci/licenses_golden/licenses_flutter @@ -467,16 +467,16 @@ FILE: ../../../flutter/shell/platform/android/io/flutter/app/FlutterActivityEven FILE: ../../../flutter/shell/platform/android/io/flutter/app/FlutterApplication.java FILE: ../../../flutter/shell/platform/android/io/flutter/app/FlutterFragmentActivity.java FILE: ../../../flutter/shell/platform/android/io/flutter/app/FlutterPluginRegistry.java +FILE: ../../../flutter/shell/platform/android/io/flutter/embedding/android/AndroidKeyProcessor.java +FILE: ../../../flutter/shell/platform/android/io/flutter/embedding/android/AndroidTouchProcessor.java +FILE: ../../../flutter/shell/platform/android/io/flutter/embedding/android/FlutterActivity.java +FILE: ../../../flutter/shell/platform/android/io/flutter/embedding/android/FlutterFragment.java +FILE: ../../../flutter/shell/platform/android/io/flutter/embedding/android/FlutterSurfaceView.java +FILE: ../../../flutter/shell/platform/android/io/flutter/embedding/android/FlutterTextureView.java +FILE: ../../../flutter/shell/platform/android/io/flutter/embedding/android/FlutterView.java FILE: ../../../flutter/shell/platform/android/io/flutter/embedding/engine/FlutterEngine.java FILE: ../../../flutter/shell/platform/android/io/flutter/embedding/engine/FlutterJNI.java FILE: ../../../flutter/shell/platform/android/io/flutter/embedding/engine/FlutterShellArgs.java -FILE: ../../../flutter/shell/platform/android/io/flutter/embedding/engine/android/AndroidKeyProcessor.java -FILE: ../../../flutter/shell/platform/android/io/flutter/embedding/engine/android/AndroidTouchProcessor.java -FILE: ../../../flutter/shell/platform/android/io/flutter/embedding/engine/android/FlutterActivity.java -FILE: ../../../flutter/shell/platform/android/io/flutter/embedding/engine/android/FlutterFragment.java -FILE: ../../../flutter/shell/platform/android/io/flutter/embedding/engine/android/FlutterSurfaceView.java -FILE: ../../../flutter/shell/platform/android/io/flutter/embedding/engine/android/FlutterTextureView.java -FILE: ../../../flutter/shell/platform/android/io/flutter/embedding/engine/android/FlutterView.java FILE: ../../../flutter/shell/platform/android/io/flutter/embedding/engine/dart/DartExecutor.java FILE: ../../../flutter/shell/platform/android/io/flutter/embedding/engine/dart/DartMessenger.java FILE: ../../../flutter/shell/platform/android/io/flutter/embedding/engine/dart/PlatformMessageHandler.java diff --git a/shell/platform/android/BUILD.gn b/shell/platform/android/BUILD.gn index bb5b74c05e5b7..e26d71a30e38e 100644 --- a/shell/platform/android/BUILD.gn +++ b/shell/platform/android/BUILD.gn @@ -109,16 +109,16 @@ java_library("flutter_shell_java") { "io/flutter/app/FlutterApplication.java", "io/flutter/app/FlutterFragmentActivity.java", "io/flutter/app/FlutterPluginRegistry.java", + "io/flutter/embedding/android/AndroidKeyProcessor.java", + "io/flutter/embedding/android/AndroidTouchProcessor.java", + "io/flutter/embedding/android/FlutterActivity.java", + "io/flutter/embedding/android/FlutterFragment.java", + "io/flutter/embedding/android/FlutterSurfaceView.java", + "io/flutter/embedding/android/FlutterTextureView.java", + "io/flutter/embedding/android/FlutterView.java", "io/flutter/embedding/engine/FlutterEngine.java", "io/flutter/embedding/engine/FlutterJNI.java", "io/flutter/embedding/engine/FlutterShellArgs.java", - "io/flutter/embedding/engine/android/AndroidKeyProcessor.java", - "io/flutter/embedding/engine/android/AndroidTouchProcessor.java", - "io/flutter/embedding/engine/android/FlutterActivity.java", - "io/flutter/embedding/engine/android/FlutterFragment.java", - "io/flutter/embedding/engine/android/FlutterSurfaceView.java", - "io/flutter/embedding/engine/android/FlutterTextureView.java", - "io/flutter/embedding/engine/android/FlutterView.java", "io/flutter/embedding/engine/dart/DartExecutor.java", "io/flutter/embedding/engine/dart/DartMessenger.java", "io/flutter/embedding/engine/dart/PlatformMessageHandler.java", diff --git a/shell/platform/android/io/flutter/embedding/engine/android/AndroidKeyProcessor.java b/shell/platform/android/io/flutter/embedding/android/AndroidKeyProcessor.java similarity index 98% rename from shell/platform/android/io/flutter/embedding/engine/android/AndroidKeyProcessor.java rename to shell/platform/android/io/flutter/embedding/android/AndroidKeyProcessor.java index 09f992de7c6d1..9ceb3900506e4 100644 --- a/shell/platform/android/io/flutter/embedding/engine/android/AndroidKeyProcessor.java +++ b/shell/platform/android/io/flutter/embedding/android/AndroidKeyProcessor.java @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -package io.flutter.embedding.engine.android; +package io.flutter.embedding.android; import android.support.annotation.NonNull; import android.support.annotation.Nullable; diff --git a/shell/platform/android/io/flutter/embedding/engine/android/AndroidTouchProcessor.java b/shell/platform/android/io/flutter/embedding/android/AndroidTouchProcessor.java similarity index 98% rename from shell/platform/android/io/flutter/embedding/engine/android/AndroidTouchProcessor.java rename to shell/platform/android/io/flutter/embedding/android/AndroidTouchProcessor.java index 8598b8a8df772..ce69702143551 100644 --- a/shell/platform/android/io/flutter/embedding/engine/android/AndroidTouchProcessor.java +++ b/shell/platform/android/io/flutter/embedding/android/AndroidTouchProcessor.java @@ -1,4 +1,4 @@ -package io.flutter.embedding.engine.android; +package io.flutter.embedding.android; import android.os.Build; import android.support.annotation.IntDef; @@ -164,7 +164,9 @@ public boolean onGenericMotionEvent(MotionEvent event) { // ACTION_HOVER_MOVE always applies to a single pointer only. addPointerForIndex(event, event.getActionIndex(), pointerChange, 0, packet); - assert(packet.position() % (POINTER_DATA_FIELD_COUNT * BYTES_PER_FIELD) != 0); + if (packet.position() % (POINTER_DATA_FIELD_COUNT * BYTES_PER_FIELD) != 0) { + throw new AssertionError("Packet position is not on field boundary."); + } renderer.dispatchPointerDataPacket(packet, packet.position()); return true; } diff --git a/shell/platform/android/io/flutter/embedding/engine/android/FlutterActivity.java b/shell/platform/android/io/flutter/embedding/android/FlutterActivity.java similarity index 99% rename from shell/platform/android/io/flutter/embedding/engine/android/FlutterActivity.java rename to shell/platform/android/io/flutter/embedding/android/FlutterActivity.java index cdaab64827699..0b75d129c6cf6 100644 --- a/shell/platform/android/io/flutter/embedding/engine/android/FlutterActivity.java +++ b/shell/platform/android/io/flutter/embedding/android/FlutterActivity.java @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -package io.flutter.embedding.engine.android; +package io.flutter.embedding.android; import android.content.Context; import android.content.Intent; diff --git a/shell/platform/android/io/flutter/embedding/engine/android/FlutterFragment.java b/shell/platform/android/io/flutter/embedding/android/FlutterFragment.java similarity index 99% rename from shell/platform/android/io/flutter/embedding/engine/android/FlutterFragment.java rename to shell/platform/android/io/flutter/embedding/android/FlutterFragment.java index bc19348f7f06a..53c283d934c1a 100644 --- a/shell/platform/android/io/flutter/embedding/engine/android/FlutterFragment.java +++ b/shell/platform/android/io/flutter/embedding/android/FlutterFragment.java @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -package io.flutter.embedding.engine.android; +package io.flutter.embedding.android; import android.content.Context; import android.content.Intent; diff --git a/shell/platform/android/io/flutter/embedding/engine/android/FlutterSurfaceView.java b/shell/platform/android/io/flutter/embedding/android/FlutterSurfaceView.java similarity index 98% rename from shell/platform/android/io/flutter/embedding/engine/android/FlutterSurfaceView.java rename to shell/platform/android/io/flutter/embedding/android/FlutterSurfaceView.java index 944e26b7c84a8..c28eac9c5d1a1 100644 --- a/shell/platform/android/io/flutter/embedding/engine/android/FlutterSurfaceView.java +++ b/shell/platform/android/io/flutter/embedding/android/FlutterSurfaceView.java @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -package io.flutter.embedding.engine.android; +package io.flutter.embedding.android; import android.content.Context; import android.support.annotation.NonNull; @@ -12,8 +12,6 @@ import android.view.SurfaceHolder; import android.view.SurfaceView; -import java.nio.ByteBuffer; - import io.flutter.embedding.engine.renderer.FlutterRenderer; /** diff --git a/shell/platform/android/io/flutter/embedding/engine/android/FlutterTextureView.java b/shell/platform/android/io/flutter/embedding/android/FlutterTextureView.java similarity index 98% rename from shell/platform/android/io/flutter/embedding/engine/android/FlutterTextureView.java rename to shell/platform/android/io/flutter/embedding/android/FlutterTextureView.java index 048fc71a4430f..32850ff17e875 100644 --- a/shell/platform/android/io/flutter/embedding/engine/android/FlutterTextureView.java +++ b/shell/platform/android/io/flutter/embedding/android/FlutterTextureView.java @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -package io.flutter.embedding.engine.android; +package io.flutter.embedding.android; import android.content.Context; import android.graphics.SurfaceTexture; @@ -13,8 +13,6 @@ import android.view.Surface; import android.view.TextureView; -import java.nio.ByteBuffer; - import io.flutter.embedding.engine.renderer.FlutterRenderer; /** diff --git a/shell/platform/android/io/flutter/embedding/engine/android/FlutterView.java b/shell/platform/android/io/flutter/embedding/android/FlutterView.java similarity index 99% rename from shell/platform/android/io/flutter/embedding/engine/android/FlutterView.java rename to shell/platform/android/io/flutter/embedding/android/FlutterView.java index 3c104b32c61f3..8469519b3ee63 100644 --- a/shell/platform/android/io/flutter/embedding/engine/android/FlutterView.java +++ b/shell/platform/android/io/flutter/embedding/android/FlutterView.java @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -package io.flutter.embedding.engine.android; +package io.flutter.embedding.android; import android.annotation.TargetApi; import android.content.Context; @@ -10,7 +10,6 @@ import android.graphics.Rect; import android.os.Build; import android.os.LocaleList; -import android.provider.Settings; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.annotation.RequiresApi; @@ -20,7 +19,6 @@ import android.view.KeyEvent; import android.view.MotionEvent; import android.view.WindowInsets; -import android.view.WindowManager; import android.view.accessibility.AccessibilityManager; import android.view.accessibility.AccessibilityNodeProvider; import android.view.inputmethod.EditorInfo; @@ -33,10 +31,8 @@ import io.flutter.embedding.engine.FlutterEngine; import io.flutter.embedding.engine.renderer.FlutterRenderer; -import io.flutter.embedding.engine.systemchannels.AccessibilityChannel; import io.flutter.plugin.editing.TextInputPlugin; import io.flutter.view.AccessibilityBridge; -import io.flutter.view.VsyncWaiter; /** * Displays a Flutter UI on an Android device. diff --git a/shell/platform/android/io/flutter/embedding/engine/renderer/FlutterRenderer.java b/shell/platform/android/io/flutter/embedding/engine/renderer/FlutterRenderer.java index dd0e198c1f26a..5fd3521e545df 100644 --- a/shell/platform/android/io/flutter/embedding/engine/renderer/FlutterRenderer.java +++ b/shell/platform/android/io/flutter/embedding/engine/renderer/FlutterRenderer.java @@ -15,6 +15,7 @@ import java.nio.ByteBuffer; import java.util.concurrent.atomic.AtomicLong; +import io.flutter.embedding.android.FlutterView; import io.flutter.embedding.engine.FlutterJNI; import io.flutter.view.TextureRegistry; @@ -29,7 +30,7 @@ * code via JNI. The corresponding {@link RenderSurface} is used as a delegate to carry out * certain actions on behalf of this {@code FlutterRenderer} within an Android view hierarchy. * - * {@link io.flutter.embedding.engine.android.FlutterView} is an implementation of a {@link RenderSurface}. + * {@link FlutterView} is an implementation of a {@link RenderSurface}. */ @TargetApi(Build.VERSION_CODES.JELLY_BEAN) public class FlutterRenderer implements TextureRegistry { diff --git a/shell/platform/android/io/flutter/view/FlutterView.java b/shell/platform/android/io/flutter/view/FlutterView.java index 0935ab6af2e86..4faef7d518ba9 100644 --- a/shell/platform/android/io/flutter/view/FlutterView.java +++ b/shell/platform/android/io/flutter/view/FlutterView.java @@ -15,7 +15,6 @@ import android.os.Build; import android.os.Handler; import android.os.LocaleList; -import android.provider.Settings; import android.support.annotation.RequiresApi; import android.text.format.DateFormat; import android.util.AttributeSet; @@ -28,8 +27,8 @@ import android.view.inputmethod.InputMethodManager; import io.flutter.app.FlutterPluginRegistry; import io.flutter.embedding.engine.FlutterJNI; -import io.flutter.embedding.engine.android.AndroidKeyProcessor; -import io.flutter.embedding.engine.android.AndroidTouchProcessor; +import io.flutter.embedding.android.AndroidKeyProcessor; +import io.flutter.embedding.android.AndroidTouchProcessor; import io.flutter.embedding.engine.dart.DartExecutor; import io.flutter.embedding.engine.renderer.FlutterRenderer; import io.flutter.embedding.engine.systemchannels.AccessibilityChannel; diff --git a/tools/android_lint/baseline.xml b/tools/android_lint/baseline.xml index 8bf5af53ea8c0..bc6c463610096 100644 --- a/tools/android_lint/baseline.xml +++ b/tools/android_lint/baseline.xml @@ -480,7 +480,7 @@ errorLine1=" public boolean onTouchEvent(MotionEvent event) {" errorLine2=" ~~~~~~~~~~~~"> From 45b19e47c370dac2589e108bd97e6c80a5cd2d01 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Wed, 20 Mar 2019 15:21:13 -0400 Subject: [PATCH 1441/1537] Roll src/third_party/skia ba91f65f2070..7e2c0614a2fd (13 commits) (#8228) https://skia.googlesource.com/skia.git/%2Blog/ba91f65f2070..7e2c0614a2fd git log ba91f65f20701ce6ae6b43556d1ffb7c8be61a73..7e2c0614a2fd08e418b789939dfdad9b76e70fa7 --date=short --no-merges --format=%ad %ae %s 2019-03-20 brianosman@google.com Remove spurious ';' 2019-03-20 mtklein@google.com de-Sk tools/trace 2019-03-20 mtklein@google.com de-Sk tools/debugger 2019-03-20 mtklein@google.com SkAnimTimer -> AnimTimer 2019-03-20 mtklein@google.com fold sk_pixel_iter.h into ToolUtils 2019-03-20 mtklein@google.com sk_tool_utils -> ToolUtils, and git clang-format 2019-03-20 rmistry@google.com Add ability to skip adb binary push 2019-03-20 mtklein@google.com de-Sk tools/font, and git clang-format 2019-03-20 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/angle2 6ce1be5a5a53..a532570a09b8 (4 commits) 2019-03-20 mtklein@google.com remove Sk prefix from CommandLineFlags 2019-03-20 mtklein@google.com upgrade clang_linux to LLVM 8 2019-03-20 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader 5851ef46d285..00ba176c0c40 (1 commits) 2019-03-20 ethannicholas@google.com Revert "Revert "more relaxed precision decorations for SPIR-V output"" The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (brianosman@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index b5165ea9e0442..8cb76a7291be3 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'ba91f65f20701ce6ae6b43556d1ffb7c8be61a73', + 'skia_revision': '7e2c0614a2fd08e418b789939dfdad9b76e70fa7', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index f31176df3dbc4..f045a7abd0fcd 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: affcc1ae5b1bd60f3e3e4839e61b054a +Signature: 69cdeba5983041274e6ecad0313aaa0a UNUSED LICENSES: @@ -2182,6 +2182,7 @@ FILE: ../../../third_party/skia/infra/bots/recipe_modules/checkout/examples/full FILE: ../../../third_party/skia/infra/bots/recipe_modules/checkout/examples/full.expected/trybot.json FILE: ../../../third_party/skia/infra/bots/recipe_modules/doxygen/examples/full.expected/doxygen.json FILE: ../../../third_party/skia/infra/bots/recipe_modules/env/examples/full.expected/test.json +FILE: ../../../third_party/skia/infra/bots/recipe_modules/flavor/examples/full.expected/Perf-Android-Clang-AndroidOne-GPU-Mali400MP2-arm-Release-All-Android_SkottieTracing.json FILE: ../../../third_party/skia/infra/bots/recipe_modules/flavor/examples/full.expected/Perf-Android-Clang-GalaxyS7_G930FD-GPU-MaliT880-arm64-Debug-All-Android.json FILE: ../../../third_party/skia/infra/bots/recipe_modules/flavor/examples/full.expected/Perf-Android-Clang-Nexus5x-GPU-Adreno418-arm64-Debug-All-Android.json FILE: ../../../third_party/skia/infra/bots/recipe_modules/flavor/examples/full.expected/Perf-ChromeOS-Clang-SamsungChromebookPlus-GPU-MaliT860-arm-Release-All.json From 6a8a45fc4f698364d03b5902c1818d2acc79db22 Mon Sep 17 00:00:00 2001 From: Amir Hardon Date: Wed, 20 Mar 2019 12:26:30 -0700 Subject: [PATCH 1442/1537] Have the AccessibilityBridge attach/detach itself to the (#8229) PlatformViewsDelegate. Since onDetachedFromWindow can be called after the activity was destroyed, the previous call to detach the accessibility bridge could have crash as the NativeFlutterView was already null. --- .../PlatformViewsAccessibilityDelegate.java | 18 +++++++++++++++++ .../platform/PlatformViewsController.java | 13 ++---------- .../io/flutter/view/AccessibilityBridge.java | 20 ++++++++++++++++++- .../android/io/flutter/view/FlutterView.java | 2 -- 4 files changed, 39 insertions(+), 14 deletions(-) diff --git a/shell/platform/android/io/flutter/plugin/platform/PlatformViewsAccessibilityDelegate.java b/shell/platform/android/io/flutter/plugin/platform/PlatformViewsAccessibilityDelegate.java index 8f07f6b0c5b5b..a48a7d59ff65d 100644 --- a/shell/platform/android/io/flutter/plugin/platform/PlatformViewsAccessibilityDelegate.java +++ b/shell/platform/android/io/flutter/plugin/platform/PlatformViewsAccessibilityDelegate.java @@ -4,10 +4,28 @@ package io.flutter.plugin.platform; +import io.flutter.view.AccessibilityBridge; + /** * Facilitates interaction between the accessibility bridge and embedded platform views. */ public interface PlatformViewsAccessibilityDelegate { // TODO(amirh): add a View getViewById(int id) here. // not filing a tracking issue as this is going to be done in the next PR. + + /** + * Attaches an accessibility bridge for this platform views accessibility delegate. + * + * Accessibility events originating in platform views belonging to this delegate will be delegated + * to this accessibility bridge. + */ + void attachAccessibilityBridge(AccessibilityBridge accessibilityBridge); + + /** + * Detaches the current accessibility bridge. + * + * Any accessibility events sent by platform views belonging to this delegate will be ignored until + * a new accessibility bridge is attached. + */ + void detachAccessibiltyBridge(); } diff --git a/shell/platform/android/io/flutter/plugin/platform/PlatformViewsController.java b/shell/platform/android/io/flutter/plugin/platform/PlatformViewsController.java index bd2ba001e22d3..55a5d10f4732b 100644 --- a/shell/platform/android/io/flutter/plugin/platform/PlatformViewsController.java +++ b/shell/platform/android/io/flutter/plugin/platform/PlatformViewsController.java @@ -98,21 +98,12 @@ public void detach() { mTextureRegistry = null; } - /** - * Attaches an accessibility bridge for this platform views controller. - * - * Accessibility events sent by platform views that belonging to this controller will be - * dispatched to this accessibility bridge. - */ + @Override public void attachAccessibilityBridge(AccessibilityBridge accessibilityBridge) { this.accessibilityBridge = accessibilityBridge; } - /** - * Detaches the current accessibility bridge. - * - * Any accessibility events sent by platform views belonging to this controller will be ignored. - */ + @Override public void detachAccessibiltyBridge() { this.accessibilityBridge = null; } diff --git a/shell/platform/android/io/flutter/view/AccessibilityBridge.java b/shell/platform/android/io/flutter/view/AccessibilityBridge.java index f18616b1578e9..7a94b3303595c 100644 --- a/shell/platform/android/io/flutter/view/AccessibilityBridge.java +++ b/shell/platform/android/io/flutter/view/AccessibilityBridge.java @@ -312,7 +312,10 @@ public AccessibilityBridge( @NonNull AccessibilityChannel accessibilityChannel, @NonNull AccessibilityManager accessibilityManager, @NonNull ContentResolver contentResolver, - @NonNull PlatformViewsAccessibilityDelegate platformViewsAccessibilityDelegate + // This should be @NonNull once the plumbing for io.flutter.embedding.engine.android.FlutterView is done. + // TODO(mattcarrol): Add the annotation once the plumbing is done. + // https://github.com/flutter/flutter/issues/29618 + PlatformViewsAccessibilityDelegate platformViewsAccessibilityDelegate ) { this.rootAccessibilityView = rootAccessibilityView; this.accessibilityChannel = accessibilityChannel; @@ -362,6 +365,14 @@ public void onTouchExplorationStateChanged(boolean isTouchExplorationEnabled) { Uri transitionUri = Settings.Global.getUriFor(Settings.Global.TRANSITION_ANIMATION_SCALE); this.contentResolver.registerContentObserver(transitionUri, false, animationScaleObserver); } + + // platformViewsAccessibilityDelegate should be @NonNull once the plumbing + // for io.flutter.embedding.engine.android.FlutterView is done. + // TODO(mattcarrol): Remove the null check once the plumbing is done. + // https://github.com/flutter/flutter/issues/29618 + if (platformViewsAccessibilityDelegate != null) { + platformViewsAccessibilityDelegate.attachAccessibilityBridge(this); + } } /** @@ -372,6 +383,13 @@ public void onTouchExplorationStateChanged(boolean isTouchExplorationEnabled) { * on this {@code AccessibilityBridge} after invoking {@code release()} is undefined. */ public void release() { + // platformViewsAccessibilityDelegate should be @NonNull once the plumbing + // for io.flutter.embedding.engine.android.FlutterView is done. + // TODO(mattcarrol): Remove the null check once the plumbing is done. + // https://github.com/flutter/flutter/issues/29618 + if (platformViewsAccessibilityDelegate != null) { + platformViewsAccessibilityDelegate.detachAccessibiltyBridge(); + } setOnAccessibilityChangeListener(null); accessibilityManager.removeAccessibilityStateChangeListener(accessibilityStateChangeListener); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { diff --git a/shell/platform/android/io/flutter/view/FlutterView.java b/shell/platform/android/io/flutter/view/FlutterView.java index 4faef7d518ba9..f8f38abbd48dc 100644 --- a/shell/platform/android/io/flutter/view/FlutterView.java +++ b/shell/platform/android/io/flutter/view/FlutterView.java @@ -668,7 +668,6 @@ protected void onAttachedToWindow() { getContext().getContentResolver(), platformViewsController ); - platformViewsController.attachAccessibilityBridge(mAccessibilityNodeProvider); mAccessibilityNodeProvider.setOnAccessibilityChangeListener(onAccessibilityChangeListener); resetWillNotDraw( @@ -681,7 +680,6 @@ protected void onAttachedToWindow() { protected void onDetachedFromWindow() { super.onDetachedFromWindow(); - getPluginRegistry().getPlatformViewsController().detachAccessibiltyBridge(); mAccessibilityNodeProvider.release(); mAccessibilityNodeProvider = null; } From d8c89e2bfe9b0b0d50da41c1349ef1534517c3c8 Mon Sep 17 00:00:00 2001 From: stuartmorgan Date: Wed, 20 Mar 2019 16:11:40 -0400 Subject: [PATCH 1443/1537] Add the Linux desktop setup script to Dockerfile (#8227) In preparation for enabling Linux shell builds, add the script that installs necessary system-level dependencies. --- ci/docker/build/Dockerfile | 1 + 1 file changed, 1 insertion(+) diff --git a/ci/docker/build/Dockerfile b/ci/docker/build/Dockerfile index bf1a470f0e4aa..7307ac0a33470 100644 --- a/ci/docker/build/Dockerfile +++ b/ci/docker/build/Dockerfile @@ -17,6 +17,7 @@ RUN gclient sync WORKDIR $ENGINE_PATH/src RUN ./build/install-build-deps.sh --no-prompt RUN ./build/install-build-deps-android.sh --no-prompt +RUN ./flutter/build/install-build-deps-linux-desktop.sh WORKDIR $HOME/dart RUN wget https://storage.googleapis.com/dart-archive/channels/dev/release/2.1.0-dev.7.1/sdk/dartsdk-linux-x64-release.zip From 512004503fd5f3989350442ad7a64e386c7d6abf Mon Sep 17 00:00:00 2001 From: stuartmorgan Date: Wed, 20 Mar 2019 17:05:58 -0400 Subject: [PATCH 1444/1537] Remove jsoncpp from desktop Linux shell setup (#8230) The jsoncpp requirement was removed in the migration from FDE to this repository, so it doesn't need to be installed by the script. --- build/install-build-deps-linux-desktop.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/build/install-build-deps-linux-desktop.sh b/build/install-build-deps-linux-desktop.sh index ce754c6f1464b..e3c47a69a3375 100755 --- a/build/install-build-deps-linux-desktop.sh +++ b/build/install-build-deps-linux-desktop.sh @@ -8,5 +8,4 @@ set -e -sudo apt-get -y install libglfw3-dev libepoxy-dev libjsoncpp-dev libgtk-3-dev \ - libx11-dev +sudo apt-get -y install libglfw3-dev libepoxy-dev libgtk-3-dev libx11-dev From d452dd5c36d7285769bdffc99f9a37976961b3cf Mon Sep 17 00:00:00 2001 From: stuartmorgan Date: Wed, 20 Mar 2019 17:15:52 -0400 Subject: [PATCH 1445/1537] Initial import of GLFW Linux shell from FDE (#8159) Changes include: - File structure - Header guards - Include paths - Namespaces - Integration with the engine's GN build - Conversion from jsoncpp to rapidjson - Style and clang-format adjustment to match engine repository --- ci/licenses_golden/licenses_flutter | 35 ++ shell/platform/common/cpp/BUILD.gn | 63 ++ .../common/cpp/client_wrapper/BUILD.gn | 88 +++ .../platform/common/cpp/client_wrapper/README | 9 + .../client_wrapper/engine_method_result.cc | 45 ++ .../include/flutter/basic_message_channel.h | 98 +++ .../include/flutter/binary_messenger.h | 56 ++ .../include/flutter/engine_method_result.h | 86 +++ .../include/flutter/json_message_codec.h | 42 ++ .../include/flutter/json_method_codec.h | 52 ++ .../include/flutter/json_type.h | 26 + .../include/flutter/message_codec.h | 54 ++ .../include/flutter/method_call.h | 41 ++ .../include/flutter/method_channel.h | 92 +++ .../include/flutter/method_codec.h | 85 +++ .../include/flutter/method_result.h | 58 ++ .../include/flutter/plugin_registrar.h | 74 +++ .../cpp/client_wrapper/json_message_codec.cc | 70 +++ .../cpp/client_wrapper/json_method_codec.cc | 135 ++++ .../client_wrapper/method_call_unittests.cc | 23 + .../cpp/client_wrapper/plugin_registrar.cc | 125 ++++ .../plugin_registrar_unittests.cc | 50 ++ .../common/cpp/client_wrapper/publish.gni | 42 ++ .../testing/stub_flutter_api.cc | 81 +++ .../client_wrapper/testing/stub_flutter_api.h | 74 +++ .../common/cpp/incoming_message_dispatcher.cc | 57 ++ .../common/cpp/incoming_message_dispatcher.h | 78 +++ .../common/cpp/public/flutter_export.h | 28 + .../common/cpp/public/flutter_messenger.h | 81 +++ .../cpp/public/flutter_plugin_registrar.h | 42 ++ shell/platform/common/cpp/text_input_model.cc | 181 ++++++ shell/platform/common/cpp/text_input_model.h | 101 +++ shell/platform/glfw/BUILD.gn | 80 +++ shell/platform/glfw/client_wrapper/BUILD.gn | 78 +++ .../flutter_window_controller.cc | 77 +++ .../flutter_window_controller_unittests.cc | 54 ++ .../flutter/flutter_window_controller.h | 83 +++ .../testing/stub_flutter_glfw_api.cc | 101 +++ .../testing/stub_flutter_glfw_api.h | 87 +++ shell/platform/glfw/flutter_glfw.cc | 595 ++++++++++++++++++ shell/platform/glfw/key_event_handler.cc | 60 ++ shell/platform/glfw/key_event_handler.h | 44 ++ shell/platform/glfw/keyboard_hook_handler.h | 32 + shell/platform/glfw/public/flutter_glfw.h | 109 ++++ shell/platform/glfw/text_input_plugin.cc | 210 +++++++ shell/platform/glfw/text_input_plugin.h | 62 ++ shell/platform/linux/BUILD.gn | 15 +- shell/platform/linux/config/BUILD.gn | 21 + 48 files changed, 3878 insertions(+), 2 deletions(-) create mode 100644 shell/platform/common/cpp/BUILD.gn create mode 100644 shell/platform/common/cpp/client_wrapper/BUILD.gn create mode 100644 shell/platform/common/cpp/client_wrapper/README create mode 100644 shell/platform/common/cpp/client_wrapper/engine_method_result.cc create mode 100644 shell/platform/common/cpp/client_wrapper/include/flutter/basic_message_channel.h create mode 100644 shell/platform/common/cpp/client_wrapper/include/flutter/binary_messenger.h create mode 100644 shell/platform/common/cpp/client_wrapper/include/flutter/engine_method_result.h create mode 100644 shell/platform/common/cpp/client_wrapper/include/flutter/json_message_codec.h create mode 100644 shell/platform/common/cpp/client_wrapper/include/flutter/json_method_codec.h create mode 100644 shell/platform/common/cpp/client_wrapper/include/flutter/json_type.h create mode 100644 shell/platform/common/cpp/client_wrapper/include/flutter/message_codec.h create mode 100644 shell/platform/common/cpp/client_wrapper/include/flutter/method_call.h create mode 100644 shell/platform/common/cpp/client_wrapper/include/flutter/method_channel.h create mode 100644 shell/platform/common/cpp/client_wrapper/include/flutter/method_codec.h create mode 100644 shell/platform/common/cpp/client_wrapper/include/flutter/method_result.h create mode 100644 shell/platform/common/cpp/client_wrapper/include/flutter/plugin_registrar.h create mode 100644 shell/platform/common/cpp/client_wrapper/json_message_codec.cc create mode 100644 shell/platform/common/cpp/client_wrapper/json_method_codec.cc create mode 100644 shell/platform/common/cpp/client_wrapper/method_call_unittests.cc create mode 100644 shell/platform/common/cpp/client_wrapper/plugin_registrar.cc create mode 100644 shell/platform/common/cpp/client_wrapper/plugin_registrar_unittests.cc create mode 100644 shell/platform/common/cpp/client_wrapper/publish.gni create mode 100644 shell/platform/common/cpp/client_wrapper/testing/stub_flutter_api.cc create mode 100644 shell/platform/common/cpp/client_wrapper/testing/stub_flutter_api.h create mode 100644 shell/platform/common/cpp/incoming_message_dispatcher.cc create mode 100644 shell/platform/common/cpp/incoming_message_dispatcher.h create mode 100644 shell/platform/common/cpp/public/flutter_export.h create mode 100644 shell/platform/common/cpp/public/flutter_messenger.h create mode 100644 shell/platform/common/cpp/public/flutter_plugin_registrar.h create mode 100644 shell/platform/common/cpp/text_input_model.cc create mode 100644 shell/platform/common/cpp/text_input_model.h create mode 100644 shell/platform/glfw/BUILD.gn create mode 100644 shell/platform/glfw/client_wrapper/BUILD.gn create mode 100644 shell/platform/glfw/client_wrapper/flutter_window_controller.cc create mode 100644 shell/platform/glfw/client_wrapper/flutter_window_controller_unittests.cc create mode 100644 shell/platform/glfw/client_wrapper/include/flutter/flutter_window_controller.h create mode 100644 shell/platform/glfw/client_wrapper/testing/stub_flutter_glfw_api.cc create mode 100644 shell/platform/glfw/client_wrapper/testing/stub_flutter_glfw_api.h create mode 100644 shell/platform/glfw/flutter_glfw.cc create mode 100644 shell/platform/glfw/key_event_handler.cc create mode 100644 shell/platform/glfw/key_event_handler.h create mode 100644 shell/platform/glfw/keyboard_hook_handler.h create mode 100644 shell/platform/glfw/public/flutter_glfw.h create mode 100644 shell/platform/glfw/text_input_plugin.cc create mode 100644 shell/platform/glfw/text_input_plugin.h create mode 100644 shell/platform/linux/config/BUILD.gn diff --git a/ci/licenses_golden/licenses_flutter b/ci/licenses_golden/licenses_flutter index 6c669632c5213..3867e7226454f 100644 --- a/ci/licenses_golden/licenses_flutter +++ b/ci/licenses_golden/licenses_flutter @@ -544,6 +544,31 @@ FILE: ../../../flutter/shell/platform/android/platform_view_android_jni.cc FILE: ../../../flutter/shell/platform/android/platform_view_android_jni.h FILE: ../../../flutter/shell/platform/android/vsync_waiter_android.cc FILE: ../../../flutter/shell/platform/android/vsync_waiter_android.h +FILE: ../../../flutter/shell/platform/common/cpp/client_wrapper/engine_method_result.cc +FILE: ../../../flutter/shell/platform/common/cpp/client_wrapper/include/flutter/basic_message_channel.h +FILE: ../../../flutter/shell/platform/common/cpp/client_wrapper/include/flutter/binary_messenger.h +FILE: ../../../flutter/shell/platform/common/cpp/client_wrapper/include/flutter/engine_method_result.h +FILE: ../../../flutter/shell/platform/common/cpp/client_wrapper/include/flutter/json_message_codec.h +FILE: ../../../flutter/shell/platform/common/cpp/client_wrapper/include/flutter/json_method_codec.h +FILE: ../../../flutter/shell/platform/common/cpp/client_wrapper/include/flutter/json_type.h +FILE: ../../../flutter/shell/platform/common/cpp/client_wrapper/include/flutter/message_codec.h +FILE: ../../../flutter/shell/platform/common/cpp/client_wrapper/include/flutter/method_call.h +FILE: ../../../flutter/shell/platform/common/cpp/client_wrapper/include/flutter/method_channel.h +FILE: ../../../flutter/shell/platform/common/cpp/client_wrapper/include/flutter/method_codec.h +FILE: ../../../flutter/shell/platform/common/cpp/client_wrapper/include/flutter/method_result.h +FILE: ../../../flutter/shell/platform/common/cpp/client_wrapper/include/flutter/plugin_registrar.h +FILE: ../../../flutter/shell/platform/common/cpp/client_wrapper/json_message_codec.cc +FILE: ../../../flutter/shell/platform/common/cpp/client_wrapper/json_method_codec.cc +FILE: ../../../flutter/shell/platform/common/cpp/client_wrapper/method_call_unittests.cc +FILE: ../../../flutter/shell/platform/common/cpp/client_wrapper/plugin_registrar.cc +FILE: ../../../flutter/shell/platform/common/cpp/client_wrapper/plugin_registrar_unittests.cc +FILE: ../../../flutter/shell/platform/common/cpp/incoming_message_dispatcher.cc +FILE: ../../../flutter/shell/platform/common/cpp/incoming_message_dispatcher.h +FILE: ../../../flutter/shell/platform/common/cpp/public/flutter_export.h +FILE: ../../../flutter/shell/platform/common/cpp/public/flutter_messenger.h +FILE: ../../../flutter/shell/platform/common/cpp/public/flutter_plugin_registrar.h +FILE: ../../../flutter/shell/platform/common/cpp/text_input_model.cc +FILE: ../../../flutter/shell/platform/common/cpp/text_input_model.h FILE: ../../../flutter/shell/platform/darwin/common/buffer_conversions.h FILE: ../../../flutter/shell/platform/darwin/common/buffer_conversions.mm FILE: ../../../flutter/shell/platform/darwin/common/command_line.h @@ -660,6 +685,16 @@ FILE: ../../../flutter/shell/platform/embedder/platform_view_embedder.cc FILE: ../../../flutter/shell/platform/embedder/platform_view_embedder.h FILE: ../../../flutter/shell/platform/embedder/vsync_waiter_embedder.cc FILE: ../../../flutter/shell/platform/embedder/vsync_waiter_embedder.h +FILE: ../../../flutter/shell/platform/glfw/client_wrapper/flutter_window_controller.cc +FILE: ../../../flutter/shell/platform/glfw/client_wrapper/flutter_window_controller_unittests.cc +FILE: ../../../flutter/shell/platform/glfw/client_wrapper/include/flutter/flutter_window_controller.h +FILE: ../../../flutter/shell/platform/glfw/flutter_glfw.cc +FILE: ../../../flutter/shell/platform/glfw/key_event_handler.cc +FILE: ../../../flutter/shell/platform/glfw/key_event_handler.h +FILE: ../../../flutter/shell/platform/glfw/keyboard_hook_handler.h +FILE: ../../../flutter/shell/platform/glfw/public/flutter_glfw.h +FILE: ../../../flutter/shell/platform/glfw/text_input_plugin.cc +FILE: ../../../flutter/shell/platform/glfw/text_input_plugin.h FILE: ../../../flutter/sky/packages/flutter_services/lib/empty.dart FILE: ../../../flutter/sky/tools/roll/patches/chromium/android_build.patch FILE: ../../../flutter/synchronization/pipeline.cc diff --git a/shell/platform/common/cpp/BUILD.gn b/shell/platform/common/cpp/BUILD.gn new file mode 100644 index 0000000000000..265cb37b906ab --- /dev/null +++ b/shell/platform/common/cpp/BUILD.gn @@ -0,0 +1,63 @@ +# 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. + +config("desktop_library_implementation") { + defines = [ "FLUTTER_DESKTOP_LIBRARY" ] +} + +_public_headers = [ + "public/flutter_export.h", + "public/flutter_messenger.h", + "public/flutter_plugin_registrar.h", +] + +# Any files that are built by clients (client_wrapper code, library headers for +# implementations using this shared code, etc.) include the public headers +# assuming they are in the include path. This configuration should be added to +# any such code that is also built by GN to make the includes work. +config("relative_flutter_library_headers") { + include_dirs = [ "public" ] +} + +# The headers are a separate source set since the client wrapper is allowed +# to depend on the public headers, but none of the rest of the code. +source_set("common_cpp_library_headers") { + public = _public_headers + + configs += [ ":desktop_library_implementation" ] +} + +source_set("common_cpp") { + public = [ + "incoming_message_dispatcher.h", + "text_input_model.h", + ] + + # TODO: Refactor flutter_glfw.cc to move the implementations corresponding + # to the _public_headers above into this target. + sources = [ + "incoming_message_dispatcher.cc", + "text_input_model.cc", + ] + + configs += [ ":desktop_library_implementation" ] + + deps = [ + ":common_cpp_library_headers", + "$flutter_root/shell/platform/common/cpp/client_wrapper:client_wrapper", + "$flutter_root/shell/platform/embedder:embedder", + ] + + # TODO: Remove once text input model refactor lands, at which point this code + # won't have a JSON dependency. + defines = [ "USE_RAPID_JSON" ] + deps += [ "//third_party/rapidjson" ] +} + +copy("publish_headers") { + sources = _public_headers + outputs = [ + "$root_out_dir/{{source_file_part}}", + ] +} diff --git a/shell/platform/common/cpp/client_wrapper/BUILD.gn b/shell/platform/common/cpp/client_wrapper/BUILD.gn new file mode 100644 index 0000000000000..1aacc758abea3 --- /dev/null +++ b/shell/platform/common/cpp/client_wrapper/BUILD.gn @@ -0,0 +1,88 @@ +# 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. + +import("publish.gni") + +_wrapper_includes = [ + "include/flutter/basic_message_channel.h", + "include/flutter/binary_messenger.h", + "include/flutter/engine_method_result.h", + "include/flutter/json_message_codec.h", + "include/flutter/json_method_codec.h", + "include/flutter/json_type.h", + "include/flutter/message_codec.h", + "include/flutter/method_call.h", + "include/flutter/method_channel.h", + "include/flutter/method_codec.h", + "include/flutter/method_result.h", + "include/flutter/plugin_registrar.h", +] + +# TODO: Once the wrapper API is more stable, consolidate to as few files as is +# reasonable (without forcing different kinds of clients to take unnecessary +# code) to simplify use. +_wrapper_sources = [ + "engine_method_result.cc", + "json_message_codec.cc", + "json_method_codec.cc", + "plugin_registrar.cc", +] + +# Client library build for internal use by the shell implementation. +source_set("client_wrapper") { + sources = _wrapper_sources + public = _wrapper_includes + + deps = [ + "$flutter_root/shell/platform/common/cpp:common_cpp_library_headers", + "//third_party/rapidjson", + ] + + defines = [ "USE_RAPID_JSON" ] + + configs += [ + "$flutter_root/shell/platform/common/cpp:desktop_library_implementation", + ] + + public_configs = [ + "$flutter_root/shell/platform/common/cpp:relative_flutter_library_headers", + ] +} + +# Copies the client wrapper code to the output directory. +publish_client_wrapper("publish_wrapper") { + public = _wrapper_includes + sources = _wrapper_sources + [ "README" ] +} + +source_set("client_wrapper_library_stubs") { + sources = [ + "testing/stub_flutter_api.cc", + "testing/stub_flutter_api.h", + ] + + public_deps = [ + "$flutter_root/shell/platform/common/cpp:common_cpp_library_headers", + ] +} + +executable("client_wrapper_unittests") { + testonly = true + + # TODO: Add more unit tests. + sources = [ + "method_call_unittests.cc", + "plugin_registrar_unittests.cc", + ] + + deps = [ + ":client_wrapper", + ":client_wrapper_library_stubs", + "$flutter_root/testing", + + # TODO: Consider refactoring flutter_root/testing so that there's a testing + # target that doesn't require a Dart runtime to be linked in. + "//third_party/dart/runtime:libdart_jit", + ] +} diff --git a/shell/platform/common/cpp/client_wrapper/README b/shell/platform/common/cpp/client_wrapper/README new file mode 100644 index 0000000000000..a7f8764867088 --- /dev/null +++ b/shell/platform/common/cpp/client_wrapper/README @@ -0,0 +1,9 @@ +This code is intended to be built into plugins and applications to provide +higher-level, C++ abstractions for interacting with the Flutter library. + +Over time, the goal is to move more of this code into the library in a way that +provides a usable ABI (e.g., does not use standard libary in the interfaces). + +Note that this wrapper is still in early stages. Expect significant churn in +both the APIs and the structure of the wrapper (e.g., the exact set of files +that need to be built). diff --git a/shell/platform/common/cpp/client_wrapper/engine_method_result.cc b/shell/platform/common/cpp/client_wrapper/engine_method_result.cc new file mode 100644 index 0000000000000..03e17a82e6bd5 --- /dev/null +++ b/shell/platform/common/cpp/client_wrapper/engine_method_result.cc @@ -0,0 +1,45 @@ +// 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 "include/flutter/engine_method_result.h" + +#include +#include + +namespace flutter { +namespace internal { + +ReplyManager::ReplyManager(BinaryReply reply_handler) + : reply_handler_(std::move(reply_handler)) { + assert(reply_handler_); +} + +ReplyManager::~ReplyManager() { + if (reply_handler_) { + // Warn, rather than send a not-implemented response, since the engine may + // no longer be valid at this point. + std::cerr + << "Warning: Failed to respond to a message. This is a memory leak." + << std::endl; + } +} + +void ReplyManager::SendResponseData(const std::vector* data) { + if (!reply_handler_) { + std::cerr + << "Error: Only one of Success, Error, or NotImplemented can be " + "called," + << " and it can be called exactly once. Ignoring duplicate result." + << std::endl; + return; + } + + const uint8_t* message = data && !data->empty() ? data->data() : nullptr; + size_t message_size = data ? data->size() : 0; + reply_handler_(message, message_size); + reply_handler_ = nullptr; +} + +} // namespace internal +} // namespace flutter diff --git a/shell/platform/common/cpp/client_wrapper/include/flutter/basic_message_channel.h b/shell/platform/common/cpp/client_wrapper/include/flutter/basic_message_channel.h new file mode 100644 index 0000000000000..a864a36343d4e --- /dev/null +++ b/shell/platform/common/cpp/client_wrapper/include/flutter/basic_message_channel.h @@ -0,0 +1,98 @@ +// 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. + +#ifndef FLUTTER_SHELL_PLATFORM_COMMON_CPP_CLIENT_WRAPPER_INCLUDE_FLUTTER_BASIC_MESSAGE_CHANNEL_H_ +#define FLUTTER_SHELL_PLATFORM_COMMON_CPP_CLIENT_WRAPPER_INCLUDE_FLUTTER_BASIC_MESSAGE_CHANNEL_H_ + +#include +#include + +#include "binary_messenger.h" +#include "message_codec.h" + +namespace flutter { + +// A message reply callback. +// +// Used for submitting a reply back to a Flutter message sender. +template +using MessageReply = std::function; + +// A handler for receiving a message from the Flutter engine. +// +// Implementations must asynchronously call reply exactly once with the reply +// to the message. +template +using MessageHandler = + std::function reply)>; + +// A channel for communicating with the Flutter engine by sending asynchronous +// messages. +template +class BasicMessageChannel { + public: + // Creates an instance that sends and receives method calls on the channel + // named |name|, encoded with |codec| and dispatched via |messenger|. + // + // TODO: Make codec optional once the standard codec is supported (Issue #67). + BasicMessageChannel(BinaryMessenger* messenger, + const std::string& name, + const MessageCodec* codec) + : messenger_(messenger), name_(name), codec_(codec) {} + + ~BasicMessageChannel() = default; + + // Prevent copying. + BasicMessageChannel(BasicMessageChannel const&) = delete; + BasicMessageChannel& operator=(BasicMessageChannel const&) = delete; + + // Sends a message to the Flutter engine on this channel. + void Send(const T& message) { + std::unique_ptr> raw_message = + codec_->EncodeMessage(message); + messenger_->Send(name_, raw_message->data(), raw_message->size()); + } + + // TODO: Add support for a version of Send expecting a reply once + // https://github.com/flutter/flutter/issues/18852 is fixed. + + // Registers a handler that should be called any time a message is + // received on this channel. + void SetMessageHandler(MessageHandler handler) const { + const auto* codec = codec_; + std::string channel_name = name_; + BinaryMessageHandler binary_handler = [handler, codec, channel_name]( + const uint8_t* binary_message, + const size_t binary_message_size, + BinaryReply binary_reply) { + // Use this channel's codec to decode the message and build a reply + // handler. + std::unique_ptr message = + codec->DecodeMessage(binary_message, binary_message_size); + if (!message) { + std::cerr << "Unable to decode message on channel " << channel_name + << std::endl; + binary_reply(nullptr, 0); + return; + } + + MessageReply unencoded_reply = [binary_reply, + codec](const T& unencoded_response) { + auto binary_response = codec->EncodeMessage(unencoded_response); + binary_reply(binary_response->data(), binary_response->size()); + }; + handler(*message, std::move(unencoded_reply)); + }; + messenger_->SetMessageHandler(name_, std::move(binary_handler)); + } + + private: + BinaryMessenger* messenger_; + std::string name_; + const MessageCodec* codec_; +}; + +} // namespace flutter + +#endif // FLUTTER_SHELL_PLATFORM_COMMON_CPP_CLIENT_WRAPPER_INCLUDE_FLUTTER_BASIC_MESSAGE_CHANNEL_H_ diff --git a/shell/platform/common/cpp/client_wrapper/include/flutter/binary_messenger.h b/shell/platform/common/cpp/client_wrapper/include/flutter/binary_messenger.h new file mode 100644 index 0000000000000..ae91941fedc6c --- /dev/null +++ b/shell/platform/common/cpp/client_wrapper/include/flutter/binary_messenger.h @@ -0,0 +1,56 @@ +// 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. + +#ifndef FLUTTER_SHELL_PLATFORM_COMMON_CPP_CLIENT_WRAPPER_INCLUDE_FLUTTER_BINARY_MESSENGER_H_ +#define FLUTTER_SHELL_PLATFORM_COMMON_CPP_CLIENT_WRAPPER_INCLUDE_FLUTTER_BINARY_MESSENGER_H_ + +#include +#include + +// TODO: Consider adding absl as a dependency and using absl::Span for all of +// the message/message_size pairs. +namespace flutter { + +// A binary message reply callback. +// +// Used for submitting a binary reply back to a Flutter message sender. +typedef std::function + BinaryReply; + +// A message handler callback. +// +// Used for receiving messages from Flutter and providing an asynchronous reply. +typedef std::function< + void(const uint8_t* message, const size_t message_size, BinaryReply reply)> + BinaryMessageHandler; + +// A protocol for a class that handles communication of binary data on named +// channels to and from the Flutter engine. +class BinaryMessenger { + public: + virtual ~BinaryMessenger() = default; + + // Sends a binary message to the Flutter side on the specified channel, + // expecting no reply. + // + // TODO: Consider adding absl as a dependency and using absl::Span. + virtual void Send(const std::string& channel, + const uint8_t* message, + const size_t message_size) const = 0; + + // TODO: Add support for a version of Send expecting a reply once + // https://github.com/flutter/flutter/issues/18852 is fixed. + + // Registers a message handler for incoming binary messages from the Flutter + // side on the specified channel. + // + // Replaces any existing handler. Provide a null handler to unregister the + // existing handler. + virtual void SetMessageHandler(const std::string& channel, + BinaryMessageHandler handler) = 0; +}; + +} // namespace flutter + +#endif // FLUTTER_SHELL_PLATFORM_COMMON_CPP_CLIENT_WRAPPER_INCLUDE_FLUTTER_BINARY_MESSENGER_H_ diff --git a/shell/platform/common/cpp/client_wrapper/include/flutter/engine_method_result.h b/shell/platform/common/cpp/client_wrapper/include/flutter/engine_method_result.h new file mode 100644 index 0000000000000..9c28a85e3de43 --- /dev/null +++ b/shell/platform/common/cpp/client_wrapper/include/flutter/engine_method_result.h @@ -0,0 +1,86 @@ +// 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. + +#ifndef FLUTTER_SHELL_PLATFORM_COMMON_CPP_CLIENT_WRAPPER_INCLUDE_FLUTTER_ENGINE_METHOD_RESULT_H_ +#define FLUTTER_SHELL_PLATFORM_COMMON_CPP_CLIENT_WRAPPER_INCLUDE_FLUTTER_ENGINE_METHOD_RESULT_H_ + +#include +#include +#include + +#include "binary_messenger.h" +#include "method_codec.h" +#include "method_result.h" + +namespace flutter { + +namespace internal { +// Manages the one-time sending of response data. This is an internal helper +// class for EngineMethodResult, separated out since the implementation doesn't +// vary based on the template type. +class ReplyManager { + public: + ReplyManager(BinaryReply reply_handler_); + ~ReplyManager(); + + // Prevent copying. + ReplyManager(ReplyManager const&) = delete; + ReplyManager& operator=(ReplyManager const&) = delete; + + // Sends the given response data (which must either be nullptr, which + // indicates an unhandled method, or a response serialized with |codec_|) to + // the engine. + void SendResponseData(const std::vector* data); + + private: + BinaryReply reply_handler_; +}; +} // namespace internal + +// Implemention of MethodResult that sends a response to the Flutter engine +// exactly once, encoded using a given codec. +template +class EngineMethodResult : public MethodResult { + public: + // Creates a result object that will send results to |reply_handler|, encoded + // using |codec|. The |codec| pointer must remain valid for as long as this + // object exists. + EngineMethodResult(BinaryReply reply_handler, const MethodCodec* codec) + : reply_manager_( + std::make_unique(std::move(reply_handler))), + codec_(codec) {} + + ~EngineMethodResult() = default; + + protected: + // |flutter::MethodResult| + void SuccessInternal(const T* result) override { + std::unique_ptr> data = + codec_->EncodeSuccessEnvelope(result); + reply_manager_->SendResponseData(data.get()); + } + + // |flutter::MethodResult| + void ErrorInternal(const std::string& error_code, + const std::string& error_message, + const T* error_details) override { + std::unique_ptr> data = + codec_->EncodeErrorEnvelope(error_code, error_message, error_details); + reply_manager_->SendResponseData(data.get()); + } + + // |flutter::MethodResult| + void NotImplementedInternal() override { + reply_manager_->SendResponseData(nullptr); + } + + private: + std::unique_ptr reply_manager_; + + const MethodCodec* codec_; +}; + +} // namespace flutter + +#endif // FLUTTER_SHELL_PLATFORM_COMMON_CPP_CLIENT_WRAPPER_INCLUDE_FLUTTER_ENGINE_METHOD_RESULT_H_ diff --git a/shell/platform/common/cpp/client_wrapper/include/flutter/json_message_codec.h b/shell/platform/common/cpp/client_wrapper/include/flutter/json_message_codec.h new file mode 100644 index 0000000000000..ba1aa2ffc3520 --- /dev/null +++ b/shell/platform/common/cpp/client_wrapper/include/flutter/json_message_codec.h @@ -0,0 +1,42 @@ +// 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. + +#ifndef FLUTTER_SHELL_PLATFORM_COMMON_CPP_CLIENT_WRAPPER_INCLUDE_FLUTTER_JSON_MESSAGE_CODEC_H_ +#define FLUTTER_SHELL_PLATFORM_COMMON_CPP_CLIENT_WRAPPER_INCLUDE_FLUTTER_JSON_MESSAGE_CODEC_H_ + +#include "json_type.h" +#include "message_codec.h" + +namespace flutter { + +// A message encoding/decoding mechanism for communications to/from the +// Flutter engine via JSON channels. +class JsonMessageCodec : public MessageCodec { + public: + // Returns the shared instance of the codec. + static const JsonMessageCodec& GetInstance(); + + ~JsonMessageCodec() = default; + + // Prevent copying. + JsonMessageCodec(JsonMessageCodec const&) = delete; + JsonMessageCodec& operator=(JsonMessageCodec const&) = delete; + + protected: + // Instances should be obtained via GetInstance. + JsonMessageCodec() = default; + + // |flutter::MessageCodec| + std::unique_ptr DecodeMessageInternal( + const uint8_t* binary_message, + const size_t message_size) const override; + + // |flutter::MessageCodec| + std::unique_ptr> EncodeMessageInternal( + const JsonValueType& message) const override; +}; + +} // namespace flutter + +#endif // FLUTTER_SHELL_PLATFORM_COMMON_CPP_CLIENT_WRAPPER_INCLUDE_FLUTTER_JSON_MESSAGE_CODEC_H_ diff --git a/shell/platform/common/cpp/client_wrapper/include/flutter/json_method_codec.h b/shell/platform/common/cpp/client_wrapper/include/flutter/json_method_codec.h new file mode 100644 index 0000000000000..92af82000ac96 --- /dev/null +++ b/shell/platform/common/cpp/client_wrapper/include/flutter/json_method_codec.h @@ -0,0 +1,52 @@ +// 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. + +#ifndef FLUTTER_SHELL_PLATFORM_COMMON_CPP_CLIENT_WRAPPER_INCLUDE_FLUTTER_JSON_METHOD_CODEC_H_ +#define FLUTTER_SHELL_PLATFORM_COMMON_CPP_CLIENT_WRAPPER_INCLUDE_FLUTTER_JSON_METHOD_CODEC_H_ + +#include "json_type.h" +#include "method_call.h" +#include "method_codec.h" + +namespace flutter { + +// An implementation of MethodCodec that uses JSON strings as the serialization. +class JsonMethodCodec : public MethodCodec { + public: + // Returns the shared instance of the codec. + static const JsonMethodCodec& GetInstance(); + + ~JsonMethodCodec() = default; + + // Prevent copying. + JsonMethodCodec(JsonMethodCodec const&) = delete; + JsonMethodCodec& operator=(JsonMethodCodec const&) = delete; + + protected: + // Instances should be obtained via GetInstance. + JsonMethodCodec() = default; + + // |flutter::MethodCodec| + std::unique_ptr> DecodeMethodCallInternal( + const uint8_t* message, + const size_t message_size) const override; + + // |flutter::MethodCodec| + std::unique_ptr> EncodeMethodCallInternal( + const MethodCall& method_call) const override; + + // |flutter::MethodCodec| + std::unique_ptr> EncodeSuccessEnvelopeInternal( + const JsonValueType* result) const override; + + // |flutter::MethodCodec| + std::unique_ptr> EncodeErrorEnvelopeInternal( + const std::string& error_code, + const std::string& error_message, + const JsonValueType* error_details) const override; +}; + +} // namespace flutter + +#endif // FLUTTER_SHELL_PLATFORM_COMMON_CPP_CLIENT_WRAPPER_INCLUDE_FLUTTER_JSON_METHOD_CODEC_H_ diff --git a/shell/platform/common/cpp/client_wrapper/include/flutter/json_type.h b/shell/platform/common/cpp/client_wrapper/include/flutter/json_type.h new file mode 100644 index 0000000000000..476cee7bfb941 --- /dev/null +++ b/shell/platform/common/cpp/client_wrapper/include/flutter/json_type.h @@ -0,0 +1,26 @@ +// 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. + +#ifndef FLUTTER_SHELL_PLATFORM_COMMON_CPP_CLIENT_WRAPPER_INCLUDE_FLUTTER_JSON_TYPE_H_ +#define FLUTTER_SHELL_PLATFORM_COMMON_CPP_CLIENT_WRAPPER_INCLUDE_FLUTTER_JSON_TYPE_H_ + +// By default, the Json codecs use jsoncpp, but a version using RapidJSON is +// implemented as well. To use the latter, set USE_RAPID_JSON. +// +// When writing code using the JSON codec classes, do not use JsonValueType; +// instead use the underlying type for the library you have selected directly. + +#ifdef USE_RAPID_JSON +#include + +// The APIs often pass owning references, which in RapidJSON must include the +// allocator, so the value type for the APIs is Document rather than Value. +using JsonValueType = rapidjson::Document; +#else +#include + +using JsonValueType = Json::Value; +#endif + +#endif // FLUTTER_SHELL_PLATFORM_COMMON_CPP_CLIENT_WRAPPER_INCLUDE_FLUTTER_JSON_TYPE_H_ \ No newline at end of file diff --git a/shell/platform/common/cpp/client_wrapper/include/flutter/message_codec.h b/shell/platform/common/cpp/client_wrapper/include/flutter/message_codec.h new file mode 100644 index 0000000000000..fb012e7a535d4 --- /dev/null +++ b/shell/platform/common/cpp/client_wrapper/include/flutter/message_codec.h @@ -0,0 +1,54 @@ +// 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. + +#ifndef FLUTTER_SHELL_PLATFORM_COMMON_CPP_CLIENT_WRAPPER_INCLUDE_FLUTTER_MESSAGE_CODEC_H_ +#define FLUTTER_SHELL_PLATFORM_COMMON_CPP_CLIENT_WRAPPER_INCLUDE_FLUTTER_MESSAGE_CODEC_H_ + +#include +#include +#include + +namespace flutter { + +// Translates between a binary message and higher-level method call and +// response/error objects. +template +class MessageCodec { + public: + MessageCodec() = default; + + virtual ~MessageCodec() = default; + + // Prevent copying. + MessageCodec(MessageCodec const&) = delete; + MessageCodec& operator=(MessageCodec const&) = delete; + + // Returns the message encoded in |binary_message|, or nullptr if it cannot be + // decoded by this codec. + // TODO: Consider adding absl as a dependency and using absl::Span. + std::unique_ptr DecodeMessage(const uint8_t* binary_message, + const size_t message_size) const { + return std::move(DecodeMessageInternal(binary_message, message_size)); + } + + // Returns a binary encoding of the given |message|, or nullptr if the + // message cannot be serialized by this codec. + std::unique_ptr> EncodeMessage(const T& message) const { + return std::move(EncodeMessageInternal(message)); + } + + protected: + // Implementation of the public interface, to be provided by subclasses. + virtual std::unique_ptr DecodeMessageInternal( + const uint8_t* binary_message, + const size_t message_size) const = 0; + + // Implementation of the public interface, to be provided by subclasses. + virtual std::unique_ptr> EncodeMessageInternal( + const T& message) const = 0; +}; + +} // namespace flutter + +#endif // FLUTTER_SHELL_PLATFORM_COMMON_CPP_CLIENT_WRAPPER_INCLUDE_FLUTTER_MESSAGE_CODEC_H_ diff --git a/shell/platform/common/cpp/client_wrapper/include/flutter/method_call.h b/shell/platform/common/cpp/client_wrapper/include/flutter/method_call.h new file mode 100644 index 0000000000000..80274e7b0c5b0 --- /dev/null +++ b/shell/platform/common/cpp/client_wrapper/include/flutter/method_call.h @@ -0,0 +1,41 @@ +// 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. + +#ifndef FLUTTER_SHELL_PLATFORM_COMMON_CPP_CLIENT_WRAPPER_INCLUDE_FLUTTER_TYPED_METHOD_CALL_H_ +#define FLUTTER_SHELL_PLATFORM_COMMON_CPP_CLIENT_WRAPPER_INCLUDE_FLUTTER_TYPED_METHOD_CALL_H_ + +#include +#include + +namespace flutter { + +// An object encapsulating a method call from Flutter whose arguments are of +// type T. +template +class MethodCall { + public: + // Creates a MethodCall with the given name and arguments. + MethodCall(const std::string& method_name, std::unique_ptr arguments) + : method_name_(method_name), arguments_(std::move(arguments)) {} + + virtual ~MethodCall() = default; + + // Prevent copying. + MethodCall(MethodCall const&) = delete; + MethodCall& operator=(MethodCall const&) = delete; + + // The name of the method being called. + const std::string& method_name() const { return method_name_; } + + // The arguments to the method call, or NULL if there are none. + const T* arguments() const { return arguments_.get(); } + + private: + std::string method_name_; + std::unique_ptr arguments_; +}; + +} // namespace flutter + +#endif // FLUTTER_SHELL_PLATFORM_COMMON_CPP_CLIENT_WRAPPER_INCLUDE_FLUTTER_TYPED_METHOD_CALL_H_ diff --git a/shell/platform/common/cpp/client_wrapper/include/flutter/method_channel.h b/shell/platform/common/cpp/client_wrapper/include/flutter/method_channel.h new file mode 100644 index 0000000000000..9e28f9b3812e5 --- /dev/null +++ b/shell/platform/common/cpp/client_wrapper/include/flutter/method_channel.h @@ -0,0 +1,92 @@ +// 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. + +#ifndef FLUTTER_SHELL_PLATFORM_COMMON_CPP_CLIENT_WRAPPER_INCLUDE_FLUTTER_METHOD_CHANNEL_H_ +#define FLUTTER_SHELL_PLATFORM_COMMON_CPP_CLIENT_WRAPPER_INCLUDE_FLUTTER_METHOD_CHANNEL_H_ + +#include +#include + +#include "binary_messenger.h" +#include "engine_method_result.h" +#include "method_call.h" +#include "method_codec.h" +#include "method_result.h" + +namespace flutter { + +// A handler for receiving a method call from the Flutter engine. +// +// Implementations must asynchronously call exactly one of the methods on +// |result| to indicate the result of the method call. +template +using MethodCallHandler = + std::function& call, + std::unique_ptr> result)>; + +// A channel for communicating with the Flutter engine using invocation of +// asynchronous methods. +template +class MethodChannel { + public: + // Creates an instance that sends and receives method calls on the channel + // named |name|, encoded with |codec| and dispatched via |messenger|. + // + // TODO: Make codec optional once the standard codec is supported (Issue #67). + MethodChannel(BinaryMessenger* messenger, + const std::string& name, + const MethodCodec* codec) + : messenger_(messenger), name_(name), codec_(codec) {} + + ~MethodChannel() = default; + + // Prevent copying. + MethodChannel(MethodChannel const&) = delete; + MethodChannel& operator=(MethodChannel const&) = delete; + + // Sends a message to the Flutter engine on this channel. + void InvokeMethod(const std::string& method, std::unique_ptr arguments) { + MethodCall method_call(method, std::move(arguments)); + std::unique_ptr> message = + codec_->EncodeMethodCall(method_call); + messenger_->Send(name_, message->data(), message->size()); + } + + // TODO: Add support for a version of InvokeMethod expecting a reply once + // https://github.com/flutter/flutter/issues/18852 is fixed. + + // Registers a handler that should be called any time a method call is + // received on this channel. + void SetMethodCallHandler(MethodCallHandler handler) const { + const auto* codec = codec_; + std::string channel_name = name_; + BinaryMessageHandler binary_handler = [handler, codec, channel_name]( + const uint8_t* message, + const size_t message_size, + BinaryReply reply) { + // Use this channel's codec to decode the call and build a result handler. + auto result = + std::make_unique>(std::move(reply), codec); + std::unique_ptr> method_call = + codec->DecodeMethodCall(message, message_size); + if (!method_call) { + std::cerr << "Unable to construct method call from message on channel " + << channel_name << std::endl; + result->NotImplemented(); + return; + } + handler(*method_call, std::move(result)); + }; + messenger_->SetMessageHandler(name_, std::move(binary_handler)); + } + + private: + BinaryMessenger* messenger_; + std::string name_; + const MethodCodec* codec_; +}; + +} // namespace flutter + +#endif // FLUTTER_SHELL_PLATFORM_COMMON_CPP_CLIENT_WRAPPER_INCLUDE_FLUTTER_METHOD_CHANNEL_H_ diff --git a/shell/platform/common/cpp/client_wrapper/include/flutter/method_codec.h b/shell/platform/common/cpp/client_wrapper/include/flutter/method_codec.h new file mode 100644 index 0000000000000..3d45e59c0a8f3 --- /dev/null +++ b/shell/platform/common/cpp/client_wrapper/include/flutter/method_codec.h @@ -0,0 +1,85 @@ +// 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. + +#ifndef FLUTTER_SHELL_PLATFORM_COMMON_CPP_CLIENT_WRAPPER_INCLUDE_FLUTTER_METHOD_CODEC_H_ +#define FLUTTER_SHELL_PLATFORM_COMMON_CPP_CLIENT_WRAPPER_INCLUDE_FLUTTER_METHOD_CODEC_H_ + +#include +#include +#include + +#include "method_call.h" + +namespace flutter { + +// Translates between a binary message and higher-level method call and +// response/error objects. +template +class MethodCodec { + public: + MethodCodec() = default; + + virtual ~MethodCodec() = default; + + // Prevent copying. + MethodCodec(MethodCodec const&) = delete; + MethodCodec& operator=(MethodCodec const&) = delete; + + // Returns the MethodCall encoded in |message|, or nullptr if it cannot be + // decoded. + // TODO: Consider adding absl as a dependency and using absl::Span. + std::unique_ptr> DecodeMethodCall( + const uint8_t* message, + const size_t message_size) const { + return std::move(DecodeMethodCallInternal(message, message_size)); + } + + // Returns a binary encoding of the given |method_call|, or nullptr if the + // method call cannot be serialized by this codec. + std::unique_ptr> EncodeMethodCall( + const MethodCall& method_call) const { + return std::move(EncodeMethodCallInternal(method_call)); + } + + // Returns a binary encoding of |result|. |result| must be a type supported + // by the codec. + std::unique_ptr> EncodeSuccessEnvelope( + const T* result = nullptr) const { + return std::move(EncodeSuccessEnvelopeInternal(result)); + } + + // Returns a binary encoding of |error|. The |error_details| must be a type + // supported by the codec. + std::unique_ptr> EncodeErrorEnvelope( + const std::string& error_code, + const std::string& error_message = "", + const T* error_details = nullptr) const { + return std::move( + EncodeErrorEnvelopeInternal(error_code, error_message, error_details)); + } + + protected: + // Implementation of the public interface, to be provided by subclasses. + virtual std::unique_ptr> DecodeMethodCallInternal( + const uint8_t* message, + const size_t message_size) const = 0; + + // Implementation of the public interface, to be provided by subclasses. + virtual std::unique_ptr> EncodeMethodCallInternal( + const MethodCall& method_call) const = 0; + + // Implementation of the public interface, to be provided by subclasses. + virtual std::unique_ptr> EncodeSuccessEnvelopeInternal( + const T* result) const = 0; + + // Implementation of the public interface, to be provided by subclasses. + virtual std::unique_ptr> EncodeErrorEnvelopeInternal( + const std::string& error_code, + const std::string& error_message, + const T* error_details) const = 0; +}; + +} // namespace flutter + +#endif // FLUTTER_SHELL_PLATFORM_COMMON_CPP_CLIENT_WRAPPER_INCLUDE_FLUTTER_METHOD_CODEC_H_ diff --git a/shell/platform/common/cpp/client_wrapper/include/flutter/method_result.h b/shell/platform/common/cpp/client_wrapper/include/flutter/method_result.h new file mode 100644 index 0000000000000..e3bf572996eb4 --- /dev/null +++ b/shell/platform/common/cpp/client_wrapper/include/flutter/method_result.h @@ -0,0 +1,58 @@ +// 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. + +#ifndef FLUTTER_SHELL_PLATFORM_COMMON_CPP_CLIENT_WRAPPER_INCLUDE_FLUTTER_METHOD_RESULT_H_ +#define FLUTTER_SHELL_PLATFORM_COMMON_CPP_CLIENT_WRAPPER_INCLUDE_FLUTTER_METHOD_RESULT_H_ + +#include + +namespace flutter { + +// Encapsulates a result sent back to the Flutter engine in response to a +// MethodCall. Only one method should be called on any given instance. +template +class MethodResult { + public: + MethodResult() = default; + + virtual ~MethodResult() = default; + + // Prevent copying. + MethodResult(MethodResult const&) = delete; + MethodResult& operator=(MethodResult const&) = delete; + + // Sends a success response, indicating that the call completed successfully. + // An optional value can be provided as part of the success message. + void Success(const T* result = nullptr) { SuccessInternal(result); } + + // Sends an error response, indicating that the call was understood but + // handling failed in some way. A string error code must be provided, and in + // addition an optional user-readable error_message and/or details object can + // be included. + void Error(const std::string& error_code, + const std::string& error_message = "", + const T* error_details = nullptr) { + ErrorInternal(error_code, error_message, error_details); + } + + // Sends a not-implemented response, indicating that the method either was not + // recognized, or has not been implemented. + void NotImplemented() { NotImplementedInternal(); } + + protected: + // Implementation of the public interface, to be provided by subclasses. + virtual void SuccessInternal(const T* result) = 0; + + // Implementation of the public interface, to be provided by subclasses. + virtual void ErrorInternal(const std::string& error_code, + const std::string& error_message, + const T* error_details) = 0; + + // Implementation of the public interface, to be provided by subclasses. + virtual void NotImplementedInternal() = 0; +}; + +} // namespace flutter + +#endif // FLUTTER_SHELL_PLATFORM_COMMON_CPP_CLIENT_WRAPPER_INCLUDE_FLUTTER_METHOD_RESULT_H_ diff --git a/shell/platform/common/cpp/client_wrapper/include/flutter/plugin_registrar.h b/shell/platform/common/cpp/client_wrapper/include/flutter/plugin_registrar.h new file mode 100644 index 0000000000000..228a6a311fad0 --- /dev/null +++ b/shell/platform/common/cpp/client_wrapper/include/flutter/plugin_registrar.h @@ -0,0 +1,74 @@ +// 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. + +#ifndef FLUTTER_SHELL_PLATFORM_COMMON_CPP_CLIENT_WRAPPER_INCLUDE_FLUTTER_PLUGIN_REGISTRAR_H_ +#define FLUTTER_SHELL_PLATFORM_COMMON_CPP_CLIENT_WRAPPER_INCLUDE_FLUTTER_PLUGIN_REGISTRAR_H_ + +#include +#include +#include + +#include + +#include "binary_messenger.h" + +namespace flutter { + +class Plugin; + +// A object managing the registration of a plugin for various events. +// +// Currently this class has very limited functionality, but is expected to +// expand over time to more closely match the functionality of +// the Flutter mobile plugin APIs' plugin registrars. +class PluginRegistrar { + public: + // Creates a new PluginRegistrar. |core_registrar| and the messenger it + // provides must remain valid as long as this object exists. + explicit PluginRegistrar(FlutterDesktopPluginRegistrarRef core_registrar); + + ~PluginRegistrar(); + + // Prevent copying. + PluginRegistrar(PluginRegistrar const&) = delete; + PluginRegistrar& operator=(PluginRegistrar const&) = delete; + + // Returns the messenger to use for creating channels to communicate with the + // Flutter engine. + // + // This pointer will remain valid for the lifetime of this instance. + BinaryMessenger* messenger() { return messenger_.get(); } + + // Takes ownership of |plugin|. + // + // Plugins are not required to call this method if they have other lifetime + // management, but this is a convient place for plugins to be owned to ensure + // that they stay valid for any registered callbacks. + void AddPlugin(std::unique_ptr plugin); + + // Enables input blocking on the given channel name. + // + // If set, then the parent window should disable input callbacks + // while waiting for the handler for messages on that channel to run. + void EnableInputBlockingForChannel(const std::string& channel); + + private: + // Handle for interacting with the C API's registrar. + FlutterDesktopPluginRegistrarRef registrar_; + + std::unique_ptr messenger_; + + // Plugins registered for ownership. + std::set> plugins_; +}; + +// A plugin that can be registered for ownership by a PluginRegistrar. +class Plugin { + public: + virtual ~Plugin() = default; +}; + +} // namespace flutter + +#endif // FLUTTER_SHELL_PLATFORM_COMMON_CPP_CLIENT_WRAPPER_INCLUDE_FLUTTER_PLUGIN_REGISTRAR_H_ diff --git a/shell/platform/common/cpp/client_wrapper/json_message_codec.cc b/shell/platform/common/cpp/client_wrapper/json_message_codec.cc new file mode 100644 index 0000000000000..5610c4762ea83 --- /dev/null +++ b/shell/platform/common/cpp/client_wrapper/json_message_codec.cc @@ -0,0 +1,70 @@ +// 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 "include/flutter/json_message_codec.h" + +#include +#include + +#ifdef USE_RAPID_JSON +#include "rapidjson/error/en.h" +#include "rapidjson/stringbuffer.h" +#include "rapidjson/writer.h" +#endif + +namespace flutter { + +// static +const JsonMessageCodec& JsonMessageCodec::GetInstance() { + static JsonMessageCodec sInstance; + return sInstance; +} + +std::unique_ptr> JsonMessageCodec::EncodeMessageInternal( + const JsonValueType& message) const { +#ifdef USE_RAPID_JSON + // TODO: Look into alternate writers that would avoid the buffer copy. + rapidjson::StringBuffer buffer; + rapidjson::Writer writer(buffer); + message.Accept(writer); + const char* buffer_start = buffer.GetString(); + return std::make_unique>( + buffer_start, buffer_start + buffer.GetSize()); +#else + Json::StreamWriterBuilder writer_builder; + std::string serialization = Json::writeString(writer_builder, message); + return std::make_unique>(serialization.begin(), + serialization.end()); +#endif +} + +std::unique_ptr JsonMessageCodec::DecodeMessageInternal( + const uint8_t* binary_message, + const size_t message_size) const { + auto raw_message = reinterpret_cast(binary_message); + auto json_message = std::make_unique(); + std::string parse_errors; + bool parsing_successful = false; +#ifdef USE_RAPID_JSON + rapidjson::ParseResult result = + json_message->Parse(raw_message, message_size); + parsing_successful = result == rapidjson::ParseErrorCode::kParseErrorNone; + if (!parsing_successful) { + parse_errors = rapidjson::GetParseError_En(result.Code()); + } +#else + Json::CharReaderBuilder reader_builder; + std::unique_ptr parser(reader_builder.newCharReader()); + parsing_successful = parser->parse(raw_message, raw_message + message_size, + json_message.get(), &parse_errors); +#endif + if (!parsing_successful) { + std::cerr << "Unable to parse JSON message:" << std::endl + << parse_errors << std::endl; + return nullptr; + } + return json_message; +} + +} // namespace flutter diff --git a/shell/platform/common/cpp/client_wrapper/json_method_codec.cc b/shell/platform/common/cpp/client_wrapper/json_method_codec.cc new file mode 100644 index 0000000000000..f576d4ebf994f --- /dev/null +++ b/shell/platform/common/cpp/client_wrapper/json_method_codec.cc @@ -0,0 +1,135 @@ +// 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 "include/flutter/json_method_codec.h" + +#include "include/flutter/json_message_codec.h" + +namespace flutter { + +namespace { +// Keys used in MethodCall encoding. +constexpr char kMessageMethodKey[] = "method"; +constexpr char kMessageArgumentsKey[] = "args"; +} // namespace + +// static +const JsonMethodCodec& JsonMethodCodec::GetInstance() { + static JsonMethodCodec sInstance; + return sInstance; +} + +std::unique_ptr> +JsonMethodCodec::DecodeMethodCallInternal(const uint8_t* message, + const size_t message_size) const { + std::unique_ptr json_message = + JsonMessageCodec::GetInstance().DecodeMessage(message, message_size); + if (!json_message) { + return nullptr; + } + +#if USE_RAPID_JSON + auto method_name_iter = json_message->FindMember(kMessageMethodKey); + if (method_name_iter == json_message->MemberEnd()) { + return nullptr; + } + if (!method_name_iter->value.IsString()) { + return nullptr; + } + std::string method_name(method_name_iter->value.GetString()); + auto arguments_iter = json_message->FindMember(kMessageArgumentsKey); + std::unique_ptr arguments; + if (arguments_iter != json_message->MemberEnd()) { + // Pull the arguments subtree up to the root of json_message. This is + // destructive to json_message, but the full value is no longer needed, and + // this avoids a subtree copy. + json_message->Swap(arguments_iter->value); + // Swap it into |arguments|. This moves the allocator ownership, so that + // the data won't be deleted when json_message goes out of scope. + arguments = std::make_unique(); + arguments->Swap(*json_message); + } + return std::make_unique>( + method_name, std::move(arguments)); +#else + Json::Value method = (*json_message)[kMessageMethodKey]; + if (method.isNull()) { + return nullptr; + } + return std::make_unique>( + method.asString(), + std::make_unique((*json_message)[kMessageArgumentsKey])); +#endif +} + +std::unique_ptr> JsonMethodCodec::EncodeMethodCallInternal( + const MethodCall& method_call) const { +#if USE_RAPID_JSON + // TODO: Consider revisiting the codec APIs to avoid the need to copy + // everything when doing encoding (e.g., by having a version that takes + // owership of the object to encode, so that it can be moved instead). + rapidjson::Document message(rapidjson::kObjectType); + auto& allocator = message.GetAllocator(); + rapidjson::Value name(method_call.method_name(), allocator); + rapidjson::Value arguments; + if (method_call.arguments()) { + arguments.CopyFrom(*method_call.arguments(), allocator); + } + message.AddMember(kMessageMethodKey, name, allocator); + message.AddMember(kMessageArgumentsKey, arguments, allocator); +#else + Json::Value message(Json::objectValue); + message[kMessageMethodKey] = method_call.method_name(); + const Json::Value* arguments = method_call.arguments(); + message[kMessageArgumentsKey] = arguments ? *arguments : Json::Value(); +#endif + + return JsonMessageCodec::GetInstance().EncodeMessage(message); +} + +std::unique_ptr> +JsonMethodCodec::EncodeSuccessEnvelopeInternal( + const JsonValueType* result) const { +#if USE_RAPID_JSON + rapidjson::Document envelope; + envelope.SetArray(); + rapidjson::Value result_value; + if (result) { + result_value.CopyFrom(*result, envelope.GetAllocator()); + } + envelope.PushBack(result_value, envelope.GetAllocator()); +#else + Json::Value envelope(Json::arrayValue); + envelope.append(result == nullptr ? Json::Value() : *result); +#endif + + return JsonMessageCodec::GetInstance().EncodeMessage(envelope); +} + +std::unique_ptr> +JsonMethodCodec::EncodeErrorEnvelopeInternal( + const std::string& error_code, + const std::string& error_message, + const JsonValueType* error_details) const { +#if USE_RAPID_JSON + rapidjson::Document envelope(rapidjson::kArrayType); + auto& allocator = envelope.GetAllocator(); + envelope.PushBack(rapidjson::Value(error_code, allocator), allocator); + envelope.PushBack(rapidjson::Value(error_message, allocator), allocator); + rapidjson::Value details_value; + if (error_details) { + details_value.CopyFrom(*error_details, allocator); + } + envelope.PushBack(details_value, allocator); +#else + Json::Value envelope(Json::arrayValue); + envelope.append(error_code); + envelope.append(error_message.empty() ? Json::Value() : error_message); + envelope.append(error_details == nullptr ? Json::Value() : *error_details); +#endif + + return JsonMessageCodec::GetInstance().EncodeMessage(envelope); +} + +} // namespace flutter diff --git a/shell/platform/common/cpp/client_wrapper/method_call_unittests.cc b/shell/platform/common/cpp/client_wrapper/method_call_unittests.cc new file mode 100644 index 0000000000000..a3d093d8c8bae --- /dev/null +++ b/shell/platform/common/cpp/client_wrapper/method_call_unittests.cc @@ -0,0 +1,23 @@ +// 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/platform/common/cpp/client_wrapper/include/flutter/method_call.h" + +#include +#include + +#include "gtest/gtest.h" + +namespace flutter { + +TEST(MethodCallTest, Basic) { + const std::string method_name("method_name"); + const int argument = 42; + MethodCall method_call(method_name, std::make_unique(argument)); + EXPECT_EQ(method_call.method_name(), method_name); + ASSERT_NE(method_call.arguments(), nullptr); + EXPECT_EQ(*method_call.arguments(), 42); +} + +} // namespace flutter diff --git a/shell/platform/common/cpp/client_wrapper/plugin_registrar.cc b/shell/platform/common/cpp/client_wrapper/plugin_registrar.cc new file mode 100644 index 0000000000000..46c117377b22e --- /dev/null +++ b/shell/platform/common/cpp/client_wrapper/plugin_registrar.cc @@ -0,0 +1,125 @@ +// 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 "include/flutter/plugin_registrar.h" + +#include "include/flutter/engine_method_result.h" +#include "include/flutter/method_channel.h" + +#include +#include + +namespace flutter { + +namespace { + +// Passes |message| to |user_data|, which must be a BinaryMessageHandler, along +// with a BinaryReply that will send a response on |message|'s response handle. +// +// This serves as an adaptor between the function-pointer-based message callback +// interface provided by the C API and the std::function-based message handler +// interface of BinaryMessenger. +void ForwardToHandler(FlutterDesktopMessengerRef messenger, + const FlutterDesktopMessage* message, + void* user_data) { + auto* response_handle = message->response_handle; + BinaryReply reply_handler = [messenger, response_handle]( + const uint8_t* reply, + const size_t reply_size) mutable { + if (!response_handle) { + std::cerr << "Error: Response can be set only once. Ignoring " + "duplicate response." + << std::endl; + return; + } + FlutterDesktopMessengerSendResponse(messenger, response_handle, reply, + reply_size); + // The engine frees the response handle once + // FlutterDesktopSendMessageResponse is called. + response_handle = nullptr; + }; + + const BinaryMessageHandler& message_handler = + *static_cast(user_data); + + message_handler(message->message, message->message_size, + std::move(reply_handler)); +} + +} // namespace + +// Wrapper around a FlutterDesktopMessengerRef that implements the +// BinaryMessenger API. +class BinaryMessengerImpl : public BinaryMessenger { + public: + explicit BinaryMessengerImpl(FlutterDesktopMessengerRef core_messenger) + : messenger_(core_messenger) {} + + virtual ~BinaryMessengerImpl() = default; + + // Prevent copying. + BinaryMessengerImpl(BinaryMessengerImpl const&) = delete; + BinaryMessengerImpl& operator=(BinaryMessengerImpl const&) = delete; + + // |flutter::BinaryMessenger| + void Send(const std::string& channel, + const uint8_t* message, + const size_t message_size) const override; + + // |flutter::BinaryMessenger| + void SetMessageHandler(const std::string& channel, + BinaryMessageHandler handler) override; + + private: + // Handle for interacting with the C API. + FlutterDesktopMessengerRef messenger_; + + // A map from channel names to the BinaryMessageHandler that should be called + // for incoming messages on that channel. + std::map handlers_; +}; + +void BinaryMessengerImpl::Send(const std::string& channel, + const uint8_t* message, + const size_t message_size) const { + FlutterDesktopMessengerSend(messenger_, channel.c_str(), message, + message_size); +} + +void BinaryMessengerImpl::SetMessageHandler(const std::string& channel, + BinaryMessageHandler handler) { + if (!handler) { + handlers_.erase(channel); + FlutterDesktopMessengerSetCallback(messenger_, channel.c_str(), nullptr, + nullptr); + return; + } + // Save the handler, to keep it alive. + handlers_[channel] = std::move(handler); + BinaryMessageHandler* message_handler = &handlers_[channel]; + // Set an adaptor callback that will invoke the handler. + FlutterDesktopMessengerSetCallback(messenger_, channel.c_str(), + ForwardToHandler, message_handler); +} + +// PluginRegistrar: + +PluginRegistrar::PluginRegistrar(FlutterDesktopPluginRegistrarRef registrar) + : registrar_(registrar) { + auto core_messenger = FlutterDesktopRegistrarGetMessenger(registrar_); + messenger_ = std::make_unique(core_messenger); +} + +PluginRegistrar::~PluginRegistrar() {} + +void PluginRegistrar::AddPlugin(std::unique_ptr plugin) { + plugins_.insert(std::move(plugin)); +} + +void PluginRegistrar::EnableInputBlockingForChannel( + const std::string& channel) { + FlutterDesktopRegistrarEnableInputBlocking(registrar_, channel.c_str()); +} + +} // namespace flutter diff --git a/shell/platform/common/cpp/client_wrapper/plugin_registrar_unittests.cc b/shell/platform/common/cpp/client_wrapper/plugin_registrar_unittests.cc new file mode 100644 index 0000000000000..c4e5de5b46b50 --- /dev/null +++ b/shell/platform/common/cpp/client_wrapper/plugin_registrar_unittests.cc @@ -0,0 +1,50 @@ +// 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/platform/common/cpp/client_wrapper/include/flutter/plugin_registrar.h" + +#include +#include + +#include "flutter/shell/platform/common/cpp/client_wrapper/testing/stub_flutter_api.h" +#include "gtest/gtest.h" + +namespace flutter { + +namespace { + +// Stub implementation to validate calls to the API. +class TestApi : public testing::StubFlutterApi { + public: + // |flutter::testing::StubFlutterApi| + void MessengerSend(const char* channel, + const uint8_t* message, + const size_t message_size) override { + last_data_sent_ = message; + } + + const uint8_t* last_data_sent() { return last_data_sent_; } + + private: + const uint8_t* last_data_sent_ = nullptr; +}; + +} // namespace + +// Tests that the registrar returns a messenger that calls through to the C API. +TEST(MethodCallTest, MessengerSend) { + testing::ScopedStubFlutterApi scoped_api_stub(std::make_unique()); + auto test_api = static_cast(scoped_api_stub.stub()); + + auto dummy_registrar_handle = + reinterpret_cast(1); + PluginRegistrar registrar(dummy_registrar_handle); + BinaryMessenger* messenger = registrar.messenger(); + + std::vector message = {1, 2, 3, 4}; + messenger->Send("some_channel", &message[0], message.size()); + EXPECT_EQ(test_api->last_data_sent(), &message[0]); +} + +} // namespace flutter diff --git a/shell/platform/common/cpp/client_wrapper/publish.gni b/shell/platform/common/cpp/client_wrapper/publish.gni new file mode 100644 index 0000000000000..8913062ced2f4 --- /dev/null +++ b/shell/platform/common/cpp/client_wrapper/publish.gni @@ -0,0 +1,42 @@ +# 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. + +# Publishes client wrapper files to the output directory for distribution. +# This can be used multiple times to combine various portions of a wrapper +# library into one cohesive library for clients to consume. +# +# Files that should be built by clients go into 'sources', while headers meant +# to be included by the consuming code go into 'public'. +# +# All public code is assumed to be in the 'flutter' namespace. +template("publish_client_wrapper") { + template_target_name = target_name + publish_dir_root = "$root_out_dir/cpp_client_wrapper" + namespace = "flutter" + + group(template_target_name) { + deps = [ + ":${template_target_name}_publish_includes", + ":${template_target_name}_publish_sources", + ] + } + + copy("${template_target_name}_publish_includes") { + visibility = [ ":$template_target_name" ] + + sources = invoker.public + outputs = [ + "$publish_dir_root/include/$namespace/{{source_file_part}}", + ] + } + + copy("${template_target_name}_publish_sources") { + visibility = [ ":$template_target_name" ] + + sources = invoker.sources + outputs = [ + "$publish_dir_root/{{source_file_part}}", + ] + } +} diff --git a/shell/platform/common/cpp/client_wrapper/testing/stub_flutter_api.cc b/shell/platform/common/cpp/client_wrapper/testing/stub_flutter_api.cc new file mode 100644 index 0000000000000..55f4100b72efb --- /dev/null +++ b/shell/platform/common/cpp/client_wrapper/testing/stub_flutter_api.cc @@ -0,0 +1,81 @@ +// 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. + +// 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/platform/common/cpp/client_wrapper/testing/stub_flutter_api.h" + +static flutter::testing::StubFlutterApi* s_stub_implementation; + +namespace flutter { +namespace testing { + +// static +void StubFlutterApi::SetTestStub(StubFlutterApi* stub) { + s_stub_implementation = stub; +} + +// static +StubFlutterApi* StubFlutterApi::GetTestStub() { + return s_stub_implementation; +} + +ScopedStubFlutterApi::ScopedStubFlutterApi(std::unique_ptr stub) + : stub_(std::move(stub)) { + previous_stub_ = StubFlutterApi::GetTestStub(); + StubFlutterApi::SetTestStub(stub_.get()); +} + +ScopedStubFlutterApi::~ScopedStubFlutterApi() { + StubFlutterApi::SetTestStub(previous_stub_); +} + +} // namespace testing +} // namespace flutter + +// Forwarding dummy implementations of the C API. + +FlutterDesktopMessengerRef FlutterDesktopRegistrarGetMessenger( + FlutterDesktopPluginRegistrarRef registrar) { + // The stub ignores this, so just return an arbitrary non-zero value. + return reinterpret_cast(1); +} + +void FlutterDesktopRegistrarEnableInputBlocking( + FlutterDesktopPluginRegistrarRef registrar, + const char* channel) { + if (s_stub_implementation) { + s_stub_implementation->RegistrarEnableInputBlocking(channel); + } +} + +void FlutterDesktopMessengerSend(FlutterDesktopMessengerRef messenger, + const char* channel, + const uint8_t* message, + const size_t message_size) { + if (s_stub_implementation) { + s_stub_implementation->MessengerSend(channel, message, message_size); + } +} + +void FlutterDesktopMessengerSendResponse( + FlutterDesktopMessengerRef messenger, + const FlutterDesktopMessageResponseHandle* handle, + const uint8_t* data, + size_t data_length) { + if (s_stub_implementation) { + s_stub_implementation->MessengerSendResponse(handle, data, data_length); + } +} + +void FlutterDesktopMessengerSetCallback(FlutterDesktopMessengerRef messenger, + const char* channel, + FlutterDesktopMessageCallback callback, + void* user_data) { + if (s_stub_implementation) { + s_stub_implementation->MessengerSetCallback(channel, callback, user_data); + } +} diff --git a/shell/platform/common/cpp/client_wrapper/testing/stub_flutter_api.h b/shell/platform/common/cpp/client_wrapper/testing/stub_flutter_api.h new file mode 100644 index 0000000000000..64491405cb805 --- /dev/null +++ b/shell/platform/common/cpp/client_wrapper/testing/stub_flutter_api.h @@ -0,0 +1,74 @@ +// 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. + +#ifndef FLUTTER_SHELL_PLATFORM_COMMON_CPP_CLIENT_WRAPPER_TESTING_STUB_FLUTTER_API_H_ +#define FLUTTER_SHELL_PLATFORM_COMMON_CPP_CLIENT_WRAPPER_TESTING_STUB_FLUTTER_API_H_ + +#include + +#include "flutter/shell/platform/common/cpp/public/flutter_messenger.h" +#include "flutter/shell/platform/common/cpp/public/flutter_plugin_registrar.h" + +namespace flutter { +namespace testing { + +// Base class for a object that provides test implementations of the APIs in +// the headers in platform/common/cpp/public/. + +// Linking this class into a test binary will provide dummy forwarding +// implementantions of that C API, so that the wrapper can be tested separately +// from the actual library. +class StubFlutterApi { + public: + // Sets |stub| as the instance to which calls to the Flutter library C APIs + // will be forwarded. + static void SetTestStub(StubFlutterApi* stub); + + // Returns the current stub, as last set by SetTestFluttterStub. + static StubFlutterApi* GetTestStub(); + + virtual ~StubFlutterApi() {} + + // Called for FlutterDesktopRegistrarEnableInputBlocking. + virtual void RegistrarEnableInputBlocking(const char* channel) {} + + // Called for FlutterDesktopMessengerSend. + virtual void MessengerSend(const char* channel, + const uint8_t* message, + const size_t message_size) {} + + // Called for FlutterDesktopMessengerSendResponse. + virtual void MessengerSendResponse( + const FlutterDesktopMessageResponseHandle* handle, + const uint8_t* data, + size_t data_length) {} + + // Called for FlutterDesktopMessengerSetCallback. + virtual void MessengerSetCallback(const char* channel, + FlutterDesktopMessageCallback callback, + void* user_data) {} +}; + +// A test helper that owns a stub implementation, making it the test stub for +// the lifetime of the object, then restoring the previous value. +class ScopedStubFlutterApi { + public: + // Calls SetTestFlutterStub with |stub|. + ScopedStubFlutterApi(std::unique_ptr stub); + + // Restores the previous test stub. + ~ScopedStubFlutterApi(); + + StubFlutterApi* stub() { return stub_.get(); } + + private: + std::unique_ptr stub_; + // The previous stub. + StubFlutterApi* previous_stub_; +}; + +} // namespace testing +} // namespace flutter + +#endif // FLUTTER_SHELL_PLATFORM_COMMON_CPP_CLIENT_WRAPPER_TESTING_STUB_FLUTTER_API_H_ diff --git a/shell/platform/common/cpp/incoming_message_dispatcher.cc b/shell/platform/common/cpp/incoming_message_dispatcher.cc new file mode 100644 index 0000000000000..f766f7738135a --- /dev/null +++ b/shell/platform/common/cpp/incoming_message_dispatcher.cc @@ -0,0 +1,57 @@ +// 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/platform/common/cpp/incoming_message_dispatcher.h" + +namespace shell { + +IncomingMessageDispatcher::IncomingMessageDispatcher( + FlutterDesktopMessengerRef messenger) + : messenger_(messenger) {} + +IncomingMessageDispatcher::~IncomingMessageDispatcher() = default; + +void IncomingMessageDispatcher::HandleMessage( + const FlutterDesktopMessage& message, + std::function input_block_cb, + std::function input_unblock_cb) { + std::string channel(message.channel); + + // Find the handler for the channel; if there isn't one, report the failure. + if (callbacks_.find(channel) == callbacks_.end()) { + FlutterDesktopMessengerSendResponse(messenger_, message.response_handle, + nullptr, 0); + return; + } + auto& callback_info = callbacks_[channel]; + FlutterDesktopMessageCallback message_callback = callback_info.first; + + // Process the call, handling input blocking if requested. + bool block_input = input_blocking_channels_.count(channel) > 0; + if (block_input) { + input_block_cb(); + } + message_callback(messenger_, &message, callback_info.second); + if (block_input) { + input_unblock_cb(); + } +} + +void IncomingMessageDispatcher::SetMessageCallback( + const std::string& channel, + FlutterDesktopMessageCallback callback, + void* user_data) { + if (!callback) { + callbacks_.erase(channel); + return; + } + callbacks_[channel] = std::make_pair(callback, user_data); +} + +void IncomingMessageDispatcher::EnableInputBlockingForChannel( + const std::string& channel) { + input_blocking_channels_.insert(channel); +} + +} // namespace shell diff --git a/shell/platform/common/cpp/incoming_message_dispatcher.h b/shell/platform/common/cpp/incoming_message_dispatcher.h new file mode 100644 index 0000000000000..fced7db7a8e24 --- /dev/null +++ b/shell/platform/common/cpp/incoming_message_dispatcher.h @@ -0,0 +1,78 @@ +// 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. + +#ifndef FLUTTER_SHELL_PLATFORM_CPP_INCOMING_MESSAGE_DISPATCHER_H_ +#define FLUTTER_SHELL_PLATFORM_CPP_INCOMING_MESSAGE_DISPATCHER_H_ + +#include +#include +#include +#include +#include + +#include "flutter/shell/platform/common/cpp/public/flutter_messenger.h" + +namespace shell { + +// Manages per-channel registration of callbacks for handling messages from the +// Flutter engine, and dispatching incoming messages to those handlers. +class IncomingMessageDispatcher { + public: + // Creates a new IncomingMessageDispatcher. |messenger| must remain valid as + // long as this object exists. + explicit IncomingMessageDispatcher(FlutterDesktopMessengerRef messenger); + + virtual ~IncomingMessageDispatcher(); + + // Prevent copying. + IncomingMessageDispatcher(IncomingMessageDispatcher const&) = delete; + IncomingMessageDispatcher& operator=(IncomingMessageDispatcher const&) = + delete; + + // Routes |message| to to the registered handler for its channel, if any. + // + // If input blocking has been enabled on that channel, wraps the call to the + // handler with calls to the given callbacks to block and then unblock input. + // + // If no handler is registered for the message's channel, sends a + // NotImplemented response to the engine. + void HandleMessage( + const FlutterDesktopMessage& message, + std::function input_block_cb = [] {}, + std::function input_unblock_cb = [] {}); + + // Registers a message callback for incoming messages from the Flutter + // side on the specified channel. |callback| will be called with the message + // and |user_data| any time a message arrives on that channel. + // + // Replaces any existing callback. Pass a null callback to unregister the + // existing callback. + void SetMessageCallback(const std::string& channel, + FlutterDesktopMessageCallback callback, + void* user_data); + + // Enables input blocking on the given channel name. + // + // If set, then the parent window should disable input callbacks + // while waiting for the handler for messages on that channel to run. + void EnableInputBlockingForChannel(const std::string& channel); + + private: + // Handle for interacting with the C messaging API. + FlutterDesktopMessengerRef messenger_; + + // A map from channel names to the FlutterDesktopMessageCallback that should + // be called for incoming messages on that channel, along with the void* user + // data to pass to it. + std::map> + callbacks_; + + // Channel names for which input blocking should be enabled during the call to + // that channel's handler. + std::set input_blocking_channels_; +}; + +} // namespace shell + +#endif // FLUTTER_SHELL_PLATFORM_CPP_INCOMING_MESSAGE_DISPATCHER_H_ diff --git a/shell/platform/common/cpp/public/flutter_export.h b/shell/platform/common/cpp/public/flutter_export.h new file mode 100644 index 0000000000000..2f380915f9510 --- /dev/null +++ b/shell/platform/common/cpp/public/flutter_export.h @@ -0,0 +1,28 @@ +// 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. + +#ifndef FLUTTER_SHELL_PLATFORM_COMMON_CPP_PUBLIC_FLUTTER_EXPORT_H_ +#define FLUTTER_SHELL_PLATFORM_COMMON_CPP_PUBLIC_FLUTTER_EXPORT_H_ + +#ifdef FLUTTER_DESKTOP_LIBRARY +// Add visibility/export annotations when building the library. + +#ifdef _WIN32 +#define FLUTTER_EXPORT __declspec(dllexport) +#else +#define FLUTTER_EXPORT __attribute__((visibility("default"))) +#endif + +#else // FLUTTER_DESKTOP_LIBRARY + +// Add import annotations when consuming the library. +#ifdef _WIN32 +#define FLUTTER_EXPORT __declspec(dllimport) +#else +#define FLUTTER_EXPORT +#endif + +#endif // FLUTTER_DESKTOP_LIBRARY + +#endif // FLUTTER_SHELL_PLATFORM_COMMON_CPP_PUBLIC_FLUTTER_EXPORT_H_ \ No newline at end of file diff --git a/shell/platform/common/cpp/public/flutter_messenger.h b/shell/platform/common/cpp/public/flutter_messenger.h new file mode 100644 index 0000000000000..ff9f43437708d --- /dev/null +++ b/shell/platform/common/cpp/public/flutter_messenger.h @@ -0,0 +1,81 @@ +// 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. + +#ifndef FLUTTER_SHELL_PLATFORM_COMMON_CPP_PUBLIC_FLUTTER_MESSENGER_H_ +#define FLUTTER_SHELL_PLATFORM_COMMON_CPP_PUBLIC_FLUTTER_MESSENGER_H_ + +#include +#include + +#include "flutter_export.h" + +#if defined(__cplusplus) +extern "C" { +#endif + +// Opaque reference to a Flutter engine messenger. +typedef struct FlutterDesktopMessenger* FlutterDesktopMessengerRef; + +// Opaque handle for tracking responses to messages. +typedef struct _FlutterPlatformMessageResponseHandle + FlutterDesktopMessageResponseHandle; + +// A message received from Flutter. +typedef struct { + // Size of this struct as created by Flutter. + size_t struct_size; + // The name of the channel used for this message. + const char* channel; + // The raw message data. + const uint8_t* message; + // The length of |message|. + size_t message_size; + // The response handle. If non-null, the receiver of this message must call + // FlutterDesktopSendMessageResponse exactly once with this handle. + const FlutterDesktopMessageResponseHandle* response_handle; +} FlutterDesktopMessage; + +// Function pointer type for message handler callback registration. +// +// The user data will be whatever was passed to FlutterDesktopSetMessageHandler +// for the channel the message is received on. +typedef void (*FlutterDesktopMessageCallback)( + FlutterDesktopMessengerRef /* messenger */, + const FlutterDesktopMessage* /* message*/, + void* /* user data */); + +// Sends a binary message to the Flutter side on the specified channel. +FLUTTER_EXPORT void FlutterDesktopMessengerSend( + FlutterDesktopMessengerRef messenger, + const char* channel, + const uint8_t* message, + const size_t message_size); + +// Sends a reply to a FlutterDesktopMessage for the given response handle. +// +// Once this has been called, |handle| is invalid and must not be used again. +FLUTTER_EXPORT void FlutterDesktopMessengerSendResponse( + FlutterDesktopMessengerRef messenger, + const FlutterDesktopMessageResponseHandle* handle, + const uint8_t* data, + size_t data_length); + +// Registers a callback function for incoming binary messages from the Flutter +// side on the specified channel. +// +// Replaces any existing callback. Provide a null handler to unregister the +// existing callback. +// +// If |user_data| is provided, it will be passed in |callback| calls. +FLUTTER_EXPORT void FlutterDesktopMessengerSetCallback( + FlutterDesktopMessengerRef messenger, + const char* channel, + FlutterDesktopMessageCallback callback, + void* user_data); + +#if defined(__cplusplus) +} // extern "C" +#endif + +#endif // FLUTTER_SHELL_PLATFORM_COMMON_CPP_PUBLIC_FLUTTER_MESSENGER_H_ diff --git a/shell/platform/common/cpp/public/flutter_plugin_registrar.h b/shell/platform/common/cpp/public/flutter_plugin_registrar.h new file mode 100644 index 0000000000000..1caa3cee1f9e4 --- /dev/null +++ b/shell/platform/common/cpp/public/flutter_plugin_registrar.h @@ -0,0 +1,42 @@ +// 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. + +#ifndef FLUTTER_SHELL_PLATFORM_COMMON_CPP_PUBLIC_FLUTTER_PLUGIN_REGISTRAR_H_ +#define FLUTTER_SHELL_PLATFORM_COMMON_CPP_PUBLIC_FLUTTER_PLUGIN_REGISTRAR_H_ + +#include +#include + +#include "flutter_export.h" +#include "flutter_messenger.h" + +#if defined(__cplusplus) +extern "C" { +#endif + +// Opaque reference to a plugin registrar. +typedef struct FlutterDesktopPluginRegistrar* FlutterDesktopPluginRegistrarRef; + +// Returns the engine messenger associated with this registrar. +FLUTTER_EXPORT FlutterDesktopMessengerRef +FlutterDesktopRegistrarGetMessenger(FlutterDesktopPluginRegistrarRef registrar); + +// Enables input blocking on the given channel. +// +// If set, then the Flutter window will disable input callbacks +// while waiting for the handler for messages on that channel to run. This is +// useful if handling the message involves showing a modal window, for instance. +// +// This must be called after FlutterDesktopSetMessageHandler, as setting a +// handler on a channel will reset the input blocking state back to the +// default of disabled. +FLUTTER_EXPORT void FlutterDesktopRegistrarEnableInputBlocking( + FlutterDesktopPluginRegistrarRef registrar, + const char* channel); + +#if defined(__cplusplus) +} // extern "C" +#endif + +#endif // FLUTTER_SHELL_PLATFORM_COMMON_CPP_PUBLIC_FLUTTER_PLUGIN_REGISTRAR_H_ diff --git a/shell/platform/common/cpp/text_input_model.cc b/shell/platform/common/cpp/text_input_model.cc new file mode 100644 index 0000000000000..2f1c9b3741f1f --- /dev/null +++ b/shell/platform/common/cpp/text_input_model.cc @@ -0,0 +1,181 @@ +// 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/platform/common/cpp/text_input_model.h" + +#include + +// TODO(awdavies): Need to fix this regarding issue #47. +static constexpr char kComposingBaseKey[] = "composingBase"; + +static constexpr char kComposingExtentKey[] = "composingExtent"; + +static constexpr char kSelectionAffinityKey[] = "selectionAffinity"; +static constexpr char kAffinityDownstream[] = "TextAffinity.downstream"; + +static constexpr char kSelectionBaseKey[] = "selectionBase"; +static constexpr char kSelectionExtentKey[] = "selectionExtent"; + +static constexpr char kSelectionIsDirectionalKey[] = "selectionIsDirectional"; + +static constexpr char kTextKey[] = "text"; + +// Input client configuration keys. +static constexpr char kTextInputAction[] = "inputAction"; +static constexpr char kTextInputType[] = "inputType"; +static constexpr char kTextInputTypeName[] = "name"; + +namespace shell { + +TextInputModel::TextInputModel(int client_id, const rapidjson::Value& config) + : text_(""), + client_id_(client_id), + selection_base_(text_.begin()), + selection_extent_(text_.begin()) { + // TODO: Improve error handling during refactoring; this is just minimal + // checking to avoid asserts since RapidJSON is stricter than jsoncpp. + if (config.IsObject()) { + auto input_action = config.FindMember(kTextInputAction); + if (input_action != config.MemberEnd() && input_action->value.IsString()) { + input_action_ = input_action->value.GetString(); + } + auto input_type_info = config.FindMember(kTextInputType); + if (input_type_info != config.MemberEnd() && + input_type_info->value.IsObject()) { + auto input_type = input_type_info->value.FindMember(kTextInputTypeName); + if (input_type != input_type_info->value.MemberEnd() && + input_type->value.IsString()) { + input_type_ = input_type->value.GetString(); + } + } + } +} + +TextInputModel::~TextInputModel() = default; + +bool TextInputModel::SetEditingState(size_t selection_base, + size_t selection_extent, + const std::string& text) { + if (selection_base > selection_extent) { + return false; + } + // Only checks extent since it is implicitly greater-than-or-equal-to base. + if (selection_extent > text.size()) { + return false; + } + text_ = std::string(text); + selection_base_ = text_.begin() + selection_base; + selection_extent_ = text_.begin() + selection_extent; + return true; +} + +void TextInputModel::DeleteSelected() { + selection_base_ = text_.erase(selection_base_, selection_extent_); + // Moves extent back to base, so that it is a single cursor placement again. + selection_extent_ = selection_base_; +} + +void TextInputModel::AddCharacter(char c) { + if (selection_base_ != selection_extent_) { + DeleteSelected(); + } + selection_extent_ = text_.insert(selection_extent_, c); + selection_extent_++; + selection_base_ = selection_extent_; +} + +bool TextInputModel::Backspace() { + if (selection_base_ != selection_extent_) { + DeleteSelected(); + return true; + } + if (selection_base_ != text_.begin()) { + selection_base_ = text_.erase(selection_base_ - 1, selection_base_); + selection_extent_ = selection_base_; + return true; + } + return false; // No edits happened. +} + +bool TextInputModel::Delete() { + if (selection_base_ != selection_extent_) { + DeleteSelected(); + return true; + } + if (selection_base_ != text_.end()) { + selection_base_ = text_.erase(selection_base_, selection_base_ + 1); + selection_extent_ = selection_base_; + return true; + } + return false; +} + +void TextInputModel::MoveCursorToBeginning() { + selection_base_ = text_.begin(); + selection_extent_ = text_.begin(); +} + +void TextInputModel::MoveCursorToEnd() { + selection_base_ = text_.end(); + selection_extent_ = text_.end(); +} + +bool TextInputModel::MoveCursorForward() { + // If about to move set to the end of the highlight (when not selecting). + if (selection_base_ != selection_extent_) { + selection_base_ = selection_extent_; + return true; + } + // If not at the end, move the extent forward. + if (selection_extent_ != text_.end()) { + selection_extent_++; + selection_base_++; + return true; + } + return false; +} + +bool TextInputModel::MoveCursorBack() { + // If about to move set to the beginning of the highlight + // (when not selecting). + if (selection_base_ != selection_extent_) { + selection_extent_ = selection_base_; + return true; + } + // If not at the start, move the beginning backward. + if (selection_base_ != text_.begin()) { + selection_base_--; + selection_extent_--; + return true; + } + return false; +} + +std::unique_ptr TextInputModel::GetState() const { + // TODO(stuartmorgan): Move client_id out up to the plugin so that this + // function just returns the editing state. + auto args = std::make_unique(rapidjson::kArrayType); + auto& allocator = args->GetAllocator(); + args->PushBack(client_id_, allocator); + + rapidjson::Value editing_state(rapidjson::kObjectType); + // TODO(awdavies): Most of these are hard-coded for now. + editing_state.AddMember(kComposingBaseKey, -1, allocator); + editing_state.AddMember(kComposingExtentKey, -1, allocator); + editing_state.AddMember(kSelectionAffinityKey, kAffinityDownstream, + allocator); + editing_state.AddMember(kSelectionBaseKey, + static_cast(selection_base_ - text_.begin()), + allocator); + editing_state.AddMember(kSelectionExtentKey, + static_cast(selection_extent_ - text_.begin()), + allocator); + editing_state.AddMember(kSelectionIsDirectionalKey, false, allocator); + editing_state.AddMember(kTextKey, rapidjson::Value(text_, allocator).Move(), + allocator); + args->PushBack(editing_state, allocator); + return args; +} + +} // namespace shell diff --git a/shell/platform/common/cpp/text_input_model.h b/shell/platform/common/cpp/text_input_model.h new file mode 100644 index 0000000000000..3ae567c50c463 --- /dev/null +++ b/shell/platform/common/cpp/text_input_model.h @@ -0,0 +1,101 @@ +// 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. + +#ifndef FLUTTER_SHELL_PLATFORM_CPP_TEXT_INPUT_MODEL_H_ +#define FLUTTER_SHELL_PLATFORM_CPP_TEXT_INPUT_MODEL_H_ + +#include + +#include "rapidjson/document.h" + +namespace shell { +// Handles underlying text input state, using a simple ASCII model. +// +// Ignores special states like "insert mode" for now. +class TextInputModel { + public: + TextInputModel(int client_id, const rapidjson::Value& config); + virtual ~TextInputModel(); + + // Attempts to set the text state. + // + // Returns false if the state is not valid (base or extent are out of + // bounds, or base is less than extent). + bool SetEditingState(size_t selection_base, + size_t selection_extent, + const std::string& text); + + // Adds a character. + // + // Either appends after the cursor (when selection base and extent are the + // same), or deletes the selected characters, replacing the text with the + // character specified. + void AddCharacter(char c); + + // Deletes either the selection, or one character ahead of the cursor. + // + // Deleting one character ahead of the cursor occurs when the selection base + // and extent are the same. + // + // Returns true if any deletion actually occurred. + bool Delete(); + + // Deletes either the selection, or one character behind the cursor. + // + // Deleting one character behind the cursor occurs when the selection base + // and extent are the same. + // + // Returns true if any deletion actually occurred. + bool Backspace(); + + // Attempts to move the cursor backward. + // + // Returns true if the cursor could be moved. Changes base and extent to be + // equal to either the extent (if extent is at the end of the string), or + // for extent to be equal to + bool MoveCursorBack(); + + // Attempts to move the cursor forward. + // + // Returns true if the cursor could be moved. + bool MoveCursorForward(); + + // Attempts to move the cursor to the beginning. + // + // Returns true if the cursor could be moved. + void MoveCursorToBeginning(); + + // Attempts to move the cursor to the back. + // + // Returns true if the cursor could be moved. + void MoveCursorToEnd(); + + // Returns the state in the form of a platform message. + std::unique_ptr GetState() const; + + // Id of the text input client. + int client_id() const { return client_id_; } + + // Keyboard type of the client. See available options: + // https://docs.flutter.io/flutter/services/TextInputType-class.html + std::string input_type() const { return input_type_; } + + // An action requested by the user on the input client. See available options: + // https://docs.flutter.io/flutter/services/TextInputAction-class.html + std::string input_action() const { return input_action_; } + + private: + void DeleteSelected(); + + std::string text_; + int client_id_; + std::string input_type_; + std::string input_action_; + std::string::iterator selection_base_; + std::string::iterator selection_extent_; +}; + +} // namespace shell + +#endif // FLUTTER_SHELL_PLATFORM_CPP_TEXT_INPUT_MODEL_H_ diff --git a/shell/platform/glfw/BUILD.gn b/shell/platform/glfw/BUILD.gn new file mode 100644 index 0000000000000..5fa29fc02c717 --- /dev/null +++ b/shell/platform/glfw/BUILD.gn @@ -0,0 +1,80 @@ +# 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. + +_public_headers = [ "public/flutter_glfw.h" ] + +# Any files that are built by clients (client_wrapper code, library headers for +# implementations using this shared code, etc.) include the public headers +# assuming they are in the include path. This configuration should be added to +# any such code that is also built by GN to make the includes work. +config("relative_flutter_glfw_headers") { + include_dirs = [ "public" ] +} + +# The headers are a separate source set since the client wrapper is allowed +# to depend on the public headers, but none of the rest of the code. +source_set("flutter_glfw_headers") { + public = _public_headers + + public_deps = [ + "$flutter_root/shell/platform/common/cpp:common_cpp_library_headers", + ] + + configs += [ + "$flutter_root/shell/platform/common/cpp:desktop_library_implementation", + ] + + public_configs = [ + "$flutter_root/shell/platform/common/cpp:relative_flutter_library_headers", + ] +} + +source_set("flutter_glfw") { + sources = [ + "flutter_glfw.cc", + "key_event_handler.cc", + "key_event_handler.h", + "keyboard_hook_handler.h", + "text_input_plugin.cc", + "text_input_plugin.h", + ] + + defines = [ "USE_RAPID_JSON" ] + + configs += [ + "$flutter_root/shell/platform/common/cpp:desktop_library_implementation", + ] + + deps = [ + ":flutter_glfw_headers", + "$flutter_root/shell/platform/common/cpp:common_cpp", + "$flutter_root/shell/platform/common/cpp/client_wrapper:client_wrapper", + "$flutter_root/shell/platform/embedder:embedder", + "$flutter_root/shell/platform/glfw/client_wrapper:client_wrapper_glfw", + "//third_party/rapidjson", + ] + + if (is_linux) { + libs = [ "GL" ] + + configs += [ + "$flutter_root/shell/platform/linux/config:epoxy", + "$flutter_root/shell/platform/linux/config:glfw3", + "$flutter_root/shell/platform/linux/config:gtk3", + "$flutter_root/shell/platform/linux/config:x11", + ] + } +} + +copy("publish_headers_glfw") { + sources = _public_headers + outputs = [ + "$root_out_dir/{{source_file_part}}", + ] + + # The GLFW header assumes the presence of the common headers. + deps = [ + "$flutter_root/shell/platform/common/cpp:publish_headers", + ] +} diff --git a/shell/platform/glfw/client_wrapper/BUILD.gn b/shell/platform/glfw/client_wrapper/BUILD.gn new file mode 100644 index 0000000000000..d9e1b482dbaf6 --- /dev/null +++ b/shell/platform/glfw/client_wrapper/BUILD.gn @@ -0,0 +1,78 @@ +# 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. + +import("$flutter_root/shell/platform/common/cpp/client_wrapper/publish.gni") + +_wrapper_includes = [ "include/flutter/flutter_window_controller.h" ] + +_wrapper_sources = [ "flutter_window_controller.cc" ] + +# This code will be merged into .../common/cpp/client_wrapper for client use, +# so uses header paths that assume the merged state. Include the header +# header directory of the core wrapper files so these includes will work. +config("relative_core_wrapper_headers") { + include_dirs = [ + "$flutter_root/shell/platform/common/cpp/client_wrapper/include/flutter", + ] +} + +# GLFW client wrapper build for internal use by the shell implementation. +source_set("client_wrapper_glfw") { + sources = _wrapper_sources + public = _wrapper_includes + + deps = [ + "$flutter_root/shell/platform/common/cpp:common_cpp_library_headers", + "$flutter_root/shell/platform/common/cpp/client_wrapper:client_wrapper", + "$flutter_root/shell/platform/glfw:flutter_glfw_headers", + ] + + configs += [ + "$flutter_root/shell/platform/common/cpp:desktop_library_implementation", + ] + + public_configs = [ + ":relative_core_wrapper_headers", + "$flutter_root/shell/platform/common/cpp:relative_flutter_library_headers", + "$flutter_root/shell/platform/glfw:relative_flutter_glfw_headers", + ] +} + +# Copies the GLFW client wrapper code to the output directory, merging it into +# the core wrapper. +publish_client_wrapper("publish_wrapper_glfw") { + public = _wrapper_includes + sources = _wrapper_sources +} + +source_set("client_wrapper_library_stubs_glfw") { + sources = [ + "testing/stub_flutter_glfw_api.cc", + "testing/stub_flutter_glfw_api.h", + ] + + public_deps = [ + "$flutter_root/shell/platform/glfw:flutter_glfw_headers", + ] +} + +executable("client_wrapper_glfw_unittests") { + testonly = true + + # TODO: Add more unit tests. + sources = [ + "flutter_window_controller_unittests.cc", + ] + + deps = [ + ":client_wrapper_glfw", + ":client_wrapper_library_stubs_glfw", + "$flutter_root/shell/platform/common/cpp/client_wrapper:client_wrapper_library_stubs", + "$flutter_root/testing", + + # TODO: Consider refactoring flutter_root/testing so that there's a testing + # target that doesn't require a Dart runtime to be linked in. + "//third_party/dart/runtime:libdart_jit", + ] +} diff --git a/shell/platform/glfw/client_wrapper/flutter_window_controller.cc b/shell/platform/glfw/client_wrapper/flutter_window_controller.cc new file mode 100644 index 0000000000000..c73d6e7078699 --- /dev/null +++ b/shell/platform/glfw/client_wrapper/flutter_window_controller.cc @@ -0,0 +1,77 @@ +// 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 "include/flutter/flutter_window_controller.h" + +#include +#include + +namespace flutter { + +FlutterWindowController::FlutterWindowController( + const std::string& icu_data_path) + : icu_data_path_(icu_data_path) { + init_succeeded_ = FlutterDesktopInit(); +} + +FlutterWindowController::~FlutterWindowController() { + if (init_succeeded_) { + FlutterDesktopTerminate(); + } +} + +bool FlutterWindowController::CreateWindow( + int width, + int height, + const std::string& assets_path, + const std::vector& arguments) { + if (!init_succeeded_) { + std::cerr << "Could not create window; FlutterDesktopInit failed." + << std::endl; + return false; + } + + if (window_) { + std::cerr << "Only one Flutter window can exist at a time." << std::endl; + return false; + } + + std::vector engine_arguments; + std::transform( + arguments.begin(), arguments.end(), std::back_inserter(engine_arguments), + [](const std::string& arg) -> const char* { return arg.c_str(); }); + size_t arg_count = engine_arguments.size(); + + window_ = FlutterDesktopCreateWindow( + width, height, assets_path.c_str(), icu_data_path_.c_str(), + arg_count > 0 ? &engine_arguments[0] : nullptr, arg_count); + if (!window_) { + std::cerr << "Failed to create window." << std::endl; + return false; + } + return true; +} + +FlutterDesktopPluginRegistrarRef FlutterWindowController::GetRegistrarForPlugin( + const std::string& plugin_name) { + if (!window_) { + std::cerr << "Cannot get plugin registrar without a window; call " + "CreateWindow first." + << std::endl; + return nullptr; + } + return FlutterDesktopGetPluginRegistrar(window_, plugin_name.c_str()); +} + +void FlutterWindowController::SetHoverEnabled(bool enabled) { + FlutterDesktopSetHoverEnabled(window_, enabled); +} + +void FlutterWindowController::RunEventLoop() { + if (window_) { + FlutterDesktopRunWindowLoop(window_); + } +} + +} // namespace flutter diff --git a/shell/platform/glfw/client_wrapper/flutter_window_controller_unittests.cc b/shell/platform/glfw/client_wrapper/flutter_window_controller_unittests.cc new file mode 100644 index 0000000000000..d0e90fcb5056c --- /dev/null +++ b/shell/platform/glfw/client_wrapper/flutter_window_controller_unittests.cc @@ -0,0 +1,54 @@ +// 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/platform/glfw/client_wrapper/include/flutter/flutter_window_controller.h" + +#include +#include + +#include "flutter/shell/platform/glfw/client_wrapper/testing/stub_flutter_glfw_api.h" +#include "gtest/gtest.h" + +namespace flutter { + +namespace { + +// Stub implementation to validate calls to the API. +class TestGlfwApi : public testing::StubFlutterGlfwApi { + public: + // |flutter::testing::StubFlutterGlfwApi| + bool Init() override { + init_called_ = true; + return true; + } + + // |flutter::testing::StubFlutterGlfwApi| + void Terminate() override { terminate_called_ = true; } + + bool init_called() { return init_called_; } + + bool terminate_called() { return terminate_called_; } + + private: + bool init_called_ = false; + bool terminate_called_ = false; +}; + +} // namespace + +TEST(FlutterViewControllerTest, CreateDestroy) { + const std::string icu_data_path = "fake/path/to/icu"; + testing::ScopedStubFlutterGlfwApi scoped_api_stub( + std::make_unique()); + auto test_api = static_cast(scoped_api_stub.stub()); + { + FlutterWindowController controller(icu_data_path); + EXPECT_EQ(test_api->init_called(), true); + EXPECT_EQ(test_api->terminate_called(), false); + } + EXPECT_EQ(test_api->init_called(), true); + EXPECT_EQ(test_api->terminate_called(), true); +} + +} // namespace flutter diff --git a/shell/platform/glfw/client_wrapper/include/flutter/flutter_window_controller.h b/shell/platform/glfw/client_wrapper/include/flutter/flutter_window_controller.h new file mode 100644 index 0000000000000..24496252c887c --- /dev/null +++ b/shell/platform/glfw/client_wrapper/include/flutter/flutter_window_controller.h @@ -0,0 +1,83 @@ +// 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. + +#ifndef FLUTTER_SHELL_PLATFORM_GLFW_CLIENT_WRAPPER_INCLUDE_FLUTTER_FLUTTER_WINDOW_CONTROLLER_H_ +#define FLUTTER_SHELL_PLATFORM_GLFW_CLIENT_WRAPPER_INCLUDE_FLUTTER_FLUTTER_WINDOW_CONTROLLER_H_ + +#include +#include + +#include + +#include "plugin_registrar.h" + +namespace flutter { + +// A controller for a window displaying Flutter content. +// +// This is the primary wrapper class for the desktop C API. +// If you use this class, you should not call any of the setup or teardown +// methods in the C API directly, as this class will do that internally. +// +// Note: This is an early implementation (using GLFW internally) which +// requires control of the application's event loop, and is thus useful +// primarily for building a simple one-window shell hosting a Flutter +// application. The final implementation and API will be very different. +class FlutterWindowController { + public: + // There must be only one instance of this class in an application at any + // given time, as Flutter does not support multiple engines in one process, + // or multiple views in one engine. + explicit FlutterWindowController(const std::string& icu_data_path); + + ~FlutterWindowController(); + + // Creates and displays a window for displaying Flutter content. + // + // The |assets_path| is the path to the flutter_assets folder for the Flutter + // application to be run. |icu_data_path| is the path to the icudtl.dat file + // for the version of Flutter you are using. + // + // The |arguments| are passed to the Flutter engine. See: + // https://github.com/flutter/engine/blob/master/shell/common/switches.h for + // for details. Not all arguments will apply to desktop. + // + // Only one Flutter window can exist at a time; see constructor comment. + bool CreateWindow(int width, + int height, + const std::string& assets_path, + const std::vector& arguments); + + // Returns the FlutterDesktopPluginRegistrarRef to register a plugin with the + // given name. + // + // The name must be unique across the application. + FlutterDesktopPluginRegistrarRef GetRegistrarForPlugin( + const std::string& plugin_name); + + // Enables or disables hover tracking. + // + // If hover is enabled, mouse movement will send hover events to the Flutter + // engine, rather than only tracking the mouse while the button is pressed. + // Defaults to off. + void SetHoverEnabled(bool enabled); + + // Loops on Flutter window events until the window closes. + void RunEventLoop(); + + private: + // The path to the ICU data file. Set at creation time since it is the same + // for any window created. + std::string icu_data_path_; + + // Whether or not FlutterDesktopInit succeeded at creation time. + bool init_succeeded_ = false; + + // The curent Flutter window, if any. + FlutterDesktopWindowRef window_ = nullptr; +}; + +} // namespace flutter + +#endif // FLUTTER_SHELL_PLATFORM_GLFW_CLIENT_WRAPPER_INCLUDE_FLUTTER_FLUTTER_WINDOW_CONTROLLER_H_ diff --git a/shell/platform/glfw/client_wrapper/testing/stub_flutter_glfw_api.cc b/shell/platform/glfw/client_wrapper/testing/stub_flutter_glfw_api.cc new file mode 100644 index 0000000000000..f3a5e9a436469 --- /dev/null +++ b/shell/platform/glfw/client_wrapper/testing/stub_flutter_glfw_api.cc @@ -0,0 +1,101 @@ +// 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/platform/glfw/client_wrapper/testing/stub_flutter_glfw_api.h" + +static flutter::testing::StubFlutterGlfwApi* s_stub_implementation; + +namespace flutter { +namespace testing { + +// static +void StubFlutterGlfwApi::SetTestStub(StubFlutterGlfwApi* stub) { + s_stub_implementation = stub; +} + +// static +StubFlutterGlfwApi* StubFlutterGlfwApi::GetTestStub() { + return s_stub_implementation; +} + +ScopedStubFlutterGlfwApi::ScopedStubFlutterGlfwApi( + std::unique_ptr stub) + : stub_(std::move(stub)) { + previous_stub_ = StubFlutterGlfwApi::GetTestStub(); + StubFlutterGlfwApi::SetTestStub(stub_.get()); +} + +ScopedStubFlutterGlfwApi::~ScopedStubFlutterGlfwApi() { + StubFlutterGlfwApi::SetTestStub(previous_stub_); +} + +} // namespace testing +} // namespace flutter + +// Forwarding dummy implementations of the C API. + +bool FlutterDesktopInit() { + if (s_stub_implementation) { + s_stub_implementation->Init(); + } + return true; +} + +void FlutterDesktopTerminate() { + if (s_stub_implementation) { + s_stub_implementation->Terminate(); + } +} + +FlutterDesktopWindowRef FlutterDesktopCreateWindow(int initial_width, + int initial_height, + const char* assets_path, + const char* icu_data_path, + const char** arguments, + size_t argument_count) { + if (s_stub_implementation) { + return s_stub_implementation->CreateWindow(initial_width, initial_height, + assets_path, icu_data_path, + arguments, argument_count); + } + return nullptr; +} + +void FlutterDesktopSetHoverEnabled(FlutterDesktopWindowRef flutter_window, + bool enabled) { + if (s_stub_implementation) { + s_stub_implementation->SetHoverEnabled(enabled); + } +} + +void FlutterDesktopRunWindowLoop(FlutterDesktopWindowRef flutter_window) { + if (s_stub_implementation) { + s_stub_implementation->RunWindowLoop(); + } +} + +FlutterDesktopEngineRef FlutterDesktopRunEngine(const char* assets_path, + const char* icu_data_path, + const char** arguments, + size_t argument_count) { + if (s_stub_implementation) { + return s_stub_implementation->RunEngine(assets_path, icu_data_path, + arguments, argument_count); + } + return nullptr; +} + +bool FlutterDesktopShutDownEngine(FlutterDesktopEngineRef engine_ref) { + if (s_stub_implementation) { + return s_stub_implementation->ShutDownEngine(); + } + return true; +} + +FlutterDesktopPluginRegistrarRef FlutterDesktopGetPluginRegistrar( + FlutterDesktopWindowRef flutter_window, + const char* plugin_name) { + // The stub ignores this, so just return an arbitrary non-zero value. + return reinterpret_cast(1); +} diff --git a/shell/platform/glfw/client_wrapper/testing/stub_flutter_glfw_api.h b/shell/platform/glfw/client_wrapper/testing/stub_flutter_glfw_api.h new file mode 100644 index 0000000000000..70f993646d3c0 --- /dev/null +++ b/shell/platform/glfw/client_wrapper/testing/stub_flutter_glfw_api.h @@ -0,0 +1,87 @@ +// 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. + +#ifndef FLUTTER_SHELL_PLATFORM_GLFW_WRAPPER_TESTING_STUB_FLUTTER_GLFW_API_H_ +#define FLUTTER_SHELL_PLATFORM_GLFW_WRAPPER_TESTING_STUB_FLUTTER_GLFW_API_H_ + +#include + +#include "flutter/shell/platform/glfw/public/flutter_glfw.h" + +namespace flutter { +namespace testing { + +// Base class for a object that provides test implementations of the APIs in +// the headers in platform/glfw/public/. + +// Linking this class into a test binary will provide dummy forwarding +// implementantions of that C API, so that the wrapper can be tested separately +// from the actual library. +class StubFlutterGlfwApi { + public: + // Sets |stub| as the instance to which calls to the Flutter library C APIs + // will be forwarded. + static void SetTestStub(StubFlutterGlfwApi* stub); + + // Returns the current stub, as last set by SetTestFluttterStub. + static StubFlutterGlfwApi* GetTestStub(); + + virtual ~StubFlutterGlfwApi() {} + + // Called for FlutterDesktopInit. + virtual bool Init() { return true; } + + // Called for FlutterDesktopTerminate. + virtual void Terminate() {} + + // Called for FlutterDesktopCreateWindow. + virtual FlutterDesktopWindowRef CreateWindow(int initial_width, + int initial_height, + const char* assets_path, + const char* icu_data_path, + const char** arguments, + size_t argument_count) { + return nullptr; + } + + // Called for FlutterDesktopSetHoverEnabled + virtual void SetHoverEnabled(bool enabled) {} + + // Called for FlutterDesktopRunWindowLoop. + virtual void RunWindowLoop() {} + + // Called for FlutterDesktopRunEngine. + virtual FlutterDesktopEngineRef RunEngine(const char* assets_path, + const char* icu_data_path, + const char** arguments, + size_t argument_count) { + return nullptr; + } + + // Called for FlutterDesktopShutDownEngine. + virtual bool ShutDownEngine() { return true; } +}; + +// A test helper that owns a stub implementation, making it the test stub for +// the lifetime of the object, then restoring the previous value. +class ScopedStubFlutterGlfwApi { + public: + // Calls SetTestFlutterStub with |stub|. + ScopedStubFlutterGlfwApi(std::unique_ptr stub); + + // Restores the previous test stub. + ~ScopedStubFlutterGlfwApi(); + + StubFlutterGlfwApi* stub() { return stub_.get(); } + + private: + std::unique_ptr stub_; + // The previous stub. + StubFlutterGlfwApi* previous_stub_; +}; + +} // namespace testing +} // namespace flutter + +#endif // FLUTTER_SHELL_PLATFORM_GLFW_CLIENT_WRAPPER_TESTING_STUB_FLUTTER_GLFW_API_H_ diff --git a/shell/platform/glfw/flutter_glfw.cc b/shell/platform/glfw/flutter_glfw.cc new file mode 100644 index 0000000000000..9b2e6c4871d6c --- /dev/null +++ b/shell/platform/glfw/flutter_glfw.cc @@ -0,0 +1,595 @@ +// 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/platform/glfw/public/flutter_glfw.h" + +#include +#include +#include +#include +#include + +#ifdef __linux__ +// Epoxy must be included before any graphics-related code. +#include +#endif + +#include + +#include "flutter/shell/platform/common/cpp/client_wrapper/include/flutter/plugin_registrar.h" +#include "flutter/shell/platform/common/cpp/incoming_message_dispatcher.h" +#include "flutter/shell/platform/embedder/embedder.h" +#include "flutter/shell/platform/glfw/key_event_handler.h" +#include "flutter/shell/platform/glfw/keyboard_hook_handler.h" +#include "flutter/shell/platform/glfw/text_input_plugin.h" + +#ifdef __linux__ +// For plugin-compatible event handling (e.g., modal windows). +#include +#include +#endif + +// GLFW_TRUE & GLFW_FALSE are introduced since libglfw-3.3, +// add definitions here to compile under the old versions. +#ifndef GLFW_TRUE +#define GLFW_TRUE 1 +#endif +#ifndef GLFW_FALSE +#define GLFW_FALSE 0 +#endif + +static_assert(FLUTTER_ENGINE_VERSION == 1, ""); + +static constexpr double kDpPerInch = 160.0; + +// Struct for storing state within an instance of the GLFW Window. +struct FlutterDesktopWindowState { + // The GLFW window that owns this state object. + GLFWwindow* window; + + // The handle to the Flutter engine instance. + FlutterEngine engine; + + // The plugin registrar handle given to API clients. + std::unique_ptr plugin_registrar; + + // Message dispatch manager for messages from the Flutter engine. + std::unique_ptr message_dispatcher; + + // The plugin registrar managing internal plugins. + std::unique_ptr internal_plugin_registrar; + + // Handlers for keyboard events from GLFW. + std::vector> + keyboard_hook_handlers; + + // Whether or not to track mouse movements to send kHover events. + bool hover_tracking_enabled = false; + + // Whether or not the pointer has been added (or if tracking is enabled, has + // been added since it was last removed). + bool pointer_currently_added = false; + + // The screen coordinates per inch on the primary monitor. Defaults to a sane + // value based on pixel_ratio 1.0. + double monitor_screen_coordinates_per_inch = kDpPerInch; + // The ratio of pixels per screen coordinate for the window. + double window_pixels_per_screen_coordinate = 1.0; +}; + +// Struct for storing state of a Flutter engine instance. +struct FlutterDesktopEngineState { + // The handle to the Flutter engine instance. + FlutterEngine engine; +}; + +// State associated with the plugin registrar. +struct FlutterDesktopPluginRegistrar { + // The plugin messenger handle given to API clients. + std::unique_ptr messenger; +}; + +// State associated with the messenger used to communicate with the engine. +struct FlutterDesktopMessenger { + // The Flutter engine this messenger sends outgoing messages to. + FlutterEngine engine; + + // The message dispatcher for handling incoming messages. + shell::IncomingMessageDispatcher* dispatcher; +}; + +static constexpr char kDefaultWindowTitle[] = "Flutter"; + +// Retrieves state bag for the window in question from the GLFWWindow. +static FlutterDesktopWindowState* GetSavedWindowState(GLFWwindow* window) { + return reinterpret_cast( + glfwGetWindowUserPointer(window)); +} + +// Converts a FlutterPlatformMessage to an equivalent FlutterDesktopMessage. +static FlutterDesktopMessage ConvertToDesktopMessage( + const FlutterPlatformMessage& engine_message) { + FlutterDesktopMessage message = {}; + message.struct_size = sizeof(message); + message.channel = engine_message.channel; + message.message = engine_message.message; + message.message_size = engine_message.message_size; + message.response_handle = engine_message.response_handle; + return message; +} + +// Returns the number of screen coordinates per inch for the main monitor. +// If the information is unavailable, returns a default value that assumes +// that a screen coordinate is one dp. +static double GetScreenCoordinatesPerInch() { + auto* primary_monitor = glfwGetPrimaryMonitor(); + auto* primary_monitor_mode = glfwGetVideoMode(primary_monitor); + int primary_monitor_width_mm; + glfwGetMonitorPhysicalSize(primary_monitor, &primary_monitor_width_mm, + nullptr); + if (primary_monitor_width_mm == 0) { + return kDpPerInch; + } + return primary_monitor_mode->width / (primary_monitor_width_mm / 25.4); +} + +// When GLFW calls back to the window with a framebuffer size change, notify +// FlutterEngine about the new window metrics. +// The Flutter pixel_ratio is defined as DPI/dp. +static void GLFWFramebufferSizeCallback(GLFWwindow* window, + int width_px, + int height_px) { + int width; + glfwGetWindowSize(window, &width, nullptr); + + auto state = GetSavedWindowState(window); + state->window_pixels_per_screen_coordinate = width_px / width; + + double dpi = state->window_pixels_per_screen_coordinate * + state->monitor_screen_coordinates_per_inch; + // Limit the ratio to 1 to avoid rendering a smaller UI in standard resolution + // monitors. + double pixel_ratio = std::max(dpi / kDpPerInch, 1.0); + + FlutterWindowMetricsEvent event = {}; + event.struct_size = sizeof(event); + event.width = width_px; + event.height = height_px; + event.pixel_ratio = pixel_ratio; + FlutterEngineSendWindowMetricsEvent(state->engine, &event); +} + +// Sends a pointer event to the Flutter engine with the given phase. +static void SendPointerEventWithPhase(GLFWwindow* window, + FlutterPointerPhase phase, + double x, + double y) { + auto state = GetSavedWindowState(window); + // If sending anything other than an add, and the pointer isn't already added, + // synthesize an add to satisfy Flutter's expectations about events. + if (!state->pointer_currently_added && phase != FlutterPointerPhase::kAdd) { + SendPointerEventWithPhase(window, FlutterPointerPhase::kAdd, x, y); + } + // Don't double-add (e.g., if events are delivered out of order, so an add has + // already been synthesized). + if (state->pointer_currently_added && phase == FlutterPointerPhase::kAdd) { + return; + } + + FlutterPointerEvent event = {}; + event.struct_size = sizeof(event); + event.phase = phase; + event.x = x * state->window_pixels_per_screen_coordinate; + event.y = y * state->window_pixels_per_screen_coordinate; + event.timestamp = + std::chrono::duration_cast( + std::chrono::high_resolution_clock::now().time_since_epoch()) + .count(); + FlutterEngineSendPointerEvent(state->engine, &event, 1); + + if (phase == FlutterPointerPhase::kAdd) { + state->pointer_currently_added = true; + } else if (phase == FlutterPointerPhase::kRemove) { + state->pointer_currently_added = false; + } +} + +// Reports the mouse entering or leaving the Flutter view. +static void GLFWCursorEnterCallback(GLFWwindow* window, int entered) { + double x, y; + glfwGetCursorPos(window, &x, &y); + FlutterPointerPhase phase = + entered ? FlutterPointerPhase::kAdd : FlutterPointerPhase::kRemove; + SendPointerEventWithPhase(window, phase, x, y); +} + +// Reports mouse movement to the Flutter engine. +static void GLFWCursorPositionCallback(GLFWwindow* window, double x, double y) { + bool button_down = + glfwGetMouseButton(window, GLFW_MOUSE_BUTTON_LEFT) == GLFW_PRESS; + FlutterPointerPhase phase = + button_down ? FlutterPointerPhase::kMove : FlutterPointerPhase::kHover; + SendPointerEventWithPhase(window, phase, x, y); +} + +// Reports mouse button press to the Flutter engine. +static void GLFWMouseButtonCallback(GLFWwindow* window, + int key, + int action, + int mods) { + // Flutter currently doesn't understand other buttons, so ignore anything + // other than left. + if (key != GLFW_MOUSE_BUTTON_LEFT) { + return; + } + + double x, y; + glfwGetCursorPos(window, &x, &y); + FlutterPointerPhase phase = (action == GLFW_PRESS) + ? FlutterPointerPhase::kDown + : FlutterPointerPhase::kUp; + SendPointerEventWithPhase(window, phase, x, y); + + // If mouse tracking isn't already enabled, turn it on for the duration of + // the drag to generate kMove events. + bool hover_enabled = GetSavedWindowState(window)->hover_tracking_enabled; + if (!hover_enabled) { + glfwSetCursorPosCallback( + window, (action == GLFW_PRESS) ? GLFWCursorPositionCallback : nullptr); + } + // Disable enter/exit events while the mouse button is down; GLFW will send + // an exit event when the mouse button is released, and the pointer should + // stay valid until then. + if (hover_enabled) { + glfwSetCursorEnterCallback( + window, (action == GLFW_PRESS) ? nullptr : GLFWCursorEnterCallback); + } +} + +// Passes character input events to registered handlers. +static void GLFWCharCallback(GLFWwindow* window, unsigned int code_point) { + for (const auto& handler : + GetSavedWindowState(window)->keyboard_hook_handlers) { + handler->CharHook(window, code_point); + } +} + +// Passes raw key events to registered handlers. +static void GLFWKeyCallback(GLFWwindow* window, + int key, + int scancode, + int action, + int mods) { + for (const auto& handler : + GetSavedWindowState(window)->keyboard_hook_handlers) { + handler->KeyboardHook(window, key, scancode, action, mods); + } +} + +// Enables/disables the callbacks related to mouse tracking. +static void SetHoverCallbacksEnabled(GLFWwindow* window, bool enabled) { + glfwSetCursorEnterCallback(window, + enabled ? GLFWCursorEnterCallback : nullptr); + glfwSetCursorPosCallback(window, + enabled ? GLFWCursorPositionCallback : nullptr); +} + +// Flushes event queue and then assigns default window callbacks. +static void GLFWAssignEventCallbacks(GLFWwindow* window) { + glfwPollEvents(); + glfwSetKeyCallback(window, GLFWKeyCallback); + glfwSetCharCallback(window, GLFWCharCallback); + glfwSetMouseButtonCallback(window, GLFWMouseButtonCallback); + if (GetSavedWindowState(window)->hover_tracking_enabled) { + SetHoverCallbacksEnabled(window, true); + } +} + +// Clears default window events. +static void GLFWClearEventCallbacks(GLFWwindow* window) { + glfwSetKeyCallback(window, nullptr); + glfwSetCharCallback(window, nullptr); + glfwSetMouseButtonCallback(window, nullptr); + SetHoverCallbacksEnabled(window, false); +} + +// The Flutter Engine calls out to this function when new platform messages are +// available +static void GLFWOnFlutterPlatformMessage( + const FlutterPlatformMessage* engine_message, + void* user_data) { + if (engine_message->struct_size != sizeof(FlutterPlatformMessage)) { + std::cerr << "Invalid message size received. Expected: " + << sizeof(FlutterPlatformMessage) << " but received " + << engine_message->struct_size << std::endl; + return; + } + + GLFWwindow* window = reinterpret_cast(user_data); + auto state = GetSavedWindowState(window); + + auto message = ConvertToDesktopMessage(*engine_message); + state->message_dispatcher->HandleMessage( + message, [window] { GLFWClearEventCallbacks(window); }, + [window] { GLFWAssignEventCallbacks(window); }); +} + +static bool GLFWMakeContextCurrent(void* user_data) { + GLFWwindow* window = reinterpret_cast(user_data); + glfwMakeContextCurrent(window); + return true; +} + +static bool GLFWClearContext(void* user_data) { + glfwMakeContextCurrent(nullptr); + return true; +} + +static bool GLFWPresent(void* user_data) { + GLFWwindow* window = reinterpret_cast(user_data); + glfwSwapBuffers(window); + return true; +} + +static uint32_t GLFWGetActiveFbo(void* user_data) { + return 0; +} + +// Clears the GLFW window to Material Blue-Grey. +// +// This function is primarily to fix an issue when the Flutter Engine is +// spinning up, wherein artifacts of existing windows are rendered onto the +// canvas for a few moments. +// +// This function isn't necessary, but makes starting the window much easier on +// the eyes. +static void GLFWClearCanvas(GLFWwindow* window) { + glfwMakeContextCurrent(window); + // This color is Material Blue Grey. + glClearColor(236.0f / 255.0f, 239.0f / 255.0f, 241.0f / 255.0f, 0.0f); + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + glFlush(); + glfwSwapBuffers(window); + glfwMakeContextCurrent(nullptr); +} + +// Resolves the address of the specified OpenGL or OpenGL ES +// core or extension function, if it is supported by the current context. +static void* GLFWProcResolver(void* user_data, const char* name) { + return reinterpret_cast(glfwGetProcAddress(name)); +} + +static void GLFWErrorCallback(int error_code, const char* description) { + std::cerr << "GLFW error " << error_code << ": " << description << std::endl; +} + +// Spins up an instance of the Flutter Engine. +// +// This function launches the Flutter Engine in a background thread, supplying +// the necessary callbacks for rendering within a GLFWwindow (if one is +// provided). +// +// Returns a caller-owned pointer to the engine. +static FlutterEngine RunFlutterEngine(GLFWwindow* window, + const char* assets_path, + const char* icu_data_path, + const char** arguments, + size_t arguments_count) { + // FlutterProjectArgs is expecting a full argv, so when processing it for + // flags the first item is treated as the executable and ignored. Add a dummy + // value so that all provided arguments are used. + std::vector argv = {"placeholder"}; + if (arguments_count > 0) { + argv.insert(argv.end(), &arguments[0], &arguments[arguments_count]); + } + + FlutterRendererConfig config = {}; + if (window == nullptr) { + config.type = kOpenGL; + config.open_gl.struct_size = sizeof(config.open_gl); + config.open_gl.make_current = [](void* data) -> bool { return false; }; + config.open_gl.clear_current = [](void* data) -> bool { return false; }; + config.open_gl.present = [](void* data) -> bool { return false; }; + config.open_gl.fbo_callback = [](void* data) -> uint32_t { return 0; }; + } else { + // Provide the necessary callbacks for rendering within a GLFWwindow. + config.type = kOpenGL; + config.open_gl.struct_size = sizeof(config.open_gl); + config.open_gl.make_current = GLFWMakeContextCurrent; + config.open_gl.clear_current = GLFWClearContext; + config.open_gl.present = GLFWPresent; + config.open_gl.fbo_callback = GLFWGetActiveFbo; + config.open_gl.gl_proc_resolver = GLFWProcResolver; + } + FlutterProjectArgs args = {}; + args.struct_size = sizeof(FlutterProjectArgs); + args.assets_path = assets_path; + args.icu_data_path = icu_data_path; + args.command_line_argc = static_cast(argv.size()); + args.command_line_argv = &argv[0]; + args.platform_message_callback = GLFWOnFlutterPlatformMessage; + FlutterEngine engine = nullptr; + auto result = + FlutterEngineRun(FLUTTER_ENGINE_VERSION, &config, &args, window, &engine); + if (result != kSuccess || engine == nullptr) { + std::cerr << "Failed to start Flutter engine: error " << result + << std::endl; + return nullptr; + } + return engine; +} + +bool FlutterDesktopInit() { + // Before making any GLFW calls, set up a logging error handler. + glfwSetErrorCallback(GLFWErrorCallback); + return glfwInit(); +} + +void FlutterDesktopTerminate() { + glfwTerminate(); +} + +FlutterDesktopWindowRef FlutterDesktopCreateWindow(int initial_width, + int initial_height, + const char* assets_path, + const char* icu_data_path, + const char** arguments, + size_t argument_count) { +#ifdef __linux__ + gtk_init(0, nullptr); +#endif + // Create the window. + auto window = glfwCreateWindow(initial_width, initial_height, + kDefaultWindowTitle, NULL, NULL); + if (window == nullptr) { + return nullptr; + } + GLFWClearCanvas(window); + + // Start the engine. + auto engine = RunFlutterEngine(window, assets_path, icu_data_path, arguments, + argument_count); + if (engine == nullptr) { + glfwDestroyWindow(window); + return nullptr; + } + + // Create a state object attached to the window. + FlutterDesktopWindowState* state = new FlutterDesktopWindowState(); + state->window = window; + glfwSetWindowUserPointer(window, state); + state->engine = engine; + + // TODO: Restructure the internals to follow the structure of the C++ API, so + // that this isn't a tangle of references. + auto messenger = std::make_unique(); + state->message_dispatcher = + std::make_unique(messenger.get()); + messenger->engine = engine; + messenger->dispatcher = state->message_dispatcher.get(); + + state->plugin_registrar = std::make_unique(); + state->plugin_registrar->messenger = std::move(messenger); + + state->internal_plugin_registrar = + std::make_unique(state->plugin_registrar.get()); + + // Set up the keyboard handlers. + auto internal_plugin_messenger = + state->internal_plugin_registrar->messenger(); + state->keyboard_hook_handlers.push_back( + std::make_unique(internal_plugin_messenger)); + state->keyboard_hook_handlers.push_back( + std::make_unique(internal_plugin_messenger)); + + // Trigger an initial size callback to send size information to Flutter. + state->monitor_screen_coordinates_per_inch = GetScreenCoordinatesPerInch(); + int width_px, height_px; + glfwGetFramebufferSize(window, &width_px, &height_px); + GLFWFramebufferSizeCallback(window, width_px, height_px); + + // Set up GLFW callbacks for the window. + glfwSetFramebufferSizeCallback(window, GLFWFramebufferSizeCallback); + GLFWAssignEventCallbacks(window); + + return state; +} + +void FlutterDesktopSetHoverEnabled(FlutterDesktopWindowRef flutter_window, + bool enabled) { + flutter_window->hover_tracking_enabled = enabled; + SetHoverCallbacksEnabled(flutter_window->window, enabled); +} + +void FlutterDesktopRunWindowLoop(FlutterDesktopWindowRef flutter_window) { + GLFWwindow* window = flutter_window->window; +#ifdef __linux__ + // Necessary for GTK thread safety. + XInitThreads(); +#endif + while (!glfwWindowShouldClose(window)) { + glfwPollEvents(); +#ifdef __linux__ + if (gtk_events_pending()) { + gtk_main_iteration(); + } +#endif + // TODO(awdavies): This will be deprecated soon. + __FlutterEngineFlushPendingTasksNow(); + } + FlutterEngineShutdown(flutter_window->engine); + delete flutter_window; + glfwDestroyWindow(window); +} + +FlutterDesktopEngineRef FlutterDesktopRunEngine(const char* assets_path, + const char* icu_data_path, + const char** arguments, + size_t argument_count) { + auto engine = RunFlutterEngine(nullptr, assets_path, icu_data_path, arguments, + argument_count); + if (engine == nullptr) { + return nullptr; + } + auto engine_state = new FlutterDesktopEngineState(); + engine_state->engine = engine; + return engine_state; +} + +bool FlutterDesktopShutDownEngine(FlutterDesktopEngineRef engine_ref) { + std::cout << "Shutting down flutter engine process." << std::endl; + auto result = FlutterEngineShutdown(engine_ref->engine); + delete engine_ref; + return (result == kSuccess); +} + +FlutterDesktopPluginRegistrarRef FlutterDesktopGetPluginRegistrar( + FlutterDesktopWindowRef flutter_window, + const char* plugin_name) { + // Currently, one registrar acts as the registrar for all plugins, so the + // name is ignored. It is part of the API to reduce churn in the future when + // aligning more closely with the Flutter registrar system. + return flutter_window->plugin_registrar.get(); +} + +void FlutterDesktopRegistrarEnableInputBlocking( + FlutterDesktopPluginRegistrarRef registrar, + const char* channel) { + registrar->messenger->dispatcher->EnableInputBlockingForChannel(channel); +} + +FlutterDesktopMessengerRef FlutterDesktopRegistrarGetMessenger( + FlutterDesktopPluginRegistrarRef registrar) { + return registrar->messenger.get(); +} + +void FlutterDesktopMessengerSend(FlutterDesktopMessengerRef messenger, + const char* channel, + const uint8_t* message, + const size_t message_size) { + FlutterPlatformMessage platform_message = { + sizeof(FlutterPlatformMessage), + channel, + message, + message_size, + }; + + FlutterEngineSendPlatformMessage(messenger->engine, &platform_message); +} + +void FlutterDesktopMessengerSendResponse( + FlutterDesktopMessengerRef messenger, + const FlutterDesktopMessageResponseHandle* handle, + const uint8_t* data, + size_t data_length) { + FlutterEngineSendPlatformMessageResponse(messenger->engine, handle, data, + data_length); +} + +void FlutterDesktopMessengerSetCallback(FlutterDesktopMessengerRef messenger, + const char* channel, + FlutterDesktopMessageCallback callback, + void* user_data) { + messenger->dispatcher->SetMessageCallback(channel, callback, user_data); +} diff --git a/shell/platform/glfw/key_event_handler.cc b/shell/platform/glfw/key_event_handler.cc new file mode 100644 index 0000000000000..7e370d0cdc76e --- /dev/null +++ b/shell/platform/glfw/key_event_handler.cc @@ -0,0 +1,60 @@ +// 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/platform/glfw/key_event_handler.h" + +#include + +#include "flutter/shell/platform/common/cpp/client_wrapper/include/flutter/json_message_codec.h" + +static constexpr char kChannelName[] = "flutter/keyevent"; + +static constexpr char kKeyCodeKey[] = "keyCode"; +static constexpr char kKeyMapKey[] = "keymap"; +static constexpr char kTypeKey[] = "type"; + +static constexpr char kAndroidKeyMap[] = "android"; +static constexpr char kKeyUp[] = "keyup"; +static constexpr char kKeyDown[] = "keydown"; + +namespace shell { + +KeyEventHandler::KeyEventHandler(flutter::BinaryMessenger* messenger) + : channel_( + std::make_unique>( + messenger, + kChannelName, + &flutter::JsonMessageCodec::GetInstance())) {} + +KeyEventHandler::~KeyEventHandler() = default; + +void KeyEventHandler::CharHook(GLFWwindow* window, unsigned int code_point) {} + +void KeyEventHandler::KeyboardHook(GLFWwindow* window, + int key, + int scancode, + int action, + int mods) { + // TODO: Translate to a cross-platform key code system rather than passing + // the native key code. + rapidjson::Document event(rapidjson::kObjectType); + auto& allocator = event.GetAllocator(); + event.AddMember(kKeyCodeKey, key, allocator); + event.AddMember(kKeyMapKey, kAndroidKeyMap, allocator); + + switch (action) { + case GLFW_PRESS: + event.AddMember(kTypeKey, kKeyDown, allocator); + break; + case GLFW_RELEASE: + event.AddMember(kTypeKey, kKeyUp, allocator); + break; + default: + std::cerr << "Unknown key event action: " << action << std::endl; + return; + } + channel_->Send(event); +} + +} // namespace shell \ No newline at end of file diff --git a/shell/platform/glfw/key_event_handler.h b/shell/platform/glfw/key_event_handler.h new file mode 100644 index 0000000000000..171a17b6208cc --- /dev/null +++ b/shell/platform/glfw/key_event_handler.h @@ -0,0 +1,44 @@ +// 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. + +#ifndef FLUTTER_SHELL_PLATFORM_GLFW_KEY_EVENT_HANDLER_H_ +#define FLUTTER_SHELL_PLATFORM_GLFW_KEY_EVENT_HANDLER_H_ + +#include + +#include "flutter/shell/platform/common/cpp/client_wrapper/include/flutter/basic_message_channel.h" +#include "flutter/shell/platform/common/cpp/client_wrapper/include/flutter/binary_messenger.h" +#include "flutter/shell/platform/glfw/keyboard_hook_handler.h" +#include "flutter/shell/platform/glfw/public/flutter_glfw.h" +#include "rapidjson/document.h" + +namespace shell { + +// Implements a KeyboardHookHandler +// +// Handles key events and forwards them to the Flutter engine. +class KeyEventHandler : public KeyboardHookHandler { + public: + explicit KeyEventHandler(flutter::BinaryMessenger* messenger); + + virtual ~KeyEventHandler(); + + // |shell::KeyboardHookHandler| + void KeyboardHook(GLFWwindow* window, + int key, + int scancode, + int action, + int mods) override; + + // |shell::KeyboardHookHandler| + void CharHook(GLFWwindow* window, unsigned int code_point) override; + + private: + // The Flutter system channel for key event messages. + std::unique_ptr> channel_; +}; + +} // namespace shell + +#endif // FLUTTER_SHELL_PLATFORM_GLFW_KEY_EVENT_HANDLER_H_ diff --git a/shell/platform/glfw/keyboard_hook_handler.h b/shell/platform/glfw/keyboard_hook_handler.h new file mode 100644 index 0000000000000..5415105161e14 --- /dev/null +++ b/shell/platform/glfw/keyboard_hook_handler.h @@ -0,0 +1,32 @@ +// 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. + +#ifndef FLUTTER_SHELL_PLATFORM_GLFW_KEYBOARD_HOOK_HANDLER_H_ +#define FLUTTER_SHELL_PLATFORM_GLFW_KEYBOARD_HOOK_HANDLER_H_ + +#include + +#include "flutter/shell/platform/glfw/public/flutter_glfw.h" + +namespace shell { + +// Abstract class for handling keyboard input events. +class KeyboardHookHandler { + public: + virtual ~KeyboardHookHandler() = default; + + // A function for hooking into keyboard input. + virtual void KeyboardHook(GLFWwindow* window, + int key, + int scancode, + int action, + int mods) = 0; + + // A function for hooking into unicode code point input. + virtual void CharHook(GLFWwindow* window, unsigned int code_point) = 0; +}; + +} // namespace shell + +#endif // FLUTTER_SHELL_PLATFORM_GLFW_KEYBOARD_HOOK_HANDLER_H_ diff --git a/shell/platform/glfw/public/flutter_glfw.h b/shell/platform/glfw/public/flutter_glfw.h new file mode 100644 index 0000000000000..c969581e161df --- /dev/null +++ b/shell/platform/glfw/public/flutter_glfw.h @@ -0,0 +1,109 @@ +// 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. + +#ifndef FLUTTER_SHELL_PLATFORM_GLFW_PUBLIC_FLUTTER_GLFW_H_ +#define FLUTTER_SHELL_PLATFORM_GLFW_PUBLIC_FLUTTER_GLFW_H_ + +#include +#include + +#include "flutter_export.h" +#include "flutter_messenger.h" +#include "flutter_plugin_registrar.h" + +#if defined(__cplusplus) +extern "C" { +#endif + +// Opaque reference to a Flutter window. +typedef struct FlutterDesktopWindowState* FlutterDesktopWindowRef; + +// Opaque reference to a Flutter engine instance. +typedef struct FlutterDesktopEngineState* FlutterDesktopEngineRef; + +// Sets up the library's graphic context. Must be called before any other +// methods. +// +// Note: Internally, this library uses GLFW, which does not support multiple +// copies within the same process. Internally this calls glfwInit, which will +// fail if you have called glfwInit elsewhere in the process. +FLUTTER_EXPORT bool FlutterDesktopInit(); + +// Tears down library state. Must be called before the process terminates. +FLUTTER_EXPORT void FlutterDesktopTerminate(); + +// Creates a Window running a Flutter Application. +// +// FlutterDesktopInit() must be called prior to this function. +// +// The |assets_path| is the path to the flutter_assets folder for the Flutter +// application to be run. |icu_data_path| is the path to the icudtl.dat file +// for the version of Flutter you are using. +// +// The |arguments| are passed to the Flutter engine. See: +// https://github.com/flutter/engine/blob/master/shell/common/switches.h for +// for details. Not all arguments will apply to desktop. +// +// Returns a null pointer in the event of an error. Otherwise, the pointer is +// valid until FlutterDesktopRunWindowLoop has been called and returned. +// Note that calling FlutterDesktopCreateWindow without later calling +// FlutterDesktopRunWindowLoop on the returned reference is a memory leak. +FLUTTER_EXPORT FlutterDesktopWindowRef +FlutterDesktopCreateWindow(int initial_width, + int initial_height, + const char* assets_path, + const char* icu_data_path, + const char** arguments, + size_t argument_count); + +// Enables or disables hover tracking. +// +// If hover is enabled, mouse movement will send hover events to the Flutter +// engine, rather than only tracking the mouse while the button is pressed. +// Defaults to off. +FLUTTER_EXPORT void FlutterDesktopSetHoverEnabled( + FlutterDesktopWindowRef flutter_window, + bool enabled); + +// Loops on Flutter window events until the window is closed. +// +// Once this function returns, FlutterDesktopWindowRef is no longer valid, and +// must not be used again. +FLUTTER_EXPORT void FlutterDesktopRunWindowLoop( + FlutterDesktopWindowRef flutter_window); + +// Runs an instance of a headless Flutter engine. +// +// The |assets_path| is the path to the flutter_assets folder for the Flutter +// application to be run. |icu_data_path| is the path to the icudtl.dat file +// for the version of Flutter you are using. +// +// The |arguments| are passed to the Flutter engine. See: +// https://github.com/flutter/engine/blob/master/shell/common/switches.h for +// for details. Not all arguments will apply to desktop. +// +// Returns a null pointer in the event of an error. +FLUTTER_EXPORT FlutterDesktopEngineRef +FlutterDesktopRunEngine(const char* assets_path, + const char* icu_data_path, + const char** arguments, + size_t argument_count); + +// Shuts down the given engine instance. Returns true if the shutdown was +// successful. |engine_ref| is no longer valid after this call. +FLUTTER_EXPORT bool FlutterDesktopShutDownEngine( + FlutterDesktopEngineRef engine_ref); + +// Returns the plugin registrar handle for the plugin with the given name. +// +// The name must be unique across the application. +FLUTTER_EXPORT FlutterDesktopPluginRegistrarRef +FlutterDesktopGetPluginRegistrar(FlutterDesktopWindowRef flutter_window, + const char* plugin_name); + +#if defined(__cplusplus) +} // extern "C" +#endif + +#endif // FLUTTER_SHELL_PLATFORM_GLFW_PUBLIC_FLUTTER_GLFW_H_ diff --git a/shell/platform/glfw/text_input_plugin.cc b/shell/platform/glfw/text_input_plugin.cc new file mode 100644 index 0000000000000..76dbf8d118798 --- /dev/null +++ b/shell/platform/glfw/text_input_plugin.cc @@ -0,0 +1,210 @@ +// 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/platform/glfw/text_input_plugin.h" + +#include +#include + +#include "flutter/shell/platform/common/cpp/client_wrapper/include/flutter/json_method_codec.h" + +static constexpr char kSetEditingStateMethod[] = "TextInput.setEditingState"; +static constexpr char kClearClientMethod[] = "TextInput.clearClient"; +static constexpr char kSetClientMethod[] = "TextInput.setClient"; +static constexpr char kShowMethod[] = "TextInput.show"; +static constexpr char kHideMethod[] = "TextInput.hide"; + +static constexpr char kMultilineInputType[] = "TextInputType.multiline"; + +static constexpr char kUpdateEditingStateMethod[] = + "TextInputClient.updateEditingState"; +static constexpr char kPerformActionMethod[] = "TextInputClient.performAction"; + +static constexpr char kSelectionBaseKey[] = "selectionBase"; +static constexpr char kSelectionExtentKey[] = "selectionExtent"; + +static constexpr char kTextKey[] = "text"; + +static constexpr char kChannelName[] = "flutter/textinput"; + +static constexpr char kBadArgumentError[] = "Bad Arguments"; +static constexpr char kInternalConsistencyError[] = + "Internal Consistency Error"; + +static constexpr uint32_t kInputModelLimit = 256; + +namespace shell { + +void TextInputPlugin::CharHook(GLFWwindow* window, unsigned int code_point) { + if (active_model_ == nullptr) { + return; + } + // TODO(awdavies): Actually handle potential unicode characters. Probably + // requires some ICU data or something. + active_model_->AddCharacter(static_cast(code_point)); + SendStateUpdate(*active_model_); +} + +void TextInputPlugin::KeyboardHook(GLFWwindow* window, + int key, + int scancode, + int action, + int mods) { + if (active_model_ == nullptr) { + return; + } + if (action == GLFW_PRESS || action == GLFW_REPEAT) { + switch (key) { + case GLFW_KEY_LEFT: + if (active_model_->MoveCursorBack()) { + SendStateUpdate(*active_model_); + } + break; + case GLFW_KEY_RIGHT: + if (active_model_->MoveCursorForward()) { + SendStateUpdate(*active_model_); + } + break; + case GLFW_KEY_END: + active_model_->MoveCursorToEnd(); + SendStateUpdate(*active_model_); + break; + case GLFW_KEY_HOME: + active_model_->MoveCursorToBeginning(); + SendStateUpdate(*active_model_); + break; + case GLFW_KEY_BACKSPACE: + if (active_model_->Backspace()) { + SendStateUpdate(*active_model_); + } + break; + case GLFW_KEY_DELETE: + if (active_model_->Delete()) { + SendStateUpdate(*active_model_); + } + break; + case GLFW_KEY_ENTER: + EnterPressed(active_model_); + default: + break; + } + } +} + +TextInputPlugin::TextInputPlugin(flutter::BinaryMessenger* messenger) + : channel_(std::make_unique>( + messenger, + kChannelName, + &flutter::JsonMethodCodec::GetInstance())), + active_model_(nullptr) { + channel_->SetMethodCallHandler( + [this]( + const flutter::MethodCall& call, + std::unique_ptr> result) { + HandleMethodCall(call, std::move(result)); + }); +} + +TextInputPlugin::~TextInputPlugin() = default; + +void TextInputPlugin::HandleMethodCall( + const flutter::MethodCall& method_call, + std::unique_ptr> result) { + const std::string& method = method_call.method_name(); + + if (method.compare(kShowMethod) == 0 || method.compare(kHideMethod) == 0) { + // These methods are no-ops. + } else if (method.compare(kClearClientMethod) == 0) { + active_model_ = nullptr; + } else { + // Every following method requires args. + if (!method_call.arguments() || method_call.arguments()->IsNull()) { + result->Error(kBadArgumentError, "Method invoked without args"); + return; + } + const rapidjson::Document& args = *method_call.arguments(); + + if (method.compare(kSetClientMethod) == 0) { + // TODO(awdavies): There's quite a wealth of arguments supplied with this + // method, and they should be inspected/used. + const rapidjson::Value& client_id_json = args[0]; + const rapidjson::Value& client_config = args[1]; + if (client_id_json.IsNull()) { + result->Error(kBadArgumentError, "Could not set client, ID is null."); + return; + } + if (client_config.IsNull()) { + result->Error(kBadArgumentError, + "Could not set client, missing arguments."); + } + int client_id = client_id_json.GetInt(); + if (input_models_.find(client_id) == input_models_.end()) { + // Skips out on adding a new input model once over the limit. + if (input_models_.size() > kInputModelLimit) { + result->Error( + kInternalConsistencyError, + "Input models over limit. Aborting creation of new text model."); + return; + } + input_models_.insert(std::make_pair( + client_id, + std::make_unique(client_id, client_config))); + } + active_model_ = input_models_[client_id].get(); + } else if (method.compare(kSetEditingStateMethod) == 0) { + if (active_model_ == nullptr) { + result->Error( + kInternalConsistencyError, + "Set editing state has been invoked, but no client is set."); + return; + } + auto text = args.FindMember(kTextKey); + if (text == args.MemberEnd() || text->value.IsNull()) { + result->Error(kBadArgumentError, + "Set editing state has been invoked, but without text."); + return; + } + auto selection_base = args.FindMember(kSelectionBaseKey); + auto selection_extent = args.FindMember(kSelectionExtentKey); + if (selection_base == args.MemberEnd() || + selection_base->value.IsNull() || + selection_extent == args.MemberEnd() || + selection_extent->value.IsNull()) { + result->Error(kInternalConsistencyError, + "Selection base/extent values invalid."); + return; + } + active_model_->SetEditingState(selection_base->value.GetInt(), + selection_extent->value.GetInt(), + text->value.GetString()); + } else { + // Unhandled method. + result->NotImplemented(); + return; + } + } + // All error conditions return early, so if nothing has gone wrong indicate + // success. + result->Success(); +} + +void TextInputPlugin::SendStateUpdate(const TextInputModel& model) { + channel_->InvokeMethod(kUpdateEditingStateMethod, model.GetState()); +} + +void TextInputPlugin::EnterPressed(TextInputModel* model) { + if (model->input_type() == kMultilineInputType) { + model->AddCharacter('\n'); + SendStateUpdate(*model); + } + auto args = std::make_unique(rapidjson::kArrayType); + auto& allocator = args->GetAllocator(); + args->PushBack(model->client_id(), allocator); + args->PushBack(rapidjson::Value(model->input_action(), allocator).Move(), + allocator); + + channel_->InvokeMethod(kPerformActionMethod, std::move(args)); +} + +} // namespace shell diff --git a/shell/platform/glfw/text_input_plugin.h b/shell/platform/glfw/text_input_plugin.h new file mode 100644 index 0000000000000..a6d8a4ed5686d --- /dev/null +++ b/shell/platform/glfw/text_input_plugin.h @@ -0,0 +1,62 @@ +// 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. + +#ifndef FLUTTER_SHELL_PLATFORM_GLFW_TEXT_INPUT_PLUGIN_H_ +#define FLUTTER_SHELL_PLATFORM_GLFW_TEXT_INPUT_PLUGIN_H_ + +#include +#include + +#include "flutter/shell/platform/common/cpp/client_wrapper/include/flutter/binary_messenger.h" +#include "flutter/shell/platform/common/cpp/client_wrapper/include/flutter/method_channel.h" +#include "flutter/shell/platform/common/cpp/text_input_model.h" +#include "flutter/shell/platform/glfw/keyboard_hook_handler.h" +#include "flutter/shell/platform/glfw/public/flutter_glfw.h" + +namespace shell { + +// Implements a text input plugin. +// +// Specifically handles window events within GLFW. +class TextInputPlugin : public KeyboardHookHandler { + public: + explicit TextInputPlugin(flutter::BinaryMessenger* messenger); + + virtual ~TextInputPlugin(); + + // |shell::KeyboardHookHandler| + void KeyboardHook(GLFWwindow* window, + int key, + int scancode, + int action, + int mods) override; + + // |shell::KeyboardHookHandler| + void CharHook(GLFWwindow* window, unsigned int code_point) override; + + private: + // Sends the current state of the given model to the Flutter engine. + void SendStateUpdate(const TextInputModel& model); + + // Sends an action triggered by the Enter key to the Flutter engine. + void EnterPressed(TextInputModel* model); + + // Called when a method is called on |channel_|; + void HandleMethodCall( + const flutter::MethodCall& method_call, + std::unique_ptr> result); + + // The MethodChannel used for communication with the Flutter engine. + std::unique_ptr> channel_; + + // Mapping of client IDs to text input models. + std::map> input_models_; + + // The active model. nullptr if not set. + TextInputModel* active_model_; +}; + +} // namespace shell + +#endif // FLUTTER_SHELL_PLATFORM_GLFW_TEXT_INPUT_PLUGIN_H_ diff --git a/shell/platform/linux/BUILD.gn b/shell/platform/linux/BUILD.gn index 03724a9e7354c..3d2c125baa84f 100644 --- a/shell/platform/linux/BUILD.gn +++ b/shell/platform/linux/BUILD.gn @@ -2,10 +2,21 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. +assert(is_linux) + group("linux") { - testonly = true + deps = [ + ":flutter_linux", + "$flutter_root/shell/platform/glfw:publish_headers_glfw", + "$flutter_root/shell/platform/common/cpp/client_wrapper:publish_wrapper", + "$flutter_root/shell/platform/glfw/client_wrapper:publish_wrapper_glfw", + ] +} +shared_library("flutter_linux") { deps = [ - "$flutter_root/shell/testing", + "$flutter_root/shell/platform/glfw:flutter_glfw", ] + + public_configs = [ "$flutter_root:config" ] } diff --git a/shell/platform/linux/config/BUILD.gn b/shell/platform/linux/config/BUILD.gn new file mode 100644 index 0000000000000..81043013717b1 --- /dev/null +++ b/shell/platform/linux/config/BUILD.gn @@ -0,0 +1,21 @@ +# 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. + +import("//build/config/linux/pkg_config.gni") + +pkg_config("epoxy") { + packages = [ "epoxy" ] +} + +pkg_config("glfw3") { + packages = [ "glfw3" ] +} + +pkg_config("gtk3") { + packages = [ "gtk+-3.0" ] +} + +pkg_config("x11") { + packages = [ "x11" ] +} From 188adf7e5ec521f7859d5a0a1609fdcb688436b2 Mon Sep 17 00:00:00 2001 From: Matt Carroll Date: Wed, 20 Mar 2019 14:18:34 -0700 Subject: [PATCH 1446/1537] Removed Activity reference from AccessibilityBridge by using a View for insets instead of the Activity (#18115) (#8231) --- .../io/flutter/view/AccessibilityBridge.java | 33 +++++++------------ 1 file changed, 12 insertions(+), 21 deletions(-) diff --git a/shell/platform/android/io/flutter/view/AccessibilityBridge.java b/shell/platform/android/io/flutter/view/AccessibilityBridge.java index 7a94b3303595c..d98b6f0bf01af 100644 --- a/shell/platform/android/io/flutter/view/AccessibilityBridge.java +++ b/shell/platform/android/io/flutter/view/AccessibilityBridge.java @@ -7,6 +7,7 @@ import android.annotation.TargetApi; import android.app.Activity; import android.content.ContentResolver; +import android.content.Context; import android.database.ContentObserver; import android.graphics.Rect; import android.net.Uri; @@ -21,6 +22,8 @@ import android.util.Log; import android.view.MotionEvent; import android.view.View; +import android.view.WindowInsets; +import android.view.WindowManager; import android.view.accessibility.AccessibilityEvent; import android.view.accessibility.AccessibilityManager; import android.view.accessibility.AccessibilityNodeInfo; @@ -100,19 +103,6 @@ public class AccessibilityBridge extends AccessibilityNodeProvider { @NonNull private final ContentResolver contentResolver; - // The top-level Android View within the containing Window. - // TODO(mattcarroll): Move communication with the decorView out to FlutterView, or even FlutterActivity. - // The reason this is here is because when the device is in reverse-landscape - // orientation, Android has a bug where it assumes the OS nav bar is on the - // right side of the screen, not the left. As a result, accessibility borders - // are drawn too far to the left. The AccessibilityBridge directly adjusts - // for this Android bug. We still need to adjust, but this is the wrong place - // to access a decorView. What if the FlutterView is only part of the UI - // hierarchy, like a list item? We shouldn't touch the decor view. - // https://github.com/flutter/flutter/issues/19967 - @NonNull - private final View decorView; - // The entire Flutter semantics tree of the running Flutter app, stored as a Map // from each SemanticsNode's ID to a Java representation of a Flutter SemanticsNode. // @@ -191,7 +181,9 @@ public class AccessibilityBridge extends AccessibilityNodeProvider { // TODO(mattcarroll): why do we need previouseRouteId if we have flutterNavigationStack private int previousRouteId = ROOT_NODE_ID; - // TODO(mattcarroll): is this for the decor view adjustment? + // Tracks the left system inset of the screen because Flutter needs to manually adjust + // accessibility positioning when in reverse-landscape. This is an Android bug that Flutter + // is solving for itself. @NonNull private Integer lastLeftFrameInset = 0; @@ -323,8 +315,6 @@ public AccessibilityBridge( this.contentResolver = contentResolver; this.platformViewsAccessibilityDelegate = platformViewsAccessibilityDelegate; - decorView = ((Activity) rootAccessibilityView.getContext()).getWindow().getDecorView(); - // Tell Flutter whether accessibility is initially active or not. Then register a listener // to be notified of changes in the future. accessibilityStateChangeListener.onAccessibilityStateChanged(accessibilityManager.isEnabled()); @@ -1177,14 +1167,15 @@ void updateSemantics(@NonNull ByteBuffer buffer, @NonNull String[] strings) { // of the screen in landscape mode. We must handle the translation ourselves for the // a11y nodes. if (Build.VERSION.SDK_INT >= 23) { - Rect visibleFrame = new Rect(); - decorView.getWindowVisibleDisplayFrame(visibleFrame); - if (!lastLeftFrameInset.equals(visibleFrame.left)) { + WindowInsets insets = rootAccessibilityView.getRootWindowInsets(); + if (insets != null) { + if (!lastLeftFrameInset.equals(insets.getSystemWindowInsetLeft())) { rootObject.globalGeometryDirty = true; rootObject.inverseTransformDirty = true; + } + lastLeftFrameInset = insets.getSystemWindowInsetLeft(); + Matrix.translateM(identity, 0, lastLeftFrameInset, 0, 0); } - lastLeftFrameInset = visibleFrame.left; - Matrix.translateM(identity, 0, visibleFrame.left, 0, 0); } rootObject.updateRecursively(identity, visitedObjects, false); rootObject.collectRoutes(newRoutes); From 10e1addd8d71a8778c7a048ea86cd441b6d45e76 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Wed, 20 Mar 2019 18:50:12 -0400 Subject: [PATCH 1447/1537] Roll src/third_party/skia 7e2c0614a2fd..4652930a7dfc (5 commits) (#8232) https://skia.googlesource.com/skia.git/%2Blog/7e2c0614a2fd..4652930a7dfc git log 7e2c0614a2fd08e418b789939dfdad9b76e70fa7..4652930a7dfc23d368d96b2ff46305a94172511c --date=short --no-merges --format=%ad %ae %s 2019-03-20 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader 00ba176c0c40..c296806411fb (2 commits) 2019-03-20 mtklein@google.com remove some more SK- in DrawCommand 2019-03-20 skia-autoroll@skia-public.iam.gserviceaccount.com Roll ../src ca0130108117..b57a03014063 (635 commits) 2019-03-20 recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com Roll recipe dependencies (trivial). 2019-03-20 egdaniel@google.com Reduce use of map buffers on ARM vulkan. The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (brianosman@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 8cb76a7291be3..942d9732157cb 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '7e2c0614a2fd08e418b789939dfdad9b76e70fa7', + 'skia_revision': '4652930a7dfc23d368d96b2ff46305a94172511c', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index f045a7abd0fcd..e97ba67290ca4 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 69cdeba5983041274e6ecad0313aaa0a +Signature: 5f42cdf6490f96a34eedd3043ec9c0eb UNUSED LICENSES: From fa435385b6b9f80080997dd38ad66bbe4bb0a152 Mon Sep 17 00:00:00 2001 From: Jason Simmons Date: Wed, 20 Mar 2019 17:43:53 -0700 Subject: [PATCH 1448/1537] Use the GPU thread for Android surface on-screen context lifecycle operations (#8234) Fixes https://github.com/flutter/flutter/issues/29679 --- .../platform/android/platform_view_android.cc | 22 +++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/shell/platform/android/platform_view_android.cc b/shell/platform/android/platform_view_android.cc index f31c084565e0a..4817133054071 100644 --- a/shell/platform/android/platform_view_android.cc +++ b/shell/platform/android/platform_view_android.cc @@ -45,15 +45,33 @@ void PlatformViewAndroid::NotifyCreated( fml::RefPtr native_window) { if (android_surface_) { InstallFirstFrameCallback(); - android_surface_->SetNativeWindow(native_window); + + fml::AutoResetWaitableEvent latch; + fml::TaskRunner::RunNowOrPostTask( + task_runners_.GetGPUTaskRunner(), + [&latch, surface = android_surface_.get(), + native_window = std::move(native_window)]() { + surface->SetNativeWindow(native_window); + latch.Signal(); + }); + latch.Wait(); } + PlatformView::NotifyCreated(); } void PlatformViewAndroid::NotifyDestroyed() { PlatformView::NotifyDestroyed(); + if (android_surface_) { - android_surface_->TeardownOnScreenContext(); + fml::AutoResetWaitableEvent latch; + fml::TaskRunner::RunNowOrPostTask( + task_runners_.GetGPUTaskRunner(), + [&latch, surface = android_surface_.get()]() { + surface->TeardownOnScreenContext(); + latch.Signal(); + }); + latch.Wait(); } } From 250b99bd275ad7622f239a8042f6a6d31b5b95f1 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Wed, 20 Mar 2019 22:22:11 -0400 Subject: [PATCH 1449/1537] Roll src/third_party/skia 4652930a7dfc..e409441aee0d (1 commits) (#8236) https://skia.googlesource.com/skia.git/%2Blog/4652930a7dfc..e409441aee0d git log 4652930a7dfc23d368d96b2ff46305a94172511c..e409441aee0d52e03046e62d00d139bda8eeba22 --date=short --no-merges --format=%ad %ae %s 2019-03-21 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader c296806411fb..aff2dd067015 (1 commits) The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (brianosman@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 942d9732157cb..a902f70803c91 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '4652930a7dfc23d368d96b2ff46305a94172511c', + 'skia_revision': 'e409441aee0d52e03046e62d00d139bda8eeba22', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index e97ba67290ca4..b64a185499305 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 5f42cdf6490f96a34eedd3043ec9c0eb +Signature: 14500d28d88b48cabb202f50f14dfc34 UNUSED LICENSES: From b05399901040bfc8edbdb06a39603b3ee158ae51 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Thu, 21 Mar 2019 01:51:11 -0400 Subject: [PATCH 1450/1537] Roll src/third_party/skia e409441aee0d..2c4ceca62d27 (1 commits) (#8238) https://skia.googlesource.com/skia.git/%2Blog/e409441aee0d..2c4ceca62d27 git log e409441aee0d52e03046e62d00d139bda8eeba22..2c4ceca62d27ebd3617d91b94a0231030927f864 --date=short --no-merges --format=%ad %ae %s 2019-03-21 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/angle2 a532570a09b8..f455f7565a7a (4 commits) The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (brianosman@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index a902f70803c91..aff85c9b303d5 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'e409441aee0d52e03046e62d00d139bda8eeba22', + 'skia_revision': '2c4ceca62d27ebd3617d91b94a0231030927f864', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index b64a185499305..0ced667c2ebe6 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 14500d28d88b48cabb202f50f14dfc34 +Signature: cf58986b48977bd842b1a0b26bc9186f UNUSED LICENSES: From 2d5376c0960a62d6fc7caf3b760d13017294c71c Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Thu, 21 Mar 2019 05:20:12 -0400 Subject: [PATCH 1451/1537] Roll src/third_party/skia 2c4ceca62d27..174a3f61fd5d (1 commits) (#8239) https://skia.googlesource.com/skia.git/%2Blog/2c4ceca62d27..174a3f61fd5d git log 2c4ceca62d27ebd3617d91b94a0231030927f864..174a3f61fd5dd38d4ea8943f68ca6d9267252d68 --date=short --no-merges --format=%ad %ae %s 2019-03-21 skia-recreate-skps@skia-swarming-bots.iam.gserviceaccount.com Update go_deps asset The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (brianosman@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index aff85c9b303d5..a98e695efa05f 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '2c4ceca62d27ebd3617d91b94a0231030927f864', + 'skia_revision': '174a3f61fd5dd38d4ea8943f68ca6d9267252d68', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 0ced667c2ebe6..d47b7ffb2cd00 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: cf58986b48977bd842b1a0b26bc9186f +Signature: af70bc51420cbbc085215a07c1da3b3c UNUSED LICENSES: From d4d4883216fd1c1dfc17d41418a960c002cfff57 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Thu, 21 Mar 2019 08:55:11 -0400 Subject: [PATCH 1452/1537] Roll src/third_party/skia 174a3f61fd5d..a695da930510 (2 commits) (#8242) https://skia.googlesource.com/skia.git/%2Blog/174a3f61fd5d..a695da930510 git log 174a3f61fd5dd38d4ea8943f68ca6d9267252d68..a695da930510831e7d1a7be3ddf98b9f8183b91c --date=short --no-merges --format=%ad %ae %s 2019-03-21 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/angle2 f455f7565a7a..232bfeae6b29 (4 commits) 2019-03-20 benjaminwagner@google.com Add more detail on configuring jobs. The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (brianosman@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index a98e695efa05f..d945d2d57a89b 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '174a3f61fd5dd38d4ea8943f68ca6d9267252d68', + 'skia_revision': 'a695da930510831e7d1a7be3ddf98b9f8183b91c', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index d47b7ffb2cd00..33ba30d57457c 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: af70bc51420cbbc085215a07c1da3b3c +Signature: 15e7148cf19140d66c66263e01e1c1d3 UNUSED LICENSES: From 13e3b7101fdffe27ab931fbe7bcbedb2a93267d4 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Thu, 21 Mar 2019 12:23:47 -0400 Subject: [PATCH 1453/1537] Roll src/third_party/skia a695da930510..d6ab77a2e20f (11 commits) (#8243) https://skia.googlesource.com/skia.git/%2Blog/a695da930510..d6ab77a2e20f git log a695da930510831e7d1a7be3ddf98b9f8183b91c..d6ab77a2e20ff54644ffc247da4dd2ea755c1111 --date=short --no-merges --format=%ad %ae %s 2019-03-21 mtklein@google.com restore .clang-format 2019-03-21 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader 9041bb7c0011..7bc4f45a391f (2 commits) 2019-03-21 ethannicholas@google.com Initial checkin of new SkSL interpreter. 2019-03-21 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader 290908500aed..9041bb7c0011 (1 commits) 2019-03-21 rmistry@google.com Remove auto adding CQ keywords for non-master branches 2019-03-21 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader aff2dd067015..290908500aed (2 commits) 2019-03-20 bsalomon@google.com Avoid making new image snapshot in GPU->GPU SkSurface::draw() 2019-03-21 skia-autoroll@skia-public.iam.gserviceaccount.com Roll skia/third_party/skcms 10ed3a8a5eec..99740cdf2835 (1 commits) 2019-03-21 robertphillips@google.com Add support for Y410 (i.e., 1010102) to wacky_yuv_formats 2019-03-21 kjlubick@google.com Add GN args for GL/GLES interface 2019-02-20 tushar.khandelwal@arm.com Store LZW dictionary suffixes in larger chunks The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (brianosman@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index d945d2d57a89b..8b65732be244b 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'a695da930510831e7d1a7be3ddf98b9f8183b91c', + 'skia_revision': 'd6ab77a2e20ff54644ffc247da4dd2ea755c1111', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 33ba30d57457c..8e06779f78366 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 15e7148cf19140d66c66263e01e1c1d3 +Signature: 8b213e55333c31d2af13e99dbb28de7f UNUSED LICENSES: @@ -5877,6 +5877,9 @@ FILE: ../../../third_party/skia/src/core/SkColorFilterPriv.h FILE: ../../../third_party/skia/src/gpu/gl/GrGLAssembleHelpers.cpp FILE: ../../../third_party/skia/src/gpu/gl/GrGLAssembleInterface_gl.cpp FILE: ../../../third_party/skia/src/gpu/gl/GrGLAssembleInterface_gles.cpp +FILE: ../../../third_party/skia/src/sksl/SkSLByteCode.h +FILE: ../../../third_party/skia/src/sksl/SkSLByteCodeGenerator.cpp +FILE: ../../../third_party/skia/src/sksl/SkSLByteCodeGenerator.h ---------------------------------------------------------------------------------------------------- Copyright 2019 Google LLC From 1addfb5967dc4fc5ed7609f8bf7cea533d940691 Mon Sep 17 00:00:00 2001 From: Ben Konyi Date: Thu, 21 Mar 2019 13:00:28 -0700 Subject: [PATCH 1454/1537] Roll src/third_party/dart 5e9df35a57..cabaa78cc5 (36 commits) (#8244) cabaa78cc5 [VM] Generalize generic bounds check elimination 16eefa4b75 [VM] Infer ranges for truncating divisions with positive divisor & Fix missing deopt env bug 46e0a87008 Add summary support for "for each" elements with declarations. 915b35e463 Add summary support for "for each" elements with identifiers. 3019a8873a Check for completeness of test_all in analysis server and analyzer plugin 9b5a956a0e Remove AstTestFactory.forStatement2 a7ab99dd84 [vm/kernel] Index all source and line starts before using them 1f10174891 [vm/service] Test collecting coverage for a concatenated dill file 0cacd6c28d [CFE] Compile if map entries in map literals 7dd4259d87 Handle ir constants in inferrer 8915407f2c Support computation of NativeData directly from IrAnnotationData eb344e2072 Keep live libraries and uri to source in sync 2805a376b2 Added tests for superinterface variance constraints 34af8b95e5 Revert "[vm] Free readonly header bit so it can be used for other uses." 59931e3340 [vm] Free readonly header bit so it can be used for other uses. cb4b6157a2 fix #36205, static calls in dart:html should directly call the DOM e3d6fc974f [dart/vm] fix off-by-a-lot error in DAG test ecb1bff326 Add summary support for `for` elements with declarations. 7d277c4a32 Introduce methods and classes to replace "2" variants left over from "UI as code" work. 973a4d0b2e [vm] Drop 'testonly = true' from gen_kernel_bytecode_dill GN rule c79927fdd7 Change type of `Expression.precedence` to the Precedence class. b10ac42527 [VM] Parentenvironment for Macos and Android 9f00d1b384 [VM] Ensure Top level class is finalized for loadedscripts in library 24e5f9142a Revise ElementResolver postfix NNBD bang processing 2919b5577f [Analyzer] move usage of mostSpecificTypeArgument in resolver d9371f206d Integration test for AstBinaryWriter and AstBinaryReader. 137171af71 [VM runtime] Disable dual mapping code in AOT runtime (fixes #36260). d14dfc5d8a [vm] Support FFI on ARM64 and Android. b032f1b284 [vm] Support FFI on 32-bit Intel. b78e386bbb Remove ConstantUseKind enum e2c577333c [testing] Mark an uncatchable flaky test as Skip. a2d7227a76 [vm] Never give DBC instructions executable permissions. 6135a81d51 Separate type reference resolution and types building. 8556e97218 Remove ResultProvider and its implementations. 495c319574 Reland "Add hints to check the SDK constraints for both set literals and for the ui-as-code features" 416649250f Rework tracking of variables in scope while summarizing expressions. --- DEPS | 2 +- ci/licenses_golden/licenses_third_party | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/DEPS b/DEPS index 8b65732be244b..d6f84c112eab9 100644 --- a/DEPS +++ b/DEPS @@ -31,7 +31,7 @@ vars = { # Dart is: https://github.com/dart-lang/sdk/blob/master/DEPS. # You can use //tools/dart/create_updated_flutter_deps.py to produce # updated revision list of existing dependencies. - 'dart_revision': '5e9df35a5794413202fbcaf0c41f6d4c5d2e7b81', + 'dart_revision': 'cabaa78cc57d08bcfcd75bfe99a42c19ed497d26', # WARNING: DO NOT EDIT MANUALLY # The lines between blank lines above and below are generated by a script. See create_updated_flutter_deps.py diff --git a/ci/licenses_golden/licenses_third_party b/ci/licenses_golden/licenses_third_party index 6e749b255b82f..42785b9c948c3 100644 --- a/ci/licenses_golden/licenses_third_party +++ b/ci/licenses_golden/licenses_third_party @@ -1,4 +1,4 @@ -Signature: d8611addc54dd5fe85355e2e888206d4 +Signature: 0f3631374103b2f9512fd6180a904a7e UNUSED LICENSES: @@ -5167,8 +5167,9 @@ FILE: ../../../third_party/dart/runtime/vm/compiler/stub_code_compiler_arm64.cc FILE: ../../../third_party/dart/runtime/vm/compiler/stub_code_compiler_dbc.cc FILE: ../../../third_party/dart/runtime/vm/compiler/stub_code_compiler_ia32.cc FILE: ../../../third_party/dart/runtime/vm/compiler/stub_code_compiler_x64.cc +FILE: ../../../third_party/dart/runtime/vm/constants_arm64.cc +FILE: ../../../third_party/dart/runtime/vm/constants_ia32.cc FILE: ../../../third_party/dart/runtime/vm/constants_x64.cc -FILE: ../../../third_party/dart/runtime/vm/ffi_trampoline_stubs_x64.cc FILE: ../../../third_party/dart/runtime/vm/frame_layout.h FILE: ../../../third_party/dart/runtime/vm/intrusive_dlist.h FILE: ../../../third_party/dart/runtime/vm/intrusive_dlist_test.cc From 28433c513ce8f9d458276cb729f3efd198e54470 Mon Sep 17 00:00:00 2001 From: Matt Carroll Date: Thu, 21 Mar 2019 13:45:13 -0700 Subject: [PATCH 1455/1537] FlutterJNI no longer asserts it is attached when dispatching platform messages and instead fizzles with a warning if not attached. Not sure what root cause of issue is, but this is necessary to avoid crashes. (#8246) --- .../flutter/embedding/engine/FlutterJNI.java | 26 ++++++++++++------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/shell/platform/android/io/flutter/embedding/engine/FlutterJNI.java b/shell/platform/android/io/flutter/embedding/engine/FlutterJNI.java index 925e2a8d7290f..66e98087c4e5c 100644 --- a/shell/platform/android/io/flutter/embedding/engine/FlutterJNI.java +++ b/shell/platform/android/io/flutter/embedding/engine/FlutterJNI.java @@ -461,8 +461,11 @@ private native void nativeRunBundleAndSnapshotFromLibrary( @UiThread public void dispatchEmptyPlatformMessage(String channel, int responseId) { - ensureAttachedToNative(); - nativeDispatchEmptyPlatformMessage(nativePlatformViewId, channel, responseId); + if (isAttached()) { + nativeDispatchEmptyPlatformMessage(nativePlatformViewId, channel, responseId); + } else { + Log.w(TAG, "Tried to send a platform message to Flutter, but FlutterJNI was detached from native C++. Could not send. Channel: " + channel + ". Response ID: " + responseId); + } } // Send an empty platform message to Dart. @@ -474,14 +477,17 @@ private native void nativeDispatchEmptyPlatformMessage( @UiThread public void dispatchPlatformMessage(String channel, ByteBuffer message, int position, int responseId) { - ensureAttachedToNative(); - nativeDispatchPlatformMessage( - nativePlatformViewId, - channel, - message, - position, - responseId - ); + if (isAttached()) { + nativeDispatchPlatformMessage( + nativePlatformViewId, + channel, + message, + position, + responseId + ); + } else { + Log.w(TAG, "Tried to send a platform message to Flutter, but FlutterJNI was detached from native C++. Could not send. Channel: " + channel + ". Response ID: " + responseId); + } } // Send a data-carrying platform message to Dart. From 06635d38a9f7b4a51cfef7ca0abf12ece977ee1c Mon Sep 17 00:00:00 2001 From: Amir Hardon Date: Thu, 21 Mar 2019 15:26:44 -0700 Subject: [PATCH 1456/1537] Mirror Android platform views a11y tree in the Flutter a11y tree. (#8237) This PR mirrors virtual a11y tree of embedded platform views in the Flutter a11y tree. Non virtual hierarchies are not currently supported. Only works on Android versions earlier than Android P as it relies on reflection access to hidden system APIs which cannot be done starting Android P. A11y is not yet working as we also need to delegate a11y events from the platform view to the FlutterView. This will be done in a following PR to keep the change size a little saner. --- ci/licenses_golden/licenses_flutter | 1 + shell/platform/android/BUILD.gn | 1 + .../PlatformViewsAccessibilityDelegate.java | 9 +- .../platform/PlatformViewsController.java | 4 +- .../io/flutter/view/AccessibilityBridge.java | 26 ++ .../view/AccessibilityViewEmbedder.java | 327 ++++++++++++++++++ 6 files changed, 363 insertions(+), 5 deletions(-) create mode 100644 shell/platform/android/io/flutter/view/AccessibilityViewEmbedder.java diff --git a/ci/licenses_golden/licenses_flutter b/ci/licenses_golden/licenses_flutter index 3867e7226454f..567ad251512b3 100644 --- a/ci/licenses_golden/licenses_flutter +++ b/ci/licenses_golden/licenses_flutter @@ -524,6 +524,7 @@ FILE: ../../../flutter/shell/platform/android/io/flutter/util/PathUtils.java FILE: ../../../flutter/shell/platform/android/io/flutter/util/Preconditions.java FILE: ../../../flutter/shell/platform/android/io/flutter/util/Predicate.java FILE: ../../../flutter/shell/platform/android/io/flutter/view/AccessibilityBridge.java +FILE: ../../../flutter/shell/platform/android/io/flutter/view/AccessibilityViewEmbedder.java FILE: ../../../flutter/shell/platform/android/io/flutter/view/FlutterCallbackInformation.java FILE: ../../../flutter/shell/platform/android/io/flutter/view/FlutterMain.java FILE: ../../../flutter/shell/platform/android/io/flutter/view/FlutterNativeView.java diff --git a/shell/platform/android/BUILD.gn b/shell/platform/android/BUILD.gn index e26d71a30e38e..4244e7946bb85 100644 --- a/shell/platform/android/BUILD.gn +++ b/shell/platform/android/BUILD.gn @@ -166,6 +166,7 @@ java_library("flutter_shell_java") { "io/flutter/util/Preconditions.java", "io/flutter/util/Predicate.java", "io/flutter/view/AccessibilityBridge.java", + "io/flutter/view/AccessibilityViewEmbedder.java", "io/flutter/view/FlutterCallbackInformation.java", "io/flutter/view/FlutterMain.java", "io/flutter/view/FlutterNativeView.java", diff --git a/shell/platform/android/io/flutter/plugin/platform/PlatformViewsAccessibilityDelegate.java b/shell/platform/android/io/flutter/plugin/platform/PlatformViewsAccessibilityDelegate.java index a48a7d59ff65d..3b81a505552ce 100644 --- a/shell/platform/android/io/flutter/plugin/platform/PlatformViewsAccessibilityDelegate.java +++ b/shell/platform/android/io/flutter/plugin/platform/PlatformViewsAccessibilityDelegate.java @@ -4,14 +4,19 @@ package io.flutter.plugin.platform; +import android.view.View; import io.flutter.view.AccessibilityBridge; /** * Facilitates interaction between the accessibility bridge and embedded platform views. */ public interface PlatformViewsAccessibilityDelegate { - // TODO(amirh): add a View getViewById(int id) here. - // not filing a tracking issue as this is going to be done in the next PR. + + /** + * Returns the root of the view hierarchy for the platform view with the requested id, or null if there is no + * corresponding view. + */ + View getPlatformViewById(Integer id); /** * Attaches an accessibility bridge for this platform views accessibility delegate. diff --git a/shell/platform/android/io/flutter/plugin/platform/PlatformViewsController.java b/shell/platform/android/io/flutter/plugin/platform/PlatformViewsController.java index 55a5d10f4732b..f19fabd317e44 100644 --- a/shell/platform/android/io/flutter/plugin/platform/PlatformViewsController.java +++ b/shell/platform/android/io/flutter/plugin/platform/PlatformViewsController.java @@ -120,9 +120,7 @@ public void onPreEngineRestart() { flushAllViews(); } - /** - * Returns the embedded view with id, or null if no view with this id is registered. - */ + @Override public View getPlatformViewById(Integer id) { VirtualDisplayController controller = vdControllers.get(id); if (controller == null) { diff --git a/shell/platform/android/io/flutter/view/AccessibilityBridge.java b/shell/platform/android/io/flutter/view/AccessibilityBridge.java index d98b6f0bf01af..7a798d3b37bd5 100644 --- a/shell/platform/android/io/flutter/view/AccessibilityBridge.java +++ b/shell/platform/android/io/flutter/view/AccessibilityBridge.java @@ -75,6 +75,16 @@ public class AccessibilityBridge extends AccessibilityNodeProvider { private static final float SCROLL_POSITION_CAP_FOR_INFINITY = 70000.0f; private static final int ROOT_NODE_ID = 0; + // The minimal ID for an engine generated AccessibilityNodeInfo. + // + // The AccessibilityNodeInfo node IDs are generated by the framework for most Flutter semantic nodes. + // When embedding platform views, the framework does not have the accessibility information for the embedded view; + // in this case the engine generates AccessibilityNodeInfo that mirrors the a11y information exposed by the platform + // view. To avoid the need of synchronizing the framework and engine mechanisms for generating the next ID, we split + // the 32bit range of virtual node IDs into 2. The least significant 16 bits are used for framework generated IDs + // and the most significant 16 bits are used for engine generated IDs. + private static final int MIN_ENGINE_GENERATED_NODE_ID = 1<<16; + /// Value is derived from ACTION_TYPE_MASK in AccessibilityNodeInfo.java private static int FIRST_RESOURCE_ID = 267386881; @@ -92,6 +102,9 @@ public class AccessibilityBridge extends AccessibilityNodeProvider { @NonNull private final AccessibilityManager accessibilityManager; + @NonNull + private final AccessibilityViewEmbedder accessibilityViewEmbedder; + // The delegate for interacting with embedded platform views. Used to embed accessibility data for an embedded // view in the accessibility tree. @NonNull @@ -363,6 +376,7 @@ public void onTouchExplorationStateChanged(boolean isTouchExplorationEnabled) { if (platformViewsAccessibilityDelegate != null) { platformViewsAccessibilityDelegate.attachAccessibilityBridge(this); } + accessibilityViewEmbedder = new AccessibilityViewEmbedder(rootAccessibilityView, MIN_ENGINE_GENERATED_NODE_ID); } /** @@ -456,6 +470,11 @@ private boolean shouldSetCollectionInfo(final SemanticsNode semanticsNode) { @Override @SuppressWarnings("deprecation") public AccessibilityNodeInfo createAccessibilityNodeInfo(int virtualViewId) { + if (virtualViewId >= MIN_ENGINE_GENERATED_NODE_ID) { + // The node is in the engine generated range, and is provided by the accessibility view embedder. + return accessibilityViewEmbedder.createAccessibilityNodeInfo(virtualViewId); + } + if (virtualViewId == View.NO_ID) { AccessibilityNodeInfo result = AccessibilityNodeInfo.obtain(rootAccessibilityView); rootAccessibilityView.onInitializeAccessibilityNodeInfo(result); @@ -472,6 +491,13 @@ public AccessibilityNodeInfo createAccessibilityNodeInfo(int virtualViewId) { return null; } + if (semanticsNode.platformViewId != -1) { + // For platform views we delegate the node creation to the accessibility view embedder. + View embeddedView = platformViewsAccessibilityDelegate.getPlatformViewById(semanticsNode.platformViewId); + Rect bounds = semanticsNode.getGlobalRect(); + return accessibilityViewEmbedder.getRootNode(embeddedView, semanticsNode.id, bounds); + } + AccessibilityNodeInfo result = AccessibilityNodeInfo.obtain(rootAccessibilityView, virtualViewId); // Work around for https://github.com/flutter/flutter/issues/2101 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) { diff --git a/shell/platform/android/io/flutter/view/AccessibilityViewEmbedder.java b/shell/platform/android/io/flutter/view/AccessibilityViewEmbedder.java new file mode 100644 index 0000000000000..1e5da786321bf --- /dev/null +++ b/shell/platform/android/io/flutter/view/AccessibilityViewEmbedder.java @@ -0,0 +1,327 @@ +// 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. + +package io.flutter.view; + +import android.graphics.Rect; +import android.os.Build; +import android.util.Log; +import android.util.SparseArray; +import android.view.View; +import android.view.accessibility.AccessibilityNodeInfo; +import android.view.accessibility.AccessibilityNodeProvider; + +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.util.HashMap; +import java.util.Map; + +/** + * Facilitates embedding of platform views in the accessibility tree generated by the accessibility bridge. + * + * Embedding is done by mirroring the accessibility tree of the platform view as a subtree of the flutter + * accessibility tree. + * + * This class relies on hidden system APIs to extract the accessibility information and does not work starting + * Android P; If the reflection accessors are not available we fail silently by embedding a null node, the app + * continues working but the accessibility information for the platform view will not be embedded. + * + * We use the term `flutterId` for virtual accessibility node IDs in the FlutterView tree, and the term `originId` + * for the virtual accessibility node IDs in the platform view's tree. Internally this class maintains a bidirectional + * mapping between `flutterId`s and the corresponding platform view and `originId`. + */ +class AccessibilityViewEmbedder { + private static final String TAG = "AccessibilityBridge"; + + private final ReflectionAccessors reflectionAccessors; + + // The view to which the platform view is embedded, this is typically FlutterView. + private final View rootAccessibilityView; + + // Maps a flutterId to the corresponding platform view and originId. + private final SparseArray flutterIdToOrigin; + + // Maps a platform view and originId to a corresponding flutterID. + private final Map originToFlutterId; + + // Maps the flutterId of an accessibility node to the screen bounds of + // the root semantic node for the embedded view. + // This is used to translate the coordinates of the accessibility node subtree to the main display's coordinate + // system. + private final SparseArray flutterIdToDisplayBounds; + + private int nextFlutterId; + + AccessibilityViewEmbedder(View rootAccessibiiltyView, int firstVirtualNodeId) { + reflectionAccessors = new ReflectionAccessors(); + flutterIdToOrigin = new SparseArray<>(); + this.rootAccessibilityView = rootAccessibiiltyView; + nextFlutterId = firstVirtualNodeId; + flutterIdToDisplayBounds = new SparseArray<>(); + originToFlutterId = new HashMap<>(); + } + + /** + * Returns the root accessibility node for an embedded platform view. + * + * @param flutterId the virtual accessibility ID for the node in flutter accessibility tree + * @param displayBounds the display bounds for the node in screen coordinates + */ + public AccessibilityNodeInfo getRootNode(View embeddedView, int flutterId, Rect displayBounds) { + return null; + // TODO(amirh): uncomment this once a11y events and actions are wired. + // AccessibilityNodeInfo originNode = embeddedView.createAccessibilityNodeInfo(); + // Long originPackedId = reflectionAccessors.getSourceNodeId(originNode); + // if (originPackedId == null) { + // return null; + // } + // int originId = ReflectionAccessors.getVirtualNodeId(originPackedId); + // flutterIdToOrigin.put(flutterId, new ViewAndId(embeddedView, originId)); + // flutterIdToDisplayBounds.put(flutterId, displayBounds); + // originToFlutterId.put(new ViewAndId(embeddedView, originId), flutterId); + // return convertToFlutterNode(originNode, flutterId, embeddedView); + } + + /** + * Creates the accessibility node info for the node identified with `flutterId`. + */ + public AccessibilityNodeInfo createAccessibilityNodeInfo(int flutterId) { + ViewAndId origin = flutterIdToOrigin.get(flutterId); + if (origin == null) { + return null; + } + AccessibilityNodeProvider provider = origin.view.getAccessibilityNodeProvider(); + if (provider == null) { + // The provider is null for views that don't have a virtual accessibility tree. + // We currently only support embedding virtual hierarchies in the Flutter tree. + // TODO(amirh): support embedding non virtual hierarchies. + // https://github.com/flutter/flutter/issues/29717 + return null; + } + AccessibilityNodeInfo originNode = + origin.view.getAccessibilityNodeProvider().createAccessibilityNodeInfo(origin.id); + return convertToFlutterNode(originNode, flutterId, origin.view); + } + + /* + * Creates an AccessibilityNodeInfo that can be attached to the Flutter accessibility tree and is equivalent to + * originNode(which belongs to embeddedView). The virtual ID for the created node will be flutterId. + */ + private AccessibilityNodeInfo convertToFlutterNode(AccessibilityNodeInfo originNode, int flutterId, View embeddedView) { + AccessibilityNodeInfo result = AccessibilityNodeInfo.obtain(rootAccessibilityView, flutterId); + result.setPackageName(rootAccessibilityView.getContext().getPackageName()); + result.setSource(rootAccessibilityView, flutterId); + result.setClassName(originNode.getClassName()); + + Rect displayBounds = flutterIdToDisplayBounds.get(flutterId); + + copyAccessibilityFields(originNode, result); + setFlutterNodesTranslateBounds(originNode, displayBounds, result); + addChildrenToFlutterNode(originNode, embeddedView, displayBounds, result); + setFlutterNodeParent(originNode, embeddedView, result); + + return result; + } + + private void setFlutterNodeParent(AccessibilityNodeInfo originNode, View embeddedView, AccessibilityNodeInfo result) { + Long parentOriginPackedId = reflectionAccessors.getParentNodeId(originNode); + if (parentOriginPackedId == null) { + return; + } + int parentOriginId = ReflectionAccessors.getVirtualNodeId(parentOriginPackedId); + Integer parentFlutterId = originToFlutterId.get(new ViewAndId(embeddedView, parentOriginId)); + if (parentFlutterId != null) { + result.setParent(rootAccessibilityView, parentFlutterId); + } + } + + + private void addChildrenToFlutterNode(AccessibilityNodeInfo originNode, View embeddedView, Rect displayBounds, AccessibilityNodeInfo resultNode) { + for (int i = 0; i < originNode.getChildCount(); i++) { + Long originPackedId = reflectionAccessors.getChildId(originNode, i); + if (originPackedId == null) { + continue; + } + int originId = ReflectionAccessors.getVirtualNodeId(originPackedId); + ViewAndId origin = new ViewAndId(embeddedView, originId); + int childFlutterId; + if (originToFlutterId.containsKey(origin)) { + childFlutterId = originToFlutterId.get(origin); + } else { + childFlutterId = nextFlutterId++; + originToFlutterId.put(origin, childFlutterId); + flutterIdToOrigin.put(childFlutterId, origin); + flutterIdToDisplayBounds.put(childFlutterId, displayBounds); + } + resultNode.addChild(rootAccessibilityView, childFlutterId); + } + } + + private void setFlutterNodesTranslateBounds(AccessibilityNodeInfo originNode, Rect displayBounds, AccessibilityNodeInfo resultNode) { + Rect boundsInParent = new Rect(); + originNode.getBoundsInParent(boundsInParent); + resultNode.setBoundsInParent(boundsInParent); + + Rect boundsInScreen = new Rect(); + originNode.getBoundsInScreen(boundsInScreen); + boundsInScreen.offset(displayBounds.left, displayBounds.top); + resultNode.setBoundsInScreen(boundsInScreen); + } + + private void copyAccessibilityFields(AccessibilityNodeInfo input, AccessibilityNodeInfo output) { + output.setAccessibilityFocused(input.isAccessibilityFocused()); + output.setCheckable(input.isCheckable()); + output.setChecked(input.isChecked()); + output.setContentDescription(input.getContentDescription()); + output.setEnabled(input.isEnabled()); + output.setClickable(input.isClickable()); + output.setFocusable(input.isFocusable()); + output.setFocused(input.isFocused()); + output.setLongClickable(input.isLongClickable()); + output.setMovementGranularities(input.getMovementGranularities()); + output.setPassword(input.isPassword()); + output.setScrollable(input.isScrollable()); + output.setSelected(input.isSelected()); + output.setText(input.getText()); + output.setVisibleToUser(input.isVisibleToUser()); + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) { + output.setEditable(input.isEditable()); + } + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { + output.setCanOpenPopup(input.canOpenPopup()); + output.setCollectionInfo(input.getCollectionInfo()); + output.setCollectionItemInfo(input.getCollectionItemInfo()); + output.setContentInvalid(input.isContentInvalid()); + output.setDismissable(input.isDismissable()); + output.setInputType(input.getInputType()); + output.setLiveRegion(input.getLiveRegion()); + output.setMultiLine(input.isMultiLine()); + output.setRangeInfo(input.getRangeInfo()); + } + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + output.setError(input.getError()); + output.setMaxTextLength(input.getMaxTextLength()); + } + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + output.setContextClickable(input.isContextClickable()); + // TODO(amirh): copy traversal before and after. + // https://github.com/flutter/flutter/issues/29718 + } + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + output.setDrawingOrder(input.getDrawingOrder()); + output.setImportantForAccessibility(input.isImportantForAccessibility()); + } + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + output.setAvailableExtraData(input.getAvailableExtraData()); + output.setHintText(input.getHintText()); + output.setShowingHintText(input.isShowingHintText()); + } + } + + private static class ViewAndId { + final View view; + final int id; + + private ViewAndId(View view, int id) { + this.view = view; + this.id = id; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + ViewAndId viewAndId = (ViewAndId) o; + return id == viewAndId.id && + view.equals(viewAndId.view); + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + view.hashCode(); + result = prime * result + id; + return result; + } + } + + private static class ReflectionAccessors { + private final Method getSourceNodeId; + private final Method getParentNodeId; + private final Method getChildId; + + private ReflectionAccessors() { + Method getSourceNodeId = null; + Method getParentNodeId = null; + Method getChildId = null; + try { + getSourceNodeId = AccessibilityNodeInfo.class.getMethod("getSourceNodeId"); + } catch (NoSuchMethodException e) { + Log.w(TAG, "can't invoke getSourceNodeId with reflection"); + } + try { + getParentNodeId = AccessibilityNodeInfo.class.getMethod("getParentNodeId"); + } catch (NoSuchMethodException e) { + Log.w(TAG, "can't invoke getParentNodeId with reflection"); + } + try { + getChildId = AccessibilityNodeInfo.class.getMethod("getChildId", int.class); + } catch (NoSuchMethodException e) { + Log.w(TAG, "can't invoke getChildId with reflection"); + } + this.getSourceNodeId = getSourceNodeId; + this.getParentNodeId = getParentNodeId; + this.getChildId = getChildId; + } + + /** Returns virtual node ID given packed node ID used internally in accessibility API. */ + private static int getVirtualNodeId(long nodeId) { + return (int) (nodeId >> 32); + } + + private Long getSourceNodeId(AccessibilityNodeInfo node) { + if (getSourceNodeId == null) { + return null; + } + try { + return (Long) getSourceNodeId.invoke(node); + } catch (IllegalAccessException e) { + Log.w(TAG, e); + } catch (InvocationTargetException e) { + Log.w(TAG, e); + } + return null; + } + + private Long getChildId(AccessibilityNodeInfo node, int child) { + if (getChildId == null) { + return null; + } + try { + return (Long) getChildId.invoke(node, child); + } catch (IllegalAccessException e) { + Log.w(TAG, e); + } catch (InvocationTargetException e) { + Log.w(TAG, e); + } + return null; + } + + private Long getParentNodeId(AccessibilityNodeInfo node) { + if (getParentNodeId == null) { + return null; + } + try { + return (long) getParentNodeId.invoke(node); + } catch (IllegalAccessException e) { + Log.w(TAG, e); + } catch (InvocationTargetException e) { + Log.w(TAG, e); + } + return null; + } + } +} From 69c4d82f54100a260a7702c22a10e0e2d43cb678 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Thu, 21 Mar 2019 18:28:11 -0400 Subject: [PATCH 1457/1537] Roll src/third_party/skia d6ab77a2e20f..19fb3971bca5 (17 commits) (#8245) https://skia.googlesource.com/skia.git/%2Blog/d6ab77a2e20f..19fb3971bca5 git log d6ab77a2e20ff54644ffc247da4dd2ea755c1111..19fb3971bca5dd30c33513697fa082075c07c036 --date=short --no-merges --format=%ad %ae %s 2019-03-21 mtklein@google.com de-common some flags 2019-03-21 jvanverth@google.com Revert "Fix blurry edges on large ovals." 2019-03-21 brianosman@google.com Add maksing to SkSL byte code generator to please MSVC's RTC 2019-03-21 kjlubick@google.com [canvaskit] npm version 0.5.1 2019-03-21 ethannicholas@google.com fix Google3 roll 2019-03-21 bungeman@google.com Add font scale and skew in x to viewer. 2019-03-20 bungeman@google.com Always draw emoji with GPU. 2019-03-21 jvanverth@google.com Check for null parameter to SkOffsetSimplePolygon 2019-03-21 rmistry@google.com Add new AndroidOne SkottieTracing bot 2019-03-21 michaelludwig@google.com Use YUV effect in drawEdgeAAImageSet 2019-03-21 mtklein@google.com DEFINE_int32 + DEFINE_uint32 -> DEFINE_int 2019-03-21 brianosman@google.com Remove SkColorSpaceXformCanvas, and supporting code: 2019-03-21 jvanverth@google.com Fix blurry edges on large ovals. 2019-03-21 mtklein@google.com moar static flags 2019-03-21 rmistry@google.com New perf-skottietrace recipe 2019-03-21 mtklein@google.com refactor for saner constness 2019-03-21 mtklein@google.com update SkShader appendStages() fallback plan The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (brianosman@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 11 ++++------- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/DEPS b/DEPS index d6f84c112eab9..df00687c6ac09 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'd6ab77a2e20ff54644ffc247da4dd2ea755c1111', + 'skia_revision': '19fb3971bca5dd30c33513697fa082075c07c036', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 8e06779f78366..f6372b56e9c7e 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 8b213e55333c31d2af13e99dbb28de7f +Signature: 068fad76a0ce84ce9e64affe66fc39c5 UNUSED LICENSES: @@ -2266,6 +2266,9 @@ FILE: ../../../third_party/skia/infra/bots/recipes/perf_canvaskit.expected/pathk FILE: ../../../third_party/skia/infra/bots/recipes/perf_pathkit.expected/Perf-Debian9-EMCC-GCE-CPU-AVX2-asmjs-Release-All-PathKit.json FILE: ../../../third_party/skia/infra/bots/recipes/perf_pathkit.expected/Perf-Debian9-EMCC-GCE-CPU-AVX2-wasm-Release-All-PathKit.json FILE: ../../../third_party/skia/infra/bots/recipes/perf_pathkit.expected/pathkit_trybot.json +FILE: ../../../third_party/skia/infra/bots/recipes/perf_skottietrace.expected/Perf-Android-Clang-AndroidOne-GPU-Mali400MP2-arm-Release-All-Android_SkottieTracing.json +FILE: ../../../third_party/skia/infra/bots/recipes/perf_skottietrace.expected/skottietracing_parse_trace_error.json +FILE: ../../../third_party/skia/infra/bots/recipes/perf_skottietrace.expected/skottietracing_trybot.json FILE: ../../../third_party/skia/infra/bots/recipes/recreate_skps.expected/Housekeeper-Nightly-RecreateSKPs_Canary.json FILE: ../../../third_party/skia/infra/bots/recipes/recreate_skps.expected/Housekeeper-Weekly-RecreateSKPs.json FILE: ../../../third_party/skia/infra/bots/recipes/recreate_skps.expected/failed_upload.json @@ -4181,8 +4184,6 @@ ORIGIN: ../../../third_party/skia/bench/ClipMaskBench.cpp + ../../../third_party TYPE: LicenseType.bsd FILE: ../../../third_party/skia/bench/ClipMaskBench.cpp FILE: ../../../third_party/skia/bench/ClipStrategyBench.cpp -FILE: ../../../third_party/skia/bench/ColorCanvasDrawBitmapBench.cpp -FILE: ../../../third_party/skia/bench/ColorSpaceXformBench.cpp FILE: ../../../third_party/skia/bench/CubicKLMBench.cpp FILE: ../../../third_party/skia/bench/PathTextBench.cpp FILE: ../../../third_party/skia/bench/ShadowBench.cpp @@ -4240,7 +4241,6 @@ FILE: ../../../third_party/skia/include/atlastext/SkAtlasTextFont.h FILE: ../../../third_party/skia/include/atlastext/SkAtlasTextRenderer.h FILE: ../../../third_party/skia/include/atlastext/SkAtlasTextTarget.h FILE: ../../../third_party/skia/include/codec/SkEncodedOrigin.h -FILE: ../../../third_party/skia/include/core/SkColorSpaceXformCanvas.h FILE: ../../../third_party/skia/include/core/SkDeferredDisplayListRecorder.h FILE: ../../../third_party/skia/include/core/SkExecutor.h FILE: ../../../third_party/skia/include/core/SkFontArguments.h @@ -4396,9 +4396,6 @@ FILE: ../../../third_party/skia/src/core/SkBlendMode.cpp FILE: ../../../third_party/skia/src/core/SkBlitter_RGB565.cpp FILE: ../../../third_party/skia/src/core/SkClipStackDevice.cpp FILE: ../../../third_party/skia/src/core/SkClipStackDevice.h -FILE: ../../../third_party/skia/src/core/SkColorSpaceXformCanvas.cpp -FILE: ../../../third_party/skia/src/core/SkColorSpaceXformer.cpp -FILE: ../../../third_party/skia/src/core/SkColorSpaceXformer.h FILE: ../../../third_party/skia/src/core/SkCoverageDelta.cpp FILE: ../../../third_party/skia/src/core/SkCoverageDelta.h FILE: ../../../third_party/skia/src/core/SkDeferredDisplayListRecorder.cpp From 3df694300bfb2ef77363a91928a63d6f2f595810 Mon Sep 17 00:00:00 2001 From: Ben Konyi Date: Thu, 21 Mar 2019 15:34:24 -0700 Subject: [PATCH 1458/1537] Roll src/third_party/dart cabaa78cc5..ba0147ac07 (3 commits) (#8248) ba0147ac07 Resynthesize typedef(s) and generic function types. a7a36961bd math: dartfmt -f --fix 1d7dcfff97 Cleanup scanner tests --- DEPS | 2 +- ci/licenses_golden/licenses_third_party | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index df00687c6ac09..edb3d0f0b88e4 100644 --- a/DEPS +++ b/DEPS @@ -31,7 +31,7 @@ vars = { # Dart is: https://github.com/dart-lang/sdk/blob/master/DEPS. # You can use //tools/dart/create_updated_flutter_deps.py to produce # updated revision list of existing dependencies. - 'dart_revision': 'cabaa78cc57d08bcfcd75bfe99a42c19ed497d26', + 'dart_revision': 'ba0147ac077b3f2e40694791872d610de61ed982', # WARNING: DO NOT EDIT MANUALLY # The lines between blank lines above and below are generated by a script. See create_updated_flutter_deps.py diff --git a/ci/licenses_golden/licenses_third_party b/ci/licenses_golden/licenses_third_party index 42785b9c948c3..050e0164a7b63 100644 --- a/ci/licenses_golden/licenses_third_party +++ b/ci/licenses_golden/licenses_third_party @@ -1,4 +1,4 @@ -Signature: 0f3631374103b2f9512fd6180a904a7e +Signature: b76e84a42f37701a84355e415b774050 UNUSED LICENSES: From b68f7e72aa71eb75969bd674d78a5b40ee5ed89f Mon Sep 17 00:00:00 2001 From: Chinmay Garde Date: Thu, 21 Mar 2019 15:46:29 -0700 Subject: [PATCH 1459/1537] Allow specifying an alternate Mac host SDK. (#8249) --- tools/gn | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tools/gn b/tools/gn index 083b8c821554f..7dacacf0651a4 100755 --- a/tools/gn +++ b/tools/gn @@ -241,6 +241,9 @@ def to_gn_args(args): gn_args['dart_platform_sdk'] = not args.full_dart_sdk gn_args['full_dart_sdk'] = args.full_dart_sdk + if sys.platform == 'darwin': + gn_args['mac_sdk_path'] = args.mac_sdk_path + return gn_args def parse_args(args): @@ -296,6 +299,9 @@ def parse_args(args): help='include trained dart2js and dartdevc snapshots. Enable only on steps that create an SDK') parser.add_argument('--no-full-dart-sdk', dest='full_dart_sdk', action='store_false') + parser.add_argument('--mac-sdk-path', default='', type=str, + help='On the mac, the SDK is inferred from the Xcode location unless this flag is specified.') + return parser.parse_args(args) def main(argv): From adc6685468bfc416eaab2858dd023e0e7771c7bc Mon Sep 17 00:00:00 2001 From: Jonah Williams Date: Thu, 21 Mar 2019 18:01:53 -0700 Subject: [PATCH 1460/1537] Add platformViewId to stub_ui (#8253) --- lib/stub_ui/semantics.dart | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lib/stub_ui/semantics.dart b/lib/stub_ui/semantics.dart index bc15a4cc285ac..cd2715eddf3db 100644 --- a/lib/stub_ui/semantics.dart +++ b/lib/stub_ui/semantics.dart @@ -590,6 +590,11 @@ class SemanticsUpdateBuilder { /// The fields 'textSelectionBase' and 'textSelectionExtent' describe the /// currently selected text within `value`. /// + /// The field `platformViewId` references the platform view, whose semantics + /// nodes will be added as children to this node. If a platform view is + /// specified, `childrenInHitTestOrder` and `childrenInTraversalOrder` must be + /// empty. + /// /// For scrollable nodes `scrollPosition` describes the current scroll /// position in logical pixel. `scrollExtentMax` and `scrollExtentMin` /// describe the maximum and minimum in-rage values that `scrollPosition` can @@ -618,6 +623,7 @@ class SemanticsUpdateBuilder { int actions, int textSelectionBase, int textSelectionExtent, + int platformViewId, int scrollChildren, int scrollIndex, double scrollPosition, From 68bd4f2c6479c19a4e4af6574db45900fcade346 Mon Sep 17 00:00:00 2001 From: Jason Simmons Date: Thu, 21 Mar 2019 18:08:58 -0700 Subject: [PATCH 1461/1537] Do not drop the DartExecutor's message handler when a FlutterNativeView is detached from the FlutterView (#8254) An activity can use ViewFactory.retainNativeFlutterView to reuse a FlutterNativeView across multiple instances of the activity. In this scenario, the FlutterNativeView should continue to handle incoming messages sent from Dart. --- shell/platform/android/io/flutter/view/FlutterNativeView.java | 3 +-- shell/platform/android/io/flutter/view/FlutterView.java | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/shell/platform/android/io/flutter/view/FlutterNativeView.java b/shell/platform/android/io/flutter/view/FlutterNativeView.java index 580612a1467bf..2c2b57a5f174a 100644 --- a/shell/platform/android/io/flutter/view/FlutterNativeView.java +++ b/shell/platform/android/io/flutter/view/FlutterNativeView.java @@ -47,9 +47,8 @@ public FlutterNativeView(@NonNull Context context, boolean isBackgroundView) { assertAttached(); } - public void detach() { + public void detachFromFlutterView() { mPluginRegistry.detach(); - dartExecutor.onDetachedFromJNI(); mFlutterView = null; } diff --git a/shell/platform/android/io/flutter/view/FlutterView.java b/shell/platform/android/io/flutter/view/FlutterView.java index f8f38abbd48dc..7ba52567572ca 100644 --- a/shell/platform/android/io/flutter/view/FlutterView.java +++ b/shell/platform/android/io/flutter/view/FlutterView.java @@ -346,7 +346,7 @@ public FlutterNativeView detach() { if (!isAttached()) return null; getHolder().removeCallback(mSurfaceCallback); - mNativeView.detach(); + mNativeView.detachFromFlutterView(); FlutterNativeView view = mNativeView; mNativeView = null; From 272957d62b605c401c8376bb692ef86e1061daf8 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Thu, 21 Mar 2019 21:57:11 -0400 Subject: [PATCH 1462/1537] Roll src/third_party/skia 19fb3971bca5..d0995493f8f3 (11 commits) (#8255) https://skia.googlesource.com/skia.git/%2Blog/19fb3971bca5..d0995493f8f3 git log 19fb3971bca5dd30c33513697fa082075c07c036..d0995493f8f3d1d4d882c6b5b5dbc327072dd41b --date=short --no-merges --format=%ad %ae %s 2019-03-21 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader 80c796becc43..b55772e6e7dd (2 commits) 2019-03-21 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader 4ecc9d4073ce..80c796becc43 (1 commits) 2019-03-21 skia-autoroll@skia-public.iam.gserviceaccount.com Roll ../src b57a03014063..9aca4d1c479e (502 commits) 2019-03-21 bungeman@google.com Make zoom in viewer exponential. 2019-03-21 rmistry@google.com Fix upload collisions in the AndroidOne SkottieTracing bot 2019-03-21 csmartdalton@google.com Rename GrAAFillRRectOp to GrFillRectOp 2019-03-21 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/angle2 232bfeae6b29..2219b18c984e (6 commits) 2019-03-21 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader 603a1b53f72e..4ecc9d4073ce (2 commits) 2019-03-21 bsalomon@google.com Put SkImageInfo on SkImage to avoid cost of reconstructing for queries. 2019-03-21 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader 7bc4f45a391f..603a1b53f72e (2 commits) 2019-03-21 egdaniel@google.com In viewer measure and show full frame times. The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (brianosman@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/DEPS b/DEPS index edb3d0f0b88e4..8a1b7cd9d55c7 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '19fb3971bca5dd30c33513697fa082075c07c036', + 'skia_revision': 'd0995493f8f3d1d4d882c6b5b5dbc327072dd41b', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index f6372b56e9c7e..1fa2379cad8b6 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 068fad76a0ce84ce9e64affe66fc39c5 +Signature: 133c7e4e6c2e00c64142fb39061417a0 UNUSED LICENSES: @@ -1836,12 +1836,12 @@ FILE: ../../../third_party/skia/src/gpu/mtl/GrMtlUniformHandler.h FILE: ../../../third_party/skia/src/gpu/mtl/GrMtlUniformHandler.mm FILE: ../../../third_party/skia/src/gpu/mtl/GrMtlVaryingHandler.h FILE: ../../../third_party/skia/src/gpu/mtl/GrMtlVaryingHandler.mm -FILE: ../../../third_party/skia/src/gpu/ops/GrAAFillRRectOp.cpp -FILE: ../../../third_party/skia/src/gpu/ops/GrAAFillRRectOp.h FILE: ../../../third_party/skia/src/gpu/ops/GrClearStencilClipOp.cpp FILE: ../../../third_party/skia/src/gpu/ops/GrDebugMarkerOp.cpp FILE: ../../../third_party/skia/src/gpu/ops/GrDrawableOp.cpp FILE: ../../../third_party/skia/src/gpu/ops/GrDrawableOp.h +FILE: ../../../third_party/skia/src/gpu/ops/GrFillRRectOp.cpp +FILE: ../../../third_party/skia/src/gpu/ops/GrFillRRectOp.h FILE: ../../../third_party/skia/src/gpu/ops/GrFillRectOp.cpp FILE: ../../../third_party/skia/src/gpu/ops/GrFillRectOp.h FILE: ../../../third_party/skia/src/gpu/ops/GrQuadPerEdgeAA.cpp From f226db946c048d619adb7f990568d8551a5bec00 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Fri, 22 Mar 2019 01:26:11 -0400 Subject: [PATCH 1463/1537] Roll src/third_party/skia d0995493f8f3..a39bbdad93be (2 commits) (#8257) https://skia.googlesource.com/skia.git/%2Blog/d0995493f8f3..a39bbdad93be git log d0995493f8f3d1d4d882c6b5b5dbc327072dd41b..a39bbdad93be9778642d9f3bca3904f649222d16 --date=short --no-merges --format=%ad %ae %s 2019-03-21 recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com Roll recipe dependencies (trivial). 2019-03-21 recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com Roll recipe dependencies (trivial). The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (brianosman@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 8a1b7cd9d55c7..93452ea493ea6 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'd0995493f8f3d1d4d882c6b5b5dbc327072dd41b', + 'skia_revision': 'a39bbdad93be9778642d9f3bca3904f649222d16', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 1fa2379cad8b6..1ba4977f568b6 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 133c7e4e6c2e00c64142fb39061417a0 +Signature: fcae4f094f1b7713447703f889a76685 UNUSED LICENSES: From db9d864d8dadf348d203c9838645eceb5f34de6f Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Fri, 22 Mar 2019 04:55:11 -0400 Subject: [PATCH 1464/1537] Roll src/third_party/skia a39bbdad93be..f4af3608b95a (2 commits) (#8259) https://skia.googlesource.com/skia.git/%2Blog/a39bbdad93be..f4af3608b95a git log a39bbdad93be9778642d9f3bca3904f649222d16..f4af3608b95a188777441c955d213263d9b1916b --date=short --no-merges --format=%ad %ae %s 2019-03-22 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/angle2 2219b18c984e..9e586a0f8a1c (1 commits) 2019-03-22 skia-recreate-skps@skia-swarming-bots.iam.gserviceaccount.com Update go_deps asset The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (brianosman@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 93452ea493ea6..e461175e40c58 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'a39bbdad93be9778642d9f3bca3904f649222d16', + 'skia_revision': 'f4af3608b95a188777441c955d213263d9b1916b', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 1ba4977f568b6..b18f975474270 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: fcae4f094f1b7713447703f889a76685 +Signature: e6ee3992d9098bc6dc16f6b577f61248 UNUSED LICENSES: From cb3a9962debe42e3a32e55e1005e17d0b093ca46 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Fri, 22 Mar 2019 08:24:20 -0400 Subject: [PATCH 1465/1537] Roll src/third_party/skia f4af3608b95a..bc7402f30ad8 (5 commits) (#8261) https://skia.googlesource.com/skia.git/%2Blog/f4af3608b95a..bc7402f30ad8 git log f4af3608b95a188777441c955d213263d9b1916b..bc7402f30ad83f04a81401cc2b1bcb19d7dec7a9 --date=short --no-merges --format=%ad %ae %s 2019-03-21 benjaminwagner@google.com [infra] Cleanup unused OS mappings in gen_tasks.go 2019-03-22 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader 756b54d7073a..4d3cdbc27b79 (1 commits) 2019-03-22 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader 3f9c56c3cd54..756b54d7073a (2 commits) 2019-03-22 recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com Roll recipe dependencies (trivial). 2019-03-22 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader b55772e6e7dd..3f9c56c3cd54 (1 commits) The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (brianosman@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index e461175e40c58..474da5adc9b6d 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'f4af3608b95a188777441c955d213263d9b1916b', + 'skia_revision': 'bc7402f30ad83f04a81401cc2b1bcb19d7dec7a9', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index b18f975474270..7d3b850b0b12a 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: e6ee3992d9098bc6dc16f6b577f61248 +Signature: ef4ed470e23fb09eca765820d10dc8fa UNUSED LICENSES: From 81dbfc12e492efe48de40f7e1132a574f25c81e1 Mon Sep 17 00:00:00 2001 From: Justin McCandless Date: Fri, 22 Mar 2019 06:57:29 -0700 Subject: [PATCH 1466/1537] Fix incorrect vertices colors length check (#8247) A DCHECK was checking incorrect values, and this corrects it. --- lib/ui/painting/vertices.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/ui/painting/vertices.cc b/lib/ui/painting/vertices.cc index 2e23fcd975b11..0f29ad593b65a 100644 --- a/lib/ui/painting/vertices.cc +++ b/lib/ui/painting/vertices.cc @@ -73,7 +73,7 @@ void Vertices::init(SkVertices::VertexMode vertex_mode, } if (colors.data()) { // SkVertices::Builder assumes equal numbers of elements - FML_DCHECK(positions.num_elements() == colors.num_elements()); + FML_DCHECK(positions.num_elements() / 2 == colors.num_elements()); DecodeInts(colors, builder.colors()); } From 663967b574eeeb7d42db825a9363343f59ca3e26 Mon Sep 17 00:00:00 2001 From: Ben Konyi Date: Thu, 21 Mar 2019 19:01:05 -0700 Subject: [PATCH 1467/1537] Roll src/third_party/dart ba0147ac07..266d823f5c (12 commits) 266d823f5c remove unused scanner error list 986fbe34d7 [dartdevc] fix #36275, emit members whose names are from other libraries 602ac1226d Check if element conditions for downcasts 2ffe0c7b7a Report not potential constants in ShortCircuitOperators. 298dacfef5 [vm] Avoid main thread compilation of implicit accessors. 1e405a8226 [ddc] sidestep constant regression in ddk 61e71e785f Prepare to publish analyzer version 0.36.0 c403804d9c [vm/interpreter] Take arg desc into consideration when resolving call method in invoke field dispatchers. 40e77d29d5 Tests for implicit cast properties; add cast for `[...dynamic]`. 9622562482 Make _cancelWakeup a no-op if _sendPort is null 8f827aef4f [vm/bytecode] Recognize identical() in bytecode flow graph builder 02d5d26b83 Fix for 'int' in const List. --- DEPS | 2 +- ci/licenses_golden/licenses_third_party | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 474da5adc9b6d..70b1d34bd7f23 100644 --- a/DEPS +++ b/DEPS @@ -31,7 +31,7 @@ vars = { # Dart is: https://github.com/dart-lang/sdk/blob/master/DEPS. # You can use //tools/dart/create_updated_flutter_deps.py to produce # updated revision list of existing dependencies. - 'dart_revision': 'ba0147ac077b3f2e40694791872d610de61ed982', + 'dart_revision': '266d823f5c5733c1f0a0bb3a4f4f398a15f81e8f', # WARNING: DO NOT EDIT MANUALLY # The lines between blank lines above and below are generated by a script. See create_updated_flutter_deps.py diff --git a/ci/licenses_golden/licenses_third_party b/ci/licenses_golden/licenses_third_party index 050e0164a7b63..d83021c7869ae 100644 --- a/ci/licenses_golden/licenses_third_party +++ b/ci/licenses_golden/licenses_third_party @@ -1,4 +1,4 @@ -Signature: b76e84a42f37701a84355e415b774050 +Signature: a1b4b559a1f0f48db96b691ff133002c UNUSED LICENSES: From 28846b69d15dc7901c01a824e8b81f2fd963952b Mon Sep 17 00:00:00 2001 From: Ben Konyi Date: Thu, 21 Mar 2019 21:54:38 -0700 Subject: [PATCH 1468/1537] Roll src/third_party/dart 266d823f5c..8b8a8f7b4e (3 commits) 8b8a8f7b4e Report error for invalid this/super in initializer 74b7890597 Fix a few mistakes and oversights in the control flow collection tests. f5d97104e8 [dartdevc] Fix ForElement downcasts and expected run time errors --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index 70b1d34bd7f23..8a91019a9d7df 100644 --- a/DEPS +++ b/DEPS @@ -31,7 +31,7 @@ vars = { # Dart is: https://github.com/dart-lang/sdk/blob/master/DEPS. # You can use //tools/dart/create_updated_flutter_deps.py to produce # updated revision list of existing dependencies. - 'dart_revision': '266d823f5c5733c1f0a0bb3a4f4f398a15f81e8f', + 'dart_revision': '8b8a8f7b4e11ceb0c4c9e504bfd5f3cbc496f74b', # WARNING: DO NOT EDIT MANUALLY # The lines between blank lines above and below are generated by a script. See create_updated_flutter_deps.py From 09cb42648fa6aec7d857af178b8d073323ea3c09 Mon Sep 17 00:00:00 2001 From: Ben Konyi Date: Fri, 22 Mar 2019 00:51:58 -0700 Subject: [PATCH 1469/1537] Roll src/third_party/dart 8b8a8f7b4e..fa74184b7a (1 commits) fa74184b7a Verify that constructor initializers use only potentially constant expressions. --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index 8a91019a9d7df..1ad93b10d6ae0 100644 --- a/DEPS +++ b/DEPS @@ -31,7 +31,7 @@ vars = { # Dart is: https://github.com/dart-lang/sdk/blob/master/DEPS. # You can use //tools/dart/create_updated_flutter_deps.py to produce # updated revision list of existing dependencies. - 'dart_revision': '8b8a8f7b4e11ceb0c4c9e504bfd5f3cbc496f74b', + 'dart_revision': 'fa74184b7aad2a441a23c4c2f4160c09cc69ec32', # WARNING: DO NOT EDIT MANUALLY # The lines between blank lines above and below are generated by a script. See create_updated_flutter_deps.py From d21cca71fd2f624dbe0384d291e9f629783f4983 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Fri, 22 Mar 2019 11:51:15 -0400 Subject: [PATCH 1470/1537] Roll src/third_party/skia bc7402f30ad8..f9264bac4e99 (8 commits) (#8264) https://skia.googlesource.com/skia.git/%2Blog/bc7402f30ad8..f9264bac4e99 git log bc7402f30ad83f04a81401cc2b1bcb19d7dec7a9..f9264bac4e995c2ee0fbd127ce10000ceed30945 --date=short --no-merges --format=%ad %ae %s 2019-03-22 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader cf1866183620..2e96bac879cf (2 commits) 2019-03-22 brianosman@google.com Remove Perf-Valgrind-AbandonGpuContext bot 2019-03-22 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader 3dbb77576f93..cf1866183620 (1 commits) 2019-03-22 bsalomon@google.com Revert "Use glTexStorage for non-MIP mapped textures." 2019-03-22 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader af26cfe3fd74..3dbb77576f93 (1 commits) 2019-03-21 bsalomon@google.com Use glTexStorage for non-MIP mapped textures. 2019-03-22 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader 4d3cdbc27b79..af26cfe3fd74 (1 commits) 2019-03-21 reed@google.com update/add benches to look at colorspace as well as alphatype The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (brianosman@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/DEPS b/DEPS index 1ad93b10d6ae0..1f17737582ab8 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'bc7402f30ad83f04a81401cc2b1bcb19d7dec7a9', + 'skia_revision': 'f9264bac4e995c2ee0fbd127ce10000ceed30945', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 7d3b850b0b12a..96ff5595913e7 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: ef4ed470e23fb09eca765820d10dc8fa +Signature: a11edade867d2a6d79060ca17bb31f94 UNUSED LICENSES: @@ -2255,7 +2255,7 @@ FILE: ../../../third_party/skia/infra/bots/recipes/perf.expected/Perf-Debian9-Cl FILE: ../../../third_party/skia/infra/bots/recipes/perf.expected/Perf-Mac10.13-Clang-MacBook10.1-GPU-IntelHD615-x86_64-Release-All-CommandBuffer.json FILE: ../../../third_party/skia/infra/bots/recipes/perf.expected/Perf-Mac10.13-Clang-MacBookPro11.5-GPU-RadeonHD8870M-x86_64-Release-All-MoltenVK_Vulkan.json FILE: ../../../third_party/skia/infra/bots/recipes/perf.expected/Perf-Mac10.13-Clang-MacMini7.1-GPU-IntelIris5100-x86_64-Release-All-CommandBuffer.json -FILE: ../../../third_party/skia/infra/bots/recipes/perf.expected/Perf-Ubuntu17-GCC-Golo-GPU-QuadroP400-x86_64-Release-All-Valgrind_AbandonGpuContext_SK_CPU_LIMIT_SSE41.json +FILE: ../../../third_party/skia/infra/bots/recipes/perf.expected/Perf-Ubuntu17-GCC-Golo-GPU-QuadroP400-x86_64-Release-All-Valgrind_SK_CPU_LIMIT_SSE41.json FILE: ../../../third_party/skia/infra/bots/recipes/perf.expected/Perf-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Release-All-ANGLE.json FILE: ../../../third_party/skia/infra/bots/recipes/perf.expected/Perf-Win10-Clang-NUC8i5BEK-GPU-IntelIris655-x86_64-Release-All-Vulkan.json FILE: ../../../third_party/skia/infra/bots/recipes/perf.expected/Perf-Win10-Clang-NUC8i5BEK-GPU-IntelIris655-x86_64-Release-All.json From f4d994951862d0153efabeb98cc0cf5eb842174e Mon Sep 17 00:00:00 2001 From: Jonah Williams Date: Fri, 22 Mar 2019 10:23:22 -0700 Subject: [PATCH 1471/1537] check that public API of dart:ui conforms to web implementation (#8256) --- ci/build.sh | 6 ++ web_sdk/pubspec.yaml | 6 ++ web_sdk/test/api_conform_test.dart | 134 +++++++++++++++++++++++++++++ 3 files changed, 146 insertions(+) create mode 100644 web_sdk/pubspec.yaml create mode 100644 web_sdk/test/api_conform_test.dart diff --git a/ci/build.sh b/ci/build.sh index 57699445121c1..cd0024147ba54 100755 --- a/ci/build.sh +++ b/ci/build.sh @@ -12,3 +12,9 @@ ninja -C out/host_debug_unopt generate_dart_ui # Analyze the dart UI flutter/ci/analyze.sh flutter/ci/licenses.sh + +# Check that dart libraries conform +cd flutter/web_sdk +pub get +cd .. +dart web_sdk/test/api_conform_test.dart diff --git a/web_sdk/pubspec.yaml b/web_sdk/pubspec.yaml new file mode 100644 index 0000000000000..46234190eea08 --- /dev/null +++ b/web_sdk/pubspec.yaml @@ -0,0 +1,6 @@ +name: web_sdk_tests +author: Flutter Authors + +dev_dependencies: + analyzer: any + test: any diff --git a/web_sdk/test/api_conform_test.dart b/web_sdk/test/api_conform_test.dart new file mode 100644 index 0000000000000..1a7f8c53a7c6d --- /dev/null +++ b/web_sdk/test/api_conform_test.dart @@ -0,0 +1,134 @@ +// 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. + +import 'package:analyzer/analyzer.dart'; + +int main() { + // These files just contain imports to the part files; + final CompilationUnit uiUnit = parseDartFile('lib/ui/ui.dart', + parseFunctionBodies: false, suppressErrors: false); + final CompilationUnit webUnit = parseDartFile('lib/stub_ui/ui.dart', + parseFunctionBodies: false, suppressErrors: false); + final Map uiClasses = {}; + final Map webClasses = {}; + + // Gather all public classes from each library. For now we are skiping + // other top level members. + _collectPublicClasses(uiUnit, uiClasses, 'lib/ui/'); + _collectPublicClasses(webUnit, webClasses, 'lib/stub_ui/'); + + if (uiClasses.isEmpty || webClasses.isEmpty) { + print('Warning: did not resolve any classes.'); + } + + bool failed = false; + print('Checking ${uiClasses.length} public classes.'); + for (String className in uiClasses.keys) { + final ClassDeclaration uiClass = uiClasses[className]; + final ClassDeclaration webClass = webClasses[className]; + // If the web class is missing there isn't much left to do here. Print a + // warning and move along. + if (webClass == null) { + failed = true; + print('Warning: lib/ui/ui.dart contained public class $className, but ' + 'this was missing from lib/stub_ui/ui.dart.'); + continue; + } + // Next will check that the public methods exposed in each library are + // identical. + final Map uiMethods = {}; + final Map webMethods = {}; + _collectPublicMethods(uiClass, uiMethods); + _collectPublicMethods(webClass, webMethods); + + for (String methodName in uiMethods.keys) { + final MethodDeclaration uiMethod = uiMethods[methodName]; + final MethodDeclaration webMethod = webMethods[methodName]; + if (webMethod == null) { + failed = true; + print( + 'Warning: lib/ui/ui.dart $className.$methodName is missing from lib/stub_ui/ui.dart.', + ); + continue; + } + if (uiMethod.parameters == null || webMethod.parameters == null) { + continue; + } + if (uiMethod.parameters.parameters.length != webMethod.parameters.parameters.length) { + failed = true; + print( + 'Warning: lib/ui/ui.dart $className.$methodName has a different parameter ' + 'length than in lib/stub_ui/ui.dart.'); + } + // Technically you could re-order named parameters and still be valid, + // but we enforce that they are identical. + for (int i = 0; i < uiMethod.parameters.parameters.length && i < webMethod.parameters.parameters.length; i++) { + final FormalParameter uiParam = uiMethod.parameters.parameters[i]; + final FormalParameter webParam = webMethod.parameters.parameters[i]; + if (webParam.identifier.name != uiParam.identifier.name) { + failed = true; + print('Warning: lib/ui/ui.dart $className.$methodName parameter $i' + ' ${uiParam.identifier.name} has a different name in lib/stub_ui/ui.dart.'); + } + if (uiParam.isPositional && !webParam.isPositional) { + failed = true; + print('Warning: lib/ui/ui.dart $className.$methodName parameter $i' + '${uiParam.identifier.name} is positional, but not in lib/stub_ui/ui.dart.'); + } + if (uiParam.isNamed && !webParam.isNamed) { + failed = true; + print('Warning: lib/ui/ui.dart $className.$methodName parameter $i' + '${uiParam.identifier.name} is named, but not in lib/stub_ui/ui.dart.'); + } + } + } + } + if (failed) { + print('Failure!'); + return 1; + } + print('Success!'); + return 0; +} + +// Collects all public classes defined by the part files of [unit]. +void _collectPublicClasses(CompilationUnit unit, + Map destination, String root) { + for (Directive directive in unit.directives) { + if (directive is! PartDirective) { + continue; + } + final PartDirective partDirective = directive; + final String literalUri = partDirective.uri.toString(); + final CompilationUnit subUnit = parseDartFile( + '$root${literalUri.substring(1, literalUri.length - 1)}', + parseFunctionBodies: false, + suppressErrors: false, + ); + for (CompilationUnitMember member in subUnit.declarations) { + if (member is! ClassDeclaration) { + continue; + } + final ClassDeclaration classDeclaration = member; + if (classDeclaration.name.name.startsWith('_')) { + continue; + } + destination[classDeclaration.name.name] = classDeclaration; + } + } +} + +void _collectPublicMethods(ClassDeclaration classDeclaration, + Map destination) { + for (ClassMember member in classDeclaration.members) { + if (member is! MethodDeclaration) { + continue; + } + final MethodDeclaration method = member; + if (method.name.name.startsWith('_')) { + continue; + } + destination[method.name.name] = method; + } +} From 5f8ae420c1ac61bbbb26e61251d129c879fc788d Mon Sep 17 00:00:00 2001 From: Kate Lovett Date: Fri, 22 Mar 2019 13:43:34 -0700 Subject: [PATCH 1472/1537] Linking Higher & Lower Class Docs (#8265) * Linking lower layer classes to higher layers in API Docs. --- lib/ui/painting.dart | 10 ++++++++++ lib/ui/text.dart | 9 +++++++++ 2 files changed, 19 insertions(+) diff --git a/lib/ui/painting.dart b/lib/ui/painting.dart index a83cf9265d012..42ff490c60f7d 100644 --- a/lib/ui/painting.dart +++ b/lib/ui/painting.dart @@ -1520,6 +1520,11 @@ class _ImageInfo { /// /// To draw an [Image], use one of the methods on the [Canvas] class, such as /// [Canvas.drawImage]. +/// +/// See also: +/// +/// * [Image], the class in the [widgets] library that encapsulates this class. +/// @pragma('vm:entry-point') class Image extends NativeFieldWrapperClass2 { // This class is created by the engine, and should not be instantiated @@ -2678,6 +2683,11 @@ Float32List _encodeTwoPoints(Offset pointA, Offset pointB) { /// /// There are several types of gradients, represented by the various constructors /// on this class. +/// +/// See also: +/// +/// * [Gradient], the class in the [painting] library that encapsulates this class. +/// class Gradient extends Shader { void _constructor() native 'Gradient_constructor'; diff --git a/lib/ui/text.dart b/lib/ui/text.dart index 312b917573d89..f19e734482490 100644 --- a/lib/ui/text.dart +++ b/lib/ui/text.dart @@ -352,6 +352,11 @@ Int32List _encodeTextStyle( } /// An opaque object that determines the size, position, and rendering of text. +/// +/// See also: +/// +/// * [TextStyle], the class in the [painting] library that encapsulates this class. +/// class TextStyle { /// Creates a new TextStyle object. /// @@ -792,6 +797,10 @@ ByteData _encodeStrut( return ByteData.view(data.buffer, 0, byteCount); } +/// See also: +/// +/// * [StrutStyle], the class in the [painting] library that encapsulates this class. +/// class StrutStyle { /// Creates a new StrutStyle object. /// From c12696cc533bde827574c15aad4d6b197c34c51f Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Fri, 22 Mar 2019 21:53:54 -0400 Subject: [PATCH 1473/1537] Roll src/third_party/skia f9264bac4e99..33332f1e100c (27 commits) (#8275) https://skia.googlesource.com/skia.git/%2Blog/f9264bac4e99..33332f1e100c git log f9264bac4e995c2ee0fbd127ce10000ceed30945..33332f1e100cf8e2c2fca385113f27b1e076bfd8 --date=short --no-merges --format=%ad %ae %s 2019-03-22 skia-autoroll@skia-public.iam.gserviceaccount.com Roll ../src 9aca4d1c479e..3d76aaf8edee (485 commits) 2019-03-22 enne@chromium.org Prevent overflow in Deserialize::ensureAtLeast 2019-03-22 jvanverth@google.com Revert "Reland "Fix blurry edges on large ovals."" 2019-03-22 mtklein@google.com create a wrapper to manage --nativeFonts and --gdi 2019-03-22 mtklein@google.com de-common another batch of flags 2019-03-22 reed@google.com add bench for drawAtlas 2019-03-22 ethannicholas@google.com fixed constructing matrices in SPIR-V when arguments cross column boundaries 2019-03-22 brianosman@google.com Simplify two more clients of proxy provider (mipped vs. non-mipped) 2019-03-22 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader 89c13815df2f..e276f52bb4c9 (2 commits) 2019-03-22 mtklein@google.com de-common --veryVerbose 2019-03-22 jvanverth@google.com Reland "Fix blurry edges on large ovals." 2019-03-22 rmistry@google.com [Recipe_Modules] read_file_on_device was in all flavors except the DefaultFlavor 2019-03-22 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader 86509d9074c0..89c13815df2f (1 commits) 2019-03-22 recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com Roll recipe dependencies (trivial). 2019-03-22 brianosman@google.com Fold together mippped and non-mippped bitmap to proxy functions 2019-03-22 mtklein@google.com factor out SetAnalyticAAFromCommonFlags() 2019-03-22 rmistry@google.com Update all page sets for the RecreateSKPs bot 2019-03-22 mtklein@google.com Fold CommonFlagsGpu into CommonFlags 2019-03-22 rmistry@google.com Add support for automated credentials login in webpages_playback.py 2019-03-22 rmistry@google.com Fix --record in webpages_playback.py 2019-03-22 rmistry@google.com Script to help create new page sets for the RecreateSKPs bot 2019-03-22 bsalomon@google.com Revert "Revert "Use glTexStorage for non-MIP mapped textures."" 2019-03-22 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader 4c1b8c87c9aa..86509d9074c0 (3 commits) 2019-03-22 recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com Roll recipe dependencies (trivial). 2019-03-22 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader 2e96bac879cf..4c1b8c87c9aa (1 commits) 2019-03-22 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/angle2 9e586a0f8a1c..896e7811184e (1 commits) 2019-03-22 mtklein@google.com delete DAA The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (brianosman@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 6 +----- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/DEPS b/DEPS index 1f17737582ab8..f4d1840e67ec9 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'f9264bac4e995c2ee0fbd127ce10000ceed30945', + 'skia_revision': '33332f1e100cf8e2c2fca385113f27b1e076bfd8', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 96ff5595913e7..9810129f30565 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: a11edade867d2a6d79060ca17bb31f94 +Signature: 767d8408bc1bafe38e80364099165750 UNUSED LICENSES: @@ -2325,7 +2325,6 @@ FILE: ../../../third_party/skia/infra/bots/recipes/test.expected/Test-Win10-Clan FILE: ../../../third_party/skia/infra/bots/recipes/test.expected/Test-Win10-Clang-ShuttleA-GPU-GTX660-x86_64-Release-All-Vulkan.json FILE: ../../../third_party/skia/infra/bots/recipes/test.expected/Test-Win10-Clang-ShuttleC-GPU-GTX960-x86_64-Debug-All-ANGLE.json FILE: ../../../third_party/skia/infra/bots/recipes/test.expected/Test-Win2016-Clang-GCE-CPU-AVX2-x86_64-Debug-All-FAAA.json -FILE: ../../../third_party/skia/infra/bots/recipes/test.expected/Test-Win2016-Clang-GCE-CPU-AVX2-x86_64-Debug-All-FDAA.json FILE: ../../../third_party/skia/infra/bots/recipes/test.expected/Test-Win2016-Clang-GCE-CPU-AVX2-x86_64-Debug-All-FSAA.json FILE: ../../../third_party/skia/infra/bots/recipes/test.expected/Test-Win2016-MSVC-GCE-CPU-AVX2-x86_64-Debug-All-MSRTC.json FILE: ../../../third_party/skia/infra/bots/recipes/test.expected/Test-iOS-Clang-iPadPro-GPU-PowerVRGT7800-arm64-Release-All.json @@ -4396,8 +4395,6 @@ FILE: ../../../third_party/skia/src/core/SkBlendMode.cpp FILE: ../../../third_party/skia/src/core/SkBlitter_RGB565.cpp FILE: ../../../third_party/skia/src/core/SkClipStackDevice.cpp FILE: ../../../third_party/skia/src/core/SkClipStackDevice.h -FILE: ../../../third_party/skia/src/core/SkCoverageDelta.cpp -FILE: ../../../third_party/skia/src/core/SkCoverageDelta.h FILE: ../../../third_party/skia/src/core/SkDeferredDisplayListRecorder.cpp FILE: ../../../third_party/skia/src/core/SkDrawShadowInfo.cpp FILE: ../../../third_party/skia/src/core/SkDrawShadowInfo.h @@ -6831,7 +6828,6 @@ ORIGIN: ../../../third_party/skia/src/compute/sk/SkDevice_Compute.h + ../../../t TYPE: LicenseType.bsd FILE: ../../../third_party/skia/src/compute/sk/SkDevice_Compute.h FILE: ../../../third_party/skia/src/core/SkScan_AAAPath.cpp -FILE: ../../../third_party/skia/src/core/SkScan_DAAPath.cpp ---------------------------------------------------------------------------------------------------- Copyright 2016 The Android Open Source Project From f8e3a40f9ba701120724b5d6e8ff790d50f18083 Mon Sep 17 00:00:00 2001 From: KyleWong Date: Sat, 23 Mar 2019 10:21:07 +0800 Subject: [PATCH 1474/1537] Roll buildroot to 9c7b023ff266ee58b00fe60326fa1db910a087f3 (#8277) --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index f4d1840e67ec9..1d04073f8bca0 100644 --- a/DEPS +++ b/DEPS @@ -121,7 +121,7 @@ allowed_hosts = [ ] deps = { - 'src': 'https://github.com/flutter/buildroot.git' + '@' + '3f54d4f03112098e164ee62f015fcc54b19d1eda', + 'src': 'https://github.com/flutter/buildroot.git' + '@' + '9c7b023ff266ee58b00fe60326fa1db910a087f3', # Fuchsia compatibility # From 62c88d690272f0b78047758bb9d8ffa8bbb870cc Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Sat, 23 Mar 2019 01:22:55 -0400 Subject: [PATCH 1475/1537] Roll src/third_party/skia 33332f1e100c..e86cc5039026 (1 commits) (#8278) https://skia.googlesource.com/skia.git/%2Blog/33332f1e100c..e86cc5039026 git log 33332f1e100cf8e2c2fca385113f27b1e076bfd8..e86cc50390268c54faffaa5a7929c5cf11a7b31e --date=short --no-merges --format=%ad %ae %s 2019-03-23 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/angle2 896e7811184e..a8ff88143af6 (1 commits) The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (brianosman@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 1d04073f8bca0..f3cc1aa259ab2 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '33332f1e100cf8e2c2fca385113f27b1e076bfd8', + 'skia_revision': 'e86cc50390268c54faffaa5a7929c5cf11a7b31e', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 9810129f30565..3d3df0c9f24aa 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 767d8408bc1bafe38e80364099165750 +Signature: 926700fd3fd884d5cf2c01a64c43cad6 UNUSED LICENSES: From 9f878fcb3ecdcc2c6ba0c6d958282c176f008183 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Sat, 23 Mar 2019 04:56:54 -0400 Subject: [PATCH 1476/1537] Roll src/third_party/skia e86cc5039026..ec1c6fdfdd11 (1 commits) (#8279) https://skia.googlesource.com/skia.git/%2Blog/e86cc5039026..ec1c6fdfdd11 git log e86cc50390268c54faffaa5a7929c5cf11a7b31e..ec1c6fdfdd11c41b4a6f3c80bb9c7157cf092cc7 --date=short --no-merges --format=%ad %ae %s 2019-03-23 skia-recreate-skps@skia-swarming-bots.iam.gserviceaccount.com Update go_deps asset The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (brianosman@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index f3cc1aa259ab2..34efd976530d7 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'e86cc50390268c54faffaa5a7929c5cf11a7b31e', + 'skia_revision': 'ec1c6fdfdd11c41b4a6f3c80bb9c7157cf092cc7', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 3d3df0c9f24aa..91383cb0f3112 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 926700fd3fd884d5cf2c01a64c43cad6 +Signature: 47f250b71c23d2debbf6e70aa5375d18 UNUSED LICENSES: From 61838cab6dd468120ef76b77aa78a0963aa9a8ad Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Sat, 23 Mar 2019 08:25:54 -0400 Subject: [PATCH 1477/1537] Roll src/third_party/skia ec1c6fdfdd11..61bd91237778 (1 commits) (#8280) https://skia.googlesource.com/skia.git/%2Blog/ec1c6fdfdd11..61bd91237778 git log ec1c6fdfdd11c41b4a6f3c80bb9c7157cf092cc7..61bd9123777867edc772d57c3cfccaf207e4507f --date=short --no-merges --format=%ad %ae %s 2019-03-23 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/angle2 a8ff88143af6..2660b5031f11 (1 commits) The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (brianosman@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 34efd976530d7..f4e944baa259d 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'ec1c6fdfdd11c41b4a6f3c80bb9c7157cf092cc7', + 'skia_revision': '61bd9123777867edc772d57c3cfccaf207e4507f', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 91383cb0f3112..6d24af662aefd 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 47f250b71c23d2debbf6e70aa5375d18 +Signature: f8df17e4c0d818b74fb88c23d291e0a6 UNUSED LICENSES: From 8d23b21d1480042f832cb40044093cae770f0987 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Sat, 23 Mar 2019 12:44:54 -0400 Subject: [PATCH 1478/1537] Roll src/third_party/skia 61bd91237778..b1dbbc8509c6 (2 commits) (#8282) https://skia.googlesource.com/skia.git/%2Blog/61bd91237778..b1dbbc8509c6 git log 61bd9123777867edc772d57c3cfccaf207e4507f..b1dbbc8509c67b6db5561fa52dc96edae54f8c4c --date=short --no-merges --format=%ad %ae %s 2019-03-22 herb@google.com Fix fallback problems for emoji 2019-03-22 bungeman@google.com Move fontmgr_bounds label setting to checkbox. The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (brianosman@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index f4e944baa259d..cd7fcf23bfead 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '61bd9123777867edc772d57c3cfccaf207e4507f', + 'skia_revision': 'b1dbbc8509c67b6db5561fa52dc96edae54f8c4c', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 6d24af662aefd..99bf35df50054 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: f8df17e4c0d818b74fb88c23d291e0a6 +Signature: 025a0970375165e70c82931c7f396b9b UNUSED LICENSES: From bd4f6d7260b6f32b1e2ea2ca6be403cddcf3bdbd Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Sat, 23 Mar 2019 16:13:55 -0400 Subject: [PATCH 1479/1537] Roll src/third_party/skia b1dbbc8509c6..4c0b5c4b79dd (2 commits) (#8283) https://skia.googlesource.com/skia.git/%2Blog/b1dbbc8509c6..4c0b5c4b79dd git log b1dbbc8509c67b6db5561fa52dc96edae54f8c4c..4c0b5c4b79dd14bee32d8a527aeaa3c26c72d3a1 --date=short --no-merges --format=%ad %ae %s 2019-03-23 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/angle2 2660b5031f11..a88c1f9c8b34 (1 commits) 2019-03-22 halcanary@google.com SkPDF: runtime switch between subsetters The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (brianosman@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index cd7fcf23bfead..fe3950b4632a1 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'b1dbbc8509c67b6db5561fa52dc96edae54f8c4c', + 'skia_revision': '4c0b5c4b79dd14bee32d8a527aeaa3c26c72d3a1', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 99bf35df50054..d458249d4b263 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 025a0970375165e70c82931c7f396b9b +Signature: 773b8566db32d423f48fcab290b8b52c UNUSED LICENSES: From ef3cbe8acccdcd18d36a2955952fdc7177ac6c21 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Sat, 23 Mar 2019 19:49:49 -0400 Subject: [PATCH 1480/1537] Roll src/third_party/skia 4c0b5c4b79dd..97d957d1db65 (1 commits) (#8284) https://skia.googlesource.com/skia.git/%2Blog/4c0b5c4b79dd..97d957d1db65 git log 4c0b5c4b79dd14bee32d8a527aeaa3c26c72d3a1..97d957d1db657f8bbcec3db5fdddd5868ab9512e --date=short --no-merges --format=%ad %ae %s 2019-03-22 brianosman@google.com Remove GrDrawAtlasOp The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (brianosman@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/DEPS b/DEPS index fe3950b4632a1..afd78ca3015e8 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '4c0b5c4b79dd14bee32d8a527aeaa3c26c72d3a1', + 'skia_revision': '97d957d1db657f8bbcec3db5fdddd5868ab9512e', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index d458249d4b263..a8d52dc9f41af 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 773b8566db32d423f48fcab290b8b52c +Signature: f2606196c58bd731894bfe690e9bd95f UNUSED LICENSES: @@ -3805,8 +3805,6 @@ FILE: ../../../third_party/skia/src/gpu/ops/GrCopySurfaceOp.cpp FILE: ../../../third_party/skia/src/gpu/ops/GrCopySurfaceOp.h FILE: ../../../third_party/skia/src/gpu/ops/GrDashLinePathRenderer.cpp FILE: ../../../third_party/skia/src/gpu/ops/GrDashLinePathRenderer.h -FILE: ../../../third_party/skia/src/gpu/ops/GrDrawAtlasOp.cpp -FILE: ../../../third_party/skia/src/gpu/ops/GrDrawAtlasOp.h FILE: ../../../third_party/skia/src/gpu/ops/GrDrawOp.h FILE: ../../../third_party/skia/src/gpu/ops/GrDrawPathOp.cpp FILE: ../../../third_party/skia/src/gpu/ops/GrDrawPathOp.h From cee2bd73295ddd464ae7d555fae744d85f698224 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Sat, 23 Mar 2019 23:19:28 -0400 Subject: [PATCH 1481/1537] Roll src/third_party/skia 97d957d1db65..ab4c138c0ef3 (3 commits) (#8285) https://skia.googlesource.com/skia.git/%2Blog/97d957d1db65..ab4c138c0ef3 git log 97d957d1db657f8bbcec3db5fdddd5868ab9512e..ab4c138c0ef38ba1451698defb9b2b9518b96525 --date=short --no-merges --format=%ad %ae %s 2019-03-24 brianosman@google.com Revert "Simplify two more clients of proxy provider (mipped vs. non-mipped)" 2019-03-24 brianosman@google.com Revert "Remove GrDrawAtlasOp" 2019-03-23 skia-autoroll@skia-public.iam.gserviceaccount.com Roll ../src 3d76aaf8edee..0a4f8d5b63f5 (139 commits) The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (stani@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index afd78ca3015e8..a53bdc2d4108c 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '97d957d1db657f8bbcec3db5fdddd5868ab9512e', + 'skia_revision': 'ab4c138c0ef38ba1451698defb9b2b9518b96525', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index a8d52dc9f41af..db449945914b7 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: f2606196c58bd731894bfe690e9bd95f +Signature: 096e6f6942d9d327f4648d588e7923ad UNUSED LICENSES: @@ -3805,6 +3805,8 @@ FILE: ../../../third_party/skia/src/gpu/ops/GrCopySurfaceOp.cpp FILE: ../../../third_party/skia/src/gpu/ops/GrCopySurfaceOp.h FILE: ../../../third_party/skia/src/gpu/ops/GrDashLinePathRenderer.cpp FILE: ../../../third_party/skia/src/gpu/ops/GrDashLinePathRenderer.h +FILE: ../../../third_party/skia/src/gpu/ops/GrDrawAtlasOp.cpp +FILE: ../../../third_party/skia/src/gpu/ops/GrDrawAtlasOp.h FILE: ../../../third_party/skia/src/gpu/ops/GrDrawOp.h FILE: ../../../third_party/skia/src/gpu/ops/GrDrawPathOp.cpp FILE: ../../../third_party/skia/src/gpu/ops/GrDrawPathOp.h From d2bba21af27a8d3f30c66aa014f324c786f3fb4e Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Sun, 24 Mar 2019 02:48:41 -0400 Subject: [PATCH 1482/1537] Roll src/third_party/skia ab4c138c0ef3..d79c95e8bcf2 (2 commits) (#8286) https://skia.googlesource.com/skia.git/%2Blog/ab4c138c0ef3..d79c95e8bcf2 git log ab4c138c0ef38ba1451698defb9b2b9518b96525..d79c95e8bcf26ea406d0403e7ff460a5dd55b60d --date=short --no-merges --format=%ad %ae %s 2019-03-24 skia-recreate-skps@skia-swarming-bots.iam.gserviceaccount.com Update go_deps asset 2019-03-24 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/angle2 a88c1f9c8b34..eae464dd3092 (1 commits) The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (stani@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index a53bdc2d4108c..4d2e6c60b185f 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'ab4c138c0ef38ba1451698defb9b2b9518b96525', + 'skia_revision': 'd79c95e8bcf26ea406d0403e7ff460a5dd55b60d', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index db449945914b7..08daf3b5abd89 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 096e6f6942d9d327f4648d588e7923ad +Signature: c7e6219f52249aeda54aea32b7118d13 UNUSED LICENSES: From dcc72c7176bcaa9fc9fa3798542f764ca6fe4ebc Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Sun, 24 Mar 2019 06:16:54 -0400 Subject: [PATCH 1483/1537] Roll src/third_party/skia d79c95e8bcf2..e9a53fe3526a (1 commits) (#8287) https://skia.googlesource.com/skia.git/%2Blog/d79c95e8bcf2..e9a53fe3526a git log d79c95e8bcf26ea406d0403e7ff460a5dd55b60d..e9a53fe3526ab3e485d54f7fc27c48c69e68ca9b --date=short --no-merges --format=%ad %ae %s 2019-03-23 recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com Roll recipe dependencies (trivial). The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (stani@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 4d2e6c60b185f..0f1232912ecf4 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'd79c95e8bcf26ea406d0403e7ff460a5dd55b60d', + 'skia_revision': 'e9a53fe3526ab3e485d54f7fc27c48c69e68ca9b', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 08daf3b5abd89..ddce2b73d48b8 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: c7e6219f52249aeda54aea32b7118d13 +Signature: ce468a556e8599c1aa26f169b0bb015a UNUSED LICENSES: From b5813917fa17b2dbd94f933a280529d0c746c203 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Sun, 24 Mar 2019 21:31:54 -0400 Subject: [PATCH 1484/1537] Roll src/third_party/skia e9a53fe3526a..c9f746cfb9f4 (1 commits) (#8288) https://skia.googlesource.com/skia.git/%2Blog/e9a53fe3526a..c9f746cfb9f4 git log e9a53fe3526ab3e485d54f7fc27c48c69e68ca9b..c9f746cfb9f4d9257c35b2162724a99f378692cf --date=short --no-merges --format=%ad %ae %s 2019-03-25 skia-autoroll@skia-public.iam.gserviceaccount.com Roll ../src 0a4f8d5b63f5..40ce19f3a56f (30 commits) The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (stani@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 0f1232912ecf4..4dd7e4464853c 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'e9a53fe3526ab3e485d54f7fc27c48c69e68ca9b', + 'skia_revision': 'c9f746cfb9f4d9257c35b2162724a99f378692cf', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index ddce2b73d48b8..de3257685e253 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: ce468a556e8599c1aa26f169b0bb015a +Signature: 28931841d4d5f61bf72dfb6edaed4891 UNUSED LICENSES: From 1b1209881044db2242e765787b903d513a6d67e7 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Mon, 25 Mar 2019 05:23:55 -0400 Subject: [PATCH 1485/1537] Roll src/third_party/skia c9f746cfb9f4..2e2fa9e3a06b (1 commits) (#8290) https://skia.googlesource.com/skia.git/%2Blog/c9f746cfb9f4..2e2fa9e3a06b git log c9f746cfb9f4d9257c35b2162724a99f378692cf..2e2fa9e3a06b679026d206ef5ebd2f195f331da9 --date=short --no-merges --format=%ad %ae %s 2019-03-25 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader e276f52bb4c9..62f62a6efa2c (1 commits) The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (stani@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 4dd7e4464853c..1541f64108298 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'c9f746cfb9f4d9257c35b2162724a99f378692cf', + 'skia_revision': '2e2fa9e3a06b679026d206ef5ebd2f195f331da9', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index de3257685e253..472a2d4bd8c49 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 28931841d4d5f61bf72dfb6edaed4891 +Signature: 2a4db29d3e2278e6c8a9f5d472093655 UNUSED LICENSES: From fcc63e7d0d90c968cd330738389b3da58ab45c75 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Mon, 25 Mar 2019 08:53:58 -0400 Subject: [PATCH 1486/1537] Roll src/third_party/skia 2e2fa9e3a06b..cd54466473fe (2 commits) (#8291) https://skia.googlesource.com/skia.git/%2Blog/2e2fa9e3a06b..cd54466473fe git log 2e2fa9e3a06b679026d206ef5ebd2f195f331da9..cd54466473fe5fdc462c6dac6def8b327ad58263 --date=short --no-merges --format=%ad %ae %s 2019-03-22 kjlubick@google.com Expose gpu cache knobs 2019-03-25 skia-recreate-skps@skia-swarming-bots.iam.gserviceaccount.com Update go_deps asset The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (stani@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 1541f64108298..f4b1e81997c52 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '2e2fa9e3a06b679026d206ef5ebd2f195f331da9', + 'skia_revision': 'cd54466473fe5fdc462c6dac6def8b327ad58263', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 472a2d4bd8c49..7571c83ddd371 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 2a4db29d3e2278e6c8a9f5d472093655 +Signature: 9c4e8e1b5530f5f42dced2baba4f1461 UNUSED LICENSES: From 3a445cec8a51056e5903c12659b6fc97138e57db Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Mon, 25 Mar 2019 12:23:01 -0400 Subject: [PATCH 1487/1537] Roll src/third_party/skia cd54466473fe..42197c0bc68e (10 commits) (#8292) https://skia.googlesource.com/skia.git/%2Blog/cd54466473fe..42197c0bc68e git log cd54466473fe5fdc462c6dac6def8b327ad58263..42197c0bc68e4c109fad2f3665bf05ac0556ab0e --date=short --no-merges --format=%ad %ae %s 2019-03-25 brianosman@google.com Add support for 1010102 on ES2 devices with EXT_texture_type_2_10_10_10_REV 2019-03-25 rmistry@google.com Add new Intel x86_64 CPU SkottieTracing bot 2019-03-25 michaelludwig@google.com Respect stroke width in Android rrect clip optimization 2019-03-25 rmistry@google.com [Recipe] Add CPU bot capability to perf_skottietrace.py 2019-03-25 kjlubick@google.com Generate GrGLInterface and GrGlAssembleInterface* from table 2019-03-25 brianosman@google.com Reland "Simplify two more clients of proxy provider (mipped vs. non-mipped)" 2019-03-25 brianosman@google.com SkBaseDevice::drawAtlas doesn't antialias either, so remove fallback 2019-03-25 rmistry@google.com [Recipe Modules] Make DefaultFlavor.step signature match the other step funcs 2019-03-25 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader 62f62a6efa2c..e24bc66dcda3 (1 commits) 2019-03-25 rmistry@google.com [Recipe Modules] remove_file_on_device was in all flavors except DefaultFlavor The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (stani@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index f4b1e81997c52..dafee40bce8ff 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'cd54466473fe5fdc462c6dac6def8b327ad58263', + 'skia_revision': '42197c0bc68e4c109fad2f3665bf05ac0556ab0e', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 7571c83ddd371..1501dbc822359 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 9c4e8e1b5530f5f42dced2baba4f1461 +Signature: f368701a4592543393e79f177469fc95 UNUSED LICENSES: @@ -2267,6 +2267,7 @@ FILE: ../../../third_party/skia/infra/bots/recipes/perf_pathkit.expected/Perf-De FILE: ../../../third_party/skia/infra/bots/recipes/perf_pathkit.expected/Perf-Debian9-EMCC-GCE-CPU-AVX2-wasm-Release-All-PathKit.json FILE: ../../../third_party/skia/infra/bots/recipes/perf_pathkit.expected/pathkit_trybot.json FILE: ../../../third_party/skia/infra/bots/recipes/perf_skottietrace.expected/Perf-Android-Clang-AndroidOne-GPU-Mali400MP2-arm-Release-All-Android_SkottieTracing.json +FILE: ../../../third_party/skia/infra/bots/recipes/perf_skottietrace.expected/Perf-Debian9-Clang-GCE-CPU-AVX2-x86_64-Release-All-SkottieTracing.json FILE: ../../../third_party/skia/infra/bots/recipes/perf_skottietrace.expected/skottietracing_parse_trace_error.json FILE: ../../../third_party/skia/infra/bots/recipes/perf_skottietrace.expected/skottietracing_trybot.json FILE: ../../../third_party/skia/infra/bots/recipes/recreate_skps.expected/Housekeeper-Nightly-RecreateSKPs_Canary.json @@ -2967,6 +2968,7 @@ FILE: ../../../third_party/skia/src/gpu/gl/GrGLGpu.h FILE: ../../../third_party/skia/src/gpu/gl/GrGLGpuProgramCache.cpp FILE: ../../../third_party/skia/src/gpu/gl/GrGLIRect.h FILE: ../../../third_party/skia/src/gpu/gl/GrGLInterface.cpp +FILE: ../../../third_party/skia/src/gpu/gl/GrGLInterfaceAutogen.cpp FILE: ../../../third_party/skia/src/gpu/gl/GrGLMakeNativeInterface_none.cpp FILE: ../../../third_party/skia/src/gpu/gl/GrGLProgram.cpp FILE: ../../../third_party/skia/src/gpu/gl/GrGLProgram.h @@ -5868,6 +5870,8 @@ FILE: ../../../third_party/skia/modules/particles/src/SkParticleDrawable.cpp FILE: ../../../third_party/skia/modules/particles/src/SkParticleEffect.cpp FILE: ../../../third_party/skia/modules/particles/src/SkReflected.cpp FILE: ../../../third_party/skia/src/core/SkColorFilterPriv.h +FILE: ../../../third_party/skia/src/gpu/gl/GrGLAssembleGLESInterfaceAutogen.cpp +FILE: ../../../third_party/skia/src/gpu/gl/GrGLAssembleGLInterfaceAutogen.cpp FILE: ../../../third_party/skia/src/gpu/gl/GrGLAssembleHelpers.cpp FILE: ../../../third_party/skia/src/gpu/gl/GrGLAssembleInterface_gl.cpp FILE: ../../../third_party/skia/src/gpu/gl/GrGLAssembleInterface_gles.cpp From d6ead18f436fe439063190093ac2184559f30bb3 Mon Sep 17 00:00:00 2001 From: Chinmay Garde Date: Mon, 25 Mar 2019 11:58:38 -0700 Subject: [PATCH 1488/1537] Make it easy to write embedder unit tests by creating a fixture and config builder. (#8276) All embedder unit-tests have to setup the Flutter project arguments from scratch before launching the engine. The boilerplate and having to deal with the low level C API during each engine launch is a hinderance to writing tests. This patch introduces an EmbedderTest fixture that sets up all the embedder side snapshots before allowing the unit test to create a FlutterConfigBuilder` that the test can use to incrementally build and edit the Flutter project configuration. From the given state state of a configuration, multiple engines can be launched with their lifecylces managed by appropriate RAII wrappers. This allows the a fully configured Flutter engine to be launched using 4 lines of code in a fixture. ``` EmbedderConfigBuilder builder; builder.SetSoftwareRendererConfig(); builder.SetAssetsPathFromFixture(this); builder.SetSnapshotsFromFixture(this); auto engine = builder.LaunchEngine(); ``` --- shell/platform/embedder/BUILD.gn | 4 + .../embedder/tests/embedder_config_builder.cc | 67 +++++++++++++++ .../embedder/tests/embedder_config_builder.h | 55 ++++++++++++ .../platform/embedder/tests/embedder_test.cc | 86 +++++++++++++++++++ shell/platform/embedder/tests/embedder_test.h | 54 ++++++++++++ .../embedder/tests/embedder_unittests.cc | 53 +++++++++--- 6 files changed, 308 insertions(+), 11 deletions(-) create mode 100644 shell/platform/embedder/tests/embedder_config_builder.cc create mode 100644 shell/platform/embedder/tests/embedder_config_builder.h create mode 100644 shell/platform/embedder/tests/embedder_test.cc create mode 100644 shell/platform/embedder/tests/embedder_test.h diff --git a/shell/platform/embedder/BUILD.gn b/shell/platform/embedder/BUILD.gn index 94aa7affabae8..1b7a81b844551 100644 --- a/shell/platform/embedder/BUILD.gn +++ b/shell/platform/embedder/BUILD.gn @@ -68,6 +68,10 @@ executable("embedder_unittests") { include_dirs = [ "." ] sources = [ + "tests/embedder_config_builder.cc", + "tests/embedder_config_builder.h", + "tests/embedder_test.cc", + "tests/embedder_test.h", "tests/embedder_unittests.cc", ] diff --git a/shell/platform/embedder/tests/embedder_config_builder.cc b/shell/platform/embedder/tests/embedder_config_builder.cc new file mode 100644 index 0000000000000..108535ea8b619 --- /dev/null +++ b/shell/platform/embedder/tests/embedder_config_builder.cc @@ -0,0 +1,67 @@ +// 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/platform/embedder/tests/embedder_config_builder.h" + +namespace shell { +namespace testing { + +EmbedderConfigBuilder::EmbedderConfigBuilder() { + project_args_.struct_size = sizeof(project_args_); + + software_renderer_config_.struct_size = sizeof(FlutterSoftwareRendererConfig); + software_renderer_config_.surface_present_callback = + [](void*, const void*, size_t, size_t) { return true; }; +} + +EmbedderConfigBuilder::~EmbedderConfigBuilder() = default; + +void EmbedderConfigBuilder::SetSoftwareRendererConfig() { + renderer_config_.type = FlutterRendererType::kSoftware; + renderer_config_.software = software_renderer_config_; +} + +void EmbedderConfigBuilder::SetAssetsPathFromFixture( + const EmbedderTest* fixture) { + assets_path_ = fixture->GetAssetsPath(); + project_args_.assets_path = assets_path_.c_str(); +} + +void EmbedderConfigBuilder::SetSnapshotsFromFixture( + const EmbedderTest* fixture) { + if (auto mapping = fixture->GetVMSnapshotData()) { + project_args_.vm_snapshot_data = mapping->GetMapping(); + project_args_.vm_snapshot_data_size = mapping->GetSize(); + } + + if (auto mapping = fixture->GetVMSnapshotInstructions()) { + project_args_.vm_snapshot_instructions = mapping->GetMapping(); + project_args_.vm_snapshot_instructions_size = mapping->GetSize(); + } + + if (auto mapping = fixture->GetIsolateSnapshotData()) { + project_args_.isolate_snapshot_data = mapping->GetMapping(); + project_args_.isolate_snapshot_data_size = mapping->GetSize(); + } + + if (auto mapping = fixture->GetIsolateSnapshotInstructions()) { + project_args_.isolate_snapshot_instructions = mapping->GetMapping(); + project_args_.isolate_snapshot_instructions_size = mapping->GetSize(); + } +} + +UniqueEngine EmbedderConfigBuilder::LaunchEngine(void* user_data) const { + FlutterEngine engine = nullptr; + auto result = FlutterEngineRun(FLUTTER_ENGINE_VERSION, &renderer_config_, + &project_args_, user_data, &engine); + + if (result != kSuccess) { + return {}; + } + + return UniqueEngine{engine}; +} + +} // namespace testing +} // namespace shell diff --git a/shell/platform/embedder/tests/embedder_config_builder.h b/shell/platform/embedder/tests/embedder_config_builder.h new file mode 100644 index 0000000000000..a474f3e3bc81c --- /dev/null +++ b/shell/platform/embedder/tests/embedder_config_builder.h @@ -0,0 +1,55 @@ +// 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. + +#ifndef FLUTTER_SHELL_PLATFORM_EMBEDDER_TESTS_EMBEDDER_CONFIG_BUILDER_H_ +#define FLUTTER_SHELL_PLATFORM_EMBEDDER_TESTS_EMBEDDER_CONFIG_BUILDER_H_ + +#include "flutter/fml/macros.h" +#include "flutter/fml/unique_object.h" +#include "flutter/shell/platform/embedder/embedder.h" +#include "flutter/shell/platform/embedder/tests/embedder_test.h" + +namespace shell { +namespace testing { + +struct UniqueEngineTraits { + static FlutterEngine InvalidValue() { return nullptr; } + + static bool IsValid(const FlutterEngine& value) { return value != nullptr; } + + static void Free(FlutterEngine engine) { + auto result = FlutterEngineShutdown(engine); + FML_CHECK(result == kSuccess); + } +}; + +using UniqueEngine = fml::UniqueObject; + +class EmbedderConfigBuilder { + public: + EmbedderConfigBuilder(); + + ~EmbedderConfigBuilder(); + + void SetSoftwareRendererConfig(); + + void SetAssetsPathFromFixture(const EmbedderTest* fixture); + + void SetSnapshotsFromFixture(const EmbedderTest* fixture); + + UniqueEngine LaunchEngine(void* user_data = nullptr) const; + + private: + FlutterProjectArgs project_args_ = {}; + FlutterRendererConfig renderer_config_ = {}; + FlutterSoftwareRendererConfig software_renderer_config_ = {}; + std::string assets_path_; + + FML_DISALLOW_COPY_AND_ASSIGN(EmbedderConfigBuilder); +}; + +} // namespace testing +} // namespace shell + +#endif // FLUTTER_SHELL_PLATFORM_EMBEDDER_TESTS_EMBEDDER_CONFIG_BUILDER_H_ diff --git a/shell/platform/embedder/tests/embedder_test.cc b/shell/platform/embedder/tests/embedder_test.cc new file mode 100644 index 0000000000000..044aacc4dfc70 --- /dev/null +++ b/shell/platform/embedder/tests/embedder_test.cc @@ -0,0 +1,86 @@ +// 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/platform/embedder/tests/embedder_test.h" + +namespace shell { +namespace testing { + +static std::unique_ptr GetMapping(const fml::UniqueFD& directory, + const char* path, + bool executable) { + fml::UniqueFD file = fml::OpenFile(directory, path, false /* create */, + fml::FilePermission::kRead); + if (!file.is_valid()) { + return nullptr; + } + + using Prot = fml::FileMapping::Protection; + std::unique_ptr mapping; + if (executable) { + mapping = std::make_unique( + file, std::initializer_list{Prot::kRead, Prot::kExecute}); + } else { + mapping = std::make_unique( + file, std::initializer_list{Prot::kRead}); + } + + if (mapping->GetSize() == 0 || mapping->GetMapping() == nullptr) { + return nullptr; + } + + return mapping; +} + +EmbedderTest::EmbedderTest() = default; + +EmbedderTest::~EmbedderTest() = default; + +std::string EmbedderTest::GetFixturesDirectory() const { + return ::testing::GetFixturesPath(); +} + +std::string EmbedderTest::GetAssetsPath() const { + return GetFixturesDirectory(); +} + +const fml::Mapping* EmbedderTest::GetVMSnapshotData() const { + return vm_snapshot_data_.get(); +} + +const fml::Mapping* EmbedderTest::GetVMSnapshotInstructions() const { + return vm_snapshot_instructions_.get(); +} + +const fml::Mapping* EmbedderTest::GetIsolateSnapshotData() const { + return isolate_snapshot_data_.get(); +} + +const fml::Mapping* EmbedderTest::GetIsolateSnapshotInstructions() const { + return isolate_snapshot_instructions_.get(); +} + +// |testing::Test| +void EmbedderTest::SetUp() { + auto fixures_dir = fml::OpenDirectory(GetFixturesDirectory().c_str(), false, + fml::FilePermission::kRead); + vm_snapshot_data_ = GetMapping(fixures_dir, "vm_snapshot_data", false); + vm_snapshot_instructions_ = + GetMapping(fixures_dir, "vm_snapshot_instr", true); + isolate_snapshot_data_ = + GetMapping(fixures_dir, "isolate_snapshot_data", false); + isolate_snapshot_instructions_ = + GetMapping(fixures_dir, "isolate_snapshot_instr", true); +} + +// |testing::Test| +void EmbedderTest::TearDown() { + vm_snapshot_data_.reset(); + vm_snapshot_instructions_.reset(); + isolate_snapshot_data_.reset(); + isolate_snapshot_instructions_.reset(); +} + +} // namespace testing +} // namespace shell diff --git a/shell/platform/embedder/tests/embedder_test.h b/shell/platform/embedder/tests/embedder_test.h new file mode 100644 index 0000000000000..f861e3b7267fc --- /dev/null +++ b/shell/platform/embedder/tests/embedder_test.h @@ -0,0 +1,54 @@ +// 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. + +#ifndef FLUTTER_SHELL_PLATFORM_EMBEDDER_TESTS_EMBEDDER_TEST_H_ +#define FLUTTER_SHELL_PLATFORM_EMBEDDER_TESTS_EMBEDDER_TEST_H_ + +#include + +#include "flutter/fml/file.h" +#include "flutter/fml/macros.h" +#include "flutter/fml/mapping.h" +#include "flutter/testing/testing.h" + +namespace shell { +namespace testing { + +class EmbedderTest : public ::testing::Test { + public: + EmbedderTest(); + + ~EmbedderTest() override; + + std::string GetFixturesDirectory() const; + + std::string GetAssetsPath() const; + + const fml::Mapping* GetVMSnapshotData() const; + + const fml::Mapping* GetVMSnapshotInstructions() const; + + const fml::Mapping* GetIsolateSnapshotData() const; + + const fml::Mapping* GetIsolateSnapshotInstructions() const; + + private: + std::unique_ptr vm_snapshot_data_; + std::unique_ptr vm_snapshot_instructions_; + std::unique_ptr isolate_snapshot_data_; + std::unique_ptr isolate_snapshot_instructions_; + + // |testing::Test| + void SetUp() override; + + // |testing::Test| + void TearDown() override; + + FML_DISALLOW_COPY_AND_ASSIGN(EmbedderTest); +}; + +} // namespace testing +} // namespace shell + +#endif // FLUTTER_SHELL_PLATFORM_EMBEDDER_TESTS_EMBEDDER_TEST_H_ diff --git a/shell/platform/embedder/tests/embedder_unittests.cc b/shell/platform/embedder/tests/embedder_unittests.cc index f1345227c3aa8..7415183eb6792 100644 --- a/shell/platform/embedder/tests/embedder_unittests.cc +++ b/shell/platform/embedder/tests/embedder_unittests.cc @@ -6,16 +6,20 @@ #include "embedder.h" #include "flutter/fml/file.h" #include "flutter/fml/mapping.h" +#include "flutter/shell/platform/embedder/tests/embedder_config_builder.h" +#include "flutter/shell/platform/embedder/tests/embedder_test.h" #include "flutter/testing/testing.h" -namespace { +namespace shell { +namespace testing { -void MapAOTAsset(std::vector>& aot_mappings, - const fml::UniqueFD& fixtures_dir, - const char* path, - bool executable, - const uint8_t** data, - size_t* size) { +static void MapAOTAsset( + std::vector>& aot_mappings, + const fml::UniqueFD& fixtures_dir, + const char* path, + bool executable, + const uint8_t** data, + size_t* size) { fml::UniqueFD file = fml::OpenFile(fixtures_dir, path, false, fml::FilePermission::kRead); std::unique_ptr mapping; @@ -34,8 +38,6 @@ void MapAOTAsset(std::vector>& aot_mappings, aot_mappings.emplace_back(std::move(mapping)); } -} // anonymous namespace - TEST(EmbedderTest, MustNotRunWithInvalidArgs) { FlutterEngine engine = nullptr; FlutterRendererConfig config = {}; @@ -58,14 +60,14 @@ TEST(EmbedderTest, CanLaunchAndShutdownWithValidProjectArgs) { FlutterProjectArgs args = {}; args.struct_size = sizeof(FlutterProjectArgs); - args.assets_path = testing::GetFixturesPath(); + args.assets_path = ::testing::GetFixturesPath(); args.root_isolate_create_callback = [](void* data) { std::string str_data = reinterpret_cast(data); ASSERT_EQ(str_data, "Data"); }; fml::UniqueFD fixtures_dir = fml::OpenDirectory( - testing::GetFixturesPath(), false, fml::FilePermission::kRead); + ::testing::GetFixturesPath(), false, fml::FilePermission::kRead); std::vector> aot_mappings; if (fml::FileExists(fixtures_dir, "vm_snapshot_data")) { MapAOTAsset(aot_mappings, fixtures_dir, "vm_snapshot_data", false, @@ -90,3 +92,32 @@ TEST(EmbedderTest, CanLaunchAndShutdownWithValidProjectArgs) { result = FlutterEngineShutdown(engine); ASSERT_EQ(result, FlutterEngineResult::kSuccess); } + +using EmbedderFixture = testing::EmbedderTest; + +TEST_F(EmbedderFixture, CanLaunchAndShutdownWithFixture) { + EmbedderConfigBuilder builder; + + builder.SetSoftwareRendererConfig(); + builder.SetAssetsPathFromFixture(this); + builder.SetSnapshotsFromFixture(this); + + auto engine = builder.LaunchEngine(); + ASSERT_TRUE(engine.is_valid()); +} + +TEST_F(EmbedderFixture, CanLaunchAndShutdownWithFixtureMultipleTimes) { + EmbedderConfigBuilder builder; + + builder.SetSoftwareRendererConfig(); + builder.SetAssetsPathFromFixture(this); + builder.SetSnapshotsFromFixture(this); + for (size_t i = 0; i < 100; ++i) { + auto engine = builder.LaunchEngine(); + ASSERT_TRUE(engine.is_valid()); + FML_LOG(INFO) << "Engine launch count: " << i + 1; + } +} + +} // namespace testing +} // namespace shell \ No newline at end of file From dd6be2fd83710de8392fb554927a5d495684a13e Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Mon, 25 Mar 2019 15:53:55 -0400 Subject: [PATCH 1489/1537] Roll src/third_party/skia 42197c0bc68e..15dc59e65cfa (19 commits) (#8294) https://skia.googlesource.com/skia.git/%2Blog/42197c0bc68e..15dc59e65cfa git log 42197c0bc68e4c109fad2f3665bf05ac0556ab0e..15dc59e65cfa9b06f1505d6e44e6dbb0e52ecf6a --date=short --no-merges --format=%ad %ae %s 2019-03-25 brianosman@google.com Stop supporting VC8 (Visual Studio 2005) in GrConfig 2019-03-22 ericrk@chromium.org Ensure we don't skip image memory barriers when queue change needed 2019-03-25 mtklein@google.com spin off :trace target 2019-03-25 brianosman@google.com Fix doc comment error for allocN32Pixels 2019-03-22 scroggo@google.com Only dereference imgcfg if non-null 2019-03-25 kjlubick@google.com Revert "Generate GrGLInterface and GrGlAssembleInterface* from table" 2019-03-25 brianosman@google.com Remove bookmaker sources and data files 2019-03-25 mtklein@google.com clean up stray libpng deps 2019-03-25 egdaniel@google.com Add option to disable vsync on viewer unix. 2019-03-25 brianosman@google.com Clean up texture domain effect GM, wrt proxy creation 2019-03-25 brianosman@google.com Stop flooding perf with uninteresting GPU stats 2019-03-25 egdaniel@google.com Fix up readPixels, writePixels, and copies when dealing with ycbcr textures in vulkan. 2019-03-25 mtklein@google.com de-common the rest of the flags 2019-03-25 kjlubick@google.com Delete in favor of autogenerated file 2019-03-25 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/angle2 eae464dd3092..9078c6a7199b (1 commits) 2019-03-25 brianosman@google.com Fix GM that was trying to create mip-mapped proxies without checking caps 2019-03-25 bsalomon@google.com Avoid special shader for opaque alpha when drawing simple rectangles. 2019-03-25 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader e24bc66dcda3..221459f4ecc9 (1 commits) 2019-03-25 kjlubick@google.com Delete old assembleInterface code The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (stani@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 42 +------------------------------- 2 files changed, 2 insertions(+), 42 deletions(-) diff --git a/DEPS b/DEPS index dafee40bce8ff..5cfda524794a5 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '42197c0bc68e4c109fad2f3665bf05ac0556ab0e', + 'skia_revision': '15dc59e65cfa9b06f1505d6e44e6dbb0e52ecf6a', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 1501dbc822359..9c875da408749 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: f368701a4592543393e79f177469fc95 +Signature: 3d12a6d1a684e5f3b41c4b66c54bc5e7 UNUSED LICENSES: @@ -2025,43 +2025,6 @@ FILE: ../../../third_party/skia/docker/skia-release/Dockerfile FILE: ../../../third_party/skia/docker/skia-wasm-release/Dockerfile FILE: ../../../third_party/skia/docker/skia-with-swift-shader-base/Dockerfile FILE: ../../../third_party/skia/docker/skia-with-swift-shader-base/build-with-swift-shader-and-run -FILE: ../../../third_party/skia/docs/SkAutoCanvasRestore_Reference.bmh -FILE: ../../../third_party/skia/docs/SkBitmap_Reference.bmh -FILE: ../../../third_party/skia/docs/SkBlendMode_Overview.bmh -FILE: ../../../third_party/skia/docs/SkBlendMode_Reference.bmh -FILE: ../../../third_party/skia/docs/SkCanvas_Reference.bmh -FILE: ../../../third_party/skia/docs/SkColor4f_Reference.bmh -FILE: ../../../third_party/skia/docs/SkColor_Reference.bmh -FILE: ../../../third_party/skia/docs/SkDynamicMemoryWStream_Reference.bmh -FILE: ../../../third_party/skia/docs/SkFILEStream_Reference.bmh -FILE: ../../../third_party/skia/docs/SkFILEWStream_Reference.bmh -FILE: ../../../third_party/skia/docs/SkFont_Reference.bmh -FILE: ../../../third_party/skia/docs/SkIPoint_Reference.bmh -FILE: ../../../third_party/skia/docs/SkIRect_Reference.bmh -FILE: ../../../third_party/skia/docs/SkImageInfo_Reference.bmh -FILE: ../../../third_party/skia/docs/SkImage_Reference.bmh -FILE: ../../../third_party/skia/docs/SkMatrix_Reference.bmh -FILE: ../../../third_party/skia/docs/SkMemoryStream_Reference.bmh -FILE: ../../../third_party/skia/docs/SkPaint_Reference.bmh -FILE: ../../../third_party/skia/docs/SkPath_Overview.bmh -FILE: ../../../third_party/skia/docs/SkPath_Reference.bmh -FILE: ../../../third_party/skia/docs/SkPicture_Reference.bmh -FILE: ../../../third_party/skia/docs/SkPixmap_Reference.bmh -FILE: ../../../third_party/skia/docs/SkPoint_Reference.bmh -FILE: ../../../third_party/skia/docs/SkRRect_Reference.bmh -FILE: ../../../third_party/skia/docs/SkRect_Reference.bmh -FILE: ../../../third_party/skia/docs/SkRegion_Reference.bmh -FILE: ../../../third_party/skia/docs/SkStream_Reference.bmh -FILE: ../../../third_party/skia/docs/SkSurface_Reference.bmh -FILE: ../../../third_party/skia/docs/SkTextBlobBuilder_Reference.bmh -FILE: ../../../third_party/skia/docs/SkTextBlob_Reference.bmh -FILE: ../../../third_party/skia/docs/SkWStream_Reference.bmh -FILE: ../../../third_party/skia/docs/illustrations.bmh -FILE: ../../../third_party/skia/docs/markup.bmh -FILE: ../../../third_party/skia/docs/overview.bmh -FILE: ../../../third_party/skia/docs/status.json -FILE: ../../../third_party/skia/docs/undocumented.bmh -FILE: ../../../third_party/skia/docs/usingBookmaker.bmh FILE: ../../../third_party/skia/experimental/docs/animationCommon.js FILE: ../../../third_party/skia/experimental/docs/backend.js FILE: ../../../third_party/skia/experimental/docs/canvasBackend.js @@ -2968,7 +2931,6 @@ FILE: ../../../third_party/skia/src/gpu/gl/GrGLGpu.h FILE: ../../../third_party/skia/src/gpu/gl/GrGLGpuProgramCache.cpp FILE: ../../../third_party/skia/src/gpu/gl/GrGLIRect.h FILE: ../../../third_party/skia/src/gpu/gl/GrGLInterface.cpp -FILE: ../../../third_party/skia/src/gpu/gl/GrGLInterfaceAutogen.cpp FILE: ../../../third_party/skia/src/gpu/gl/GrGLMakeNativeInterface_none.cpp FILE: ../../../third_party/skia/src/gpu/gl/GrGLProgram.cpp FILE: ../../../third_party/skia/src/gpu/gl/GrGLProgram.h @@ -5870,8 +5832,6 @@ FILE: ../../../third_party/skia/modules/particles/src/SkParticleDrawable.cpp FILE: ../../../third_party/skia/modules/particles/src/SkParticleEffect.cpp FILE: ../../../third_party/skia/modules/particles/src/SkReflected.cpp FILE: ../../../third_party/skia/src/core/SkColorFilterPriv.h -FILE: ../../../third_party/skia/src/gpu/gl/GrGLAssembleGLESInterfaceAutogen.cpp -FILE: ../../../third_party/skia/src/gpu/gl/GrGLAssembleGLInterfaceAutogen.cpp FILE: ../../../third_party/skia/src/gpu/gl/GrGLAssembleHelpers.cpp FILE: ../../../third_party/skia/src/gpu/gl/GrGLAssembleInterface_gl.cpp FILE: ../../../third_party/skia/src/gpu/gl/GrGLAssembleInterface_gles.cpp From 345ae7d3732511572a7b93b30459128445366754 Mon Sep 17 00:00:00 2001 From: Amir Hardon Date: Mon, 25 Mar 2019 14:26:49 -0700 Subject: [PATCH 1490/1537] Delegate a11y events and action to/from embedded Android platform views. (#8250) Delegate a11y events and action to/from embedded Android platfrom views. This handles delegation of: * AccessibilityNodeProvider#performAction * ViewGroup#requestSendAccessibilityEvent * View#onHoverEvent Additionally updates the currently input accessibility focused node state that is tracked by the a11y bridge when an embedded view's node is focused. --- ci/licenses_golden/licenses_flutter | 1 + shell/platform/android/BUILD.gn | 1 + .../platform/AccessibilityEventsDelegate.java | 49 ++++ .../platform/PlatformViewsController.java | 8 +- .../platform/SingleViewPresentation.java | 44 +++- .../platform/VirtualDisplayController.java | 12 +- .../io/flutter/view/AccessibilityBridge.java | 79 ++++++- .../view/AccessibilityViewEmbedder.java | 220 ++++++++++++++++-- 8 files changed, 376 insertions(+), 38 deletions(-) create mode 100644 shell/platform/android/io/flutter/plugin/platform/AccessibilityEventsDelegate.java diff --git a/ci/licenses_golden/licenses_flutter b/ci/licenses_golden/licenses_flutter index 567ad251512b3..0a30b3ca65123 100644 --- a/ci/licenses_golden/licenses_flutter +++ b/ci/licenses_golden/licenses_flutter @@ -511,6 +511,7 @@ FILE: ../../../flutter/shell/platform/android/io/flutter/plugin/common/StandardM FILE: ../../../flutter/shell/platform/android/io/flutter/plugin/common/StringCodec.java FILE: ../../../flutter/shell/platform/android/io/flutter/plugin/editing/InputConnectionAdaptor.java FILE: ../../../flutter/shell/platform/android/io/flutter/plugin/editing/TextInputPlugin.java +FILE: ../../../flutter/shell/platform/android/io/flutter/plugin/platform/AccessibilityEventsDelegate.java FILE: ../../../flutter/shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java FILE: ../../../flutter/shell/platform/android/io/flutter/plugin/platform/PlatformView.java FILE: ../../../flutter/shell/platform/android/io/flutter/plugin/platform/PlatformViewFactory.java diff --git a/shell/platform/android/BUILD.gn b/shell/platform/android/BUILD.gn index 4244e7946bb85..090fdb28ff694 100644 --- a/shell/platform/android/BUILD.gn +++ b/shell/platform/android/BUILD.gn @@ -153,6 +153,7 @@ java_library("flutter_shell_java") { "io/flutter/plugin/common/StringCodec.java", "io/flutter/plugin/editing/InputConnectionAdaptor.java", "io/flutter/plugin/editing/TextInputPlugin.java", + "io/flutter/plugin/platform/AccessibilityEventsDelegate.java", "io/flutter/plugin/platform/PlatformPlugin.java", "io/flutter/plugin/platform/PlatformView.java", "io/flutter/plugin/platform/PlatformViewFactory.java", diff --git a/shell/platform/android/io/flutter/plugin/platform/AccessibilityEventsDelegate.java b/shell/platform/android/io/flutter/plugin/platform/AccessibilityEventsDelegate.java new file mode 100644 index 0000000000000..1a3022cfc9c42 --- /dev/null +++ b/shell/platform/android/io/flutter/plugin/platform/AccessibilityEventsDelegate.java @@ -0,0 +1,49 @@ +// 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. + +package io.flutter.plugin.platform; + +import android.support.annotation.NonNull; +import android.support.annotation.Nullable; +import android.view.View; +import android.view.accessibility.AccessibilityEvent; +import io.flutter.view.AccessibilityBridge; + +/** + * Delegates accessibility events to the currently attached accessibility bridge if one is attached. + */ +class AccessibilityEventsDelegate { + private AccessibilityBridge accessibilityBridge; + + /** + * Delegates handling of {@link android.view.ViewParent#requestSendAccessibilityEvent} to the accessibility bridge. + * + * This is a no-op if there is no accessibility delegate set. + * + * This is used by embedded platform views to propagate accessibility events from their view hierarchy to the + * accessibility bridge. + * + * As the embedded view doesn't have to be the only View in the embedded hierarchy (it can have child views) and the + * event might have been originated from any view in this hierarchy, this method gets both a reference to the + * embedded platform view, and a reference to the view from its hierarchy that sent the event. + * + * @param embeddedView the embedded platform view for which the event is delegated + * @param eventOrigin the view in the embedded view's hierarchy that sent the event. + * @return True if the event was sent. + */ + public boolean requestSendAccessibilityEvent(@NonNull View embeddedView, @NonNull View eventOrigin, @NonNull AccessibilityEvent event) { + if (accessibilityBridge == null) { + return false; + } + return accessibilityBridge.externalViewRequestSendAccessibilityEvent(embeddedView, eventOrigin, event); + } + + /* + * This setter should only be used directly in PlatformViewsController when attached/detached to an accessibility + * bridge. + */ + void setAccessibilityBridge(@Nullable AccessibilityBridge accessibilityBridge) { + this.accessibilityBridge = accessibilityBridge; + } +} diff --git a/shell/platform/android/io/flutter/plugin/platform/PlatformViewsController.java b/shell/platform/android/io/flutter/plugin/platform/PlatformViewsController.java index f19fabd317e44..5470e03a9f2da 100644 --- a/shell/platform/android/io/flutter/plugin/platform/PlatformViewsController.java +++ b/shell/platform/android/io/flutter/plugin/platform/PlatformViewsController.java @@ -52,13 +52,14 @@ public class PlatformViewsController implements MethodChannel.MethodCallHandler, private BinaryMessenger mMessenger; // The accessibility bridge to which accessibility events form the platform views will be dispatched. - private AccessibilityBridge accessibilityBridge; + private final AccessibilityEventsDelegate mAccessibilityEventsDelegate; private final HashMap vdControllers; public PlatformViewsController() { mRegistry = new PlatformViewRegistryImpl(); vdControllers = new HashMap<>(); + mAccessibilityEventsDelegate = new AccessibilityEventsDelegate(); } /** @@ -100,12 +101,12 @@ public void detach() { @Override public void attachAccessibilityBridge(AccessibilityBridge accessibilityBridge) { - this.accessibilityBridge = accessibilityBridge; + mAccessibilityEventsDelegate.setAccessibilityBridge(accessibilityBridge); } @Override public void detachAccessibiltyBridge() { - this.accessibilityBridge = null; + mAccessibilityEventsDelegate.setAccessibilityBridge(null); } public PlatformViewRegistry getRegistry() { @@ -201,6 +202,7 @@ private void createPlatformView(MethodCall call, MethodChannel.Result result) { TextureRegistry.SurfaceTextureEntry textureEntry = mTextureRegistry.createSurfaceTexture(); VirtualDisplayController vdController = VirtualDisplayController.create( mContext, + mAccessibilityEventsDelegate, viewFactory, textureEntry, toPhysicalPixels(logicalWidth), diff --git a/shell/platform/android/io/flutter/plugin/platform/SingleViewPresentation.java b/shell/platform/android/io/flutter/plugin/platform/SingleViewPresentation.java index 24675bbbf8a28..a0cbde42b5494 100644 --- a/shell/platform/android/io/flutter/plugin/platform/SingleViewPresentation.java +++ b/shell/platform/android/io/flutter/plugin/platform/SingleViewPresentation.java @@ -13,6 +13,7 @@ import android.os.Bundle; import android.util.Log; import android.view.*; +import android.view.accessibility.AccessibilityEvent; import android.widget.FrameLayout; import java.lang.reflect.*; @@ -57,6 +58,9 @@ static class PresentationState { private final PlatformViewFactory mViewFactory; + // A reference to the current accessibility bridge to which accessibility events will be delegated. + private final AccessibilityEventsDelegate mAccessibilityEventsDelegate; + // This is the view id assigned by the Flutter framework to the embedded view, we keep it here // so when we create the platform view we can tell it its view id. private int mViewId; @@ -67,7 +71,7 @@ static class PresentationState { // The root view for the presentation, it has 2 childs: mContainer which contains the embedded view, and // mFakeWindowRootView which contains views that were added directly to the presentation's window manager. - private FrameLayout mRootView; + private AccessibilityDelegatingFrameLayout mRootView; // Contains the embedded platform view (mView.getView()) when it is attached to the presentation. private FrameLayout mContainer; @@ -82,10 +86,13 @@ public SingleViewPresentation( Context outerContext, Display display, PlatformViewFactory viewFactory, + AccessibilityEventsDelegate accessibilityEventsDelegate, int viewId, - Object createParams) { + Object createParams + ) { super(outerContext, display); mViewFactory = viewFactory; + mAccessibilityEventsDelegate = accessibilityEventsDelegate; mViewId = viewId; mCreateParams = createParams; mState = new PresentationState(); @@ -102,8 +109,14 @@ public SingleViewPresentation( *

    The display's density must match the density of the context used * when the view was created. */ - public SingleViewPresentation(Context outerContext, Display display, PresentationState state) { + public SingleViewPresentation( + Context outerContext, + Display display, + AccessibilityEventsDelegate accessibilityEventsDelegate, + PresentationState state + ) { super(outerContext, display); + mAccessibilityEventsDelegate = accessibilityEventsDelegate; mViewFactory = null; mState = state; getWindow().setFlags( @@ -130,8 +143,9 @@ protected void onCreate(Bundle savedInstanceState) { mState.mView = mViewFactory.create(context, mViewId, mCreateParams); } - mContainer.addView(mState.mView.getView()); - mRootView = new FrameLayout(getContext()); + View embeddedView = mState.mView.getView(); + mContainer.addView(embeddedView); + mRootView = new AccessibilityDelegatingFrameLayout(getContext(), mAccessibilityEventsDelegate, embeddedView); mRootView.addView(mContainer); mRootView.addView(mState.mFakeWindowRootView); setContentView(mRootView); @@ -320,4 +334,24 @@ private void updateViewLayout(Object[] args) { mFakeWindowRootView.updateViewLayout(view, layoutParams); } } + + private static class AccessibilityDelegatingFrameLayout extends FrameLayout { + private final AccessibilityEventsDelegate mAccessibilityEventsDelegate; + private final View mEmbeddedView; + + public AccessibilityDelegatingFrameLayout( + Context context, + AccessibilityEventsDelegate accessibilityEventsDelegate, + View ebeddedView + ) { + super(context); + mAccessibilityEventsDelegate = accessibilityEventsDelegate; + mEmbeddedView = ebeddedView; + } + + @Override + public boolean requestSendAccessibilityEvent(View child, AccessibilityEvent event) { + return mAccessibilityEventsDelegate.requestSendAccessibilityEvent(mEmbeddedView, child, event); + } + } } diff --git a/shell/platform/android/io/flutter/plugin/platform/VirtualDisplayController.java b/shell/platform/android/io/flutter/plugin/platform/VirtualDisplayController.java index 9985361762bcd..876e6be5cedc7 100644 --- a/shell/platform/android/io/flutter/plugin/platform/VirtualDisplayController.java +++ b/shell/platform/android/io/flutter/plugin/platform/VirtualDisplayController.java @@ -19,6 +19,7 @@ class VirtualDisplayController { public static VirtualDisplayController create( Context context, + AccessibilityEventsDelegate accessibilityEventsDelegate, PlatformViewFactory viewFactory, TextureRegistry.SurfaceTextureEntry textureEntry, int width, @@ -45,10 +46,11 @@ public static VirtualDisplayController create( } return new VirtualDisplayController( - context, virtualDisplay, viewFactory, surface, textureEntry, viewId, createParams); + context, accessibilityEventsDelegate, virtualDisplay, viewFactory, surface, textureEntry, viewId, createParams); } private final Context mContext; + private final AccessibilityEventsDelegate mAccessibilityEventsDelegate; private final int mDensityDpi; private final TextureRegistry.SurfaceTextureEntry mTextureEntry; private VirtualDisplay mVirtualDisplay; @@ -58,6 +60,7 @@ public static VirtualDisplayController create( private VirtualDisplayController( Context context, + AccessibilityEventsDelegate accessibilityEventsDelegate, VirtualDisplay virtualDisplay, PlatformViewFactory viewFactory, Surface surface, @@ -65,13 +68,14 @@ private VirtualDisplayController( int viewId, Object createParams ) { + mContext = context; + mAccessibilityEventsDelegate = accessibilityEventsDelegate; mTextureEntry = textureEntry; mSurface = surface; - mContext = context; mVirtualDisplay = virtualDisplay; mDensityDpi = context.getResources().getDisplayMetrics().densityDpi; mPresentation = new SingleViewPresentation( - context, mVirtualDisplay.getDisplay(), viewFactory, viewId, createParams); + context, mVirtualDisplay.getDisplay(), viewFactory, accessibilityEventsDelegate, viewId, createParams); mPresentation.show(); } @@ -121,7 +125,7 @@ public void run() { public void onViewDetachedFromWindow(View v) {} }); - mPresentation = new SingleViewPresentation(mContext, mVirtualDisplay.getDisplay(), presentationState); + mPresentation = new SingleViewPresentation(mContext, mVirtualDisplay.getDisplay(), mAccessibilityEventsDelegate, presentationState); mPresentation.show(); } diff --git a/shell/platform/android/io/flutter/view/AccessibilityBridge.java b/shell/platform/android/io/flutter/view/AccessibilityBridge.java index 7a798d3b37bd5..a589f54d4ca5d 100644 --- a/shell/platform/android/io/flutter/view/AccessibilityBridge.java +++ b/shell/platform/android/io/flutter/view/AccessibilityBridge.java @@ -5,9 +5,7 @@ package io.flutter.view; import android.annotation.TargetApi; -import android.app.Activity; import android.content.ContentResolver; -import android.content.Context; import android.database.ContentObserver; import android.graphics.Rect; import android.net.Uri; @@ -23,7 +21,6 @@ import android.view.MotionEvent; import android.view.View; import android.view.WindowInsets; -import android.view.WindowManager; import android.view.accessibility.AccessibilityEvent; import android.view.accessibility.AccessibilityManager; import android.view.accessibility.AccessibilityNodeInfo; @@ -158,9 +155,23 @@ public class AccessibilityBridge extends AccessibilityNodeProvider { // The {@code SemanticsNode} within Flutter that currently has the focus of Android's // accessibility system. + // + // This is null when a node embedded by the AccessibilityViewEmbedder has the focus. @Nullable private SemanticsNode accessibilityFocusedSemanticsNode; + // The virtual ID of the currently embedded node with accessibility focus. + // + // This is the ID of a node generated by the AccessibilityViewEmbedder if an embedded node is focused, + // null otherwise. + private Integer embeddedAccessibilityFocusedNodeId; + + // The virtual ID of the currently embedded node with input focus. + // + // This is the ID of a node generated by the AccessibilityViewEmbedder if an embedded node is focused, + // null otherwise. + private Integer embeddedInputFocusedNodeId; + // The accessibility features that should currently be active within Flutter, represented as // a bitmask whose values comes from {@link AccessibilityFeature}. private int accessibilityFeatureFlags = 0; @@ -762,6 +773,14 @@ public AccessibilityNodeInfo createAccessibilityNodeInfo(int virtualViewId) { */ @Override public boolean performAction(int virtualViewId, int accessibilityAction, @Nullable Bundle arguments) { + if (virtualViewId >= MIN_ENGINE_GENERATED_NODE_ID) { + // The node is in the engine generated range, and is handled by the accessibility view embedder. + boolean didPerform = accessibilityViewEmbedder.performAction(virtualViewId, accessibilityAction, arguments); + if (didPerform && accessibilityAction == AccessibilityNodeInfo.ACTION_CLEAR_ACCESSIBILITY_FOCUS) { + embeddedAccessibilityFocusedNodeId = null; + } + return didPerform; + } SemanticsNode semanticsNode = flutterSemanticsTree.get(virtualViewId); if (semanticsNode == null) { return false; @@ -841,6 +860,7 @@ public boolean performAction(int virtualViewId, int accessibilityAction, @Nullab AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUS_CLEARED ); accessibilityFocusedSemanticsNode = null; + embeddedAccessibilityFocusedNodeId = null; return true; } case AccessibilityNodeInfo.ACTION_ACCESSIBILITY_FOCUS: { @@ -1014,12 +1034,18 @@ public AccessibilityNodeInfo findFocus(int focus) { if (inputFocusedSemanticsNode != null) { return createAccessibilityNodeInfo(inputFocusedSemanticsNode.id); } + if (embeddedInputFocusedNodeId != null) { + return createAccessibilityNodeInfo(embeddedInputFocusedNodeId); + } } // Fall through to check FOCUS_ACCESSIBILITY case AccessibilityNodeInfo.FOCUS_ACCESSIBILITY: { if (accessibilityFocusedSemanticsNode != null) { return createAccessibilityNodeInfo(accessibilityFocusedSemanticsNode.id); } + if (embeddedAccessibilityFocusedNodeId != null) { + return createAccessibilityNodeInfo(embeddedAccessibilityFocusedNodeId); + } } } return null; @@ -1090,6 +1116,11 @@ public boolean onAccessibilityHoverEvent(MotionEvent event) { return false; } + SemanticsNode semanticsNodeUnderCursor = getRootSemanticsNode().hitTest(new float[] {event.getX(), event.getY(), 0, 1}); + if (semanticsNodeUnderCursor.platformViewId != -1) { + return accessibilityViewEmbedder.onAccessibilityHoverEvent(semanticsNodeUnderCursor.id, event); + } + if (event.getAction() == MotionEvent.ACTION_HOVER_ENTER || event.getAction() == MotionEvent.ACTION_HOVER_MOVE) { handleTouchExploration(event.getX(), event.getY()); } else if (event.getAction() == MotionEvent.ACTION_HOVER_EXIT) { @@ -2061,4 +2092,46 @@ private String getValueLabelHint() { return sb.length() > 0 ? sb.toString() : null; } } + + /** + * Delegates handling of {@link android.view.ViewParent#requestSendAccessibilityEvent} to the accessibility bridge. + * + * This is used by embedded platform views to propagate accessibility events from their view hierarchy to the + * accessibility bridge. + * + * As the embedded view doesn't have to be the only View in the embedded hierarchy (it can have child views) and the + * event might have been originated from any view in this hierarchy, this method gets both a reference to the + * embedded platform view, and a reference to the view from its hierarchy that sent the event. + * + * @param embeddedView the embedded platform view for which the event is delegated + * @param eventOrigin the view in the embedded view's hierarchy that sent the event. + * @return True if the event was sent. + */ + public boolean externalViewRequestSendAccessibilityEvent(View embeddedView, View eventOrigin, AccessibilityEvent event) { + if (!accessibilityViewEmbedder.requestSendAccessibilityEvent(embeddedView, eventOrigin, event)){ + return false; + } + Integer virtualNodeId = accessibilityViewEmbedder.getRecordFlutterId(embeddedView, event); + if (virtualNodeId == null) { + return false; + } + switch(event.getEventType()) { + case AccessibilityEvent.TYPE_VIEW_HOVER_ENTER: + hoveredObject = null; + break; + case AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUSED: + embeddedAccessibilityFocusedNodeId = virtualNodeId; + accessibilityFocusedSemanticsNode = null; + break; + case AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUS_CLEARED: + embeddedInputFocusedNodeId = null; + embeddedAccessibilityFocusedNodeId = null; + break; + case AccessibilityEvent.TYPE_VIEW_FOCUSED: + embeddedInputFocusedNodeId = virtualNodeId; + inputFocusedSemanticsNode = null; + break; + } + return true; + } } diff --git a/shell/platform/android/io/flutter/view/AccessibilityViewEmbedder.java b/shell/platform/android/io/flutter/view/AccessibilityViewEmbedder.java index 1e5da786321bf..330ded624ddc0 100644 --- a/shell/platform/android/io/flutter/view/AccessibilityViewEmbedder.java +++ b/shell/platform/android/io/flutter/view/AccessibilityViewEmbedder.java @@ -6,11 +6,17 @@ import android.graphics.Rect; import android.os.Build; +import android.os.Bundle; +import android.support.annotation.NonNull; +import android.support.annotation.Nullable; import android.util.Log; import android.util.SparseArray; +import android.view.MotionEvent; import android.view.View; +import android.view.accessibility.AccessibilityEvent; import android.view.accessibility.AccessibilityNodeInfo; import android.view.accessibility.AccessibilityNodeProvider; +import android.view.accessibility.AccessibilityRecord; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; @@ -53,7 +59,7 @@ class AccessibilityViewEmbedder { private int nextFlutterId; - AccessibilityViewEmbedder(View rootAccessibiiltyView, int firstVirtualNodeId) { + AccessibilityViewEmbedder(@NonNull View rootAccessibiiltyView, int firstVirtualNodeId) { reflectionAccessors = new ReflectionAccessors(); flutterIdToOrigin = new SparseArray<>(); this.rootAccessibilityView = rootAccessibiiltyView; @@ -68,24 +74,23 @@ class AccessibilityViewEmbedder { * @param flutterId the virtual accessibility ID for the node in flutter accessibility tree * @param displayBounds the display bounds for the node in screen coordinates */ - public AccessibilityNodeInfo getRootNode(View embeddedView, int flutterId, Rect displayBounds) { - return null; - // TODO(amirh): uncomment this once a11y events and actions are wired. - // AccessibilityNodeInfo originNode = embeddedView.createAccessibilityNodeInfo(); - // Long originPackedId = reflectionAccessors.getSourceNodeId(originNode); - // if (originPackedId == null) { - // return null; - // } - // int originId = ReflectionAccessors.getVirtualNodeId(originPackedId); - // flutterIdToOrigin.put(flutterId, new ViewAndId(embeddedView, originId)); - // flutterIdToDisplayBounds.put(flutterId, displayBounds); - // originToFlutterId.put(new ViewAndId(embeddedView, originId), flutterId); - // return convertToFlutterNode(originNode, flutterId, embeddedView); + public AccessibilityNodeInfo getRootNode(@NonNull View embeddedView, int flutterId, @NonNull Rect displayBounds) { + AccessibilityNodeInfo originNode = embeddedView.createAccessibilityNodeInfo(); + Long originPackedId = reflectionAccessors.getSourceNodeId(originNode); + if (originPackedId == null) { + return null; + } + int originId = ReflectionAccessors.getVirtualNodeId(originPackedId); + flutterIdToOrigin.put(flutterId, new ViewAndId(embeddedView, originId)); + flutterIdToDisplayBounds.put(flutterId, displayBounds); + originToFlutterId.put(new ViewAndId(embeddedView, originId), flutterId); + return convertToFlutterNode(originNode, flutterId, embeddedView); } /** * Creates the accessibility node info for the node identified with `flutterId`. */ + @Nullable public AccessibilityNodeInfo createAccessibilityNodeInfo(int flutterId) { ViewAndId origin = flutterIdToOrigin.get(flutterId); if (origin == null) { @@ -101,6 +106,9 @@ public AccessibilityNodeInfo createAccessibilityNodeInfo(int flutterId) { } AccessibilityNodeInfo originNode = origin.view.getAccessibilityNodeProvider().createAccessibilityNodeInfo(origin.id); + if (originNode == null) { + return null; + } return convertToFlutterNode(originNode, flutterId, origin.view); } @@ -108,7 +116,12 @@ public AccessibilityNodeInfo createAccessibilityNodeInfo(int flutterId) { * Creates an AccessibilityNodeInfo that can be attached to the Flutter accessibility tree and is equivalent to * originNode(which belongs to embeddedView). The virtual ID for the created node will be flutterId. */ - private AccessibilityNodeInfo convertToFlutterNode(AccessibilityNodeInfo originNode, int flutterId, View embeddedView) { + @NonNull + private AccessibilityNodeInfo convertToFlutterNode( + @NonNull AccessibilityNodeInfo originNode, + int flutterId, + @NonNull View embeddedView + ) { AccessibilityNodeInfo result = AccessibilityNodeInfo.obtain(rootAccessibilityView, flutterId); result.setPackageName(rootAccessibilityView.getContext().getPackageName()); result.setSource(rootAccessibilityView, flutterId); @@ -124,7 +137,11 @@ private AccessibilityNodeInfo convertToFlutterNode(AccessibilityNodeInfo originN return result; } - private void setFlutterNodeParent(AccessibilityNodeInfo originNode, View embeddedView, AccessibilityNodeInfo result) { + private void setFlutterNodeParent( + @NonNull AccessibilityNodeInfo originNode, + @NonNull View embeddedView, + @NonNull AccessibilityNodeInfo result + ) { Long parentOriginPackedId = reflectionAccessors.getParentNodeId(originNode); if (parentOriginPackedId == null) { return; @@ -137,7 +154,12 @@ private void setFlutterNodeParent(AccessibilityNodeInfo originNode, View embedde } - private void addChildrenToFlutterNode(AccessibilityNodeInfo originNode, View embeddedView, Rect displayBounds, AccessibilityNodeInfo resultNode) { + private void addChildrenToFlutterNode( + @NonNull AccessibilityNodeInfo originNode, + @NonNull View embeddedView, + @NonNull Rect displayBounds, + @NonNull AccessibilityNodeInfo resultNode + ) { for (int i = 0; i < originNode.getChildCount(); i++) { Long originPackedId = reflectionAccessors.getChildId(originNode, i); if (originPackedId == null) { @@ -158,7 +180,11 @@ private void addChildrenToFlutterNode(AccessibilityNodeInfo originNode, View emb } } - private void setFlutterNodesTranslateBounds(AccessibilityNodeInfo originNode, Rect displayBounds, AccessibilityNodeInfo resultNode) { + private void setFlutterNodesTranslateBounds( + @NonNull AccessibilityNodeInfo originNode, + @NonNull Rect displayBounds, + @NonNull AccessibilityNodeInfo resultNode + ) { Rect boundsInParent = new Rect(); originNode.getBoundsInParent(boundsInParent); resultNode.setBoundsInParent(boundsInParent); @@ -169,7 +195,7 @@ private void setFlutterNodesTranslateBounds(AccessibilityNodeInfo originNode, Re resultNode.setBoundsInScreen(boundsInScreen); } - private void copyAccessibilityFields(AccessibilityNodeInfo input, AccessibilityNodeInfo output) { + private void copyAccessibilityFields(@NonNull AccessibilityNodeInfo input, @NonNull AccessibilityNodeInfo output) { output.setAccessibilityFocused(input.isAccessibilityFocused()); output.setCheckable(input.isCheckable()); output.setChecked(input.isChecked()); @@ -220,6 +246,128 @@ private void copyAccessibilityFields(AccessibilityNodeInfo input, AccessibilityN } } + /** + * Delegates an AccessibilityNodeProvider#requestSendAccessibilityEvent from the AccessibilityBridge to the embedded + * view. + * + * @return True if the event was sent. + */ + public boolean requestSendAccessibilityEvent( + @NonNull View embeddedView, + @NonNull View eventOrigin, + @NonNull AccessibilityEvent event + ) { + AccessibilityEvent translatedEvent = AccessibilityEvent.obtain(event); + Long originPackedId = reflectionAccessors.getRecordSourceNodeId(event); + if (originPackedId == null) { + return false; + } + int originVirtualId = ReflectionAccessors.getVirtualNodeId(originPackedId); + Integer flutterId = originToFlutterId.get(new ViewAndId(embeddedView, originVirtualId)); + if (flutterId == null) { + return false; + } + translatedEvent.setSource(rootAccessibilityView, flutterId); + translatedEvent.setClassName(event.getClassName()); + translatedEvent.setPackageName(event.getPackageName()); + + for (int i = 0; i < translatedEvent.getRecordCount(); i++) { + AccessibilityRecord record = translatedEvent.getRecord(i); + Long recordOriginPackedId = reflectionAccessors.getRecordSourceNodeId(record); + if (recordOriginPackedId == null) { + return false; + } + int recordOriginVirtualID = ReflectionAccessors.getVirtualNodeId(recordOriginPackedId); + ViewAndId originViewAndId = new ViewAndId(embeddedView, recordOriginVirtualID); + if (!originToFlutterId.containsKey(originViewAndId)) { + return false; + } + int recordFlutterId = originToFlutterId.get(originViewAndId); + record.setSource(rootAccessibilityView, recordFlutterId); + } + + return rootAccessibilityView.getParent().requestSendAccessibilityEvent(eventOrigin, translatedEvent); + } + + /** + * Delegates an @{link AccessibilityNodeProvider#performAction} from the AccessibilityBridge to the embedded view's + * accessibility node provider. + * + * @return True if the action was performed. + */ + public boolean performAction(int flutterId, int accessibilityAction, @Nullable Bundle arguments) { + ViewAndId origin = flutterIdToOrigin.get(flutterId); + if (origin == null) { + return false; + } + View embeddedView = origin.view; + AccessibilityNodeProvider provider = embeddedView.getAccessibilityNodeProvider(); + if (provider == null) { + return false; + } + return provider.performAction(origin.id, accessibilityAction, arguments); + } + + /** + * Returns a flutterID for an accessibility record, or null if no mapping exists. + * + * @param embeddedView the embedded view that the record is associated with. + */ + @Nullable + public Integer getRecordFlutterId(@NonNull View embeddedView, @NonNull AccessibilityRecord record) { + Long originPackedId = reflectionAccessors.getRecordSourceNodeId(record); + if (originPackedId == null) { + return null; + } + int originVirtualId = ReflectionAccessors.getVirtualNodeId(originPackedId); + return originToFlutterId.get(new ViewAndId(embeddedView, originVirtualId)); + } + + /** + * Delegates a View#onHoverEvent event from the AccessibilityBridge to an embedded view. + * + * The pointer coordinates are translated to the embedded view's coordinate system. + */ + public boolean onAccessibilityHoverEvent(int rootFlutterId, @NonNull MotionEvent event) { + ViewAndId origin = flutterIdToOrigin.get(rootFlutterId); + if (origin == null) { + return false; + } + Rect displayBounds = flutterIdToDisplayBounds.get(rootFlutterId); + int pointerCount = event.getPointerCount(); + MotionEvent.PointerProperties[] pointerProperties = new MotionEvent.PointerProperties[pointerCount]; + MotionEvent.PointerCoords[] pointerCoords = new MotionEvent.PointerCoords[pointerCount]; + for(int i = 0; i < event.getPointerCount(); i++) { + pointerProperties[i] = new MotionEvent.PointerProperties(); + event.getPointerProperties(i, pointerProperties[i]); + + MotionEvent.PointerCoords originCoords = new MotionEvent.PointerCoords(); + event.getPointerCoords(i, originCoords); + + pointerCoords[i] = new MotionEvent.PointerCoords((originCoords)); + pointerCoords[i].x -= displayBounds.left; + pointerCoords[i].y -= displayBounds.top; + + } + MotionEvent translatedEvent = MotionEvent.obtain( + event.getDownTime(), + event.getEventTime(), + event.getAction(), + event.getPointerCount(), + pointerProperties, + pointerCoords, + event.getMetaState(), + event.getButtonState(), + event.getXPrecision(), + event.getYPrecision(), + event.getDeviceId(), + event.getEdgeFlags(), + event.getSource(), + event.getFlags() + ); + return origin.view.dispatchGenericMotionEvent(translatedEvent); + } + private static class ViewAndId { final View view; final int id; @@ -251,22 +399,29 @@ public int hashCode() { private static class ReflectionAccessors { private final Method getSourceNodeId; private final Method getParentNodeId; + private final Method getRecordSourceNodeId; private final Method getChildId; private ReflectionAccessors() { Method getSourceNodeId = null; Method getParentNodeId = null; + Method getRecordSourceNodeId = null; Method getChildId = null; try { getSourceNodeId = AccessibilityNodeInfo.class.getMethod("getSourceNodeId"); } catch (NoSuchMethodException e) { - Log.w(TAG, "can't invoke getSourceNodeId with reflection"); + Log.w(TAG, "can't invoke AccessibilityNodeInfo#getSourceNodeId with reflection"); } try { getParentNodeId = AccessibilityNodeInfo.class.getMethod("getParentNodeId"); } catch (NoSuchMethodException e) { Log.w(TAG, "can't invoke getParentNodeId with reflection"); } + try { + getRecordSourceNodeId = AccessibilityRecord.class.getMethod("getSourceNodeId"); + } catch (NoSuchMethodException e) { + Log.w(TAG, "can't invoke AccessibiiltyRecord#getSourceNodeId with reflection"); + } try { getChildId = AccessibilityNodeInfo.class.getMethod("getChildId", int.class); } catch (NoSuchMethodException e) { @@ -274,6 +429,7 @@ private ReflectionAccessors() { } this.getSourceNodeId = getSourceNodeId; this.getParentNodeId = getParentNodeId; + this.getRecordSourceNodeId = getRecordSourceNodeId; this.getChildId = getChildId; } @@ -282,7 +438,8 @@ private static int getVirtualNodeId(long nodeId) { return (int) (nodeId >> 32); } - private Long getSourceNodeId(AccessibilityNodeInfo node) { + @Nullable + private Long getSourceNodeId(@NonNull AccessibilityNodeInfo node) { if (getSourceNodeId == null) { return null; } @@ -296,7 +453,8 @@ private Long getSourceNodeId(AccessibilityNodeInfo node) { return null; } - private Long getChildId(AccessibilityNodeInfo node, int child) { + @Nullable + private Long getChildId(@NonNull AccessibilityNodeInfo node, int child) { if (getChildId == null) { return null; } @@ -310,7 +468,8 @@ private Long getChildId(AccessibilityNodeInfo node, int child) { return null; } - private Long getParentNodeId(AccessibilityNodeInfo node) { + @Nullable + private Long getParentNodeId(@NonNull AccessibilityNodeInfo node) { if (getParentNodeId == null) { return null; } @@ -323,5 +482,20 @@ private Long getParentNodeId(AccessibilityNodeInfo node) { } return null; } + + @Nullable + private Long getRecordSourceNodeId(@NonNull AccessibilityRecord node) { + if (getRecordSourceNodeId == null) { + return null; + } + try { + return (Long) getRecordSourceNodeId.invoke(node); + } catch (IllegalAccessException e) { + Log.w(TAG, e); + } catch (InvocationTargetException e) { + Log.w(TAG, e); + } + return null; + } } } From 22ee8ee08f6a25a32270813e28442e3a3ec00127 Mon Sep 17 00:00:00 2001 From: Chinmay Garde Date: Mon, 25 Mar 2019 15:10:24 -0700 Subject: [PATCH 1491/1537] Migrate existing embedder unit tests to use the fixture. (#8296) Also allows tests to specify their own embedder contexts. --- shell/platform/embedder/BUILD.gn | 5 + shell/platform/embedder/embedder.cc | 9 +- .../embedder/tests/embedder_config_builder.cc | 39 ++++--- .../embedder/tests/embedder_config_builder.h | 20 +++- .../embedder/tests/embedder_context.cc | 95 +++++++++++++++ .../embedder/tests/embedder_context.h | 59 ++++++++++ .../platform/embedder/tests/embedder_test.cc | 67 ++--------- shell/platform/embedder/tests/embedder_test.h | 18 +-- .../embedder/tests/embedder_unittests.cc | 110 +++--------------- 9 files changed, 236 insertions(+), 186 deletions(-) create mode 100644 shell/platform/embedder/tests/embedder_context.cc create mode 100644 shell/platform/embedder/tests/embedder_context.h diff --git a/shell/platform/embedder/BUILD.gn b/shell/platform/embedder/BUILD.gn index 1b7a81b844551..5df39518c8b62 100644 --- a/shell/platform/embedder/BUILD.gn +++ b/shell/platform/embedder/BUILD.gn @@ -70,6 +70,8 @@ executable("embedder_unittests") { sources = [ "tests/embedder_config_builder.cc", "tests/embedder_config_builder.h", + "tests/embedder_context.cc", + "tests/embedder_context.h", "tests/embedder_test.cc", "tests/embedder_test.h", "tests/embedder_unittests.cc", @@ -78,7 +80,10 @@ executable("embedder_unittests") { deps = [ ":embedder", ":fixtures", + "$flutter_root/runtime", "$flutter_root/testing", + "//third_party/skia", + "//third_party/tonic", ] if (is_linux) { diff --git a/shell/platform/embedder/embedder.cc b/shell/platform/embedder/embedder.cc index 65aa88808f875..003f40113c419 100644 --- a/shell/platform/embedder/embedder.cc +++ b/shell/platform/embedder/embedder.cc @@ -52,14 +52,17 @@ extern const intptr_t kPlatformStrongDillSize; static FlutterEngineResult LogEmbedderError(FlutterEngineResult code, const char* name, - const char* function) { + const char* function, + const char* file, + int line) { FML_LOG(ERROR) << "Returning error '" << name << "' (" << code << ") from Flutter Embedder API call to '" << __FUNCTION__ - << "'."; + << "'. Origin: " << file << ":" << line; return code; } -#define LOG_EMBEDDER_ERROR(code) LogEmbedderError(code, #code, __FUNCTION__) +#define LOG_EMBEDDER_ERROR(code) \ + LogEmbedderError(code, #code, __FUNCTION__, __FILE__, __LINE__) static bool IsOpenGLRendererConfigValid(const FlutterRendererConfig* config) { if (config->type != kOpenGL) { diff --git a/shell/platform/embedder/tests/embedder_config_builder.cc b/shell/platform/embedder/tests/embedder_config_builder.cc index 108535ea8b619..c93886b1133c6 100644 --- a/shell/platform/embedder/tests/embedder_config_builder.cc +++ b/shell/platform/embedder/tests/embedder_config_builder.cc @@ -7,12 +7,21 @@ namespace shell { namespace testing { -EmbedderConfigBuilder::EmbedderConfigBuilder() { +EmbedderConfigBuilder::EmbedderConfigBuilder( + EmbedderContext& context, + InitializationPreference preference) + : context_(context) { project_args_.struct_size = sizeof(project_args_); - software_renderer_config_.struct_size = sizeof(FlutterSoftwareRendererConfig); software_renderer_config_.surface_present_callback = [](void*, const void*, size_t, size_t) { return true; }; + + if (preference == InitializationPreference::kInitialize) { + SetSoftwareRendererConfig(); + SetAssetsPath(); + SetSnapshots(); + SetIsolateCreateCallbackHook(); + } } EmbedderConfigBuilder::~EmbedderConfigBuilder() = default; @@ -22,39 +31,41 @@ void EmbedderConfigBuilder::SetSoftwareRendererConfig() { renderer_config_.software = software_renderer_config_; } -void EmbedderConfigBuilder::SetAssetsPathFromFixture( - const EmbedderTest* fixture) { - assets_path_ = fixture->GetAssetsPath(); - project_args_.assets_path = assets_path_.c_str(); +void EmbedderConfigBuilder::SetAssetsPath() { + project_args_.assets_path = context_.GetAssetsPath().c_str(); } -void EmbedderConfigBuilder::SetSnapshotsFromFixture( - const EmbedderTest* fixture) { - if (auto mapping = fixture->GetVMSnapshotData()) { +void EmbedderConfigBuilder::SetSnapshots() { + if (auto mapping = context_.GetVMSnapshotData()) { project_args_.vm_snapshot_data = mapping->GetMapping(); project_args_.vm_snapshot_data_size = mapping->GetSize(); } - if (auto mapping = fixture->GetVMSnapshotInstructions()) { + if (auto mapping = context_.GetVMSnapshotInstructions()) { project_args_.vm_snapshot_instructions = mapping->GetMapping(); project_args_.vm_snapshot_instructions_size = mapping->GetSize(); } - if (auto mapping = fixture->GetIsolateSnapshotData()) { + if (auto mapping = context_.GetIsolateSnapshotData()) { project_args_.isolate_snapshot_data = mapping->GetMapping(); project_args_.isolate_snapshot_data_size = mapping->GetSize(); } - if (auto mapping = fixture->GetIsolateSnapshotInstructions()) { + if (auto mapping = context_.GetIsolateSnapshotInstructions()) { project_args_.isolate_snapshot_instructions = mapping->GetMapping(); project_args_.isolate_snapshot_instructions_size = mapping->GetSize(); } } -UniqueEngine EmbedderConfigBuilder::LaunchEngine(void* user_data) const { +void EmbedderConfigBuilder::SetIsolateCreateCallbackHook() { + project_args_.root_isolate_create_callback = + EmbedderContext::GetIsolateCreateCallbackHook(); +} + +UniqueEngine EmbedderConfigBuilder::LaunchEngine() const { FlutterEngine engine = nullptr; auto result = FlutterEngineRun(FLUTTER_ENGINE_VERSION, &renderer_config_, - &project_args_, user_data, &engine); + &project_args_, &context_, &engine); if (result != kSuccess) { return {}; diff --git a/shell/platform/embedder/tests/embedder_config_builder.h b/shell/platform/embedder/tests/embedder_config_builder.h index a474f3e3bc81c..34dca1aed9f44 100644 --- a/shell/platform/embedder/tests/embedder_config_builder.h +++ b/shell/platform/embedder/tests/embedder_config_builder.h @@ -8,6 +8,7 @@ #include "flutter/fml/macros.h" #include "flutter/fml/unique_object.h" #include "flutter/shell/platform/embedder/embedder.h" +#include "flutter/shell/platform/embedder/tests/embedder_context.h" #include "flutter/shell/platform/embedder/tests/embedder_test.h" namespace shell { @@ -28,23 +29,32 @@ using UniqueEngine = fml::UniqueObject; class EmbedderConfigBuilder { public: - EmbedderConfigBuilder(); + enum class InitializationPreference { + kInitialize, + kNoInitialize, + }; + + EmbedderConfigBuilder(EmbedderContext& context, + InitializationPreference preference = + InitializationPreference::kInitialize); ~EmbedderConfigBuilder(); void SetSoftwareRendererConfig(); - void SetAssetsPathFromFixture(const EmbedderTest* fixture); + void SetAssetsPath(); + + void SetSnapshots(); - void SetSnapshotsFromFixture(const EmbedderTest* fixture); + void SetIsolateCreateCallbackHook(); - UniqueEngine LaunchEngine(void* user_data = nullptr) const; + UniqueEngine LaunchEngine() const; private: + EmbedderContext& context_; FlutterProjectArgs project_args_ = {}; FlutterRendererConfig renderer_config_ = {}; FlutterSoftwareRendererConfig software_renderer_config_ = {}; - std::string assets_path_; FML_DISALLOW_COPY_AND_ASSIGN(EmbedderConfigBuilder); }; diff --git a/shell/platform/embedder/tests/embedder_context.cc b/shell/platform/embedder/tests/embedder_context.cc new file mode 100644 index 0000000000000..57b4335e661ac --- /dev/null +++ b/shell/platform/embedder/tests/embedder_context.cc @@ -0,0 +1,95 @@ +// 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/platform/embedder/tests/embedder_context.h" + +#include "flutter/runtime/dart_vm.h" + +namespace shell { +namespace testing { + +static std::unique_ptr GetMapping(const fml::UniqueFD& directory, + const char* path, + bool executable) { + fml::UniqueFD file = fml::OpenFile(directory, path, false /* create */, + fml::FilePermission::kRead); + if (!file.is_valid()) { + return nullptr; + } + + using Prot = fml::FileMapping::Protection; + std::unique_ptr mapping; + if (executable) { + mapping = std::make_unique( + file, std::initializer_list{Prot::kRead, Prot::kExecute}); + } else { + mapping = std::make_unique( + file, std::initializer_list{Prot::kRead}); + } + + if (mapping->GetSize() == 0 || mapping->GetMapping() == nullptr) { + return nullptr; + } + + return mapping; +} + +EmbedderContext::EmbedderContext(std::string assets_path) + : assets_path_(std::move(assets_path)) { + auto assets_dir = fml::OpenDirectory(assets_path_.c_str(), false, + fml::FilePermission::kRead); + vm_snapshot_data_ = GetMapping(assets_dir, "vm_snapshot_data", false); + isolate_snapshot_data_ = + GetMapping(assets_dir, "isolate_snapshot_data", false); + + if (blink::DartVM::IsRunningPrecompiledCode()) { + vm_snapshot_instructions_ = + GetMapping(assets_dir, "vm_snapshot_instr", true); + isolate_snapshot_instructions_ = + GetMapping(assets_dir, "isolate_snapshot_instr", true); + } +} + +EmbedderContext::~EmbedderContext() = default; + +const std::string& EmbedderContext::GetAssetsPath() const { + return assets_path_; +} + +const fml::Mapping* EmbedderContext::GetVMSnapshotData() const { + return vm_snapshot_data_.get(); +} + +const fml::Mapping* EmbedderContext::GetVMSnapshotInstructions() const { + return vm_snapshot_instructions_.get(); +} + +const fml::Mapping* EmbedderContext::GetIsolateSnapshotData() const { + return isolate_snapshot_data_.get(); +} + +const fml::Mapping* EmbedderContext::GetIsolateSnapshotInstructions() const { + return isolate_snapshot_instructions_.get(); +} + +void EmbedderContext::AddIsolateCreateCallback(fml::closure closure) { + if (closure) { + isolate_create_callbacks_.push_back(closure); + } +} + +VoidCallback EmbedderContext::GetIsolateCreateCallbackHook() { + return [](void* user_data) { + reinterpret_cast(user_data)->FireIsolateCreateCallbacks(); + }; +} + +void EmbedderContext::FireIsolateCreateCallbacks() { + for (auto closure : isolate_create_callbacks_) { + closure(); + } +} + +} // namespace testing +} // namespace shell diff --git a/shell/platform/embedder/tests/embedder_context.h b/shell/platform/embedder/tests/embedder_context.h new file mode 100644 index 0000000000000..63aec332b2a0e --- /dev/null +++ b/shell/platform/embedder/tests/embedder_context.h @@ -0,0 +1,59 @@ +// 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. + +#ifndef FLUTTER_SHELL_PLATFORM_EMBEDDER_TESTS_EMBEDDER_CONTEXT_H_ +#define FLUTTER_SHELL_PLATFORM_EMBEDDER_TESTS_EMBEDDER_CONTEXT_H_ + +#include +#include +#include + +#include "flutter/fml/closure.h" +#include "flutter/fml/macros.h" +#include "flutter/fml/mapping.h" +#include "flutter/shell/platform/embedder/embedder.h" + +namespace shell { +namespace testing { + +class EmbedderContext { + public: + EmbedderContext(std::string assets_path = ""); + + ~EmbedderContext(); + + const std::string& GetAssetsPath() const; + + const fml::Mapping* GetVMSnapshotData() const; + + const fml::Mapping* GetVMSnapshotInstructions() const; + + const fml::Mapping* GetIsolateSnapshotData() const; + + const fml::Mapping* GetIsolateSnapshotInstructions() const; + + void AddIsolateCreateCallback(fml::closure closure); + + private: + // This allows the builder to access the hooks. + friend class EmbedderConfigBuilder; + + std::string assets_path_; + std::unique_ptr vm_snapshot_data_; + std::unique_ptr vm_snapshot_instructions_; + std::unique_ptr isolate_snapshot_data_; + std::unique_ptr isolate_snapshot_instructions_; + std::vector isolate_create_callbacks_; + + static VoidCallback GetIsolateCreateCallbackHook(); + + void FireIsolateCreateCallbacks(); + + FML_DISALLOW_COPY_AND_ASSIGN(EmbedderContext); +}; + +} // namespace testing +} // namespace shell + +#endif // FLUTTER_SHELL_PLATFORM_EMBEDDER_TESTS_EMBEDDER_CONTEXT_H_ diff --git a/shell/platform/embedder/tests/embedder_test.cc b/shell/platform/embedder/tests/embedder_test.cc index 044aacc4dfc70..b23e79596745f 100644 --- a/shell/platform/embedder/tests/embedder_test.cc +++ b/shell/platform/embedder/tests/embedder_test.cc @@ -7,32 +7,6 @@ namespace shell { namespace testing { -static std::unique_ptr GetMapping(const fml::UniqueFD& directory, - const char* path, - bool executable) { - fml::UniqueFD file = fml::OpenFile(directory, path, false /* create */, - fml::FilePermission::kRead); - if (!file.is_valid()) { - return nullptr; - } - - using Prot = fml::FileMapping::Protection; - std::unique_ptr mapping; - if (executable) { - mapping = std::make_unique( - file, std::initializer_list{Prot::kRead, Prot::kExecute}); - } else { - mapping = std::make_unique( - file, std::initializer_list{Prot::kRead}); - } - - if (mapping->GetSize() == 0 || mapping->GetMapping() == nullptr) { - return nullptr; - } - - return mapping; -} - EmbedderTest::EmbedderTest() = default; EmbedderTest::~EmbedderTest() = default; @@ -41,45 +15,24 @@ std::string EmbedderTest::GetFixturesDirectory() const { return ::testing::GetFixturesPath(); } -std::string EmbedderTest::GetAssetsPath() const { - return GetFixturesDirectory(); -} - -const fml::Mapping* EmbedderTest::GetVMSnapshotData() const { - return vm_snapshot_data_.get(); -} - -const fml::Mapping* EmbedderTest::GetVMSnapshotInstructions() const { - return vm_snapshot_instructions_.get(); -} - -const fml::Mapping* EmbedderTest::GetIsolateSnapshotData() const { - return isolate_snapshot_data_.get(); -} - -const fml::Mapping* EmbedderTest::GetIsolateSnapshotInstructions() const { - return isolate_snapshot_instructions_.get(); +EmbedderContext& EmbedderTest::GetEmbedderContext() { + // Setup the embedder context lazily instead of in the SetUp method because we + // don't to do all the work if the test won't end up using context. + if (!embedder_context_) { + embedder_context_ = + std::make_unique(GetFixturesDirectory()); + } + return *embedder_context_; } // |testing::Test| void EmbedderTest::SetUp() { - auto fixures_dir = fml::OpenDirectory(GetFixturesDirectory().c_str(), false, - fml::FilePermission::kRead); - vm_snapshot_data_ = GetMapping(fixures_dir, "vm_snapshot_data", false); - vm_snapshot_instructions_ = - GetMapping(fixures_dir, "vm_snapshot_instr", true); - isolate_snapshot_data_ = - GetMapping(fixures_dir, "isolate_snapshot_data", false); - isolate_snapshot_instructions_ = - GetMapping(fixures_dir, "isolate_snapshot_instr", true); + // Nothing to do here since we will lazily setup the context when asked. } // |testing::Test| void EmbedderTest::TearDown() { - vm_snapshot_data_.reset(); - vm_snapshot_instructions_.reset(); - isolate_snapshot_data_.reset(); - isolate_snapshot_instructions_.reset(); + embedder_context_.reset(); } } // namespace testing diff --git a/shell/platform/embedder/tests/embedder_test.h b/shell/platform/embedder/tests/embedder_test.h index f861e3b7267fc..f0850bf6f8a7d 100644 --- a/shell/platform/embedder/tests/embedder_test.h +++ b/shell/platform/embedder/tests/embedder_test.h @@ -7,9 +7,8 @@ #include -#include "flutter/fml/file.h" #include "flutter/fml/macros.h" -#include "flutter/fml/mapping.h" +#include "flutter/shell/platform/embedder/tests/embedder_context.h" #include "flutter/testing/testing.h" namespace shell { @@ -23,21 +22,10 @@ class EmbedderTest : public ::testing::Test { std::string GetFixturesDirectory() const; - std::string GetAssetsPath() const; - - const fml::Mapping* GetVMSnapshotData() const; - - const fml::Mapping* GetVMSnapshotInstructions() const; - - const fml::Mapping* GetIsolateSnapshotData() const; - - const fml::Mapping* GetIsolateSnapshotInstructions() const; + EmbedderContext& GetEmbedderContext(); private: - std::unique_ptr vm_snapshot_data_; - std::unique_ptr vm_snapshot_instructions_; - std::unique_ptr isolate_snapshot_data_; - std::unique_ptr isolate_snapshot_instructions_; + std::unique_ptr embedder_context_; // |testing::Test| void SetUp() override; diff --git a/shell/platform/embedder/tests/embedder_unittests.cc b/shell/platform/embedder/tests/embedder_unittests.cc index 7415183eb6792..eda64316a016b 100644 --- a/shell/platform/embedder/tests/embedder_unittests.cc +++ b/shell/platform/embedder/tests/embedder_unittests.cc @@ -6,6 +6,7 @@ #include "embedder.h" #include "flutter/fml/file.h" #include "flutter/fml/mapping.h" +#include "flutter/fml/synchronization/waitable_event.h" #include "flutter/shell/platform/embedder/tests/embedder_config_builder.h" #include "flutter/shell/platform/embedder/tests/embedder_test.h" #include "flutter/testing/testing.h" @@ -13,105 +14,30 @@ namespace shell { namespace testing { -static void MapAOTAsset( - std::vector>& aot_mappings, - const fml::UniqueFD& fixtures_dir, - const char* path, - bool executable, - const uint8_t** data, - size_t* size) { - fml::UniqueFD file = - fml::OpenFile(fixtures_dir, path, false, fml::FilePermission::kRead); - std::unique_ptr mapping; - if (executable) { - mapping = std::make_unique( - file, std::initializer_list{ - fml::FileMapping::Protection::kRead, - fml::FileMapping::Protection::kExecute}); - } else { - mapping = std::make_unique( - file, std::initializer_list{ - fml::FileMapping::Protection::kRead}); - } - *data = mapping->GetMapping(); - *size = mapping->GetSize(); - aot_mappings.emplace_back(std::move(mapping)); -} - -TEST(EmbedderTest, MustNotRunWithInvalidArgs) { - FlutterEngine engine = nullptr; - FlutterRendererConfig config = {}; - FlutterProjectArgs args = {}; - FlutterEngineResult result = FlutterEngineRun(FLUTTER_ENGINE_VERSION + 1, - &config, &args, NULL, &engine); - ASSERT_NE(result, FlutterEngineResult::kSuccess); -} +using EmbedderTest = testing::EmbedderTest; -TEST(EmbedderTest, CanLaunchAndShutdownWithValidProjectArgs) { - FlutterSoftwareRendererConfig renderer; - renderer.struct_size = sizeof(FlutterSoftwareRendererConfig); - renderer.surface_present_callback = [](void*, const void*, size_t, size_t) { - return false; - }; - - FlutterRendererConfig config = {}; - config.type = FlutterRendererType::kSoftware; - config.software = renderer; - - FlutterProjectArgs args = {}; - args.struct_size = sizeof(FlutterProjectArgs); - args.assets_path = ::testing::GetFixturesPath(); - args.root_isolate_create_callback = [](void* data) { - std::string str_data = reinterpret_cast(data); - ASSERT_EQ(str_data, "Data"); - }; - - fml::UniqueFD fixtures_dir = fml::OpenDirectory( - ::testing::GetFixturesPath(), false, fml::FilePermission::kRead); - std::vector> aot_mappings; - if (fml::FileExists(fixtures_dir, "vm_snapshot_data")) { - MapAOTAsset(aot_mappings, fixtures_dir, "vm_snapshot_data", false, - &args.vm_snapshot_data, &args.vm_snapshot_data_size); - MapAOTAsset(aot_mappings, fixtures_dir, "vm_snapshot_instr", true, - &args.vm_snapshot_instructions, - &args.vm_snapshot_instructions_size); - MapAOTAsset(aot_mappings, fixtures_dir, "isolate_snapshot_data", false, - &args.isolate_snapshot_data, &args.isolate_snapshot_data_size); - MapAOTAsset(aot_mappings, fixtures_dir, "isolate_snapshot_instr", true, - &args.isolate_snapshot_instructions, - &args.isolate_snapshot_instructions_size); - } - - std::string str_data = "Data"; - void* user_data = const_cast(str_data.c_str()); - FlutterEngine engine = nullptr; - FlutterEngineResult result = FlutterEngineRun(FLUTTER_ENGINE_VERSION, &config, - &args, user_data, &engine); - ASSERT_EQ(result, FlutterEngineResult::kSuccess); - - result = FlutterEngineShutdown(engine); - ASSERT_EQ(result, FlutterEngineResult::kSuccess); +TEST(EmbedderTestNoFixture, MustNotRunWithInvalidArgs) { + EmbedderContext context; + EmbedderConfigBuilder builder( + context, EmbedderConfigBuilder::InitializationPreference::kNoInitialize); + auto engine = builder.LaunchEngine(); + ASSERT_FALSE(engine.is_valid()); } -using EmbedderFixture = testing::EmbedderTest; - -TEST_F(EmbedderFixture, CanLaunchAndShutdownWithFixture) { - EmbedderConfigBuilder builder; - - builder.SetSoftwareRendererConfig(); - builder.SetAssetsPathFromFixture(this); - builder.SetSnapshotsFromFixture(this); - +TEST_F(EmbedderTest, CanLaunchAndShutdownWithValidProjectArgs) { + auto& context = GetEmbedderContext(); + fml::AutoResetWaitableEvent latch; + context.AddIsolateCreateCallback([&latch]() { latch.Signal(); }); + EmbedderConfigBuilder builder(context); auto engine = builder.LaunchEngine(); ASSERT_TRUE(engine.is_valid()); + // Wait for the root isolate to launch. + latch.Wait(); + engine.reset(); } -TEST_F(EmbedderFixture, CanLaunchAndShutdownWithFixtureMultipleTimes) { - EmbedderConfigBuilder builder; - - builder.SetSoftwareRendererConfig(); - builder.SetAssetsPathFromFixture(this); - builder.SetSnapshotsFromFixture(this); +TEST_F(EmbedderTest, CanLaunchAndShutdownMultipleTimes) { + EmbedderConfigBuilder builder(GetEmbedderContext()); for (size_t i = 0; i < 100; ++i) { auto engine = builder.LaunchEngine(); ASSERT_TRUE(engine.is_valid()); From af64f725f6c74f5d1287a8be8511691119354088 Mon Sep 17 00:00:00 2001 From: Kate Lovett Date: Mon, 25 Mar 2019 15:44:14 -0700 Subject: [PATCH 1492/1537] Fixing links between higher and lower classes. (#8295) --- lib/ui/painting.dart | 4 ++-- lib/ui/text.dart | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/ui/painting.dart b/lib/ui/painting.dart index 42ff490c60f7d..e7b0e01c9ea70 100644 --- a/lib/ui/painting.dart +++ b/lib/ui/painting.dart @@ -1523,7 +1523,7 @@ class _ImageInfo { /// /// See also: /// -/// * [Image], the class in the [widgets] library that encapsulates this class. +/// * [Image](https://api.flutter.dev/flutter/widgets/Image-class.html), the class in the [widgets] library. /// @pragma('vm:entry-point') class Image extends NativeFieldWrapperClass2 { @@ -2686,7 +2686,7 @@ Float32List _encodeTwoPoints(Offset pointA, Offset pointB) { /// /// See also: /// -/// * [Gradient], the class in the [painting] library that encapsulates this class. +/// * [Gradient](https://api.flutter.dev/flutter/painting/Gradient-class.html), the class in the [painting] library. /// class Gradient extends Shader { diff --git a/lib/ui/text.dart b/lib/ui/text.dart index f19e734482490..d198d2b19c1ae 100644 --- a/lib/ui/text.dart +++ b/lib/ui/text.dart @@ -355,7 +355,7 @@ Int32List _encodeTextStyle( /// /// See also: /// -/// * [TextStyle], the class in the [painting] library that encapsulates this class. +/// * [TextStyle](https://api.flutter.dev/flutter/painting/TextStyle-class.html), the class in the [painting] library. /// class TextStyle { /// Creates a new TextStyle object. @@ -799,7 +799,7 @@ ByteData _encodeStrut( /// See also: /// -/// * [StrutStyle], the class in the [painting] library that encapsulates this class. +/// * [StrutStyle](https://api.flutter.dev/flutter/painting/StrutStyle-class.html), the class in the [painting] library. /// class StrutStyle { /// Creates a new StrutStyle object. From 42d062f95ebfee22dacfafc14b4c3a0474c18aab Mon Sep 17 00:00:00 2001 From: Zachary Anderson Date: Mon, 25 Mar 2019 16:03:41 -0700 Subject: [PATCH 1493/1537] [fuchsia] Add missing trace macros (#8297) --- fml/trace_event.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/fml/trace_event.h b/fml/trace_event.h index b3a58a04d6ef9..979d430f6be65 100644 --- a/fml/trace_event.h +++ b/fml/trace_event.h @@ -13,6 +13,9 @@ #include +#define FML_TRACE_COUNTER(a, b, c, d, args...) TRACE_COUNTER(a, b, c, d) +#define FML_TRACE_EVENT(a, b, args...) TRACE_DURATION(a, b) + #define TRACE_EVENT0(a, b) TRACE_DURATION(a, b) #define TRACE_EVENT1(a, b, c, d) TRACE_DURATION(a, b, c, d) #define TRACE_EVENT2(a, b, c, d, e, f) TRACE_DURATION(a, b, c, d, e, f) @@ -20,6 +23,7 @@ #define TRACE_EVENT_ASYNC_END0(a, b, c) TRACE_ASYNC_END(a, b, c) #define TRACE_EVENT_ASYNC_BEGIN1(a, b, c, d, e) TRACE_ASYNC_BEGIN(a, b, c, d, e) #define TRACE_EVENT_ASYNC_END1(a, b, c, d, e) TRACE_ASYNC_END(a, b, c, d, e) +#define TRACE_EVENT_INSTANT0(a, b) TRACE_INSTANT(a, b, TRACE_SCOPE_THREAD) #endif // defined(OS_FUCHSIA) From 0d83a2ecd1bb78f8e1f0ed9719ff3751cdfdd064 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Mon, 25 Mar 2019 19:20:25 -0400 Subject: [PATCH 1494/1537] Roll src/third_party/skia 15dc59e65cfa..c5ee499f2c59 (2 commits) (#8298) https://skia.googlesource.com/skia.git/%2Blog/15dc59e65cfa..c5ee499f2c59 git log 15dc59e65cfa9b06f1505d6e44e6dbb0e52ecf6a..c5ee499f2c5913d0d330bfc76944d2c36dfc8e34 --date=short --no-merges --format=%ad %ae %s 2019-03-25 bungeman@google.com Enable fontconfig fontmgr in public.bzl. 2019-03-25 bungeman@google.com Replace SkSpan with Range in shaper reporting. The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (stani@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 5cfda524794a5..7abd1e2c6a22f 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '15dc59e65cfa9b06f1505d6e44e6dbb0e52ecf6a', + 'skia_revision': 'c5ee499f2c5913d0d330bfc76944d2c36dfc8e34', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 9c875da408749..8efbd4911880d 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 3d12a6d1a684e5f3b41c4b66c54bc5e7 +Signature: 0cd6dc53f5ebd38ca3d8943d785b787c UNUSED LICENSES: From d88037dc074f0a91542f7eb67245522e3f05671a Mon Sep 17 00:00:00 2001 From: Ben Konyi Date: Mon, 25 Mar 2019 18:56:30 -0700 Subject: [PATCH 1495/1537] Roll src/third_party/dart fa74184b7a..093c2909fe (71 commits) 093c2909fe [dartdevc] Add implicit casts for SpreadElement nodes f09097bab8 Add tests for "await for" in collection literals. 510d6f7789 Fix a bug in SDK constraint detection db8dca4fbf dart:core: optional-new/const, named-default-separator, function-typedefs c9ecdabe5d Revert "Combine override checks and override-based inference in one phase" 93e4ae4fdf [vm] Add flags to gen_kernel script to support old ABIs 8e0bb64bd1 [gardening] Mark reloaded files as other resources. 461d965d82 Reduce the priority of convertToAsync (issue 36327) ab8510a0a5 [gardening] Fix arguments test for app_jit(k). 580f44aa83 [vm] Enable running FFI tests on Android in JIT-mode. 18a346c4e2 [infra] Protect against buggy approve_results versions causing an outage. 7ddeed1ba9 [gardening] Fix test harness handling of DartOptions a13ac1b44f [infra] Fix approve_results not inserting primary keys for pre-approvals. 775dd08ae9 add some fixes to the widget transformer so it can find the flutter libs and assume the location arg exists on widget constructors 51da94da76 [fasta] Don't create forwarding stub if there's already a member 8d22c26c64 [CFE] Simplify tracking of unevaluated status. 2ce1af9cbe [CFE] Constant evaluation of newly added operators 0b3af295c0 [CFE] >>>= in fasta b1e14cbe5f Change default of 'keepFields' in constant transformation to true 133d1b5afe [CFE] Allow 'as' and 'is' expressions as constants. 5f0de26d48 Clean up the remaining copyright notices 09ee45b4e2 Support for import prefixes. c89642280c Infer types of fields from initializers. 9f864100aa Write / read codeOffset and codeLength for elements. b0823ca558 Add a quick fix for the MISSING_ENUM_CONSTANT_IN_SWITCH diagnostic (issue 36290) baa5628875 [infra] fix approve_results crashing on bad preapproval entry 9d7a0113cc Add test parts, fix for indexing enums. 26d707041a Resolve metadata on directives. 2f22932149 Use dynamic type arguments for TypeName without explicit type arguments. 36e6eb36c5 rename and reword invalid initializer error messages 290ab228b7 Resynthesize DefaultFieldFormalParameterElementImpl. a0e0a7a150 [vm] Delete disallowed constructors/operators bbe8adc827 [dartdevc] Support await within all CollectionElement nodes 59b8a9c4bb [vm] Free readonly header bit so it can be used for other uses. 466b6884dc add scanner/parser support for >>>= 9d616fe839 Add support for >>> in summaries 19a817e785 [analyzer] Fix utility classes ignoring await in for statement/element dfae23d205 [dartdevc] fix #36293, call nSM on callable objects if the lookup fails 65b92e9579 [dartdevc] fix #36253, kernel backend now emits trackLibraries call 96a078ce76 Add quick fixes for new SDK constraint checks 0b4fdc46fe Compute export scopes for source libraries. ee79ca9a74 dart2js support for loading .dill files built modularly 9c6a882af0 Add SDK constraint checks for the constant update 2018 features a8d0a33360 Build elements for local FunctionExpression(s) and parameters while reading AST. 98dddc9daa [tests] Ensure that --enable-asserts is used whereever checked was used previously a8831e7481 Handle _FROM_DEFERRED_LIBRARY codes for ui as code 14fcc352cd [gardening] Try troubleshoot flutter hhh buildbot. ddcc63e1ad [Analyzer] move usage of mostSpecificTypeArgument in strong checker c22c2b7645 Test that set/list if elements/else elements get implicit casts c8c5eff08f [infra] Deflake tests that are both multitests and have multiple VMOptions lines 1bab46b06f [vm] Remove support for '-c', '--checked' flags and '--enable-checked-mode' c614b99ae1 [vm] Load kernel service from ABI versioned dill file 7e170b351d [vm] Add whitespace before parenthesis. b60eae48e5 Test that VM interpreter, bytecode, and unoptimized benchmarks can run. 2631fdf8cf [vm] Reclaim GraphMarked bit. a447b36280 convert: remove private typedefs 485640df2e update scanner tests to use scanString f3ac707aea report error for invalid super/this initializer 4cd410d6ac add parser listener handleErrorToken event 11a148c85e Add the ability to associate a URL with a diagnostic 87c553bf3c Ascribe constants to the member world impacts f141914e65 Cleanup warnings in the analyzer code base ecf5a46c96 [infra] Fix approve_results crashing on approvals for deleted tests. 849e914cb4 [infra] Fix per-CL approval not setting the expires field. 2aed6c0311 [CFE] >>> in fasta 94e214bacc [infra] Fix auto-approval breaking as of per-CL approval. 065910f0c1 [infra] Add support for pre-approvals in approved_results.json. 81b984d735 [gardening] Fix up name detection in isolate tests. 3de6276ad6 Handle deferred constants in the ssa builder 9db4119b67 Combine override checks and override-based inference in one phase 3678efae60 Test that map if elements/else elements keys/values get implicit casts --- DEPS | 2 +- ci/licenses_golden/licenses_third_party | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 7abd1e2c6a22f..911dd348139c3 100644 --- a/DEPS +++ b/DEPS @@ -31,7 +31,7 @@ vars = { # Dart is: https://github.com/dart-lang/sdk/blob/master/DEPS. # You can use //tools/dart/create_updated_flutter_deps.py to produce # updated revision list of existing dependencies. - 'dart_revision': 'fa74184b7aad2a441a23c4c2f4160c09cc69ec32', + 'dart_revision': '093c2909fedaaa4c1cbe21887bfbe97c59be21d2', # WARNING: DO NOT EDIT MANUALLY # The lines between blank lines above and below are generated by a script. See create_updated_flutter_deps.py diff --git a/ci/licenses_golden/licenses_third_party b/ci/licenses_golden/licenses_third_party index d83021c7869ae..1ec8baf2c6bce 100644 --- a/ci/licenses_golden/licenses_third_party +++ b/ci/licenses_golden/licenses_third_party @@ -1,4 +1,4 @@ -Signature: a1b4b559a1f0f48db96b691ff133002c +Signature: 191c43b2cc3260647a4ea7da4169f97e UNUSED LICENSES: From a673bbf6f29294bdd0d05c750f7639d43c0fcaa9 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Mon, 25 Mar 2019 22:48:45 -0400 Subject: [PATCH 1496/1537] Roll src/third_party/skia c5ee499f2c59..80dd599e91d0 (5 commits) (#8301) https://skia.googlesource.com/skia.git/%2Blog/c5ee499f2c59..80dd599e91d0 git log c5ee499f2c5913d0d330bfc76944d2c36dfc8e34..80dd599e91d057009461fd221f29ac56f79dc6c3 --date=short --no-merges --format=%ad %ae %s 2019-03-26 skia-autoroll@skia-public.iam.gserviceaccount.com Roll ../src 40ce19f3a56f..4035f6c897d0 (377 commits) 2019-03-26 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/angle2 9078c6a7199b..da37e7f6759d (5 commits) 2019-03-25 fmalita@chromium.org Make SkShaper available in Fiddle 2019-03-25 recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com Roll recipe dependencies (trivial). 2019-03-25 recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com Roll recipe dependencies (trivial). The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (stani@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 911dd348139c3..715e890b733f4 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'c5ee499f2c5913d0d330bfc76944d2c36dfc8e34', + 'skia_revision': '80dd599e91d057009461fd221f29ac56f79dc6c3', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 8efbd4911880d..b7e299c3b616a 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 0cd6dc53f5ebd38ca3d8943d785b787c +Signature: 31970da31da48bc6885c38d3033f04e3 UNUSED LICENSES: From 2804057bf58b0658c5b4909ffbea335400a71be6 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Tue, 26 Mar 2019 02:20:38 -0400 Subject: [PATCH 1497/1537] Roll src/third_party/skia 80dd599e91d0..33211b2c7a02 (1 commits) (#8303) https://skia.googlesource.com/skia.git/%2Blog/80dd599e91d0..33211b2c7a02 git log 80dd599e91d057009461fd221f29ac56f79dc6c3..33211b2c7a0260d8a1c1a11ef4a11a31d01473a8 --date=short --no-merges --format=%ad %ae %s 2019-03-26 skia-recreate-skps@skia-swarming-bots.iam.gserviceaccount.com Update go_deps asset The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (stani@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 715e890b733f4..cec0d52bca799 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '80dd599e91d057009461fd221f29ac56f79dc6c3', + 'skia_revision': '33211b2c7a0260d8a1c1a11ef4a11a31d01473a8', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index b7e299c3b616a..1adf6aaa4fee2 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 31970da31da48bc6885c38d3033f04e3 +Signature: 8d5e01b5d1b50755ad7bec8a6fcba3d3 UNUSED LICENSES: From 358273bd27d517255d05239ee6dae1c679bd93e0 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Tue, 26 Mar 2019 05:50:24 -0400 Subject: [PATCH 1498/1537] Roll src/third_party/skia 33211b2c7a02..d90004516a63 (1 commits) (#8305) https://skia.googlesource.com/skia.git/%2Blog/33211b2c7a02..d90004516a63 git log 33211b2c7a0260d8a1c1a11ef4a11a31d01473a8..d90004516a63e302ca50dfe9c1c8dddf21e50e1c --date=short --no-merges --format=%ad %ae %s 2019-03-26 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader 221459f4ecc9..e1cf863e65c6 (1 commits) The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (stani@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index cec0d52bca799..5600ddc65f337 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '33211b2c7a0260d8a1c1a11ef4a11a31d01473a8', + 'skia_revision': 'd90004516a63e302ca50dfe9c1c8dddf21e50e1c', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 1adf6aaa4fee2..d626d4bf4c167 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 8d5e01b5d1b50755ad7bec8a6fcba3d3 +Signature: a0b058f2600dce325fcae2092d2eb91f UNUSED LICENSES: From 95f9134e9affdebff024f651cb8107fd3bb47e26 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Tue, 26 Mar 2019 09:19:37 -0400 Subject: [PATCH 1499/1537] Roll src/third_party/skia d90004516a63..62fd6c411622 (4 commits) (#8306) https://skia.googlesource.com/skia.git/%2Blog/d90004516a63..62fd6c411622 git log d90004516a63e302ca50dfe9c1c8dddf21e50e1c..62fd6c4116226f5bb9c4d06c85fb9e549b7b3d5b --date=short --no-merges --format=%ad %ae %s 2019-03-26 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader c0cf68ba0ed6..54ec759a7405 (2 commits) 2019-03-26 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader 7af926603c2d..c0cf68ba0ed6 (3 commits) 2019-03-25 kjlubick@google.com Reland "Generate GrGLInterface and GrGlAssembleInterface* from table" 2019-03-26 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader e1cf863e65c6..7af926603c2d (1 commits) The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (stani@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/DEPS b/DEPS index 5600ddc65f337..a3f29a6d8bc73 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'd90004516a63e302ca50dfe9c1c8dddf21e50e1c', + 'skia_revision': '62fd6c4116226f5bb9c4d06c85fb9e549b7b3d5b', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index d626d4bf4c167..a190fd3969bde 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: a0b058f2600dce325fcae2092d2eb91f +Signature: e3c353b752055b863f6edc51fba4dbed UNUSED LICENSES: @@ -2930,7 +2930,7 @@ FILE: ../../../third_party/skia/src/gpu/gl/GrGLGpu.cpp FILE: ../../../third_party/skia/src/gpu/gl/GrGLGpu.h FILE: ../../../third_party/skia/src/gpu/gl/GrGLGpuProgramCache.cpp FILE: ../../../third_party/skia/src/gpu/gl/GrGLIRect.h -FILE: ../../../third_party/skia/src/gpu/gl/GrGLInterface.cpp +FILE: ../../../third_party/skia/src/gpu/gl/GrGLInterfaceAutogen.cpp FILE: ../../../third_party/skia/src/gpu/gl/GrGLMakeNativeInterface_none.cpp FILE: ../../../third_party/skia/src/gpu/gl/GrGLProgram.cpp FILE: ../../../third_party/skia/src/gpu/gl/GrGLProgram.h @@ -5832,9 +5832,9 @@ FILE: ../../../third_party/skia/modules/particles/src/SkParticleDrawable.cpp FILE: ../../../third_party/skia/modules/particles/src/SkParticleEffect.cpp FILE: ../../../third_party/skia/modules/particles/src/SkReflected.cpp FILE: ../../../third_party/skia/src/core/SkColorFilterPriv.h +FILE: ../../../third_party/skia/src/gpu/gl/GrGLAssembleGLESInterfaceAutogen.cpp +FILE: ../../../third_party/skia/src/gpu/gl/GrGLAssembleGLInterfaceAutogen.cpp FILE: ../../../third_party/skia/src/gpu/gl/GrGLAssembleHelpers.cpp -FILE: ../../../third_party/skia/src/gpu/gl/GrGLAssembleInterface_gl.cpp -FILE: ../../../third_party/skia/src/gpu/gl/GrGLAssembleInterface_gles.cpp FILE: ../../../third_party/skia/src/sksl/SkSLByteCode.h FILE: ../../../third_party/skia/src/sksl/SkSLByteCodeGenerator.cpp FILE: ../../../third_party/skia/src/sksl/SkSLByteCodeGenerator.h From 2812c7db4a97508f2b3bfab2a4db3f8c397bb8b5 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Tue, 26 Mar 2019 13:20:39 -0400 Subject: [PATCH 1500/1537] Roll src/third_party/skia 62fd6c411622..d2ca31218bc4 (9 commits) (#8307) https://skia.googlesource.com/skia.git/%2Blog/62fd6c411622..d2ca31218bc4 git log 62fd6c4116226f5bb9c4d06c85fb9e549b7b3d5b..d2ca31218bc4d06fd3337fb1951ea1800a915f56 --date=short --no-merges --format=%ad %ae %s 2019-03-26 brianosman@google.com Convert GrPorterDuff test from NullGL to Mock context 2019-03-26 brianosman@google.com Run GrTextureMipMapInvalidationTest on rendering contexts 2019-03-26 brianosman@google.com Convert some unit tests from NullGL to Mock context 2019-03-26 rmistry@google.com Detect and fail when invalid SKPs are created by RecreateSKPs bot 2019-03-26 recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com Roll recipe dependencies (trivial). 2019-03-26 rmistry@google.com Fix RecreateSKPs bot page sets 2019-03-26 mtklein@google.com move gpu_tool_utils to public_deps 2019-03-26 nigeltao@google.com Remove unused setAlphaAndRequiredFrame condition 2019-03-26 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader 54ec759a7405..213a8ce6d5c2 (2 commits) The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (stani@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index a3f29a6d8bc73..37798eea81185 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '62fd6c4116226f5bb9c4d06c85fb9e549b7b3d5b', + 'skia_revision': 'd2ca31218bc4d06fd3337fb1951ea1800a915f56', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index a190fd3969bde..a34e50dfd6345 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: e3c353b752055b863f6edc51fba4dbed +Signature: 11cd0788531075042d9be33f624cf021 UNUSED LICENSES: From 78de8dcb42a445f54c5fa2c55feee8b8db0ba493 Mon Sep 17 00:00:00 2001 From: Chinmay Garde Date: Tue, 26 Mar 2019 11:29:08 -0700 Subject: [PATCH 1501/1537] Enable lambda like native callbacks in tests and add support for custom entrypoints. (#8299) --- shell/platform/embedder/BUILD.gn | 2 + shell/platform/embedder/embedder.cc | 7 ++ shell/platform/embedder/embedder.h | 9 ++ .../embedder/fixtures/simple_main.dart | 7 ++ .../embedder/tests/embedder_config_builder.cc | 9 ++ .../embedder/tests/embedder_config_builder.h | 3 + .../embedder/tests/embedder_context.cc | 16 +++- .../embedder/tests/embedder_context.h | 7 ++ .../embedder/tests/embedder_test_resolver.cc | 90 +++++++++++++++++++ .../embedder/tests/embedder_test_resolver.h | 47 ++++++++++ .../embedder/tests/embedder_unittests.cc | 18 +++- 11 files changed, 212 insertions(+), 3 deletions(-) create mode 100644 shell/platform/embedder/tests/embedder_test_resolver.cc create mode 100644 shell/platform/embedder/tests/embedder_test_resolver.h diff --git a/shell/platform/embedder/BUILD.gn b/shell/platform/embedder/BUILD.gn index 5df39518c8b62..f9659a3b5c5fb 100644 --- a/shell/platform/embedder/BUILD.gn +++ b/shell/platform/embedder/BUILD.gn @@ -74,6 +74,8 @@ executable("embedder_unittests") { "tests/embedder_context.h", "tests/embedder_test.cc", "tests/embedder_test.h", + "tests/embedder_test_resolver.cc", + "tests/embedder_test_resolver.h", "tests/embedder_unittests.cc", ] diff --git a/shell/platform/embedder/embedder.cc b/shell/platform/embedder/embedder.cc index 003f40113c419..c15970de70775 100644 --- a/shell/platform/embedder/embedder.cc +++ b/shell/platform/embedder/embedder.cc @@ -624,6 +624,13 @@ FlutterEngineResult FlutterEngineRun(size_t version, // Step 3: Run the engine. auto run_configuration = shell::RunConfiguration::InferFromSettings(settings); + if (SAFE_ACCESS(args, custom_dart_entrypoint, nullptr) != nullptr) { + auto dart_entrypoint = std::string{args->custom_dart_entrypoint}; + if (dart_entrypoint.size() != 0) { + run_configuration.SetEntrypoint(std::move(dart_entrypoint)); + } + } + run_configuration.AddAssetResolver( std::make_unique( fml::Duplicate(settings.assets_dir))); diff --git a/shell/platform/embedder/embedder.h b/shell/platform/embedder/embedder.h index 6127681c55774..442716a50114b 100644 --- a/shell/platform/embedder/embedder.h +++ b/shell/platform/embedder/embedder.h @@ -563,6 +563,15 @@ typedef struct { // internal engine-managed thread. If the components accessed on the embedder // are not thread safe, the appropriate re-threading must be done. VsyncCallback vsync_callback; + + // The name of a custom Dart entrypoint. This is optional and specifying a + // null or empty entrypoint makes the engine look for a method named "main" in + // the root library of the application. + // + // Care must be taken to ensure that the custom entrypoint is not tree-shaken + // away. Usually, this is done using the `@pragma('vm:entry-point')` + // decoration. + const char* custom_dart_entrypoint; } FlutterProjectArgs; FLUTTER_EXPORT diff --git a/shell/platform/embedder/fixtures/simple_main.dart b/shell/platform/embedder/fixtures/simple_main.dart index ab73b3a234abf..b1124b508b7e3 100644 --- a/shell/platform/embedder/fixtures/simple_main.dart +++ b/shell/platform/embedder/fixtures/simple_main.dart @@ -1 +1,8 @@ void main() {} + +@pragma('vm:entry-point') +void customEntrypoint() { + sayHiFromCustomEntrypoint(); +} + +void sayHiFromCustomEntrypoint() native "SayHiFromCustomEntrypoint"; diff --git a/shell/platform/embedder/tests/embedder_config_builder.cc b/shell/platform/embedder/tests/embedder_config_builder.cc index c93886b1133c6..23ef27cd3c954 100644 --- a/shell/platform/embedder/tests/embedder_config_builder.cc +++ b/shell/platform/embedder/tests/embedder_config_builder.cc @@ -62,6 +62,15 @@ void EmbedderConfigBuilder::SetIsolateCreateCallbackHook() { EmbedderContext::GetIsolateCreateCallbackHook(); } +void EmbedderConfigBuilder::SetDartEntrypoint(std::string entrypoint) { + if (entrypoint.size() == 0) { + return; + } + + dart_entrypoint_ = std::move(entrypoint); + project_args_.custom_dart_entrypoint = dart_entrypoint_.c_str(); +} + UniqueEngine EmbedderConfigBuilder::LaunchEngine() const { FlutterEngine engine = nullptr; auto result = FlutterEngineRun(FLUTTER_ENGINE_VERSION, &renderer_config_, diff --git a/shell/platform/embedder/tests/embedder_config_builder.h b/shell/platform/embedder/tests/embedder_config_builder.h index 34dca1aed9f44..b76edb98734b9 100644 --- a/shell/platform/embedder/tests/embedder_config_builder.h +++ b/shell/platform/embedder/tests/embedder_config_builder.h @@ -48,6 +48,8 @@ class EmbedderConfigBuilder { void SetIsolateCreateCallbackHook(); + void SetDartEntrypoint(std::string entrypoint); + UniqueEngine LaunchEngine() const; private: @@ -55,6 +57,7 @@ class EmbedderConfigBuilder { FlutterProjectArgs project_args_ = {}; FlutterRendererConfig renderer_config_ = {}; FlutterSoftwareRendererConfig software_renderer_config_ = {}; + std::string dart_entrypoint_; FML_DISALLOW_COPY_AND_ASSIGN(EmbedderConfigBuilder); }; diff --git a/shell/platform/embedder/tests/embedder_context.cc b/shell/platform/embedder/tests/embedder_context.cc index 57b4335e661ac..edb72ff4c2f24 100644 --- a/shell/platform/embedder/tests/embedder_context.cc +++ b/shell/platform/embedder/tests/embedder_context.cc @@ -36,7 +36,8 @@ static std::unique_ptr GetMapping(const fml::UniqueFD& directory, } EmbedderContext::EmbedderContext(std::string assets_path) - : assets_path_(std::move(assets_path)) { + : assets_path_(std::move(assets_path)), + native_resolver_(std::make_shared()) { auto assets_dir = fml::OpenDirectory(assets_path_.c_str(), false, fml::FilePermission::kRead); vm_snapshot_data_ = GetMapping(assets_dir, "vm_snapshot_data", false); @@ -49,6 +50,14 @@ EmbedderContext::EmbedderContext(std::string assets_path) isolate_snapshot_instructions_ = GetMapping(assets_dir, "isolate_snapshot_instr", true); } + + isolate_create_callbacks_.push_back( + [weak_resolver = + std::weak_ptr{native_resolver_}]() { + if (auto resolver = weak_resolver.lock()) { + resolver->SetNativeResolverForIsolate(); + } + }); } EmbedderContext::~EmbedderContext() = default; @@ -91,5 +100,10 @@ void EmbedderContext::FireIsolateCreateCallbacks() { } } +void EmbedderContext::AddNativeCallback(const char* name, + Dart_NativeFunction function) { + native_resolver_->AddNativeCallback({name}, function); +} + } // namespace testing } // namespace shell diff --git a/shell/platform/embedder/tests/embedder_context.h b/shell/platform/embedder/tests/embedder_context.h index 63aec332b2a0e..6405163d9cd6a 100644 --- a/shell/platform/embedder/tests/embedder_context.h +++ b/shell/platform/embedder/tests/embedder_context.h @@ -5,6 +5,7 @@ #ifndef FLUTTER_SHELL_PLATFORM_EMBEDDER_TESTS_EMBEDDER_CONTEXT_H_ #define FLUTTER_SHELL_PLATFORM_EMBEDDER_TESTS_EMBEDDER_CONTEXT_H_ +#include #include #include #include @@ -13,6 +14,7 @@ #include "flutter/fml/macros.h" #include "flutter/fml/mapping.h" #include "flutter/shell/platform/embedder/embedder.h" +#include "flutter/shell/platform/embedder/tests/embedder_test_resolver.h" namespace shell { namespace testing { @@ -35,6 +37,8 @@ class EmbedderContext { void AddIsolateCreateCallback(fml::closure closure); + void AddNativeCallback(const char* name, Dart_NativeFunction function); + private: // This allows the builder to access the hooks. friend class EmbedderConfigBuilder; @@ -45,11 +49,14 @@ class EmbedderContext { std::unique_ptr isolate_snapshot_data_; std::unique_ptr isolate_snapshot_instructions_; std::vector isolate_create_callbacks_; + std::shared_ptr native_resolver_; static VoidCallback GetIsolateCreateCallbackHook(); void FireIsolateCreateCallbacks(); + void SetNativeResolver(); + FML_DISALLOW_COPY_AND_ASSIGN(EmbedderContext); }; diff --git a/shell/platform/embedder/tests/embedder_test_resolver.cc b/shell/platform/embedder/tests/embedder_test_resolver.cc new file mode 100644 index 0000000000000..49171a91df23c --- /dev/null +++ b/shell/platform/embedder/tests/embedder_test_resolver.cc @@ -0,0 +1,90 @@ +// 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/platform/embedder/tests/embedder_test_resolver.h" + +#include +#include + +#include "flutter/fml/synchronization/thread_annotations.h" +#include "tonic/converter/dart_converter.h" + +namespace shell { +namespace testing { + +EmbedderTestResolver::EmbedderTestResolver() = default; + +EmbedderTestResolver::~EmbedderTestResolver() = default; + +void EmbedderTestResolver::AddNativeCallback(std::string name, + Dart_NativeFunction callback) { + native_callbacks_[name] = callback; +} + +Dart_NativeFunction EmbedderTestResolver::ResolveCallback( + std::string name) const { + auto found = native_callbacks_.find(name); + if (found == native_callbacks_.end()) { + return nullptr; + } + + return found->second; +} + +static std::mutex gIsolateResolversMutex; +static std::map> + gIsolateResolvers FML_GUARDED_BY(gIsolateResolversMutex); + +Dart_NativeFunction EmbedderTestResolver::DartNativeEntryResolverCallback( + Dart_Handle dart_name, + int num_of_arguments, + bool* auto_setup_scope) { + auto name = tonic::StdStringFromDart(dart_name); + + std::lock_guard lock(gIsolateResolversMutex); + auto found = gIsolateResolvers.find(Dart_CurrentIsolate()); + if (found == gIsolateResolvers.end()) { + return nullptr; + } + + if (auto resolver = found->second.lock()) { + return resolver->ResolveCallback(std::move(name)); + } else { + gIsolateResolvers.erase(found); + } + + return nullptr; +} + +static const uint8_t* DartNativeEntrySymbolCallback( + Dart_NativeFunction function) { + return reinterpret_cast("¯\\_(ツ)_/¯"); +} + +void EmbedderTestResolver::SetNativeResolverForIsolate() { + auto result = Dart_SetNativeResolver(Dart_RootLibrary(), + DartNativeEntryResolverCallback, + DartNativeEntrySymbolCallback); + + if (Dart_IsError(result)) { + return; + } + + std::lock_guard lock(gIsolateResolversMutex); + gIsolateResolvers[Dart_CurrentIsolate()] = shared_from_this(); + + std::vector isolates_with_dead_resolvers; + for (const auto& entry : gIsolateResolvers) { + if (!entry.second.lock()) { + isolates_with_dead_resolvers.push_back(entry.first); + } + } + + for (const auto& dead_isolate : isolates_with_dead_resolvers) { + gIsolateResolvers.erase(dead_isolate); + } +} + +} // namespace testing +} // namespace shell diff --git a/shell/platform/embedder/tests/embedder_test_resolver.h b/shell/platform/embedder/tests/embedder_test_resolver.h new file mode 100644 index 0000000000000..69d08efe1042d --- /dev/null +++ b/shell/platform/embedder/tests/embedder_test_resolver.h @@ -0,0 +1,47 @@ +// 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. + +#ifndef FLUTTER_SHELL_PLATFORM_EMBEDDER_TESTS_EMBEDDER_TEST_RESOLVER_H_ +#define FLUTTER_SHELL_PLATFORM_EMBEDDER_TESTS_EMBEDDER_TEST_RESOLVER_H_ + +#include +#include + +#include "flutter/fml/macros.h" +#include "third_party/dart/runtime/include/dart_api.h" + +namespace shell { +namespace testing { + +class EmbedderTestResolver + : public std::enable_shared_from_this { + public: + EmbedderTestResolver(); + + ~EmbedderTestResolver(); + + void AddNativeCallback(std::string name, Dart_NativeFunction callback); + + private: + // Friend so that the context can set the native resolver. + friend class EmbedderContext; + + std::map native_callbacks_; + + void SetNativeResolverForIsolate(); + + Dart_NativeFunction ResolveCallback(std::string name) const; + + static Dart_NativeFunction DartNativeEntryResolverCallback( + Dart_Handle dart_name, + int num_of_arguments, + bool* auto_setup_scope); + + FML_DISALLOW_COPY_AND_ASSIGN(EmbedderTestResolver); +}; + +} // namespace testing +} // namespace shell + +#endif // FLUTTER_SHELL_PLATFORM_EMBEDDER_TESTS_EMBEDDER_TEST_RESOLVER_H_ diff --git a/shell/platform/embedder/tests/embedder_unittests.cc b/shell/platform/embedder/tests/embedder_unittests.cc index eda64316a016b..01d23ff0d885f 100644 --- a/shell/platform/embedder/tests/embedder_unittests.cc +++ b/shell/platform/embedder/tests/embedder_unittests.cc @@ -38,12 +38,26 @@ TEST_F(EmbedderTest, CanLaunchAndShutdownWithValidProjectArgs) { TEST_F(EmbedderTest, CanLaunchAndShutdownMultipleTimes) { EmbedderConfigBuilder builder(GetEmbedderContext()); - for (size_t i = 0; i < 100; ++i) { + for (size_t i = 0; i < 3; ++i) { auto engine = builder.LaunchEngine(); ASSERT_TRUE(engine.is_valid()); FML_LOG(INFO) << "Engine launch count: " << i + 1; } } +TEST_F(EmbedderTest, CanInvokeCustomEntrypoint) { + auto& context = GetEmbedderContext(); + static fml::AutoResetWaitableEvent latch; + Dart_NativeFunction entrypoint = [](Dart_NativeArguments args) { + latch.Signal(); + }; + context.AddNativeCallback("SayHiFromCustomEntrypoint", entrypoint); + EmbedderConfigBuilder builder(context); + builder.SetDartEntrypoint("customEntrypoint"); + auto engine = builder.LaunchEngine(); + latch.Wait(); + ASSERT_TRUE(engine.is_valid()); +} + } // namespace testing -} // namespace shell \ No newline at end of file +} // namespace shell From 51f23fedf2437f830a00aacfadd84a0808185df7 Mon Sep 17 00:00:00 2001 From: Craig Stout Date: Mon, 25 Mar 2019 10:25:32 -0700 Subject: [PATCH 1502/1537] [vulkan] Add FUCHSIA external sem/mem extensions The KHR versions will be renamed once references are removed. MA-510 #comment --- vulkan/vulkan_device.cc | 2 ++ vulkan/vulkan_proc_table.cc | 2 ++ vulkan/vulkan_proc_table.h | 2 ++ 3 files changed, 6 insertions(+) diff --git a/vulkan/vulkan_device.cc b/vulkan/vulkan_device.cc index 772b1909225af..3be8c340cdaaa 100644 --- a/vulkan/vulkan_device.cc +++ b/vulkan/vulkan_device.cc @@ -64,8 +64,10 @@ VulkanDevice::VulkanDevice(VulkanProcTable& p_vk, #if OS_FUCHSIA VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME, VK_KHR_EXTERNAL_MEMORY_FUCHSIA_EXTENSION_NAME, + VK_FUCHSIA_EXTERNAL_MEMORY_EXTENSION_NAME, VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME, VK_KHR_EXTERNAL_SEMAPHORE_FUCHSIA_EXTENSION_NAME, + VK_FUCHSIA_EXTERNAL_SEMAPHORE_EXTENSION_NAME, #endif }; diff --git a/vulkan/vulkan_proc_table.cc b/vulkan/vulkan_proc_table.cc index b94e1ab4b23db..7b551f3d55003 100644 --- a/vulkan/vulkan_proc_table.cc +++ b/vulkan/vulkan_proc_table.cc @@ -139,6 +139,8 @@ bool VulkanProcTable::SetupDeviceProcAddresses( #if OS_FUCHSIA ACQUIRE_PROC(GetMemoryFuchsiaHandleKHR, handle); ACQUIRE_PROC(ImportSemaphoreFuchsiaHandleKHR, handle); + ACQUIRE_PROC(GetMemoryZirconHandleFUCHSIA, handle); + ACQUIRE_PROC(ImportSemaphoreZirconHandleFUCHSIA, handle); #endif // OS_FUCHSIA device_ = {handle, nullptr}; return true; diff --git a/vulkan/vulkan_proc_table.h b/vulkan/vulkan_proc_table.h index d145150bcf84c..9f06402e3dd30 100644 --- a/vulkan/vulkan_proc_table.h +++ b/vulkan/vulkan_proc_table.h @@ -117,6 +117,8 @@ class VulkanProcTable : public fml::RefCountedThreadSafe { #if OS_FUCHSIA DEFINE_PROC(GetMemoryFuchsiaHandleKHR); DEFINE_PROC(ImportSemaphoreFuchsiaHandleKHR); + DEFINE_PROC(GetMemoryZirconHandleFUCHSIA); + DEFINE_PROC(ImportSemaphoreZirconHandleFUCHSIA); #endif // OS_FUCHSIA #undef DEFINE_PROC From 400a86a62efd3c8504672b8a63323cc837282135 Mon Sep 17 00:00:00 2001 From: Chinmay Garde Date: Tue, 26 Mar 2019 12:56:23 -0700 Subject: [PATCH 1503/1537] Allow specification of std::functions as native entrypoints from Dart code. (#8309) This allows for the specification of std::functions (using EmbedderContext::NativeEntry) with their captures as native entrypoints. Earlier, only C functions we allowed which meant that there were no captures and assertions had to use globals which could introduce bugs when used with gtest_repeat. --- .../embedder/fixtures/simple_main.dart | 12 ++++++ .../embedder/tests/embedder_context.h | 12 ++++++ .../embedder/tests/embedder_unittests.cc | 40 +++++++++++++++++++ 3 files changed, 64 insertions(+) diff --git a/shell/platform/embedder/fixtures/simple_main.dart b/shell/platform/embedder/fixtures/simple_main.dart index b1124b508b7e3..bd3999563e031 100644 --- a/shell/platform/embedder/fixtures/simple_main.dart +++ b/shell/platform/embedder/fixtures/simple_main.dart @@ -6,3 +6,15 @@ void customEntrypoint() { } void sayHiFromCustomEntrypoint() native "SayHiFromCustomEntrypoint"; + + +@pragma('vm:entry-point') +void customEntrypoint1() { + sayHiFromCustomEntrypoint1(); + sayHiFromCustomEntrypoint2(); + sayHiFromCustomEntrypoint3(); +} + +void sayHiFromCustomEntrypoint1() native "SayHiFromCustomEntrypoint1"; +void sayHiFromCustomEntrypoint2() native "SayHiFromCustomEntrypoint2"; +void sayHiFromCustomEntrypoint3() native "SayHiFromCustomEntrypoint3"; diff --git a/shell/platform/embedder/tests/embedder_context.h b/shell/platform/embedder/tests/embedder_context.h index 6405163d9cd6a..9c83c3935397b 100644 --- a/shell/platform/embedder/tests/embedder_context.h +++ b/shell/platform/embedder/tests/embedder_context.h @@ -16,11 +16,23 @@ #include "flutter/shell/platform/embedder/embedder.h" #include "flutter/shell/platform/embedder/tests/embedder_test_resolver.h" +#define CREATE_NATIVE_ENTRY(native_entry) \ + ({ \ + static ::shell::testing::EmbedderContext::NativeEntry closure; \ + static Dart_NativeFunction entrypoint = [](Dart_NativeArguments args) { \ + closure(args); \ + }; \ + closure = (native_entry); \ + entrypoint; \ + }) + namespace shell { namespace testing { class EmbedderContext { public: + using NativeEntry = std::function; + EmbedderContext(std::string assets_path = ""); ~EmbedderContext(); diff --git a/shell/platform/embedder/tests/embedder_unittests.cc b/shell/platform/embedder/tests/embedder_unittests.cc index 01d23ff0d885f..6bad99a39dd0c 100644 --- a/shell/platform/embedder/tests/embedder_unittests.cc +++ b/shell/platform/embedder/tests/embedder_unittests.cc @@ -59,5 +59,45 @@ TEST_F(EmbedderTest, CanInvokeCustomEntrypoint) { ASSERT_TRUE(engine.is_valid()); } +TEST_F(EmbedderTest, CanInvokeCustomEntrypointMacro) { + auto& context = GetEmbedderContext(); + + fml::AutoResetWaitableEvent latch1; + fml::AutoResetWaitableEvent latch2; + fml::AutoResetWaitableEvent latch3; + + // Can be defined separately. + auto entry1 = [&latch1](Dart_NativeArguments args) { + FML_LOG(ERROR) << "In Callback 1"; + latch1.Signal(); + }; + auto native_entry1 = CREATE_NATIVE_ENTRY(entry1); + context.AddNativeCallback("SayHiFromCustomEntrypoint1", native_entry1); + + // Can be wrapped in in the args. + auto entry2 = [&latch2](Dart_NativeArguments args) { + FML_LOG(ERROR) << "In Callback 2"; + latch2.Signal(); + }; + context.AddNativeCallback("SayHiFromCustomEntrypoint2", + CREATE_NATIVE_ENTRY(entry2)); + + // Everything can be inline. + context.AddNativeCallback( + "SayHiFromCustomEntrypoint3", + CREATE_NATIVE_ENTRY([&latch3](Dart_NativeArguments args) { + FML_LOG(ERROR) << "In Callback 3"; + latch3.Signal(); + })); + + EmbedderConfigBuilder builder(context); + builder.SetDartEntrypoint("customEntrypoint1"); + auto engine = builder.LaunchEngine(); + latch1.Wait(); + latch2.Wait(); + latch3.Wait(); + ASSERT_TRUE(engine.is_valid()); +} + } // namespace testing } // namespace shell From 7e77d5c484a08cc1c189619e80ae71a7f1df62fb Mon Sep 17 00:00:00 2001 From: Chinmay Garde Date: Tue, 26 Mar 2019 13:49:41 -0700 Subject: [PATCH 1504/1537] Revert "Allow specification of std::functions as native entrypoints from Dart code. (#8309)" (#8312) This reverts commit 400a86a62efd3c8504672b8a63323cc837282135. --- .../embedder/fixtures/simple_main.dart | 12 ------ .../embedder/tests/embedder_context.h | 12 ------ .../embedder/tests/embedder_unittests.cc | 40 ------------------- 3 files changed, 64 deletions(-) diff --git a/shell/platform/embedder/fixtures/simple_main.dart b/shell/platform/embedder/fixtures/simple_main.dart index bd3999563e031..b1124b508b7e3 100644 --- a/shell/platform/embedder/fixtures/simple_main.dart +++ b/shell/platform/embedder/fixtures/simple_main.dart @@ -6,15 +6,3 @@ void customEntrypoint() { } void sayHiFromCustomEntrypoint() native "SayHiFromCustomEntrypoint"; - - -@pragma('vm:entry-point') -void customEntrypoint1() { - sayHiFromCustomEntrypoint1(); - sayHiFromCustomEntrypoint2(); - sayHiFromCustomEntrypoint3(); -} - -void sayHiFromCustomEntrypoint1() native "SayHiFromCustomEntrypoint1"; -void sayHiFromCustomEntrypoint2() native "SayHiFromCustomEntrypoint2"; -void sayHiFromCustomEntrypoint3() native "SayHiFromCustomEntrypoint3"; diff --git a/shell/platform/embedder/tests/embedder_context.h b/shell/platform/embedder/tests/embedder_context.h index 9c83c3935397b..6405163d9cd6a 100644 --- a/shell/platform/embedder/tests/embedder_context.h +++ b/shell/platform/embedder/tests/embedder_context.h @@ -16,23 +16,11 @@ #include "flutter/shell/platform/embedder/embedder.h" #include "flutter/shell/platform/embedder/tests/embedder_test_resolver.h" -#define CREATE_NATIVE_ENTRY(native_entry) \ - ({ \ - static ::shell::testing::EmbedderContext::NativeEntry closure; \ - static Dart_NativeFunction entrypoint = [](Dart_NativeArguments args) { \ - closure(args); \ - }; \ - closure = (native_entry); \ - entrypoint; \ - }) - namespace shell { namespace testing { class EmbedderContext { public: - using NativeEntry = std::function; - EmbedderContext(std::string assets_path = ""); ~EmbedderContext(); diff --git a/shell/platform/embedder/tests/embedder_unittests.cc b/shell/platform/embedder/tests/embedder_unittests.cc index 6bad99a39dd0c..01d23ff0d885f 100644 --- a/shell/platform/embedder/tests/embedder_unittests.cc +++ b/shell/platform/embedder/tests/embedder_unittests.cc @@ -59,45 +59,5 @@ TEST_F(EmbedderTest, CanInvokeCustomEntrypoint) { ASSERT_TRUE(engine.is_valid()); } -TEST_F(EmbedderTest, CanInvokeCustomEntrypointMacro) { - auto& context = GetEmbedderContext(); - - fml::AutoResetWaitableEvent latch1; - fml::AutoResetWaitableEvent latch2; - fml::AutoResetWaitableEvent latch3; - - // Can be defined separately. - auto entry1 = [&latch1](Dart_NativeArguments args) { - FML_LOG(ERROR) << "In Callback 1"; - latch1.Signal(); - }; - auto native_entry1 = CREATE_NATIVE_ENTRY(entry1); - context.AddNativeCallback("SayHiFromCustomEntrypoint1", native_entry1); - - // Can be wrapped in in the args. - auto entry2 = [&latch2](Dart_NativeArguments args) { - FML_LOG(ERROR) << "In Callback 2"; - latch2.Signal(); - }; - context.AddNativeCallback("SayHiFromCustomEntrypoint2", - CREATE_NATIVE_ENTRY(entry2)); - - // Everything can be inline. - context.AddNativeCallback( - "SayHiFromCustomEntrypoint3", - CREATE_NATIVE_ENTRY([&latch3](Dart_NativeArguments args) { - FML_LOG(ERROR) << "In Callback 3"; - latch3.Signal(); - })); - - EmbedderConfigBuilder builder(context); - builder.SetDartEntrypoint("customEntrypoint1"); - auto engine = builder.LaunchEngine(); - latch1.Wait(); - latch2.Wait(); - latch3.Wait(); - ASSERT_TRUE(engine.is_valid()); -} - } // namespace testing } // namespace shell From 80b825ce80267889afac96d5d3eb1d8d0b0ccea4 Mon Sep 17 00:00:00 2001 From: Ben Konyi Date: Tue, 26 Mar 2019 14:36:25 -0700 Subject: [PATCH 1505/1537] Roll src/third_party/dart 093c2909fe..f3fd1943fc (13 commits) (#8310) f3fd1943fc [vm/ffi] Update status file for FFI sqlite sample. 28a2416320 Fix sqlite sample import. f135a49861 [doc] dart:ffi SQLite sample 69079303cf [infra] Add a shard to the FFI builders. 1af9f99a5f [cfe] Compile loops in map literals 4c48062955 [CFE] Fail silently on invalid constructs during constant evaluation. a8e51c5868 Bypass use of dart2js_platform.dill when experimental flags are non-default b2a2c088d3 [infra] Add --apply-changelist option to apply_preapprovals. ac21076110 [cfe] Implement compilation of loops in lists and sets 0a3cd80d41 Reland "Change default of 'keepFields' in constant transformation to true" 12d789fa52 [cfe] Update test status files e5374a688c [cfe] Add front-end support for for and for-in 432e5faeda [VM / Service] Update core library source loading to use resolved_url --- DEPS | 2 +- ci/licenses_golden/licenses_third_party | 14 +++++++++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 37798eea81185..c6117dda55ec5 100644 --- a/DEPS +++ b/DEPS @@ -31,7 +31,7 @@ vars = { # Dart is: https://github.com/dart-lang/sdk/blob/master/DEPS. # You can use //tools/dart/create_updated_flutter_deps.py to produce # updated revision list of existing dependencies. - 'dart_revision': '093c2909fedaaa4c1cbe21887bfbe97c59be21d2', + 'dart_revision': 'f3fd1943fcbc7821859dcbcd8973944478c3e902', # WARNING: DO NOT EDIT MANUALLY # The lines between blank lines above and below are generated by a script. See create_updated_flutter_deps.py diff --git a/ci/licenses_golden/licenses_third_party b/ci/licenses_golden/licenses_third_party index 1ec8baf2c6bce..460a46d6fd37c 100644 --- a/ci/licenses_golden/licenses_third_party +++ b/ci/licenses_golden/licenses_third_party @@ -1,4 +1,4 @@ -Signature: 191c43b2cc3260647a4ea7da4169f97e +Signature: f161b2aef0c1e3da3efbff25e2c31298 UNUSED LICENSES: @@ -4609,6 +4609,17 @@ FILE: ../../../third_party/dart/runtime/observatory/web/index.html FILE: ../../../third_party/dart/runtime/observatory/web/third_party/trace_viewer_full.html FILE: ../../../third_party/dart/runtime/observatory/web/timeline.html FILE: ../../../third_party/dart/runtime/vm/snapshot_test_in.dat +FILE: ../../../third_party/dart/samples/ffi/sqlite/docs/lib/scenario-default.svg +FILE: ../../../third_party/dart/samples/ffi/sqlite/docs/lib/scenario-full.svg +FILE: ../../../third_party/dart/samples/ffi/sqlite/lib/sqlite.dart +FILE: ../../../third_party/dart/samples/ffi/sqlite/lib/src/bindings/bindings.dart +FILE: ../../../third_party/dart/samples/ffi/sqlite/lib/src/bindings/constants.dart +FILE: ../../../third_party/dart/samples/ffi/sqlite/lib/src/bindings/signatures.dart +FILE: ../../../third_party/dart/samples/ffi/sqlite/lib/src/bindings/types.dart +FILE: ../../../third_party/dart/samples/ffi/sqlite/lib/src/collections/closable_iterator.dart +FILE: ../../../third_party/dart/samples/ffi/sqlite/lib/src/database.dart +FILE: ../../../third_party/dart/samples/ffi/sqlite/lib/src/ffi/arena.dart +FILE: ../../../third_party/dart/samples/ffi/sqlite/lib/src/ffi/cstring.dart FILE: ../../../third_party/dart/sdk/lib/html/html_common/conversions_dart2js.dart FILE: ../../../third_party/dart/sdk/lib/html/html_common/html_common.dart FILE: ../../../third_party/dart/sdk/lib/libraries.json @@ -5192,6 +5203,7 @@ FILE: ../../../third_party/dart/samples/ffi/sample_ffi_functions.dart FILE: ../../../third_party/dart/samples/ffi/sample_ffi_functions_callbacks.dart FILE: ../../../third_party/dart/samples/ffi/sample_ffi_functions_structs.dart FILE: ../../../third_party/dart/samples/ffi/sample_ffi_structs.dart +FILE: ../../../third_party/dart/samples/ffi/sqlite/lib/src/ffi/dylib_utils.dart FILE: ../../../third_party/dart/sdk/lib/ffi/annotations.dart FILE: ../../../third_party/dart/sdk/lib/ffi/dynamic_library.dart FILE: ../../../third_party/dart/sdk/lib/ffi/ffi.dart From f521df383909cf2a3011f552fc574184c96d92dc Mon Sep 17 00:00:00 2001 From: Ben Konyi Date: Tue, 26 Mar 2019 14:36:51 -0700 Subject: [PATCH 1506/1537] Fixed service isolate not being initialized correctly due to bad name (#8251) * Fixed service isolate not being initialized correctly due to bad name The name for the service isolate was being set to the empty string, causing the microtask loop to not be run on the service isolate leading to the service hanging on the first 'await'. See https://dart-review.googlesource.com/c/sdk/+/97107 for revert due to this issue. * Removed unnecessary params from DartCreateAndStartServiceIsolate --- runtime/dart_isolate.cc | 35 ++++++++++++++--------------------- runtime/dart_isolate.h | 2 -- 2 files changed, 14 insertions(+), 23 deletions(-) diff --git a/runtime/dart_isolate.cc b/runtime/dart_isolate.cc index 4340ccdc3918c..8d53f3b13ea62 100644 --- a/runtime/dart_isolate.cc +++ b/runtime/dart_isolate.cc @@ -487,8 +487,6 @@ bool DartIsolate::Shutdown() { } Dart_Isolate DartIsolate::DartCreateAndStartServiceIsolate( - const char* advisory_script_uri, - const char* advisory_script_entrypoint, const char* package_root, const char* package_config, Dart_IsolateFlags* flags, @@ -517,19 +515,16 @@ Dart_Isolate DartIsolate::DartCreateAndStartServiceIsolate( std::weak_ptr weak_service_isolate = DartIsolate::CreateRootIsolate( - vm.get(), // vm - vm->GetIsolateSnapshot(), // isolate snapshot - vm->GetSharedSnapshot(), // shared snapshot - null_task_runners, // task runners - nullptr, // window - {}, // snapshot delegate - {}, // IO Manager - advisory_script_uri == nullptr ? "" - : advisory_script_uri, // script uri - advisory_script_entrypoint == nullptr - ? "" - : advisory_script_entrypoint, // script entrypoint - flags // flags + vm.get(), // vm + vm->GetIsolateSnapshot(), // isolate snapshot + vm->GetSharedSnapshot(), // shared snapshot + null_task_runners, // task runners + nullptr, // window + {}, // snapshot delegate + {}, // IO Manager + DART_VM_SERVICE_ISOLATE_NAME, // script uri + DART_VM_SERVICE_ISOLATE_NAME, // script entrypoint + flags // flags ); std::shared_ptr service_isolate = weak_service_isolate.lock(); @@ -573,12 +568,10 @@ Dart_Isolate DartIsolate::DartIsolateCreateCallback( // DART_VM_SERVICE_ISOLATE_NAME. In such cases, we just create the service // isolate like normal but dont hold a reference to it at all. We also start // this isolate since we will never again reference it from the engine. - return DartCreateAndStartServiceIsolate(advisory_script_uri, // - advisory_script_entrypoint, // - package_root, // - package_config, // - flags, // - error // + return DartCreateAndStartServiceIsolate(package_root, // + package_config, // + flags, // + error // ); } diff --git a/runtime/dart_isolate.h b/runtime/dart_isolate.h index bcd90a80d112a..d720deafed142 100644 --- a/runtime/dart_isolate.h +++ b/runtime/dart_isolate.h @@ -138,8 +138,6 @@ class DartIsolate : public UIDartState { char** error); static Dart_Isolate DartCreateAndStartServiceIsolate( - const char* advisory_script_uri, - const char* advisory_script_entrypoint, const char* package_root, const char* package_config, Dart_IsolateFlags* flags, From f64ee01e185d4e1f9a1c6569c64466333def6980 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Tue, 26 Mar 2019 17:47:49 -0400 Subject: [PATCH 1507/1537] Roll src/third_party/skia d2ca31218bc4..45d5f702133e (11 commits) (#8315) https://skia.googlesource.com/skia.git/%2Blog/d2ca31218bc4..45d5f702133e git log d2ca31218bc4d06fd3337fb1951ea1800a915f56..45d5f702133e8c122e46ab14863a3f3df481c974 --date=short --no-merges --format=%ad %ae %s 2019-03-26 rmistry@google.com Fix RecreateSKPs bot page sets II 2019-03-26 csmartdalton@google.com Add MSAA and non-aa modes to GrFillRRect Op 2019-03-26 fmalita@chromium.org [skottie] Relocate text shaping utils to separate compilation unit 2019-03-26 mtklein@google.com quiet down SkFontHost_FreeType debug logs 2019-03-26 jvanverth@google.com Fix BGRA GL texture format on iOS 2019-03-22 michaelludwig@google.com Remove old experimental SkiaRenderer APIs 2019-03-26 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader 213a8ce6d5c2..cc6473f7d80d (4 commits) 2019-03-26 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/angle2 da37e7f6759d..a47e2a23ab4c (2 commits) 2019-03-26 recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com Roll recipe dependencies (trivial). 2019-03-26 robertphillips@google.com Revert "Fix bug in GrResourceAllocator's intermediate flushing" 2019-03-26 robertphillips@google.com Fix bug in GrResourceAllocator's intermediate flushing The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (stani@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index c6117dda55ec5..497e7246d3ac9 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'd2ca31218bc4d06fd3337fb1951ea1800a915f56', + 'skia_revision': '45d5f702133e8c122e46ab14863a3f3df481c974', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index a34e50dfd6345..dd7b404db5130 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 11cd0788531075042d9be33f624cf021 +Signature: 3f67afb6ad8082e084c9cf85aa354b97 UNUSED LICENSES: @@ -4572,6 +4572,8 @@ FILE: ../../../third_party/skia/include/private/GrContext_Base.h FILE: ../../../third_party/skia/include/private/GrImageContext.h FILE: ../../../third_party/skia/include/private/GrRecordingContext.h FILE: ../../../third_party/skia/include/private/SkVx.h +FILE: ../../../third_party/skia/modules/skottie/src/SkottieShaper.cpp +FILE: ../../../third_party/skia/modules/skottie/src/SkottieShaper.h FILE: ../../../third_party/skia/modules/sksg/include/SkSGRenderEffect.h FILE: ../../../third_party/skia/modules/sksg/src/SkSGRenderEffect.cpp FILE: ../../../third_party/skia/modules/sksg/src/SkSGTransformPriv.h From fd7d7fa5a057aa40c1e26af461117723bfe19566 Mon Sep 17 00:00:00 2001 From: Chris Yang Date: Tue, 26 Mar 2019 16:04:42 -0700 Subject: [PATCH 1508/1537] Add a11y support for embedded iOS platform view (#8156) Follow up the framework change in flutter/flutter#29304. Inject the accessibility element tree in the semantic node if the node is for platform views. flutter/flutter#29302 --- lib/ui/semantics/semantics_node.cc | 6 ++ lib/ui/semantics/semantics_node.h | 3 + .../framework/Source/FlutterPlatformViews.mm | 7 ++ .../Source/FlutterPlatformViews_Internal.h | 7 ++ .../framework/Source/accessibility_bridge.h | 33 ++++++++- .../framework/Source/accessibility_bridge.mm | 68 ++++++++++++++++++- .../platform/darwin/ios/platform_view_ios.mm | 6 +- 7 files changed, 124 insertions(+), 6 deletions(-) diff --git a/lib/ui/semantics/semantics_node.cc b/lib/ui/semantics/semantics_node.cc index cb655bdde8831..fd44758aa31a9 100644 --- a/lib/ui/semantics/semantics_node.cc +++ b/lib/ui/semantics/semantics_node.cc @@ -8,6 +8,8 @@ namespace blink { +constexpr int32_t kMinPlatfromViewId = -1; + SemanticsNode::SemanticsNode() = default; SemanticsNode::SemanticsNode(const SemanticsNode& other) = default; @@ -22,4 +24,8 @@ bool SemanticsNode::HasFlag(SemanticsFlags flag) { return (flags & static_cast(flag)) != 0; } +bool SemanticsNode::IsPlatformViewNode() const { + return platformViewId > kMinPlatfromViewId; +} + } // namespace blink diff --git a/lib/ui/semantics/semantics_node.h b/lib/ui/semantics/semantics_node.h index 16a87a32d9c07..6d570b42c75a9 100644 --- a/lib/ui/semantics/semantics_node.h +++ b/lib/ui/semantics/semantics_node.h @@ -81,6 +81,9 @@ struct SemanticsNode { bool HasAction(SemanticsAction action); bool HasFlag(SemanticsFlags flag); + // Whether this node is for embeded platform views. + bool IsPlatformViewNode() const; + int32_t id = 0; int32_t flags = 0; int32_t actions = 0; diff --git a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm index 4eb773532a183..d3c42ed446b07 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm @@ -165,6 +165,13 @@ composition_order_.push_back(view_id); } +NSObject* FlutterPlatformViewsController::GetPlatformViewByID(int view_id) { + if (views_.empty()) { + return nil; + } + return views_[view_id].get(); +} + std::vector FlutterPlatformViewsController::GetCurrentCanvases() { std::vector canvases; for (size_t i = 0; i < composition_order_.size(); i++) { diff --git a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h index 118822c3b7962..a0ebbac98b302 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h +++ b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h @@ -58,6 +58,13 @@ class FlutterPlatformViewsController { void PrerollCompositeEmbeddedView(int view_id); + // Returns the `FlutterPlatformView` object associated with the view_id. + // + // If the `FlutterPlatformViewsController` does not contain any `FlutterPlatformView` object or + // a `FlutterPlatformView` object asscociated with the view_id cannot be found, the method returns + // nil. + NSObject* GetPlatformViewByID(int view_id); + std::vector GetCurrentCanvases(); SkCanvas* CompositeEmbeddedView(int view_id, const flow::EmbeddedViewParams& params); diff --git a/shell/platform/darwin/ios/framework/Source/accessibility_bridge.h b/shell/platform/darwin/ios/framework/Source/accessibility_bridge.h index 465abc5035191..f48064a258afd 100644 --- a/shell/platform/darwin/ios/framework/Source/accessibility_bridge.h +++ b/shell/platform/darwin/ios/framework/Source/accessibility_bridge.h @@ -27,6 +27,8 @@ namespace shell { class AccessibilityBridge; } // namespace shell +@class FlutterPlatformViewSemanticsContainer; + /** * A node in the iOS semantics tree. */ @@ -71,6 +73,11 @@ class AccessibilityBridge; */ @property(nonatomic, strong) NSMutableArray* children; +/** + * Used if this SemanticsObject is for a platform view. + */ +@property(strong, nonatomic) FlutterPlatformViewSemanticsContainer* platformViewSemanticsContainer; + - (BOOL)nodeWillCauseLayoutChange:(const blink::SemanticsNode*)node; #pragma mark - Designated initializers @@ -108,12 +115,31 @@ class AccessibilityBridge; @interface FlutterSemanticsObject : SemanticsObject @end +/** + * Designated to act as an accessibility container of a platform view. + * + * This object does not take any accessibility actions on its own, nor has any accessibility + * label/value/trait/hint... on its own. The accessibility data will be handled by the platform + * view. + * + * See also: + * * `SemanticsObject` for the other type of semantics objects. + * * `FlutterSemanticsObject` for default implementation of `SemanticsObject`. + */ +@interface FlutterPlatformViewSemanticsContainer : UIAccessibilityElement + +- (instancetype)init __attribute__((unavailable("Use initWithAccessibilityContainer: instead"))); + +@end + namespace shell { class PlatformViewIOS; class AccessibilityBridge final { public: - AccessibilityBridge(UIView* view, PlatformViewIOS* platform_view); + AccessibilityBridge(UIView* view, + PlatformViewIOS* platform_view, + FlutterPlatformViewsController* platform_views_controller); ~AccessibilityBridge(); void UpdateSemantics(blink::SemanticsNodeUpdates nodes, @@ -129,6 +155,10 @@ class AccessibilityBridge final { fml::WeakPtr GetWeakPtr(); + FlutterPlatformViewsController* GetPlatformViewsController() const { + return platform_views_controller_; + }; + void clearState(); private: @@ -139,6 +169,7 @@ class AccessibilityBridge final { UIView* view_; PlatformViewIOS* platform_view_; + FlutterPlatformViewsController* platform_views_controller_; fml::scoped_nsobject> objects_; fml::scoped_nsprotocol accessibility_channel_; fml::WeakPtrFactory weak_factory_; diff --git a/shell/platform/darwin/ios/framework/Source/accessibility_bridge.mm b/shell/platform/darwin/ios/framework/Source/accessibility_bridge.mm index 7fe516ac8097e..39bfce29fb702 100644 --- a/shell/platform/darwin/ios/framework/Source/accessibility_bridge.mm +++ b/shell/platform/darwin/ios/framework/Source/accessibility_bridge.mm @@ -11,6 +11,7 @@ #import #include "flutter/fml/logging.h" +#include "flutter/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h" #include "flutter/shell/platform/darwin/ios/platform_view_ios.h" namespace { @@ -127,6 +128,7 @@ - (void)dealloc { [_children release]; _parent = nil; _container.get().semanticsObject = nil; + [_platformViewSemanticsContainer release]; [super dealloc]; } @@ -152,6 +154,9 @@ - (BOOL)nodeWillCauseScroll:(const blink::SemanticsNode*)node { } - (BOOL)hasChildren { + if (_node.IsPlatformViewNode()) { + return YES; + } return [self.children count] != 0; } @@ -165,6 +170,7 @@ - (BOOL)isAccessibilityElement { // We enforce in the framework that no other useful semantics are merged with these nodes. if ([self node].HasFlag(blink::SemanticsFlags::kScopesRoute)) return false; + return ([self node].flags != 0 && [self node].flags != static_cast(blink::SemanticsFlags::kIsHidden)) || ![self node].label.empty() || ![self node].value.empty() || ![self node].hint.empty() || @@ -396,6 +402,25 @@ - (UIAccessibilityTraits)accessibilityTraits { @end +@implementation FlutterPlatformViewSemanticsContainer + +// Method declared as unavailable in the interface +- (instancetype)init { + [self release]; + [super doesNotRecognizeSelector:_cmd]; + return nil; +} + +- (instancetype)initWithAccessibilityContainer:(id)container { + FML_CHECK(container); + if (self = [super initWithAccessibilityContainer:container]) { + self.isAccessibilityElement = NO; + } + return self; +} + +@end + @implementation SemanticsObjectContainer { SemanticsObject* _semanticsObject; fml::WeakPtr _bridge; @@ -426,7 +451,12 @@ - (instancetype)initWithSemanticsObject:(SemanticsObject*)semanticsObject #pragma mark - UIAccessibilityContainer overrides - (NSInteger)accessibilityElementCount { - return [[_semanticsObject children] count] + 1; + NSInteger count = [[_semanticsObject children] count] + 1; + // Need to create an additional child that acts as accessibility container for the platform view. + if (_semanticsObject.node.IsPlatformViewNode()) { + count++; + } + return count; } - (nullable id)accessibilityElementAtIndex:(NSInteger)index { @@ -435,7 +465,16 @@ - (nullable id)accessibilityElementAtIndex:(NSInteger)index { if (index == 0) { return _semanticsObject; } + + // Return the additional child acts as a container of platform view. The + // platformViewSemanticsContainer was created and cached in the updateSemantics path. + if (_semanticsObject.node.IsPlatformViewNode() && index == [self accessibilityElementCount] - 1) { + FML_CHECK(_semanticsObject.platformViewSemanticsContainer != nil); + return _semanticsObject.platformViewSemanticsContainer; + } + SemanticsObject* child = [_semanticsObject children][index - 1]; + if ([child hasChildren]) return [child accessibilityContainer]; return child; @@ -444,6 +483,12 @@ - (nullable id)accessibilityElementAtIndex:(NSInteger)index { - (NSInteger)indexOfAccessibilityElement:(id)element { if (element == _semanticsObject) return 0; + + // FlutterPlatformViewSemanticsContainer is always the last element of its parent. + if ([element isKindOfClass:[FlutterPlatformViewSemanticsContainer class]]) { + return [self accessibilityElementCount] - 1; + } + NSMutableArray* children = [_semanticsObject children]; for (size_t i = 0; i < [children count]; i++) { SemanticsObject* child = children[i]; @@ -485,9 +530,12 @@ - (BOOL)accessibilityScroll:(UIAccessibilityScrollDirection)direction { namespace shell { -AccessibilityBridge::AccessibilityBridge(UIView* view, PlatformViewIOS* platform_view) +AccessibilityBridge::AccessibilityBridge(UIView* view, + PlatformViewIOS* platform_view, + FlutterPlatformViewsController* platform_views_controller) : view_(view), platform_view_(platform_view), + platform_views_controller_(platform_views_controller), objects_([[NSMutableDictionary alloc] init]), weak_factory_(this), previous_route_id_(0), @@ -525,7 +573,7 @@ - (BOOL)accessibilityScroll:(UIAccessibilityScrollDirection)direction { layoutChanged = layoutChanged || [object nodeWillCauseLayoutChange:&node]; scrollOccured = scrollOccured || [object nodeWillCauseScroll:&node]; [object setSemanticsNode:&node]; - const NSUInteger newChildCount = node.childrenInTraversalOrder.size(); + NSUInteger newChildCount = node.childrenInTraversalOrder.size(); NSMutableArray* newChildren = [[[NSMutableArray alloc] initWithCapacity:newChildCount] autorelease]; for (NSUInteger i = 0; i < newChildCount; ++i) { @@ -555,6 +603,20 @@ - (BOOL)accessibilityScroll:(UIAccessibilityScrollDirection)direction { } object.accessibilityCustomActions = accessibilityCustomActions; } + + if (object.node.IsPlatformViewNode()) { + shell::FlutterPlatformViewsController* controller = GetPlatformViewsController(); + if (controller) { + object.platformViewSemanticsContainer = [[FlutterPlatformViewSemanticsContainer alloc] + initWithAccessibilityContainer:[object accessibilityContainer]]; + UIView* platformView = [controller->GetPlatformViewByID(object.node.platformViewId) view]; + if (platformView) { + object.platformViewSemanticsContainer.accessibilityElements = @[ platformView ]; + } + } + } else if (object.platformViewSemanticsContainer) { + [object.platformViewSemanticsContainer release]; + } } SemanticsObject* root = objects_.get()[@(kRootNodeId)]; diff --git a/shell/platform/darwin/ios/platform_view_ios.mm b/shell/platform/darwin/ios/platform_view_ios.mm index 6f138edcfdd11..c0b988be882ea 100644 --- a/shell/platform/darwin/ios/platform_view_ios.mm +++ b/shell/platform/darwin/ios/platform_view_ios.mm @@ -50,7 +50,8 @@ if (accessibility_bridge_) { accessibility_bridge_.reset( - new AccessibilityBridge(static_cast(owner_controller_.get().view), this)); + new AccessibilityBridge(static_cast(owner_controller_.get().view), this, + [owner_controller.get() platformViewsController])); } // Do not call `NotifyCreated()` here - let FlutterViewController take care // of that when its Viewport is sized. If `NotifyCreated()` is called here, @@ -96,7 +97,8 @@ } if (enabled && !accessibility_bridge_) { accessibility_bridge_ = std::make_unique( - static_cast(owner_controller_.get().view), this); + static_cast(owner_controller_.get().view), this, + [owner_controller_.get() platformViewsController]); } else if (!enabled && accessibility_bridge_) { accessibility_bridge_.reset(); } From 87db585ade76f06c5ec0523c7b384b10e86f4551 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Tue, 26 Mar 2019 21:18:49 -0400 Subject: [PATCH 1509/1537] Roll src/third_party/skia 45d5f702133e..bf341ae88c83 (2 commits) (#8316) https://skia.googlesource.com/skia.git/%2Blog/45d5f702133e..bf341ae88c83 git log 45d5f702133e8c122e46ab14863a3f3df481c974..bf341ae88c83155752e3a2080bb40cefbbbaf32b --date=short --no-merges --format=%ad %ae %s 2019-03-27 csmartdalton@google.com Revert "Add MSAA and non-aa modes to GrFillRRect Op" 2019-03-26 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader cc6473f7d80d..e747b3c3c9d9 (1 commits) The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (stani@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 497e7246d3ac9..d7ba8cf44a383 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '45d5f702133e8c122e46ab14863a3f3df481c974', + 'skia_revision': 'bf341ae88c83155752e3a2080bb40cefbbbaf32b', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index dd7b404db5130..2754292e64710 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 3f67afb6ad8082e084c9cf85aa354b97 +Signature: 1a4cc863926e17f6e4ee31d49a84954b UNUSED LICENSES: From 1daff5ce15b719aa39c6c98179baaf13f0491c61 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Wed, 27 Mar 2019 00:47:49 -0400 Subject: [PATCH 1510/1537] Roll src/third_party/skia bf341ae88c83..cec20280b3fb (3 commits) (#8320) https://skia.googlesource.com/skia.git/%2Blog/bf341ae88c83..cec20280b3fb git log bf341ae88c83155752e3a2080bb40cefbbbaf32b..cec20280b3fb818e3be9a07ef585983c17329a2a --date=short --no-merges --format=%ad %ae %s 2019-03-27 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/angle2 a47e2a23ab4c..518c679da109 (3 commits) 2019-03-27 skia-autoroll@skia-public.iam.gserviceaccount.com Roll ../src 4035f6c897d0..83d44af5c208 (535 commits) 2019-03-26 recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com Roll recipe dependencies (trivial). The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (stani@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index d7ba8cf44a383..6bfce85299f62 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'bf341ae88c83155752e3a2080bb40cefbbbaf32b', + 'skia_revision': 'cec20280b3fb818e3be9a07ef585983c17329a2a', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 2754292e64710..e0080b421d613 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 1a4cc863926e17f6e4ee31d49a84954b +Signature: 4483f2de15dffb85d88bd33110514876 UNUSED LICENSES: From e5b31cdd982d32b593a03b6f40b80a3f9c4770d5 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Wed, 27 Mar 2019 04:17:49 -0400 Subject: [PATCH 1511/1537] Roll src/third_party/skia cec20280b3fb..d1c271bd39f0 (3 commits) (#8321) https://skia.googlesource.com/skia.git/%2Blog/cec20280b3fb..d1c271bd39f0 git log cec20280b3fb818e3be9a07ef585983c17329a2a..d1c271bd39f037ad08958f913194474e763af288 --date=short --no-merges --format=%ad %ae %s 2019-03-27 skia-recreate-skps@skia-swarming-bots.iam.gserviceaccount.com Update go_deps asset 2019-03-27 skia-recreate-skps@skia-swarming-bots.iam.gserviceaccount.com Update SKP version 2019-03-27 skia-recreate-skps@skia-swarming-bots.iam.gserviceaccount.com Update SKP version The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (stani@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 6bfce85299f62..3697fd27bb15d 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'cec20280b3fb818e3be9a07ef585983c17329a2a', + 'skia_revision': 'd1c271bd39f037ad08958f913194474e763af288', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index e0080b421d613..a7af142d77bcc 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 4483f2de15dffb85d88bd33110514876 +Signature: 69da492a82515d5c30b77a1cff3fd5db UNUSED LICENSES: From 66141eb8e891861f1919ae844a14729154e95e18 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Wed, 27 Mar 2019 07:47:50 -0400 Subject: [PATCH 1512/1537] Roll src/third_party/skia d1c271bd39f0..c476e5da4fef (2 commits) (#8322) https://skia.googlesource.com/skia.git/%2Blog/d1c271bd39f0..c476e5da4fef git log d1c271bd39f037ad08958f913194474e763af288..c476e5da4fef336e5071e5a93b1beacda8ad92f0 --date=short --no-merges --format=%ad %ae %s 2019-03-26 robertphillips@google.com Fix bug in GrResourceAllocator's intermediate flushing (take 2) 2019-03-27 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader e747b3c3c9d9..df5b28fdb45c (1 commits) The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (stani@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 3697fd27bb15d..3fc9c8c1dddb7 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'd1c271bd39f037ad08958f913194474e763af288', + 'skia_revision': 'c476e5da4fef336e5071e5a93b1beacda8ad92f0', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index a7af142d77bcc..1d842a84e3e51 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 69da492a82515d5c30b77a1cff3fd5db +Signature: 7d66ee2bd2b68f3fa7c207bb28d06a35 UNUSED LICENSES: From cadcf1c5841b5f97d04b85b9b4f327bffaf16713 Mon Sep 17 00:00:00 2001 From: Ben Konyi Date: Wed, 27 Mar 2019 07:04:11 -0700 Subject: [PATCH 1513/1537] Roll src/third_party/dart f3fd1943fc..8a92d2a8d9 (16 commits) 8a92d2a8d9 Collect types deeply for deferred loading bd99509601 [infra] Fix approve_results race condition checking failing on new builders. 440d287fa8 [infra] Run pkg/(front_end|kernel) tests only on front-end builders 4256a97a3d [co19] DEPS file updated b7a5e478bb [vm, service] Allow choice of tags and code-verus-function when getting profile samples as timeline events. 0e485045d4 Deflake socket reads on Fuchsia 45c367d8e8 Add plugin performance data to the server status pages 57321c1590 Revert "[vm/kernel] Index all source and line starts before using them" 419243fc4e Add support for BlockExpression. 61f0f5bc43 [vm/bytecode] Declare members in bytecode e1a689310b [dartdevc] Generating nested functions that invoke super as arrow functions (e.g., mixins) 3a3731665f Initial implementation of server support for training data fbc70da0d3 [cfe] Add inference and type checks in for-elements in lists and sets 49a7fa1c11 [cfe] Add inference and type checks for if-elements in lists and sets 73d5c6bab0 Make the collection await for test actually return a stream. e8fc260e93 [gardening] Clean up outdated flutter hhh patches --- DEPS | 2 +- ci/licenses_golden/licenses_third_party | 39 +++++++++++++++++++++++-- sky/packages/sky_engine/LICENSE | 29 ++++++++++++++++++ 3 files changed, 67 insertions(+), 3 deletions(-) diff --git a/DEPS b/DEPS index 3fc9c8c1dddb7..87d1339f2b9c7 100644 --- a/DEPS +++ b/DEPS @@ -31,7 +31,7 @@ vars = { # Dart is: https://github.com/dart-lang/sdk/blob/master/DEPS. # You can use //tools/dart/create_updated_flutter_deps.py to produce # updated revision list of existing dependencies. - 'dart_revision': 'f3fd1943fcbc7821859dcbcd8973944478c3e902', + 'dart_revision': '8a92d2a8d943768db75a7e4bc58ba818581a7899', # WARNING: DO NOT EDIT MANUALLY # The lines between blank lines above and below are generated by a script. See create_updated_flutter_deps.py diff --git a/ci/licenses_golden/licenses_third_party b/ci/licenses_golden/licenses_third_party index 460a46d6fd37c..f43d1056d56ba 100644 --- a/ci/licenses_golden/licenses_third_party +++ b/ci/licenses_golden/licenses_third_party @@ -1,4 +1,4 @@ -Signature: f161b2aef0c1e3da3efbff25e2c31298 +Signature: 7556d1d49a22dc670aa6ac43db2d04c2 UNUSED LICENSES: @@ -5474,6 +5474,7 @@ FILE: ../../../third_party/dart/runtime/vm/compiler/frontend/bytecode_flow_graph FILE: ../../../third_party/dart/runtime/vm/compiler/frontend/bytecode_flow_graph_builder.h FILE: ../../../third_party/dart/runtime/vm/compiler/frontend/bytecode_reader.cc FILE: ../../../third_party/dart/runtime/vm/compiler/frontend/bytecode_reader.h +FILE: ../../../third_party/dart/runtime/vm/compiler/frontend/bytecode_scope_builder.cc FILE: ../../../third_party/dart/runtime/vm/compiler/frontend/constant_evaluator.cc FILE: ../../../third_party/dart/runtime/vm/compiler/frontend/constant_evaluator.h FILE: ../../../third_party/dart/runtime/vm/compiler/frontend/kernel_fingerprints.cc @@ -6566,6 +6567,40 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ==================================================================================================== +==================================================================================================== +LIBRARY: dart +ORIGIN: ../../../third_party/dart/runtime/vm/compiler/frontend/bytecode_scope_builder.h + ../../../third_party/dart/LICENSE +TYPE: LicenseType.bsd +FILE: ../../../third_party/dart/runtime/vm/compiler/frontend/bytecode_scope_builder.h +---------------------------------------------------------------------------------------------------- +Copyright (c) 2019, the Dart project authors. Please see the AUTHORS file +for details. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of Google Inc. nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +==================================================================================================== + ==================================================================================================== LIBRARY: double-conversion LIBRARY: icu @@ -18833,4 +18868,4 @@ freely, subject to the following restrictions: misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. ==================================================================================================== -Total license count: 310 +Total license count: 311 diff --git a/sky/packages/sky_engine/LICENSE b/sky/packages/sky_engine/LICENSE index 658e1e8c7cd99..7bd31a5c5c917 100644 --- a/sky/packages/sky_engine/LICENSE +++ b/sky/packages/sky_engine/LICENSE @@ -3398,6 +3398,35 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- dart +Copyright (c) 2019, the Dart project authors. Please see the AUTHORS file +for details. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of Google Inc. nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +dart + Copyright 2009 The Go Authors. All rights reserved. Use of this source code is governed by a BSD-style license that can be found in the LICENSE file From 20c241ac32cd8571c31431671d131772e7ee78a2 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Wed, 27 Mar 2019 11:17:49 -0400 Subject: [PATCH 1514/1537] Roll src/third_party/skia c476e5da4fef..576eb87a2d2d (7 commits) (#8324) https://skia.googlesource.com/skia.git/%2Blog/c476e5da4fef..576eb87a2d2d git log c476e5da4fef336e5071e5a93b1beacda8ad92f0..576eb87a2d2d58d169a2bf52cc99ab077c91a8a7 --date=short --no-merges --format=%ad %ae %s 2019-03-27 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader df5b28fdb45c..e43cda5f76de (1 commits) 2019-03-26 michaelludwig@google.com Fix paint filter quality in draw_image_set GM 2019-03-26 enne@chromium.org Add a function to compute texture sizes 2019-03-25 mtklein@google.com FM, a dumber new testing tool 2019-03-27 rmistry@google.com Fix RecreateSKPs bot page sets III 2019-03-27 robertphillips@google.com Minor cleanup of GrResourceAllocator 2019-03-27 fmalita@chromium.org [skottie] Fix handling of hidden shapes and layers The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (stani@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 87d1339f2b9c7..95bd7eeff4865 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'c476e5da4fef336e5071e5a93b1beacda8ad92f0', + 'skia_revision': '576eb87a2d2d58d169a2bf52cc99ab077c91a8a7', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 1d842a84e3e51..a28368735ad2a 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 7d66ee2bd2b68f3fa7c207bb28d06a35 +Signature: e0cb03599ce070b93c6fb67f4215d634 UNUSED LICENSES: From 48496588c6aea03fd102e590d775093ddb1059ca Mon Sep 17 00:00:00 2001 From: Ben Konyi Date: Wed, 27 Mar 2019 09:58:26 -0700 Subject: [PATCH 1515/1537] Roll src/third_party/dart 8a92d2a8d9..991c9da720 (2 commits) 991c9da720 [vm/ffi] Add copyright headers to sqlite example and incorporate Michael's feedback. 7a15b02935 [vm/ffi] Add demo docs for using FFI on Android. --- DEPS | 2 +- ci/licenses_golden/licenses_third_party | 21 +++++++++++---------- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/DEPS b/DEPS index 95bd7eeff4865..b5b12652e2c6a 100644 --- a/DEPS +++ b/DEPS @@ -31,7 +31,7 @@ vars = { # Dart is: https://github.com/dart-lang/sdk/blob/master/DEPS. # You can use //tools/dart/create_updated_flutter_deps.py to produce # updated revision list of existing dependencies. - 'dart_revision': '8a92d2a8d943768db75a7e4bc58ba818581a7899', + 'dart_revision': '991c9da7205b512e479283419bcbdc19f1f1f6c2', # WARNING: DO NOT EDIT MANUALLY # The lines between blank lines above and below are generated by a script. See create_updated_flutter_deps.py diff --git a/ci/licenses_golden/licenses_third_party b/ci/licenses_golden/licenses_third_party index f43d1056d56ba..0577e5e15c372 100644 --- a/ci/licenses_golden/licenses_third_party +++ b/ci/licenses_golden/licenses_third_party @@ -1,4 +1,4 @@ -Signature: 7556d1d49a22dc670aa6ac43db2d04c2 +Signature: 6eb19e0e7f8dc1c24ff6d11400c5b80c UNUSED LICENSES: @@ -4611,15 +4611,6 @@ FILE: ../../../third_party/dart/runtime/observatory/web/timeline.html FILE: ../../../third_party/dart/runtime/vm/snapshot_test_in.dat FILE: ../../../third_party/dart/samples/ffi/sqlite/docs/lib/scenario-default.svg FILE: ../../../third_party/dart/samples/ffi/sqlite/docs/lib/scenario-full.svg -FILE: ../../../third_party/dart/samples/ffi/sqlite/lib/sqlite.dart -FILE: ../../../third_party/dart/samples/ffi/sqlite/lib/src/bindings/bindings.dart -FILE: ../../../third_party/dart/samples/ffi/sqlite/lib/src/bindings/constants.dart -FILE: ../../../third_party/dart/samples/ffi/sqlite/lib/src/bindings/signatures.dart -FILE: ../../../third_party/dart/samples/ffi/sqlite/lib/src/bindings/types.dart -FILE: ../../../third_party/dart/samples/ffi/sqlite/lib/src/collections/closable_iterator.dart -FILE: ../../../third_party/dart/samples/ffi/sqlite/lib/src/database.dart -FILE: ../../../third_party/dart/samples/ffi/sqlite/lib/src/ffi/arena.dart -FILE: ../../../third_party/dart/samples/ffi/sqlite/lib/src/ffi/cstring.dart FILE: ../../../third_party/dart/sdk/lib/html/html_common/conversions_dart2js.dart FILE: ../../../third_party/dart/sdk/lib/html/html_common/html_common.dart FILE: ../../../third_party/dart/sdk/lib/libraries.json @@ -5203,6 +5194,16 @@ FILE: ../../../third_party/dart/samples/ffi/sample_ffi_functions.dart FILE: ../../../third_party/dart/samples/ffi/sample_ffi_functions_callbacks.dart FILE: ../../../third_party/dart/samples/ffi/sample_ffi_functions_structs.dart FILE: ../../../third_party/dart/samples/ffi/sample_ffi_structs.dart +FILE: ../../../third_party/dart/samples/ffi/sqlite/example/main.dart +FILE: ../../../third_party/dart/samples/ffi/sqlite/lib/sqlite.dart +FILE: ../../../third_party/dart/samples/ffi/sqlite/lib/src/bindings/bindings.dart +FILE: ../../../third_party/dart/samples/ffi/sqlite/lib/src/bindings/constants.dart +FILE: ../../../third_party/dart/samples/ffi/sqlite/lib/src/bindings/signatures.dart +FILE: ../../../third_party/dart/samples/ffi/sqlite/lib/src/bindings/types.dart +FILE: ../../../third_party/dart/samples/ffi/sqlite/lib/src/collections/closable_iterator.dart +FILE: ../../../third_party/dart/samples/ffi/sqlite/lib/src/database.dart +FILE: ../../../third_party/dart/samples/ffi/sqlite/lib/src/ffi/arena.dart +FILE: ../../../third_party/dart/samples/ffi/sqlite/lib/src/ffi/cstring.dart FILE: ../../../third_party/dart/samples/ffi/sqlite/lib/src/ffi/dylib_utils.dart FILE: ../../../third_party/dart/sdk/lib/ffi/annotations.dart FILE: ../../../third_party/dart/sdk/lib/ffi/dynamic_library.dart From ce9ea5869456592779cb70ca17895f288a328049 Mon Sep 17 00:00:00 2001 From: Zachary Anderson Date: Wed, 27 Mar 2019 10:36:34 -0700 Subject: [PATCH 1516/1537] [fuchsia] Disable FML_TRACE_COUNTER events to unblock roll (#8325) --- fml/trace_event.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/fml/trace_event.h b/fml/trace_event.h index 979d430f6be65..a036292a01d9a 100644 --- a/fml/trace_event.h +++ b/fml/trace_event.h @@ -13,7 +13,9 @@ #include -#define FML_TRACE_COUNTER(a, b, c, d, args...) TRACE_COUNTER(a, b, c, d) +// TODO(DNO-448): This is disabled because the Fuchsia counter id json parsing +// only handles ints whereas this can produce ints or strings. +#define FML_TRACE_COUNTER(a, b, c, args...) #define FML_TRACE_EVENT(a, b, args...) TRACE_DURATION(a, b) #define TRACE_EVENT0(a, b) TRACE_DURATION(a, b) From 3a415c4f1e3ef277d401e826c503e7c09e794ee7 Mon Sep 17 00:00:00 2001 From: stuartmorgan Date: Wed, 27 Mar 2019 14:08:22 -0400 Subject: [PATCH 1517/1537] Map glfw into third_party, and roll buildroot (#8308) Adds glfw to //third_party/, and rolls the buildroot to ee817fb84542865e253bcce1866bc13e4065ca4d to pick up the build rules for it. --- DEPS | 5 +- ci/licenses_golden/licenses_third_party | 302 +++++++++++++++++++++++- ci/licenses_golden/tool_signature | 2 +- sky/packages/sky_engine/LICENSE | 188 +++++++++++++++ tools/licenses/lib/filesystem.dart | 1 + tools/licenses/lib/main.dart | 14 ++ 6 files changed, 508 insertions(+), 4 deletions(-) diff --git a/DEPS b/DEPS index b5b12652e2c6a..2d1c81deb87f9 100644 --- a/DEPS +++ b/DEPS @@ -121,7 +121,7 @@ allowed_hosts = [ ] deps = { - 'src': 'https://github.com/flutter/buildroot.git' + '@' + '9c7b023ff266ee58b00fe60326fa1db910a087f3', + 'src': 'https://github.com/flutter/buildroot.git' + '@' + 'ee817fb84542865e253bcce1866bc13e4065ca4d', # Fuchsia compatibility # @@ -150,6 +150,9 @@ deps = { 'src/third_party/libcxxabi': Var('fuchsia_git') + '/third_party/libcxxabi' + '@' + '1a9753522f1ae8d72848d365902f39e0d3d59a39', + 'src/third_party/glfw': + Var('fuchsia_git') + '/third_party/glfw' + '@' + '999f3556fdd80983b10051746264489f2cb1ef16', + # Chromium-style # # As part of integrating with Fuchsia, we should eventually remove all these diff --git a/ci/licenses_golden/licenses_third_party b/ci/licenses_golden/licenses_third_party index 0577e5e15c372..bc2bb1adbb6d9 100644 --- a/ci/licenses_golden/licenses_third_party +++ b/ci/licenses_golden/licenses_third_party @@ -1,4 +1,4 @@ -Signature: 6eb19e0e7f8dc1c24ff6d11400c5b80c +Signature: 7836db551ccf7833d0c865f0d2a3cfad UNUSED LICENSES: @@ -8014,6 +8014,304 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ==================================================================================================== +==================================================================================================== +LIBRARY: glfw +ORIGIN: ../../../third_party/glfw/COPYING.txt +TYPE: LicenseType.zlib +FILE: ../../../third_party/glfw/.appveyor.yml +FILE: ../../../third_party/glfw/CMake/MacOSXBundleInfo.plist.in +FILE: ../../../third_party/glfw/cmake_uninstall.cmake.in +FILE: ../../../third_party/glfw/docs/Doxyfile.in +FILE: ../../../third_party/glfw/docs/DoxygenLayout.xml +FILE: ../../../third_party/glfw/docs/build.dox +FILE: ../../../third_party/glfw/docs/compat.dox +FILE: ../../../third_party/glfw/docs/compile.dox +FILE: ../../../third_party/glfw/docs/context.dox +FILE: ../../../third_party/glfw/docs/extra.less +FILE: ../../../third_party/glfw/docs/footer.html +FILE: ../../../third_party/glfw/docs/header.html +FILE: ../../../third_party/glfw/docs/input.dox +FILE: ../../../third_party/glfw/docs/internal.dox +FILE: ../../../third_party/glfw/docs/intro.dox +FILE: ../../../third_party/glfw/docs/main.dox +FILE: ../../../third_party/glfw/docs/monitor.dox +FILE: ../../../third_party/glfw/docs/moving.dox +FILE: ../../../third_party/glfw/docs/news.dox +FILE: ../../../third_party/glfw/docs/quick.dox +FILE: ../../../third_party/glfw/docs/spaces.svg +FILE: ../../../third_party/glfw/docs/vulkan.dox +FILE: ../../../third_party/glfw/docs/window.dox +FILE: ../../../third_party/glfw/include/GLFW/glfw3.h +FILE: ../../../third_party/glfw/include/GLFW/glfw3native.h +FILE: ../../../third_party/glfw/src/cocoa_monitor.m +FILE: ../../../third_party/glfw/src/context.c +FILE: ../../../third_party/glfw/src/egl_context.c +FILE: ../../../third_party/glfw/src/egl_context.h +FILE: ../../../third_party/glfw/src/glfw3.pc.in +FILE: ../../../third_party/glfw/src/glfw3Config.cmake.in +FILE: ../../../third_party/glfw/src/glx_context.c +FILE: ../../../third_party/glfw/src/glx_context.h +FILE: ../../../third_party/glfw/src/init.c +FILE: ../../../third_party/glfw/src/input.c +FILE: ../../../third_party/glfw/src/internal.h +FILE: ../../../third_party/glfw/src/linux_joystick.c +FILE: ../../../third_party/glfw/src/monitor.c +FILE: ../../../third_party/glfw/src/posix_time.c +FILE: ../../../third_party/glfw/src/posix_time.h +FILE: ../../../third_party/glfw/src/posix_tls.c +FILE: ../../../third_party/glfw/src/posix_tls.h +FILE: ../../../third_party/glfw/src/vulkan.c +FILE: ../../../third_party/glfw/src/wgl_context.c +FILE: ../../../third_party/glfw/src/wgl_context.h +FILE: ../../../third_party/glfw/src/win32_init.c +FILE: ../../../third_party/glfw/src/win32_joystick.c +FILE: ../../../third_party/glfw/src/win32_monitor.c +FILE: ../../../third_party/glfw/src/win32_platform.h +FILE: ../../../third_party/glfw/src/win32_time.c +FILE: ../../../third_party/glfw/src/win32_tls.c +FILE: ../../../third_party/glfw/src/win32_window.c +FILE: ../../../third_party/glfw/src/x11_init.c +FILE: ../../../third_party/glfw/src/x11_monitor.c +FILE: ../../../third_party/glfw/src/x11_platform.h +FILE: ../../../third_party/glfw/src/x11_window.c +FILE: ../../../third_party/glfw/src/xkb_unicode.c +---------------------------------------------------------------------------------------------------- +Copyright (c) 2002-2006 Marcus Geelnard +Copyright (c) 2006-2016 Camilla Berglund + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would + be appreciated but is not required. + +2. Altered source versions must be plainly marked as such, and must not + be misrepresented as being the original software. + +3. This notice may not be removed or altered from any source + distribution. +==================================================================================================== + +==================================================================================================== +LIBRARY: glfw +ORIGIN: ../../../third_party/glfw/src/cocoa_init.m +TYPE: LicenseType.zlib +FILE: ../../../third_party/glfw/src/cocoa_init.m +FILE: ../../../third_party/glfw/src/cocoa_platform.h +FILE: ../../../third_party/glfw/src/cocoa_time.c +FILE: ../../../third_party/glfw/src/cocoa_window.m +FILE: ../../../third_party/glfw/src/nsgl_context.h +FILE: ../../../third_party/glfw/src/nsgl_context.m +---------------------------------------------------------------------------------------------------- +Copyright (c) 2009-2016 Camilla Berglund + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would + be appreciated but is not required. + +2. Altered source versions must be plainly marked as such, and must not + be misrepresented as being the original software. + +3. This notice may not be removed or altered from any source + distribution. +==================================================================================================== + +==================================================================================================== +LIBRARY: glfw +ORIGIN: ../../../third_party/glfw/src/cocoa_joystick.h +TYPE: LicenseType.zlib +FILE: ../../../third_party/glfw/src/cocoa_joystick.h +FILE: ../../../third_party/glfw/src/win32_joystick.h +---------------------------------------------------------------------------------------------------- +Copyright (c) 2006-2016 Camilla Berglund + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would + be appreciated but is not required. + +2. Altered source versions must be plainly marked as such, and must not + be misrepresented as being the original software. + +3. This notice may not be removed or altered from any source + distribution. +==================================================================================================== + +==================================================================================================== +LIBRARY: glfw +ORIGIN: ../../../third_party/glfw/src/cocoa_joystick.m +TYPE: LicenseType.zlib +FILE: ../../../third_party/glfw/src/cocoa_joystick.m +---------------------------------------------------------------------------------------------------- +Copyright (c) 2009-2016 Camilla Berglund +Copyright (c) 2012 Torsten Walluhn + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would + be appreciated but is not required. + +2. Altered source versions must be plainly marked as such, and must not + be misrepresented as being the original software. + +3. This notice may not be removed or altered from any source + distribution. +==================================================================================================== + +==================================================================================================== +LIBRARY: glfw +ORIGIN: ../../../third_party/glfw/src/glfw_config.h.in +TYPE: LicenseType.zlib +FILE: ../../../third_party/glfw/src/glfw_config.h.in +---------------------------------------------------------------------------------------------------- +Copyright (c) 2010-2016 Camilla Berglund + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would + be appreciated but is not required. + +2. Altered source versions must be plainly marked as such, and must not + be misrepresented as being the original software. + +3. This notice may not be removed or altered from any source + distribution. +==================================================================================================== + +==================================================================================================== +LIBRARY: glfw +ORIGIN: ../../../third_party/glfw/src/linux_joystick.h +TYPE: LicenseType.zlib +FILE: ../../../third_party/glfw/src/linux_joystick.h +FILE: ../../../third_party/glfw/src/wl_init.c +FILE: ../../../third_party/glfw/src/wl_monitor.c +FILE: ../../../third_party/glfw/src/wl_platform.h +FILE: ../../../third_party/glfw/src/wl_window.c +FILE: ../../../third_party/glfw/src/xkb_unicode.h +---------------------------------------------------------------------------------------------------- +Copyright (c) 2014 Jonas Ådahl + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would + be appreciated but is not required. + +2. Altered source versions must be plainly marked as such, and must not + be misrepresented as being the original software. + +3. This notice may not be removed or altered from any source + distribution. +==================================================================================================== + +==================================================================================================== +LIBRARY: glfw +ORIGIN: ../../../third_party/glfw/src/mir_init.c +TYPE: LicenseType.zlib +FILE: ../../../third_party/glfw/src/mir_init.c +FILE: ../../../third_party/glfw/src/mir_monitor.c +FILE: ../../../third_party/glfw/src/mir_platform.h +FILE: ../../../third_party/glfw/src/mir_window.c +---------------------------------------------------------------------------------------------------- +Copyright (c) 2014-2015 Brandon Schaefer + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would + be appreciated but is not required. + +2. Altered source versions must be plainly marked as such, and must not + be misrepresented as being the original software. + +3. This notice may not be removed or altered from any source + distribution. +==================================================================================================== + +==================================================================================================== +LIBRARY: glfw +ORIGIN: ../../../third_party/glfw/src/window.c +TYPE: LicenseType.zlib +FILE: ../../../third_party/glfw/src/window.c +---------------------------------------------------------------------------------------------------- +Copyright (c) 2002-2006 Marcus Geelnard +Copyright (c) 2006-2016 Camilla Berglund +Copyright (c) 2012 Torsten Walluhn + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would + be appreciated but is not required. + +2. Altered source versions must be plainly marked as such, and must not + be misrepresented as being the original software. + +3. This notice may not be removed or altered from any source + distribution. +==================================================================================================== + ==================================================================================================== LIBRARY: harfbuzz ORIGIN: ../../../third_party/harfbuzz/COPYING @@ -18869,4 +19167,4 @@ freely, subject to the following restrictions: misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. ==================================================================================================== -Total license count: 311 +Total license count: 319 diff --git a/ci/licenses_golden/tool_signature b/ci/licenses_golden/tool_signature index e6f18498d5dbb..8356ed4f258b8 100644 --- a/ci/licenses_golden/tool_signature +++ b/ci/licenses_golden/tool_signature @@ -1,2 +1,2 @@ -Signature: e7b89482e4ea9fef22a33ad9fcc34961 +Signature: f2113ac67466eb24d34e9f41c3c59e17 diff --git a/sky/packages/sky_engine/LICENSE b/sky/packages/sky_engine/LICENSE index 7bd31a5c5c917..9316937d70e08 100644 --- a/sky/packages/sky_engine/LICENSE +++ b/sky/packages/sky_engine/LICENSE @@ -4730,6 +4730,194 @@ may be used: CompuServe Incorporated. GIF(sm) is a Service Mark property of CompuServe Incorporated." -------------------------------------------------------------------------------- +glfw + +Copyright (c) 2002-2006 Marcus Geelnard +Copyright (c) 2006-2016 Camilla Berglund + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would + be appreciated but is not required. + +2. Altered source versions must be plainly marked as such, and must not + be misrepresented as being the original software. + +3. This notice may not be removed or altered from any source + distribution. +-------------------------------------------------------------------------------- +glfw + +Copyright (c) 2002-2006 Marcus Geelnard +Copyright (c) 2006-2016 Camilla Berglund +Copyright (c) 2012 Torsten Walluhn + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would + be appreciated but is not required. + +2. Altered source versions must be plainly marked as such, and must not + be misrepresented as being the original software. + +3. This notice may not be removed or altered from any source + distribution. +-------------------------------------------------------------------------------- +glfw + +Copyright (c) 2006-2016 Camilla Berglund + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would + be appreciated but is not required. + +2. Altered source versions must be plainly marked as such, and must not + be misrepresented as being the original software. + +3. This notice may not be removed or altered from any source + distribution. +-------------------------------------------------------------------------------- +glfw + +Copyright (c) 2009-2016 Camilla Berglund + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would + be appreciated but is not required. + +2. Altered source versions must be plainly marked as such, and must not + be misrepresented as being the original software. + +3. This notice may not be removed or altered from any source + distribution. +-------------------------------------------------------------------------------- +glfw + +Copyright (c) 2009-2016 Camilla Berglund +Copyright (c) 2012 Torsten Walluhn + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would + be appreciated but is not required. + +2. Altered source versions must be plainly marked as such, and must not + be misrepresented as being the original software. + +3. This notice may not be removed or altered from any source + distribution. +-------------------------------------------------------------------------------- +glfw + +Copyright (c) 2010-2016 Camilla Berglund + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would + be appreciated but is not required. + +2. Altered source versions must be plainly marked as such, and must not + be misrepresented as being the original software. + +3. This notice may not be removed or altered from any source + distribution. +-------------------------------------------------------------------------------- +glfw + +Copyright (c) 2014 Jonas Ådahl + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would + be appreciated but is not required. + +2. Altered source versions must be plainly marked as such, and must not + be misrepresented as being the original software. + +3. This notice may not be removed or altered from any source + distribution. +-------------------------------------------------------------------------------- +glfw + +Copyright (c) 2014-2015 Brandon Schaefer + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would + be appreciated but is not required. + +2. Altered source versions must be plainly marked as such, and must not + be misrepresented as being the original software. + +3. This notice may not be removed or altered from any source + distribution. +-------------------------------------------------------------------------------- harfbuzz Copyright (C) 2012 Grigori Goronzy diff --git a/tools/licenses/lib/filesystem.dart b/tools/licenses/lib/filesystem.dart index dc5cd9d1be122..808c95f1f3876 100644 --- a/tools/licenses/lib/filesystem.dart +++ b/tools/licenses/lib/filesystem.dart @@ -195,6 +195,7 @@ FileType identifyFile(String name, Reader reader) { case '.jpg': case '.jpeg': return FileType.binary; // JPEG case '.ico': return FileType.binary; // Windows icon format + case '.icns': return FileType.binary; // macOS icon format case '.bmp': return FileType.binary; // Windows bitmap format case '.wbmp': return FileType.binary; // Wireless bitmap format case '.webp': return FileType.binary; // WEBP diff --git a/tools/licenses/lib/main.dart b/tools/licenses/lib/main.dart index 9f0cadc87081a..3e36704d16c6d 100644 --- a/tools/licenses/lib/main.dart +++ b/tools/licenses/lib/main.dart @@ -1432,6 +1432,18 @@ class _RepositoryFreetypeDirectory extends _RepositoryDirectory { } } +class _RepositoryGlfwDirectory extends _RepositoryDirectory { + _RepositoryGlfwDirectory(_RepositoryDirectory parent, fs.Directory io) : super(parent, io); + + @override + bool shouldRecurse(fs.IoNode entry) { + return entry.name != 'examples' // Not linked in build. + && entry.name != 'tests' // Not linked in build. + && entry.name != 'deps' // Only used by examples and tests; not linked in build. + && super.shouldRecurse(entry); + } +} + class _RepositoryIcuDirectory extends _RepositoryDirectory { _RepositoryIcuDirectory(_RepositoryDirectory parent, fs.Directory io) : super(parent, io); @@ -1759,6 +1771,8 @@ class _RepositoryRootThirdPartyDirectory extends _RepositoryGenericThirdPartyDir throw '//third_party/freetype-android is no longer part of this client: remove it'; if (entry.name == 'freetype2') return _RepositoryFreetypeDirectory(this, entry); + if (entry.name == 'glfw') + return _RepositoryGlfwDirectory(this, entry); if (entry.name == 'harfbuzz') return _RepositoryHarfbuzzDirectory(this, entry); if (entry.name == 'icu') From d4275d9ee1904760b25da446e64e1fd6337f884a Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Wed, 27 Mar 2019 14:41:30 -0400 Subject: [PATCH 1518/1537] Roll src/third_party/skia 576eb87a2d2d..99ccc0ca87e6 (5 commits) (#8328) https://skia.googlesource.com/skia.git/%2Blog/576eb87a2d2d..99ccc0ca87e6 git log 576eb87a2d2d58d169a2bf52cc99ab077c91a8a7..99ccc0ca87e6d255d1477923cec3a2b9732959ec --date=short --no-merges --format=%ad %ae %s 2019-03-27 mtklein@google.com lazy svg parsing in TestSVGTypeface 2019-03-27 mtklein@google.com split up skia_srcs() in public.bzl 2019-03-27 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/angle2 518c679da109..c240abe4ef2c (1 commits) 2019-03-27 bsalomon@google.com Disable texture storage on Android over command buffer. 2019-03-27 mtklein@google.com update DM_SRCS to build tools/HashAndEncode The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (stani@google.com), and stop the roller if necessary. --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 2d1c81deb87f9..9ecbe2f97d965 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': '576eb87a2d2d58d169a2bf52cc99ab077c91a8a7', + 'skia_revision': '99ccc0ca87e6d255d1477923cec3a2b9732959ec', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index a28368735ad2a..290d634046755 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: e0cb03599ce070b93c6fb67f4215d634 +Signature: 34a282f02f7fb9a128e84ed0217e8743 UNUSED LICENSES: From 3a3f707d5a9b17388b60ff10b9f65b0c6a3c4134 Mon Sep 17 00:00:00 2001 From: Chinmay Garde Date: Wed, 27 Mar 2019 12:22:48 -0700 Subject: [PATCH 1519/1537] Reland "Allow specification of std::functions as native entrypoints from Dart code." (#8329) This reverts commit 7e77d5c484a08cc1c189619e80ae71a7f1df62fb after fixing Windows issues. --- .../embedder/fixtures/simple_main.dart | 12 ++++++ .../embedder/tests/embedder_context.h | 12 ++++++ .../embedder/tests/embedder_unittests.cc | 40 +++++++++++++++++++ 3 files changed, 64 insertions(+) diff --git a/shell/platform/embedder/fixtures/simple_main.dart b/shell/platform/embedder/fixtures/simple_main.dart index b1124b508b7e3..bd3999563e031 100644 --- a/shell/platform/embedder/fixtures/simple_main.dart +++ b/shell/platform/embedder/fixtures/simple_main.dart @@ -6,3 +6,15 @@ void customEntrypoint() { } void sayHiFromCustomEntrypoint() native "SayHiFromCustomEntrypoint"; + + +@pragma('vm:entry-point') +void customEntrypoint1() { + sayHiFromCustomEntrypoint1(); + sayHiFromCustomEntrypoint2(); + sayHiFromCustomEntrypoint3(); +} + +void sayHiFromCustomEntrypoint1() native "SayHiFromCustomEntrypoint1"; +void sayHiFromCustomEntrypoint2() native "SayHiFromCustomEntrypoint2"; +void sayHiFromCustomEntrypoint3() native "SayHiFromCustomEntrypoint3"; diff --git a/shell/platform/embedder/tests/embedder_context.h b/shell/platform/embedder/tests/embedder_context.h index 6405163d9cd6a..cf31140d40029 100644 --- a/shell/platform/embedder/tests/embedder_context.h +++ b/shell/platform/embedder/tests/embedder_context.h @@ -16,11 +16,23 @@ #include "flutter/shell/platform/embedder/embedder.h" #include "flutter/shell/platform/embedder/tests/embedder_test_resolver.h" +#define CREATE_NATIVE_ENTRY(native_entry) \ + ([&]() { \ + static ::shell::testing::EmbedderContext::NativeEntry closure; \ + static Dart_NativeFunction entrypoint = [](Dart_NativeArguments args) { \ + closure(args); \ + }; \ + closure = (native_entry); \ + return entrypoint; \ + })() + namespace shell { namespace testing { class EmbedderContext { public: + using NativeEntry = std::function; + EmbedderContext(std::string assets_path = ""); ~EmbedderContext(); diff --git a/shell/platform/embedder/tests/embedder_unittests.cc b/shell/platform/embedder/tests/embedder_unittests.cc index 01d23ff0d885f..6bad99a39dd0c 100644 --- a/shell/platform/embedder/tests/embedder_unittests.cc +++ b/shell/platform/embedder/tests/embedder_unittests.cc @@ -59,5 +59,45 @@ TEST_F(EmbedderTest, CanInvokeCustomEntrypoint) { ASSERT_TRUE(engine.is_valid()); } +TEST_F(EmbedderTest, CanInvokeCustomEntrypointMacro) { + auto& context = GetEmbedderContext(); + + fml::AutoResetWaitableEvent latch1; + fml::AutoResetWaitableEvent latch2; + fml::AutoResetWaitableEvent latch3; + + // Can be defined separately. + auto entry1 = [&latch1](Dart_NativeArguments args) { + FML_LOG(ERROR) << "In Callback 1"; + latch1.Signal(); + }; + auto native_entry1 = CREATE_NATIVE_ENTRY(entry1); + context.AddNativeCallback("SayHiFromCustomEntrypoint1", native_entry1); + + // Can be wrapped in in the args. + auto entry2 = [&latch2](Dart_NativeArguments args) { + FML_LOG(ERROR) << "In Callback 2"; + latch2.Signal(); + }; + context.AddNativeCallback("SayHiFromCustomEntrypoint2", + CREATE_NATIVE_ENTRY(entry2)); + + // Everything can be inline. + context.AddNativeCallback( + "SayHiFromCustomEntrypoint3", + CREATE_NATIVE_ENTRY([&latch3](Dart_NativeArguments args) { + FML_LOG(ERROR) << "In Callback 3"; + latch3.Signal(); + })); + + EmbedderConfigBuilder builder(context); + builder.SetDartEntrypoint("customEntrypoint1"); + auto engine = builder.LaunchEngine(); + latch1.Wait(); + latch2.Wait(); + latch3.Wait(); + ASSERT_TRUE(engine.is_valid()); +} + } // namespace testing } // namespace shell From 6bd697dd4c02e88fcfa4accf8d2e9a434a8a2c37 Mon Sep 17 00:00:00 2001 From: nathanrogersgoogle Date: Wed, 27 Mar 2019 14:34:01 -0700 Subject: [PATCH 1520/1537] Fix "PointerEvent" flow end event (#8319) "DispatchPointerDataPacket" should have been "PointerEvent". --- shell/common/animator.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shell/common/animator.cc b/shell/common/animator.cc index 78fdd98b3206f..622b86c238c92 100644 --- a/shell/common/animator.cc +++ b/shell/common/animator.cc @@ -92,7 +92,7 @@ void Animator::BeginFrame(fml::TimePoint frame_start_time, TRACE_EVENT0("flutter", "Animator::BeginFrame"); while (!trace_flow_ids_.empty()) { uint64_t trace_flow_id = trace_flow_ids_.front(); - TRACE_FLOW_END("flutter", "DispatchPointerDataPacket", trace_flow_id); + TRACE_FLOW_END("flutter", "PointerEvent", trace_flow_id); trace_flow_ids_.pop_front(); } From 76200562779e49d34e62056b66800ac870197092 Mon Sep 17 00:00:00 2001 From: Matt Carroll Date: Wed, 27 Mar 2019 14:57:23 -0700 Subject: [PATCH 1521/1537] Android Embedding PR22: Polish - FlutterActivity Intent factories, FlutterFragment control of render modes, FlutterSurfaceView transparent until rendering is ready. (#8317) --- .../embedding/android/FlutterActivity.java | 88 ++++++++-- .../embedding/android/FlutterFragment.java | 153 ++++++++++++------ .../embedding/android/FlutterSurfaceView.java | 9 ++ 3 files changed, 187 insertions(+), 63 deletions(-) diff --git a/shell/platform/android/io/flutter/embedding/android/FlutterActivity.java b/shell/platform/android/io/flutter/embedding/android/FlutterActivity.java index 0b75d129c6cf6..2ce499870053c 100644 --- a/shell/platform/android/io/flutter/embedding/android/FlutterActivity.java +++ b/shell/platform/android/io/flutter/embedding/android/FlutterActivity.java @@ -9,6 +9,7 @@ import android.content.pm.ActivityInfo; import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; +import android.os.Build; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.annotation.Nullable; @@ -16,10 +17,13 @@ import android.support.v4.app.FragmentManager; import android.view.View; import android.view.ViewGroup; +import android.view.Window; +import android.view.WindowManager; import android.widget.FrameLayout; import io.flutter.embedding.engine.FlutterEngine; import io.flutter.embedding.engine.FlutterShellArgs; +import io.flutter.plugin.platform.PlatformPlugin; import io.flutter.view.FlutterMain; /** @@ -60,12 +64,16 @@ public class FlutterActivity extends FragmentActivity { private static final String TAG = "FlutterActivity"; // Meta-data arguments, processed from manifest XML. - private static final String DART_ENTRYPOINT_META_DATA_KEY = "io.flutter.Entrypoint"; - private static final String INITIAL_ROUTE_META_DATA_KEY = "io.flutter.InitialRoute"; + protected static final String DART_ENTRYPOINT_META_DATA_KEY = "io.flutter.Entrypoint"; + protected static final String INITIAL_ROUTE_META_DATA_KEY = "io.flutter.InitialRoute"; // Intent extra arguments. - public static final String EXTRA_DART_ENTRYPOINT = "dart_entrypoint"; - public static final String EXTRA_INITIAL_ROUTE = "initial_route"; + protected static final String EXTRA_DART_ENTRYPOINT = "dart_entrypoint"; + protected static final String EXTRA_INITIAL_ROUTE = "initial_route"; + + // Default configuration. + protected static final String DEFAULT_DART_ENTRYPOINT = "main"; + protected static final String DEFAULT_INITIAL_ROUTE = "/"; // FlutterFragment management. private static final String TAG_FLUTTER_FRAGMENT = "flutter_fragment"; @@ -73,13 +81,58 @@ public class FlutterActivity extends FragmentActivity { private static final int FRAGMENT_CONTAINER_ID = 609893468; // random number private FlutterFragment flutterFragment; + /** + * Builder to create an {@code Intent} that launches a {@code FlutterActivity} with the + * desired configuration. + */ + public static class IntentBuilder { + private String dartEntrypoint = DEFAULT_DART_ENTRYPOINT; + private String initialRoute = DEFAULT_INITIAL_ROUTE; + + /** + * The name of the initial Dart method to invoke, defaults to "main". + */ + @NonNull + public IntentBuilder dartEntrypoint(@NonNull String dartEntrypoint) { + this.dartEntrypoint = dartEntrypoint; + return this; + } + + /** + * The initial route that a Flutter app will render in this {@link FlutterFragment}, + * defaults to "/". + */ + @NonNull + public IntentBuilder initialRoute(@NonNull String initialRoute) { + this.initialRoute = initialRoute; + return this; + } + + @NonNull + public Intent build(@NonNull Context context) { + return new Intent(context, FlutterActivity.class) + .putExtra(EXTRA_DART_ENTRYPOINT, dartEntrypoint) + .putExtra(EXTRA_INITIAL_ROUTE, initialRoute); + } + } + @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(createFragmentContainer()); + configureStatusBarForFullscreenFlutterExperience(); ensureFlutterFragmentCreated(); } + private void configureStatusBarForFullscreenFlutterExperience() { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + Window window = getWindow(); + window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); + window.setStatusBarColor(0x40000000); + window.getDecorView().setSystemUiVisibility(PlatformPlugin.DEFAULT_SYSTEM_UI); + } + } + /** * Creates a {@link FrameLayout} with an ID of {@code #FRAGMENT_CONTAINER_ID} that will contain * the {@link FlutterFragment} displayed by this {@code FlutterActivity}. @@ -125,12 +178,13 @@ private void ensureFlutterFragmentCreated() { */ @NonNull protected FlutterFragment createFlutterFragment() { - return FlutterFragment.newInstance( - getDartEntrypoint(), - getInitialRoute(), - getAppBundlePath(), - FlutterShellArgs.fromIntent(getIntent()) - ); + return new FlutterFragment.Builder() + .dartEntrypoint(getDartEntrypoint()) + .initialRoute(getInitialRoute()) + .appBundlePath(getAppBundlePath()) + .flutterShellArgs(FlutterShellArgs.fromIntent(getIntent())) + .renderMode(FlutterView.RenderMode.surface) + .build(); } @Override @@ -216,7 +270,7 @@ protected String getAppBundlePath() { *

    * Subclasses may override this method to directly control the Dart entrypoint. */ - @Nullable + @NonNull protected String getDartEntrypoint() { if (getIntent().hasExtra(EXTRA_DART_ENTRYPOINT)) { return getIntent().getStringExtra(EXTRA_DART_ENTRYPOINT); @@ -228,9 +282,10 @@ protected String getDartEntrypoint() { PackageManager.GET_META_DATA|PackageManager.GET_ACTIVITIES ); Bundle metadata = activityInfo.metaData; - return metadata != null ? metadata.getString(DART_ENTRYPOINT_META_DATA_KEY) : null; + String desiredDartEntrypoint = metadata != null ? metadata.getString(DART_ENTRYPOINT_META_DATA_KEY) : null; + return desiredDartEntrypoint != null ? desiredDartEntrypoint : DEFAULT_DART_ENTRYPOINT; } catch (PackageManager.NameNotFoundException e) { - return null; + return DEFAULT_DART_ENTRYPOINT; } } @@ -251,7 +306,7 @@ protected String getDartEntrypoint() { *

    * Subclasses may override this method to directly control the initial route. */ - @Nullable + @NonNull protected String getInitialRoute() { if (getIntent().hasExtra(EXTRA_INITIAL_ROUTE)) { return getIntent().getStringExtra(EXTRA_INITIAL_ROUTE); @@ -263,9 +318,10 @@ protected String getInitialRoute() { PackageManager.GET_META_DATA|PackageManager.GET_ACTIVITIES ); Bundle metadata = activityInfo.metaData; - return metadata != null ? metadata.getString(INITIAL_ROUTE_META_DATA_KEY) : null; + String desiredInitialRoute = metadata != null ? metadata.getString(INITIAL_ROUTE_META_DATA_KEY) : null; + return desiredInitialRoute != null ? desiredInitialRoute : DEFAULT_INITIAL_ROUTE; } catch (PackageManager.NameNotFoundException e) { - return null; + return DEFAULT_INITIAL_ROUTE; } } diff --git a/shell/platform/android/io/flutter/embedding/android/FlutterFragment.java b/shell/platform/android/io/flutter/embedding/android/FlutterFragment.java index 53c283d934c1a..771928f866ed7 100644 --- a/shell/platform/android/io/flutter/embedding/android/FlutterFragment.java +++ b/shell/platform/android/io/flutter/embedding/android/FlutterFragment.java @@ -61,53 +61,92 @@ public class FlutterFragment extends Fragment { private static final String ARG_INITIAL_ROUTE = "initial_route"; private static final String ARG_APP_BUNDLE_PATH = "app_bundle_path"; private static final String ARG_FLUTTER_INITIALIZATION_ARGS = "initialization_args"; + private static final String ARG_FLUTTERVIEW_RENDER_MODE = "flutterview_render_mode"; /** - * Factory method that creates a new {@link FlutterFragment} with a default configuration. - *

      - *
    • default Dart entrypoint of "main"
    • - *
    • initial route of "/"
    • - *
    • default app bundle location
    • - *
    • no special engine arguments
    • - *
    - * @return new {@link FlutterFragment} - */ - public static FlutterFragment newInstance() { - return newInstance( - null, - null, - null, - null - ); - } - - /** - * Factory method that creates a new {@link FlutterFragment} with the given configuration. + * Builder that creates a new {@code FlutterFragment} with {@code arguments} that correspond + * to the values set on this {@code Builder}. *

    - * @param dartEntrypoint the name of the initial Dart method to invoke, defaults to "main" - * @param initialRoute the first route that a Flutter app will render in this {@link FlutterFragment}, - * defaults to "/" - * @param appBundlePath the path to the app bundle which contains the Dart app to execute, defaults - * to {@link FlutterMain#findAppBundlePath(Context)} - * @param flutterShellArgs any special configuration arguments for the Flutter engine - * - * @return a new {@link FlutterFragment} + * To create a {@code FlutterFragment} with default {@code arguments}, invoke {@code build()} + * immeidately: + * {@code + * FlutterFragment fragment = new FlutterFragment.Builder().build(); + * } */ - public static FlutterFragment newInstance(@Nullable String dartEntrypoint, - @Nullable String initialRoute, - @Nullable String appBundlePath, - @Nullable FlutterShellArgs flutterShellArgs) { - FlutterFragment frag = new FlutterFragment(); - - Bundle args = createArgsBundle( - dartEntrypoint, - initialRoute, - appBundlePath, - flutterShellArgs - ); - frag.setArguments(args); + public static class Builder { + private String dartEntrypoint = "main"; + private String initialRoute = "/"; + private String appBundlePath = null; + private FlutterShellArgs shellArgs = null; + private FlutterView.RenderMode renderMode = FlutterView.RenderMode.surface; + + /** + * The name of the initial Dart method to invoke, defaults to "main". + */ + @NonNull + public Builder dartEntrypoint(@NonNull String dartEntrypoint) { + this.dartEntrypoint = dartEntrypoint; + return this; + } + + /** + * The initial route that a Flutter app will render in this {@link FlutterFragment}, + * defaults to "/". + */ + @NonNull + public Builder initialRoute(@NonNull String initialRoute) { + this.initialRoute = initialRoute; + return this; + } + + /** + * The path to the app bundle which contains the Dart app to execute, defaults + * to {@link FlutterMain#findAppBundlePath(Context)} + */ + @NonNull + public Builder appBundlePath(@NonNull String appBundlePath) { + this.appBundlePath = appBundlePath; + return this; + } + + /** + * Any special configuration arguments for the Flutter engine + */ + @NonNull + public Builder flutterShellArgs(@NonNull FlutterShellArgs shellArgs) { + this.shellArgs = shellArgs; + return this; + } + + /** + * Render Flutter either as a {@link FlutterView.RenderMode#surface} or a + * {@link FlutterView.RenderMode#texture}. You should use {@code surface} unless + * you have a specific reason to use {@code texture}. {@code texture} comes with + * a significant performance impact, but {@code texture} can be displayed + * beneath other Android {@code View}s and animated, whereas {@code surface} + * cannot. + */ + @NonNull + public Builder renderMode(@NonNull FlutterView.RenderMode renderMode) { + this.renderMode = renderMode; + return this; + } + + @NonNull + public FlutterFragment build() { + FlutterFragment frag = new FlutterFragment(); + + Bundle args = createArgsBundle( + dartEntrypoint, + initialRoute, + appBundlePath, + shellArgs, + renderMode + ); + frag.setArguments(args); - return frag; + return frag; + } } /** @@ -118,16 +157,16 @@ public static FlutterFragment newInstance(@Nullable String dartEntrypoint, * wants to this {@link Bundle}. Example: *

    {@code
        * public static MyFlutterFragment newInstance(String myNewArg) {
    -   *   // Create an instance of our subclass Fragment.
    +   *   // Create an instance of your subclass Fragment.
        *   MyFlutterFragment myFrag = new MyFlutterFragment();
        *
        *   // Create the Bundle or args that FlutterFragment understands.
        *   Bundle args = FlutterFragment.createArgsBundle(...);
        *
    -   *   // Add our new args to the bundle.
    +   *   // Add your new args to the bundle.
        *   args.putString(ARG_MY_NEW_ARG, myNewArg);
        *
    -   *   // Give the args to our subclass Fragment.
    +   *   // Give the args to your subclass Fragment.
        *   myFrag.setArguments(args);
        *
        *   // Return the newly created subclass Fragment.
    @@ -139,13 +178,20 @@ public static FlutterFragment newInstance(@Nullable String dartEntrypoint,
        * @param initialRoute the first route that a Flutter app will render in this {@link FlutterFragment}, defaults to "/"
        * @param appBundlePath the path to the app bundle which contains the Dart app to execute
        * @param flutterShellArgs any special configuration arguments for the Flutter engine
    +   * @param renderMode render Flutter either as a {@link FlutterView.RenderMode#surface} or a
    +   *                   {@link FlutterView.RenderMode#texture}. You should use {@code surface} unless
    +   *                   you have a specific reason to use {@code texture}. {@code texture} comes with
    +   *                   a significant performance impact, but {@code texture} can be displayed
    +   *                   beneath other Android {@code View}s and animated, whereas {@code surface}
    +   *                   cannot.
        *
        * @return Bundle of arguments that configure a {@link FlutterFragment}
        */
       protected static Bundle createArgsBundle(@Nullable String dartEntrypoint,
                                                @Nullable String initialRoute,
                                                @Nullable String appBundlePath,
    -                                           @Nullable FlutterShellArgs flutterShellArgs) {
    +                                           @Nullable FlutterShellArgs flutterShellArgs,
    +                                           @Nullable FlutterView.RenderMode renderMode) {
         Bundle args = new Bundle();
         args.putString(ARG_INITIAL_ROUTE, initialRoute);
         args.putString(ARG_APP_BUNDLE_PATH, appBundlePath);
    @@ -154,6 +200,7 @@ protected static Bundle createArgsBundle(@Nullable String dartEntrypoint,
         if (null != flutterShellArgs) {
           args.putStringArray(ARG_FLUTTER_INITIALIZATION_ARGS, flutterShellArgs.toArray());
         }
    +    args.putString(ARG_FLUTTERVIEW_RENDER_MODE, renderMode != null ? renderMode.name() : FlutterView.RenderMode.surface.name());
         return args;
       }
     
    @@ -252,7 +299,7 @@ protected void onFlutterEngineCreated(@NonNull FlutterEngine flutterEngine) {
       @Nullable
       @Override
       public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    -    flutterView = new FlutterView(getContext());
    +    flutterView = new FlutterView(getContext(), getRenderMode());
         flutterView.attachToFlutterEngine(flutterEngine);
     
         // TODO(mattcarroll): the following call should exist here, but the plugin system needs to be revamped.
    @@ -326,6 +373,18 @@ protected String getDartEntrypointFunctionName() {
         return getArguments().getString(ARG_DART_ENTRYPOINT, "main");
       }
     
    +  /**
    +   * Returns the desired {@link FlutterView.RenderMode} for the {@link FlutterView} displayed in
    +   * this {@code FlutterFragment}.
    +   *
    +   * Defaults to {@link FlutterView.RenderMode#surface}.
    +   */
    +  @NonNull
    +  protected FlutterView.RenderMode getRenderMode() {
    +    String renderModeName = getArguments().getString(ARG_FLUTTERVIEW_RENDER_MODE, FlutterView.RenderMode.surface.name());
    +    return FlutterView.RenderMode.valueOf(renderModeName);
    +  }
    +
       // TODO(mattcarroll): determine why this can't be in onResume(). Comment reason, or move if possible.
       public void onPostResume() {
         Log.d(TAG, "onPostResume()");
    diff --git a/shell/platform/android/io/flutter/embedding/android/FlutterSurfaceView.java b/shell/platform/android/io/flutter/embedding/android/FlutterSurfaceView.java
    index c28eac9c5d1a1..ac19c5ae15798 100644
    --- a/shell/platform/android/io/flutter/embedding/android/FlutterSurfaceView.java
    +++ b/shell/platform/android/io/flutter/embedding/android/FlutterSurfaceView.java
    @@ -90,6 +90,10 @@ private void init() {
         // Grab a reference to our underlying Surface and register callbacks with that Surface so we
         // can monitor changes and forward those changes on to native Flutter code.
         getHolder().addCallback(surfaceCallback);
    +
    +    // Keep this SurfaceView transparent until Flutter has a frame ready to render. This avoids
    +    // displaying a black rectangle in our place.
    +    setAlpha(0.0f);
       }
     
       /**
    @@ -136,6 +140,9 @@ public void detachFromRenderer() {
             disconnectSurfaceFromRenderer();
           }
     
    +      // Make the SurfaceView invisible to avoid showing a black rectangle.
    +      setAlpha(0.0f);
    +
           flutterRenderer = null;
           isAttachedToFlutterRenderer = false;
         } else {
    @@ -174,5 +181,7 @@ private void disconnectSurfaceFromRenderer() {
       public void onFirstFrameRendered() {
         // TODO(mattcarroll): decide where this method should live and what it needs to do.
         Log.d(TAG, "onFirstFrameRendered()");
    +    // Now that a frame is ready to display, take this SurfaceView from transparent to opaque.
    +    setAlpha(1.0f);
       }
     }
    
    From deeb7a747f5593cf99282e3f94148132bf6f9f21 Mon Sep 17 00:00:00 2001
    From: skia-flutter-autoroll 
    Date: Wed, 27 Mar 2019 18:04:49 -0400
    Subject: [PATCH 1522/1537] Roll src/third_party/skia
     99ccc0ca87e6..8d2c19554e4a (11 commits) (#8332)
    
    https://skia.googlesource.com/skia.git/%2Blog/99ccc0ca87e6..8d2c19554e4a
    
    git log 99ccc0ca87e6d255d1477923cec3a2b9732959ec..8d2c19554e4a1f9f75abaf1093558f9fc712ddf4 --date=short --no-merges --format=%ad %ae %s
    2019-03-27 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader 4c9f4a97ffe3..179c932426b3 (1 commits)
    2019-03-27 csmartdalton@google.com Add MSAA and non-aa modes to GrFillRRect Op
    2019-03-27 egdaniel@google.com Add support for vsync on android viewer.
    2019-03-21 reed@google.com add bgra8 bgra8s and 8888s to explicitly control swizzle and srgb-ness in gpu[] configs
    2019-03-27 mtklein@google.com add .svg sources to fm
    2019-03-27 brianosman@google.com Allow Mock GrBackendTextures to masquerade as GL
    2019-03-27 mtklein@google.com add --backend pdf to fm
    2019-03-27 egdaniel@google.com Add vsync toggle for windows viewer.
    2019-03-27 mtklein@google.com add --backend skp to fm
    2019-03-27 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader e43cda5f76de..4c9f4a97ffe3 (1 commits)
    2019-03-27 mtklein@google.com buildifier public.bzl
    
    The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll
    
    Documentation for the AutoRoller is here:
    https://skia.googlesource.com/buildbot/+/master/autoroll/README.md
    
    If the roll is causing failures, please contact the current sheriff (stani@google.com), and stop
    the roller if necessary.
    ---
     DEPS                             | 2 +-
     ci/licenses_golden/licenses_skia | 2 +-
     2 files changed, 2 insertions(+), 2 deletions(-)
    
    diff --git a/DEPS b/DEPS
    index 9ecbe2f97d965..ac42e3fa0a2fa 100644
    --- a/DEPS
    +++ b/DEPS
    @@ -23,7 +23,7 @@ vars = {
       'fuchsia_git': 'https://fuchsia.googlesource.com',
       'github_git': 'https://github.com',
       'skia_git': 'https://skia.googlesource.com',
    -  'skia_revision': '99ccc0ca87e6d255d1477923cec3a2b9732959ec',
    +  'skia_revision': '8d2c19554e4a1f9f75abaf1093558f9fc712ddf4',
     
       # When updating the Dart revision, ensure that all entries that are
       # dependencies of Dart are also updated to match the entries in the
    diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia
    index 290d634046755..631043f15f904 100644
    --- a/ci/licenses_golden/licenses_skia
    +++ b/ci/licenses_golden/licenses_skia
    @@ -1,4 +1,4 @@
    -Signature: 34a282f02f7fb9a128e84ed0217e8743
    +Signature: de6d3f4aa462810f8b52a646cac334d6
     
     UNUSED LICENSES:
     
    
    From 37947f961a6242d2efc05a55a4319b120764a403 Mon Sep 17 00:00:00 2001
    From: Amir Hardon 
    Date: Wed, 27 Mar 2019 15:49:15 -0700
    Subject: [PATCH 1523/1537] Allow delegation of a11y events from nodes that
     were not yet traversed (#8333)
    
    The AccessibilityViewEmbedder was not delegating a11y events coming virtual nodes(of the embedded view) that were not previously traversed by the a11y framework.
    
    It turns out the a11y framework might leave parts of the tree untraversed in some circumstances, changed the behavior to create an originId<-->flutterId mapping on the fly when an event is delegated from a not previously traversed node.
    
    Fixes flutter/flutter#30010.
    ---
     .../view/AccessibilityViewEmbedder.java       | 39 ++++++++++++-------
     1 file changed, 26 insertions(+), 13 deletions(-)
    
    diff --git a/shell/platform/android/io/flutter/view/AccessibilityViewEmbedder.java b/shell/platform/android/io/flutter/view/AccessibilityViewEmbedder.java
    index 330ded624ddc0..fbc2260d260e0 100644
    --- a/shell/platform/android/io/flutter/view/AccessibilityViewEmbedder.java
    +++ b/shell/platform/android/io/flutter/view/AccessibilityViewEmbedder.java
    @@ -51,11 +51,10 @@ class AccessibilityViewEmbedder {
         // Maps a platform view and originId to a corresponding flutterID.
         private final Map originToFlutterId;
     
    -    // Maps the flutterId of an accessibility node to the screen bounds of
    -    // the root semantic node for the embedded view.
    +    // Maps an embedded view to it's screen bounds.
         // This is used to translate the coordinates of the accessibility node subtree to the main display's coordinate
         // system.
    -    private final SparseArray flutterIdToDisplayBounds;
    +    private final Map embeddedViewToDisplayBounds;
     
         private int nextFlutterId;
     
    @@ -64,8 +63,8 @@ class AccessibilityViewEmbedder {
             flutterIdToOrigin = new SparseArray<>();
             this.rootAccessibilityView = rootAccessibiiltyView;
             nextFlutterId = firstVirtualNodeId;
    -        flutterIdToDisplayBounds = new SparseArray<>();
             originToFlutterId = new HashMap<>();
    +        embeddedViewToDisplayBounds = new HashMap<>();
         }
     
         /**
    @@ -80,10 +79,9 @@ public AccessibilityNodeInfo getRootNode(@NonNull View embeddedView, int flutter
             if (originPackedId == null) {
                 return null;
             }
    +        embeddedViewToDisplayBounds.put(embeddedView, displayBounds);
             int originId = ReflectionAccessors.getVirtualNodeId(originPackedId);
    -        flutterIdToOrigin.put(flutterId, new ViewAndId(embeddedView, originId));
    -        flutterIdToDisplayBounds.put(flutterId, displayBounds);
    -        originToFlutterId.put(new ViewAndId(embeddedView, originId), flutterId);
    +        cacheVirtualIdMappings(embeddedView, originId, flutterId);
             return convertToFlutterNode(originNode, flutterId, embeddedView);
         }
     
    @@ -96,6 +94,13 @@ public AccessibilityNodeInfo createAccessibilityNodeInfo(int flutterId) {
             if (origin == null) {
                 return null;
             }
    +        if (!embeddedViewToDisplayBounds.containsKey(origin.view)) {
    +            // This might happen if the embedded view is sending accessibility event before the first Flutter semantics
    +            // tree was sent to the accessibility bridge. In this case we don't return a node as we do not know the
    +            // bounds yet.
    +            // https://github.com/flutter/flutter/issues/30068
    +            return null;
    +        }
             AccessibilityNodeProvider provider = origin.view.getAccessibilityNodeProvider();
             if (provider == null) {
                 // The provider is null for views that don't have a virtual accessibility tree.
    @@ -127,7 +132,7 @@ private AccessibilityNodeInfo convertToFlutterNode(
             result.setSource(rootAccessibilityView, flutterId);
             result.setClassName(originNode.getClassName());
     
    -        Rect displayBounds = flutterIdToDisplayBounds.get(flutterId);
    +        Rect displayBounds = embeddedViewToDisplayBounds.get(embeddedView);
     
             copyAccessibilityFields(originNode, result);
             setFlutterNodesTranslateBounds(originNode, displayBounds, result);
    @@ -172,14 +177,21 @@ private void addChildrenToFlutterNode(
                     childFlutterId = originToFlutterId.get(origin);
                 } else {
                     childFlutterId = nextFlutterId++;
    -                originToFlutterId.put(origin, childFlutterId);
    -                flutterIdToOrigin.put(childFlutterId, origin);
    -                flutterIdToDisplayBounds.put(childFlutterId, displayBounds);
    +                cacheVirtualIdMappings(embeddedView, originId, childFlutterId);
                 }
                 resultNode.addChild(rootAccessibilityView, childFlutterId);
             }
         }
     
    +    // Caches a bidirectional mapping of (embeddedView, originId)<-->flutterId.
    +    // Where originId is a virtual node ID in the embeddedView's tree, and flutterId is the ID
    +    // of the corresponding node in the Flutter virtual accessibility nodes tree.
    +    private void cacheVirtualIdMappings(@NonNull View embeddedView, int originId, int flutterId) {
    +        ViewAndId origin = new ViewAndId(embeddedView, originId);
    +        originToFlutterId.put(origin, flutterId);
    +        flutterIdToOrigin.put(flutterId, origin);
    +    }
    +
         private void setFlutterNodesTranslateBounds(
                 @NonNull AccessibilityNodeInfo originNode,
                 @NonNull Rect displayBounds,
    @@ -265,7 +277,8 @@ public boolean requestSendAccessibilityEvent(
             int originVirtualId = ReflectionAccessors.getVirtualNodeId(originPackedId);
             Integer flutterId = originToFlutterId.get(new ViewAndId(embeddedView, originVirtualId));
             if (flutterId == null) {
    -            return false;
    +            flutterId = nextFlutterId++;
    +            cacheVirtualIdMappings(embeddedView, originVirtualId, flutterId);
             }
             translatedEvent.setSource(rootAccessibilityView, flutterId);
             translatedEvent.setClassName(event.getClassName());
    @@ -333,7 +346,7 @@ public boolean onAccessibilityHoverEvent(int rootFlutterId, @NonNull MotionEvent
             if (origin == null) {
                 return false;
             }
    -        Rect displayBounds = flutterIdToDisplayBounds.get(rootFlutterId);
    +        Rect displayBounds = embeddedViewToDisplayBounds.get(origin.view);
             int pointerCount = event.getPointerCount();
             MotionEvent.PointerProperties[] pointerProperties = new MotionEvent.PointerProperties[pointerCount];
             MotionEvent.PointerCoords[] pointerCoords = new MotionEvent.PointerCoords[pointerCount];
    
    From cb8eb801a4a905bfa24bc9ba081def174472d806 Mon Sep 17 00:00:00 2001
    From: Chinmay Garde 
    Date: Wed, 27 Mar 2019 16:16:59 -0700
    Subject: [PATCH 1524/1537] Allow embedders to specify their own task runner
     interfaces. (#8273)
    
    Currently, all Flutter threads are managed by the engine itself. This works for
    all threads except the platform thread. On this thread, the engine cannot see
    the underlying event multiplexing mechanism. Using the new task runner
    interfaces, the engine can relinquish the task of setting up the event
    multiplexing mechanism and instead have the embedder provide one for it during
    setup.
    
    This scheme is only wired up for the platform thread. But, the eventual goal
    is to expose this message loop interoperability for all threads.
    ---
     ci/licenses_golden/licenses_flutter           |   5 +
     fml/task_runner.h                             |   4 +-
     shell/platform/embedder/BUILD.gn              |   5 +
     shell/platform/embedder/embedder.cc           |  63 +++---
     shell/platform/embedder/embedder.h            |  64 ++++++
     shell/platform/embedder/embedder_engine.cc    |  16 +-
     shell/platform/embedder/embedder_engine.h     |   8 +-
     .../platform/embedder/embedder_safe_access.h  |  20 ++
     .../platform/embedder/embedder_task_runner.cc |  72 +++++++
     .../platform/embedder/embedder_task_runner.h  |  57 +++++
     .../platform/embedder/embedder_thread_host.cc | 204 ++++++++++++++++++
     .../platform/embedder/embedder_thread_host.h  |  54 +++++
     .../embedder/fixtures/simple_main.dart        |   8 +
     .../embedder/tests/embedder_config_builder.cc |  38 +++-
     .../embedder/tests/embedder_config_builder.h  |  10 +-
     .../embedder/tests/embedder_unittests.cc      | 117 +++++++++-
     16 files changed, 705 insertions(+), 40 deletions(-)
     create mode 100644 shell/platform/embedder/embedder_safe_access.h
     create mode 100644 shell/platform/embedder/embedder_task_runner.cc
     create mode 100644 shell/platform/embedder/embedder_task_runner.h
     create mode 100644 shell/platform/embedder/embedder_thread_host.cc
     create mode 100644 shell/platform/embedder/embedder_thread_host.h
    
    diff --git a/ci/licenses_golden/licenses_flutter b/ci/licenses_golden/licenses_flutter
    index 0a30b3ca65123..f5259b505f734 100644
    --- a/ci/licenses_golden/licenses_flutter
    +++ b/ci/licenses_golden/licenses_flutter
    @@ -675,12 +675,17 @@ FILE: ../../../flutter/shell/platform/embedder/embedder_engine.h
     FILE: ../../../flutter/shell/platform/embedder/embedder_external_texture_gl.cc
     FILE: ../../../flutter/shell/platform/embedder/embedder_external_texture_gl.h
     FILE: ../../../flutter/shell/platform/embedder/embedder_include.c
    +FILE: ../../../flutter/shell/platform/embedder/embedder_safe_access.h
     FILE: ../../../flutter/shell/platform/embedder/embedder_surface.cc
     FILE: ../../../flutter/shell/platform/embedder/embedder_surface.h
     FILE: ../../../flutter/shell/platform/embedder/embedder_surface_gl.cc
     FILE: ../../../flutter/shell/platform/embedder/embedder_surface_gl.h
     FILE: ../../../flutter/shell/platform/embedder/embedder_surface_software.cc
     FILE: ../../../flutter/shell/platform/embedder/embedder_surface_software.h
    +FILE: ../../../flutter/shell/platform/embedder/embedder_task_runner.cc
    +FILE: ../../../flutter/shell/platform/embedder/embedder_task_runner.h
    +FILE: ../../../flutter/shell/platform/embedder/embedder_thread_host.cc
    +FILE: ../../../flutter/shell/platform/embedder/embedder_thread_host.h
     FILE: ../../../flutter/shell/platform/embedder/fixtures/a11y_main.dart
     FILE: ../../../flutter/shell/platform/embedder/fixtures/simple_main.dart
     FILE: ../../../flutter/shell/platform/embedder/platform_view_embedder.cc
    diff --git a/fml/task_runner.h b/fml/task_runner.h
    index 04696752c95e3..72c4219029f34 100644
    --- a/fml/task_runner.h
    +++ b/fml/task_runner.h
    @@ -17,6 +17,8 @@ class MessageLoopImpl;
     
     class TaskRunner : public fml::RefCountedThreadSafe {
      public:
    +  virtual ~TaskRunner();
    +
       virtual void PostTask(fml::closure task);
     
       virtual void PostTaskForTime(fml::closure task, fml::TimePoint target_time);
    @@ -25,8 +27,6 @@ class TaskRunner : public fml::RefCountedThreadSafe {
     
       virtual bool RunsTasksOnCurrentThread();
     
    -  virtual ~TaskRunner();
    -
       static void RunNowOrPostTask(fml::RefPtr runner,
                                    fml::closure task);
     
    diff --git a/shell/platform/embedder/BUILD.gn b/shell/platform/embedder/BUILD.gn
    index f9659a3b5c5fb..5632f5f0fd5dd 100644
    --- a/shell/platform/embedder/BUILD.gn
    +++ b/shell/platform/embedder/BUILD.gn
    @@ -22,12 +22,17 @@ source_set("embedder") {
         "embedder_external_texture_gl.cc",
         "embedder_external_texture_gl.h",
         "embedder_include.c",
    +    "embedder_safe_access.h",
         "embedder_surface.cc",
         "embedder_surface.h",
         "embedder_surface_gl.cc",
         "embedder_surface_gl.h",
         "embedder_surface_software.cc",
         "embedder_surface_software.h",
    +    "embedder_task_runner.cc",
    +    "embedder_task_runner.h",
    +    "embedder_thread_host.cc",
    +    "embedder_thread_host.h",
         "platform_view_embedder.cc",
         "platform_view_embedder.h",
         "vsync_waiter_embedder.cc",
    diff --git a/shell/platform/embedder/embedder.cc b/shell/platform/embedder/embedder.cc
    index c15970de70775..93c23b12207e1 100644
    --- a/shell/platform/embedder/embedder.cc
    +++ b/shell/platform/embedder/embedder.cc
    @@ -21,10 +21,6 @@ extern const intptr_t kPlatformStrongDillSize;
     #endif  // FLUTTER_RUNTIME_MODE == FLUTTER_RUNTIME_MODE_DEBUG
     }
     
    -#include "flutter/shell/platform/embedder/embedder.h"
    -
    -#include 
    -
     #include "flutter/assets/directory_asset_bundle.h"
     #include "flutter/common/task_runners.h"
     #include "flutter/fml/command_line.h"
    @@ -38,18 +34,11 @@ extern const intptr_t kPlatformStrongDillSize;
     #include "flutter/shell/common/switches.h"
     #include "flutter/shell/platform/embedder/embedder.h"
     #include "flutter/shell/platform/embedder/embedder_engine.h"
    +#include "flutter/shell/platform/embedder/embedder_safe_access.h"
    +#include "flutter/shell/platform/embedder/embedder_task_runner.h"
    +#include "flutter/shell/platform/embedder/embedder_thread_host.h"
     #include "flutter/shell/platform/embedder/platform_view_embedder.h"
     
    -#define SAFE_ACCESS(pointer, member, default_value)                      \
    -  ([=]() {                                                               \
    -    if (offsetof(std::remove_pointer::type, member) + \
    -            sizeof(pointer->member) <=                                   \
    -        pointer->struct_size) {                                          \
    -      return pointer->member;                                            \
    -    }                                                                    \
    -    return static_castmember)>((default_value));      \
    -  })()
    -
     static FlutterEngineResult LogEmbedderError(FlutterEngineResult code,
                                                 const char* name,
                                                 const char* function,
    @@ -408,20 +397,6 @@ FlutterEngineResult FlutterEngineRun(size_t version,
         };
       }
     
    -  // Create a thread host with the current thread as the platform thread and all
    -  // other threads managed.
    -  shell::ThreadHost thread_host("io.flutter", shell::ThreadHost::Type::GPU |
    -                                                  shell::ThreadHost::Type::IO |
    -                                                  shell::ThreadHost::Type::UI);
    -  fml::MessageLoop::EnsureInitializedForCurrentThread();
    -  blink::TaskRunners task_runners(
    -      "io.flutter",
    -      fml::MessageLoop::GetCurrent().GetTaskRunner(),  // platform
    -      thread_host.gpu_thread->GetTaskRunner(),         // gpu
    -      thread_host.ui_thread->GetTaskRunner(),          // ui
    -      thread_host.io_thread->GetTaskRunner()           // io
    -  );
    -
       shell::PlatformViewEmbedder::UpdateSemanticsNodesCallback
           update_semantics_nodes_callback = nullptr;
       if (SAFE_ACCESS(args, update_semantics_node_callback, nullptr) != nullptr) {
    @@ -602,6 +577,23 @@ FlutterEngineResult FlutterEngineRun(size_t version,
         }
       }
     
    +  auto thread_host =
    +      shell::EmbedderThreadHost::CreateEmbedderOrEngineManagedThreadHost(
    +          SAFE_ACCESS(args, custom_task_runners, nullptr));
    +
    +  if (!thread_host || !thread_host->IsValid()) {
    +    FML_LOG(ERROR) << "Could not setup or infer thread configuration to run "
    +                      "the Flutter engine on.";
    +    return LOG_EMBEDDER_ERROR(kInvalidArguments);
    +  }
    +
    +  auto task_runners = thread_host->GetTaskRunners();
    +
    +  if (!task_runners.IsValid()) {
    +    FML_LOG(ERROR) << "Task runner configuration specified is invalid.";
    +    return LOG_EMBEDDER_ERROR(kInvalidArguments);
    +  }
    +
       // Step 1: Create the engine.
       auto embedder_engine =
           std::make_unique(std::move(thread_host),    //
    @@ -940,3 +932,18 @@ FlutterEngineResult FlutterEnginePostRenderThreadTask(FlutterEngine engine,
                  ? kSuccess
                  : LOG_EMBEDDER_ERROR(kInternalInconsistency);
     }
    +
    +uint64_t FlutterEngineGetCurrentTime() {
    +  return fml::TimePoint::Now().ToEpochDelta().ToNanoseconds();
    +}
    +
    +FlutterEngineResult FlutterEngineRunTask(FlutterEngine engine,
    +                                         const FlutterTask* task) {
    +  if (engine == nullptr) {
    +    return LOG_EMBEDDER_ERROR(kInvalidArguments);
    +  }
    +
    +  return reinterpret_cast(engine)->RunTask(task)
    +             ? kSuccess
    +             : LOG_EMBEDDER_ERROR(kInvalidArguments);
    +}
    diff --git a/shell/platform/embedder/embedder.h b/shell/platform/embedder/embedder.h
    index 442716a50114b..ae0348e7e0e19 100644
    --- a/shell/platform/embedder/embedder.h
    +++ b/shell/platform/embedder/embedder.h
    @@ -447,6 +447,52 @@ typedef void (*FlutterUpdateSemanticsCustomActionCallback)(
         const FlutterSemanticsCustomAction* /* semantics custom action */,
         void* /* user data */);
     
    +typedef struct _FlutterTaskRunner* FlutterTaskRunner;
    +
    +typedef struct {
    +  FlutterTaskRunner runner;
    +  uint64_t task;
    +} FlutterTask;
    +
    +typedef void (*FlutterTaskRunnerPostTaskCallback)(
    +    FlutterTask /* task */,
    +    uint64_t /* target time nanos */,
    +    void* /* user data */);
    +
    +// An interface used by the Flutter engine to execute tasks at the target time
    +// on a specified thread. There should be a 1-1 relationship between a thread
    +// and a task runner. It is undefined behavior to run a task on a thread that is
    +// not associated with its task runner.
    +typedef struct {
    +  // The size of this struct. Must be sizeof(FlutterTaskRunnerDescription).
    +  size_t struct_size;
    +  void* user_data;
    +  // May be called from any thread. Should return true if tasks posted on the
    +  // calling thread will be run on that same thread.
    +  //
    +  // This field is required.
    +  BoolCallback runs_task_on_current_thread_callback;
    +  // May be called from any thread. The given task should be executed by the
    +  // embedder on the thread associated with that task runner by calling
    +  // |FlutterEngineRunTask| at the given target time. The system monotonic clock
    +  // should be used for the target time. The target time is the absolute time
    +  // from epoch (NOT a delta) at which the task must be returned back to the
    +  // engine on the correct thread. If the embedder needs to calculate a delta,
    +  // |FlutterEngineGetCurrentTime| may be called and the difference used as the
    +  // delta.
    +  //
    +  // This field is required.
    +  FlutterTaskRunnerPostTaskCallback post_task_callback;
    +} FlutterTaskRunnerDescription;
    +
    +typedef struct {
    +  // The size of this struct. Must be sizeof(FlutterCustomTaskRunners).
    +  size_t struct_size;
    +  // Specify the task runner for the thread on which the |FlutterEngineRun| call
    +  // is made.
    +  const FlutterTaskRunnerDescription* platform_task_runner;
    +} FlutterCustomTaskRunners;
    +
     typedef struct {
       // The size of this struct. Must be sizeof(FlutterProjectArgs).
       size_t struct_size;
    @@ -572,6 +618,11 @@ typedef struct {
       // away. Usually, this is done using the `@pragma('vm:entry-point')`
       // decoration.
       const char* custom_dart_entrypoint;
    +
    +  // Typically the Flutter engine create and manages its internal threads. This
    +  // optional argument allows for the specification of task runner interfaces to
    +  // event loops managed by the embedder on threads it creates.
    +  const FlutterCustomTaskRunners* custom_task_runners;
     } FlutterProjectArgs;
     
     FLUTTER_EXPORT
    @@ -715,6 +766,19 @@ FlutterEngineResult FlutterEnginePostRenderThreadTask(FlutterEngine engine,
                                                           VoidCallback callback,
                                                           void* callback_data);
     
    +// Get the current time in nanoseconds from the clock used by the flutter
    +// engine. This is the system monotonic clock.
    +FLUTTER_EXPORT
    +uint64_t FlutterEngineGetCurrentTime();
    +
    +// Inform the engine to run the specified task. This task has been given to
    +// the engine via the |FlutterTaskRunnerDescription.post_task_callback|. This
    +// call must only be made at the target time specified in that callback. Running
    +// the task before that time is undefined behavior.
    +FLUTTER_EXPORT
    +FlutterEngineResult FlutterEngineRunTask(FlutterEngine engine,
    +                                         const FlutterTask* task);
    +
     #if defined(__cplusplus)
     }  // extern "C"
     #endif
    diff --git a/shell/platform/embedder/embedder_engine.cc b/shell/platform/embedder/embedder_engine.cc
    index 63083bcef1b4d..836dfc645c1a7 100644
    --- a/shell/platform/embedder/embedder_engine.cc
    +++ b/shell/platform/embedder/embedder_engine.cc
    @@ -10,7 +10,7 @@
     namespace shell {
     
     EmbedderEngine::EmbedderEngine(
    -    ThreadHost thread_host,
    +    std::unique_ptr thread_host,
         blink::TaskRunners task_runners,
         blink::Settings settings,
         Shell::CreateCallback on_create_platform_view,
    @@ -23,7 +23,11 @@ EmbedderEngine::EmbedderEngine(
                                on_create_platform_view,
                                on_create_rasterizer)),
           external_texture_callback_(external_texture_callback) {
    -  is_valid_ = shell_ != nullptr;
    +  if (!shell_) {
    +    return;
    +  }
    +
    +  is_valid_ = true;
     }
     
     EmbedderEngine::~EmbedderEngine() = default;
    @@ -212,4 +216,12 @@ bool EmbedderEngine::PostRenderThreadTask(fml::closure task) {
       return true;
     }
     
    +bool EmbedderEngine::RunTask(const FlutterTask* task) {
    +  if (!IsValid() || task == nullptr) {
    +    return false;
    +  }
    +  return thread_host_->PostTask(reinterpret_cast(task->runner),
    +                                task->task);
    +}
    +
     }  // namespace shell
    diff --git a/shell/platform/embedder/embedder_engine.h b/shell/platform/embedder/embedder_engine.h
    index 52b528e3a2ec3..bd2ff92d16d8b 100644
    --- a/shell/platform/embedder/embedder_engine.h
    +++ b/shell/platform/embedder/embedder_engine.h
    @@ -6,6 +6,7 @@
     #define FLUTTER_SHELL_PLATFORM_EMBEDDER_EMBEDDER_ENGINE_H_
     
     #include 
    +#include 
     
     #include "flutter/fml/macros.h"
     #include "flutter/shell/common/shell.h"
    @@ -13,6 +14,7 @@
     #include "flutter/shell/platform/embedder/embedder.h"
     #include "flutter/shell/platform/embedder/embedder_engine.h"
     #include "flutter/shell/platform/embedder/embedder_external_texture_gl.h"
    +#include "flutter/shell/platform/embedder/embedder_thread_host.h"
     
     namespace shell {
     
    @@ -20,7 +22,7 @@ namespace shell {
     // instance of the Flutter engine.
     class EmbedderEngine {
      public:
    -  EmbedderEngine(ThreadHost thread_host,
    +  EmbedderEngine(std::unique_ptr thread_host,
                      blink::TaskRunners task_runners,
                      blink::Settings settings,
                      Shell::CreateCallback on_create_platform_view,
    @@ -65,8 +67,10 @@ class EmbedderEngine {
     
       bool PostRenderThreadTask(fml::closure task);
     
    +  bool RunTask(const FlutterTask* task);
    +
      private:
    -  const ThreadHost thread_host_;
    +  const std::unique_ptr thread_host_;
       std::unique_ptr shell_;
       const EmbedderExternalTextureGL::ExternalTextureCallback
           external_texture_callback_;
    diff --git a/shell/platform/embedder/embedder_safe_access.h b/shell/platform/embedder/embedder_safe_access.h
    new file mode 100644
    index 0000000000000..783eb44a88bd2
    --- /dev/null
    +++ b/shell/platform/embedder/embedder_safe_access.h
    @@ -0,0 +1,20 @@
    +// 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.
    +
    +#ifndef FLUTTER_SHELL_PLATFORM_EMBEDDER_EMBEDDER_SAFE_ACCESS_H_
    +#define FLUTTER_SHELL_PLATFORM_EMBEDDER_EMBEDDER_SAFE_ACCESS_H_
    +
    +#include 
    +
    +#define SAFE_ACCESS(pointer, member, default_value)                      \
    +  ([=]() {                                                               \
    +    if (offsetof(std::remove_pointer::type, member) + \
    +            sizeof(pointer->member) <=                                   \
    +        pointer->struct_size) {                                          \
    +      return pointer->member;                                            \
    +    }                                                                    \
    +    return static_castmember)>((default_value));      \
    +  })()
    +
    +#endif  // FLUTTER_SHELL_PLATFORM_EMBEDDER_EMBEDDER_SAFE_ACCESS_H_
    diff --git a/shell/platform/embedder/embedder_task_runner.cc b/shell/platform/embedder/embedder_task_runner.cc
    new file mode 100644
    index 0000000000000..c0b5ab862bdf4
    --- /dev/null
    +++ b/shell/platform/embedder/embedder_task_runner.cc
    @@ -0,0 +1,72 @@
    +// 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/platform/embedder/embedder_task_runner.h"
    +
    +#include "flutter/fml/message_loop_impl.h"
    +
    +namespace shell {
    +
    +EmbedderTaskRunner::EmbedderTaskRunner(DispatchTable table)
    +    : TaskRunner(nullptr /* loop implemenation*/),
    +      dispatch_table_(std::move(table)) {
    +  FML_DCHECK(dispatch_table_.post_task_callback);
    +  FML_DCHECK(dispatch_table_.runs_task_on_current_thread_callback);
    +}
    +
    +EmbedderTaskRunner::~EmbedderTaskRunner() = default;
    +
    +void EmbedderTaskRunner::PostTask(fml::closure task) {
    +  PostTaskForTime(task, fml::TimePoint::Now());
    +}
    +
    +void EmbedderTaskRunner::PostTaskForTime(fml::closure task,
    +                                         fml::TimePoint target_time) {
    +  if (!task) {
    +    return;
    +  }
    +
    +  uint64_t baton = 0;
    +
    +  {
    +    // Release the lock before the jump via the dispatch table.
    +    std::lock_guard lock(tasks_mutex_);
    +    baton = ++last_baton_;
    +    pending_tasks_[baton] = task;
    +  }
    +
    +  dispatch_table_.post_task_callback(this, baton, target_time);
    +}
    +
    +void EmbedderTaskRunner::PostDelayedTask(fml::closure task,
    +                                         fml::TimeDelta delay) {
    +  PostTaskForTime(task, fml::TimePoint::Now() + delay);
    +}
    +
    +bool EmbedderTaskRunner::RunsTasksOnCurrentThread() {
    +  return dispatch_table_.runs_task_on_current_thread_callback();
    +}
    +
    +bool EmbedderTaskRunner::PostTask(uint64_t baton) {
    +  fml::closure task;
    +
    +  {
    +    std::lock_guard lock(tasks_mutex_);
    +    auto found = pending_tasks_.find(baton);
    +    if (found == pending_tasks_.end()) {
    +      FML_LOG(ERROR) << "Embedder attempted to post an unknown task.";
    +      return false;
    +    }
    +    task = found->second;
    +    pending_tasks_.erase(found);
    +
    +    // Let go of the tasks mutex befor executing the task.
    +  }
    +
    +  FML_DCHECK(task);
    +  task();
    +  return true;
    +}
    +
    +}  // namespace shell
    diff --git a/shell/platform/embedder/embedder_task_runner.h b/shell/platform/embedder/embedder_task_runner.h
    new file mode 100644
    index 0000000000000..084efbf148a45
    --- /dev/null
    +++ b/shell/platform/embedder/embedder_task_runner.h
    @@ -0,0 +1,57 @@
    +// 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.
    +
    +#ifndef FLUTTER_SHELL_PLATFORM_EMBEDDER_EMBEDDER_TASK_RUNNER_H_
    +#define FLUTTER_SHELL_PLATFORM_EMBEDDER_EMBEDDER_TASK_RUNNER_H_
    +
    +#include 
    +#include 
    +
    +#include "flutter/fml/macros.h"
    +#include "flutter/fml/synchronization/thread_annotations.h"
    +#include "flutter/fml/task_runner.h"
    +
    +namespace shell {
    +
    +class EmbedderTaskRunner final : public fml::TaskRunner {
    + public:
    +  struct DispatchTable {
    +    std::function
    +        post_task_callback;
    +    std::function runs_task_on_current_thread_callback;
    +  };
    +
    +  EmbedderTaskRunner(DispatchTable table);
    +
    +  ~EmbedderTaskRunner() override;
    +
    +  bool PostTask(uint64_t baton);
    +
    +  // |fml::TaskRunner|
    +  void PostTask(fml::closure task) override;
    +
    +  // |fml::TaskRunner|
    +  void PostTaskForTime(fml::closure task, fml::TimePoint target_time) override;
    +
    +  // |fml::TaskRunner|
    +  void PostDelayedTask(fml::closure task, fml::TimeDelta delay) override;
    +
    +  // |fml::TaskRunner|
    +  bool RunsTasksOnCurrentThread() override;
    +
    + private:
    +  DispatchTable dispatch_table_;
    +  std::mutex tasks_mutex_;
    +  uint64_t last_baton_ FML_GUARDED_BY(tasks_mutex_);
    +  std::unordered_map pending_tasks_
    +      FML_GUARDED_BY(tasks_mutex_);
    +
    +  FML_DISALLOW_COPY_AND_ASSIGN(EmbedderTaskRunner);
    +};
    +
    +}  // namespace shell
    +
    +#endif  // FLUTTER_SHELL_PLATFORM_EMBEDDER_EMBEDDER_TASK_RUNNER_H_
    diff --git a/shell/platform/embedder/embedder_thread_host.cc b/shell/platform/embedder/embedder_thread_host.cc
    new file mode 100644
    index 0000000000000..648025ea5a317
    --- /dev/null
    +++ b/shell/platform/embedder/embedder_thread_host.cc
    @@ -0,0 +1,204 @@
    +// 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.
    +
    +// This is why we can't yet export the UI thread to embedders.
    +#define FML_USED_ON_EMBEDDER
    +
    +#include "flutter/shell/platform/embedder/embedder_thread_host.h"
    +
    +#include "flutter/fml/message_loop.h"
    +#include "flutter/shell/platform/embedder/embedder_safe_access.h"
    +
    +namespace shell {
    +
    +static fml::RefPtr CreateEmbedderTaskRunner(
    +    const FlutterTaskRunnerDescription* description) {
    +  if (description == nullptr) {
    +    return {};
    +  }
    +
    +  if (SAFE_ACCESS(description, runs_task_on_current_thread_callback, nullptr) ==
    +      nullptr) {
    +    FML_LOG(ERROR) << "FlutterTaskRunnerDescription.runs_task_on_current_"
    +                      "thread_callback was nullptr.";
    +    return {};
    +  }
    +
    +  if (SAFE_ACCESS(description, post_task_callback, nullptr) == nullptr) {
    +    FML_LOG(ERROR)
    +        << "FlutterTaskRunnerDescription.post_task_callback was nullptr.";
    +    return {};
    +  }
    +
    +  auto user_data = SAFE_ACCESS(description, user_data, nullptr);
    +
    +  // ABI safety checks have been completed.
    +  auto post_task_callback_c = description->post_task_callback;
    +  auto runs_task_on_current_thread_callback_c =
    +      description->runs_task_on_current_thread_callback;
    +
    +  EmbedderTaskRunner::DispatchTable task_runner_dispatch_table = {
    +      .post_task_callback = [post_task_callback_c, user_data](
    +                                EmbedderTaskRunner* task_runner,
    +                                uint64_t task_baton,
    +                                fml::TimePoint target_time) -> void {
    +        FlutterTask task = {
    +            .runner = reinterpret_cast(task_runner),
    +            .task = task_baton,
    +        };
    +        post_task_callback_c(task, target_time.ToEpochDelta().ToNanoseconds(),
    +                             user_data);
    +      },
    +      .runs_task_on_current_thread_callback =
    +          [runs_task_on_current_thread_callback_c, user_data]() -> bool {
    +        return runs_task_on_current_thread_callback_c(user_data);
    +      }};
    +
    +  return fml::MakeRefCounted(task_runner_dispatch_table);
    +}
    +
    +std::unique_ptr
    +EmbedderThreadHost::CreateEmbedderOrEngineManagedThreadHost(
    +    const FlutterCustomTaskRunners* custom_task_runners) {
    +  {
    +    auto host = CreateEmbedderManagedThreadHost(custom_task_runners);
    +    if (host && host->IsValid()) {
    +      return host;
    +    }
    +  }
    +
    +  // Only attempt to create the engine managed host if the embedder did not
    +  // specify a custom configuration. We don't want to fallback to the engine
    +  // managed configuration if the embedder attempted to specify a configuration
    +  // but messed up with an incorrect configuration.
    +  if (custom_task_runners == nullptr) {
    +    auto host = CreateEngineManagedThreadHost();
    +    if (host && host->IsValid()) {
    +      return host;
    +    }
    +  }
    +
    +  return nullptr;
    +}
    +
    +constexpr const char* kFlutterThreadName = "io.flutter";
    +
    +// static
    +std::unique_ptr
    +EmbedderThreadHost::CreateEmbedderManagedThreadHost(
    +    const FlutterCustomTaskRunners* custom_task_runners) {
    +  if (custom_task_runners == nullptr) {
    +    return nullptr;
    +  }
    +
    +  const auto platform_task_runner = CreateEmbedderTaskRunner(
    +      SAFE_ACCESS(custom_task_runners, platform_task_runner, nullptr));
    +
    +  // TODO(chinmaygarde): Add more here as we allow more threads to be controlled
    +  // by the embedder. Create fallbacks as necessary.
    +
    +  if (!platform_task_runner) {
    +    return nullptr;
    +  }
    +
    +  ThreadHost thread_host(kFlutterThreadName, ThreadHost::Type::GPU |
    +                                                 ThreadHost::Type::IO |
    +                                                 ThreadHost::Type::UI);
    +
    +  blink::TaskRunners task_runners(
    +      kFlutterThreadName,
    +      platform_task_runner,                     // platform
    +      thread_host.gpu_thread->GetTaskRunner(),  // gpu
    +      thread_host.ui_thread->GetTaskRunner(),   // ui
    +      thread_host.io_thread->GetTaskRunner()    // io
    +  );
    +
    +  if (!task_runners.IsValid()) {
    +    return nullptr;
    +  }
    +
    +  std::set> embedder_task_runners;
    +  embedder_task_runners.insert(platform_task_runner);
    +
    +  auto embedder_host = std::make_unique(
    +      std::move(thread_host), std::move(task_runners),
    +      std::move(embedder_task_runners));
    +
    +  if (embedder_host->IsValid()) {
    +    return embedder_host;
    +  }
    +
    +  return nullptr;
    +}
    +
    +// static
    +std::unique_ptr
    +EmbedderThreadHost::CreateEngineManagedThreadHost() {
    +  // Create a thread host with the current thread as the platform thread and all
    +  // other threads managed.
    +  ThreadHost thread_host(kFlutterThreadName, ThreadHost::Type::GPU |
    +                                                 ThreadHost::Type::IO |
    +                                                 ThreadHost::Type::UI);
    +
    +  fml::MessageLoop::EnsureInitializedForCurrentThread();
    +
    +  // For embedder platforms that don't have native message loop interop, this
    +  // will reference a task runner that points to a null message loop
    +  // implementation.
    +  auto platform_task_runner = fml::MessageLoop::GetCurrent().GetTaskRunner();
    +
    +  blink::TaskRunners task_runners(
    +      kFlutterThreadName,
    +      platform_task_runner,                     // platform
    +      thread_host.gpu_thread->GetTaskRunner(),  // gpu
    +      thread_host.ui_thread->GetTaskRunner(),   // ui
    +      thread_host.io_thread->GetTaskRunner()    // io
    +  );
    +
    +  if (!task_runners.IsValid()) {
    +    return nullptr;
    +  }
    +
    +  std::set> empty_embedder_task_runners;
    +
    +  auto embedder_host = std::make_unique(
    +      std::move(thread_host), std::move(task_runners),
    +      empty_embedder_task_runners);
    +
    +  if (embedder_host->IsValid()) {
    +    return embedder_host;
    +  }
    +
    +  return nullptr;
    +}
    +
    +EmbedderThreadHost::EmbedderThreadHost(
    +    ThreadHost host,
    +    blink::TaskRunners runners,
    +    std::set> embedder_task_runners)
    +    : host_(std::move(host)), runners_(std::move(runners)) {
    +  for (const auto& runner : embedder_task_runners) {
    +    runners_map_[reinterpret_cast(runner.get())] = runner;
    +  }
    +}
    +
    +EmbedderThreadHost::~EmbedderThreadHost() = default;
    +
    +bool EmbedderThreadHost::IsValid() const {
    +  return runners_.IsValid();
    +}
    +
    +const blink::TaskRunners& EmbedderThreadHost::GetTaskRunners() const {
    +  return runners_;
    +}
    +
    +bool EmbedderThreadHost::PostTask(int64_t runner, uint64_t task) const {
    +  auto found = runners_map_.find(runner);
    +  if (found == runners_map_.end()) {
    +    return false;
    +  }
    +  return found->second->PostTask(task);
    +}
    +
    +}  // namespace shell
    diff --git a/shell/platform/embedder/embedder_thread_host.h b/shell/platform/embedder/embedder_thread_host.h
    new file mode 100644
    index 0000000000000..1ae9c309ed72f
    --- /dev/null
    +++ b/shell/platform/embedder/embedder_thread_host.h
    @@ -0,0 +1,54 @@
    +// 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.
    +
    +#ifndef FLUTTER_SHELL_PLATFORM_EMBEDDER_EMBEDDER_THREAD_HOST_H_
    +#define FLUTTER_SHELL_PLATFORM_EMBEDDER_EMBEDDER_THREAD_HOST_H_
    +
    +#include 
    +#include 
    +#include 
    +
    +#include "flutter/common/task_runners.h"
    +#include "flutter/fml/macros.h"
    +#include "flutter/shell/common/thread_host.h"
    +#include "flutter/shell/platform/embedder/embedder.h"
    +#include "flutter/shell/platform/embedder/embedder_task_runner.h"
    +
    +namespace shell {
    +
    +class EmbedderThreadHost {
    + public:
    +  static std::unique_ptr
    +  CreateEmbedderOrEngineManagedThreadHost(
    +      const FlutterCustomTaskRunners* custom_task_runners);
    +
    +  EmbedderThreadHost(
    +      ThreadHost host,
    +      blink::TaskRunners runners,
    +      std::set> embedder_task_runners);
    +
    +  ~EmbedderThreadHost();
    +
    +  bool IsValid() const;
    +
    +  const blink::TaskRunners& GetTaskRunners() const;
    +
    +  bool PostTask(int64_t runner, uint64_t task) const;
    +
    + private:
    +  ThreadHost host_;
    +  blink::TaskRunners runners_;
    +  std::map> runners_map_;
    +
    +  static std::unique_ptr CreateEmbedderManagedThreadHost(
    +      const FlutterCustomTaskRunners* custom_task_runners);
    +
    +  static std::unique_ptr CreateEngineManagedThreadHost();
    +
    +  FML_DISALLOW_COPY_AND_ASSIGN(EmbedderThreadHost);
    +};
    +
    +}  // namespace shell
    +
    +#endif  // FLUTTER_SHELL_PLATFORM_EMBEDDER_EMBEDDER_THREAD_HOST_H_
    diff --git a/shell/platform/embedder/fixtures/simple_main.dart b/shell/platform/embedder/fixtures/simple_main.dart
    index bd3999563e031..853e136f96ed8 100644
    --- a/shell/platform/embedder/fixtures/simple_main.dart
    +++ b/shell/platform/embedder/fixtures/simple_main.dart
    @@ -1,3 +1,5 @@
    +import 'dart:ui';
    +
     void main() {}
     
     @pragma('vm:entry-point')
    @@ -18,3 +20,9 @@ void customEntrypoint1() {
     void sayHiFromCustomEntrypoint1() native "SayHiFromCustomEntrypoint1";
     void sayHiFromCustomEntrypoint2() native "SayHiFromCustomEntrypoint2";
     void sayHiFromCustomEntrypoint3() native "SayHiFromCustomEntrypoint3";
    +
    +
    +@pragma('vm:entry-point')
    +void invokePlatformTaskRunner() {
    +  window.sendPlatformMessage('OhHi', null, null);
    +}
    diff --git a/shell/platform/embedder/tests/embedder_config_builder.cc b/shell/platform/embedder/tests/embedder_config_builder.cc
    index 23ef27cd3c954..546f95a78ea1a 100644
    --- a/shell/platform/embedder/tests/embedder_config_builder.cc
    +++ b/shell/platform/embedder/tests/embedder_config_builder.cc
    @@ -13,6 +13,7 @@ EmbedderConfigBuilder::EmbedderConfigBuilder(
         : context_(context) {
       project_args_.struct_size = sizeof(project_args_);
       software_renderer_config_.struct_size = sizeof(FlutterSoftwareRendererConfig);
    +  custom_task_runners_.struct_size = sizeof(FlutterCustomTaskRunners);
       software_renderer_config_.surface_present_callback =
           [](void*, const void*, size_t, size_t) { return true; };
     
    @@ -71,8 +72,43 @@ void EmbedderConfigBuilder::SetDartEntrypoint(std::string entrypoint) {
       project_args_.custom_dart_entrypoint = dart_entrypoint_.c_str();
     }
     
    -UniqueEngine EmbedderConfigBuilder::LaunchEngine() const {
    +void EmbedderConfigBuilder::AddCommandLineArgument(std::string arg) {
    +  if (arg.size() == 0) {
    +    return;
    +  }
    +
    +  command_line_arguments_.emplace_back(std::move(arg));
    +}
    +
    +void EmbedderConfigBuilder::SetPlatformTaskRunner(
    +    const FlutterTaskRunnerDescription* runner) {
    +  if (runner == nullptr) {
    +    return;
    +  }
    +  custom_task_runners_.platform_task_runner = runner;
    +  project_args_.custom_task_runners = &custom_task_runners_;
    +}
    +
    +UniqueEngine EmbedderConfigBuilder::LaunchEngine() {
       FlutterEngine engine = nullptr;
    +
    +  std::vector args;
    +  args.reserve(command_line_arguments_.size());
    +
    +  for (const auto& arg : command_line_arguments_) {
    +    args.push_back(arg.c_str());
    +  }
    +
    +  if (args.size() > 0) {
    +    project_args_.command_line_argv = args.data();
    +    project_args_.command_line_argc = args.size();
    +  } else {
    +    // Clear it out in case this is not the first engine launch from the
    +    // embedder config builder.
    +    project_args_.command_line_argv = nullptr;
    +    project_args_.command_line_argc = 0;
    +  }
    +
       auto result = FlutterEngineRun(FLUTTER_ENGINE_VERSION, &renderer_config_,
                                      &project_args_, &context_, &engine);
     
    diff --git a/shell/platform/embedder/tests/embedder_config_builder.h b/shell/platform/embedder/tests/embedder_config_builder.h
    index b76edb98734b9..28c057d11441b 100644
    --- a/shell/platform/embedder/tests/embedder_config_builder.h
    +++ b/shell/platform/embedder/tests/embedder_config_builder.h
    @@ -19,7 +19,7 @@ struct UniqueEngineTraits {
     
       static bool IsValid(const FlutterEngine& value) { return value != nullptr; }
     
    -  static void Free(FlutterEngine engine) {
    +  static void Free(FlutterEngine& engine) {
         auto result = FlutterEngineShutdown(engine);
         FML_CHECK(result == kSuccess);
       }
    @@ -50,7 +50,11 @@ class EmbedderConfigBuilder {
     
       void SetDartEntrypoint(std::string entrypoint);
     
    -  UniqueEngine LaunchEngine() const;
    +  void AddCommandLineArgument(std::string arg);
    +
    +  void SetPlatformTaskRunner(const FlutterTaskRunnerDescription* runner);
    +
    +  UniqueEngine LaunchEngine();
     
      private:
       EmbedderContext& context_;
    @@ -58,6 +62,8 @@ class EmbedderConfigBuilder {
       FlutterRendererConfig renderer_config_ = {};
       FlutterSoftwareRendererConfig software_renderer_config_ = {};
       std::string dart_entrypoint_;
    +  FlutterCustomTaskRunners custom_task_runners_ = {};
    +  std::vector command_line_arguments_;
     
       FML_DISALLOW_COPY_AND_ASSIGN(EmbedderConfigBuilder);
     };
    diff --git a/shell/platform/embedder/tests/embedder_unittests.cc b/shell/platform/embedder/tests/embedder_unittests.cc
    index 6bad99a39dd0c..357a4e71114ab 100644
    --- a/shell/platform/embedder/tests/embedder_unittests.cc
    +++ b/shell/platform/embedder/tests/embedder_unittests.cc
    @@ -2,11 +2,17 @@
     // Use of this source code is governed by a BSD-style license that can be
     // found in the LICENSE file.
     
    +#define FML_USED_ON_EMBEDDER
    +
     #include 
    +
     #include "embedder.h"
     #include "flutter/fml/file.h"
    +#include "flutter/fml/make_copyable.h"
     #include "flutter/fml/mapping.h"
    +#include "flutter/fml/message_loop.h"
     #include "flutter/fml/synchronization/waitable_event.h"
    +#include "flutter/fml/thread.h"
     #include "flutter/shell/platform/embedder/tests/embedder_config_builder.h"
     #include "flutter/shell/platform/embedder/tests/embedder_test.h"
     #include "flutter/testing/testing.h"
    @@ -68,7 +74,7 @@ TEST_F(EmbedderTest, CanInvokeCustomEntrypointMacro) {
     
       // Can be defined separately.
       auto entry1 = [&latch1](Dart_NativeArguments args) {
    -    FML_LOG(ERROR) << "In Callback 1";
    +    FML_LOG(INFO) << "In Callback 1";
         latch1.Signal();
       };
       auto native_entry1 = CREATE_NATIVE_ENTRY(entry1);
    @@ -76,7 +82,7 @@ TEST_F(EmbedderTest, CanInvokeCustomEntrypointMacro) {
     
       // Can be wrapped in in the args.
       auto entry2 = [&latch2](Dart_NativeArguments args) {
    -    FML_LOG(ERROR) << "In Callback 2";
    +    FML_LOG(INFO) << "In Callback 2";
         latch2.Signal();
       };
       context.AddNativeCallback("SayHiFromCustomEntrypoint2",
    @@ -86,7 +92,7 @@ TEST_F(EmbedderTest, CanInvokeCustomEntrypointMacro) {
       context.AddNativeCallback(
           "SayHiFromCustomEntrypoint3",
           CREATE_NATIVE_ENTRY([&latch3](Dart_NativeArguments args) {
    -        FML_LOG(ERROR) << "In Callback 3";
    +        FML_LOG(INFO) << "In Callback 3";
             latch3.Signal();
           }));
     
    @@ -99,5 +105,110 @@ TEST_F(EmbedderTest, CanInvokeCustomEntrypointMacro) {
       ASSERT_TRUE(engine.is_valid());
     }
     
    +class EmbedderTestTaskRunner {
    + public:
    +  EmbedderTestTaskRunner(std::function on_forward_task)
    +      : on_forward_task_(on_forward_task) {}
    +
    +  void SetForwardingTaskRunner(fml::RefPtr runner) {
    +    forwarding_target_ = std::move(runner);
    +  }
    +
    +  FlutterTaskRunnerDescription GetEmbedderDescription() {
    +    FlutterTaskRunnerDescription desc;
    +    desc.struct_size = sizeof(desc);
    +    desc.user_data = this;
    +    desc.runs_task_on_current_thread_callback = [](void* user_data) -> bool {
    +      return reinterpret_cast(user_data)
    +          ->forwarding_target_->RunsTasksOnCurrentThread();
    +    };
    +    desc.post_task_callback = [](FlutterTask task, uint64_t target_time_nanos,
    +                                 void* user_data) -> void {
    +      auto runner = reinterpret_cast(user_data);
    +
    +      auto target_time = fml::TimePoint::FromEpochDelta(
    +          fml::TimeDelta::FromNanoseconds(target_time_nanos));
    +
    +      runner->forwarding_target_->PostTaskForTime(
    +          [task, forwarder = runner->on_forward_task_]() { forwarder(task); },
    +          target_time);
    +    };
    +    return desc;
    +  }
    +
    + private:
    +  fml::RefPtr forwarding_target_;
    +  std::function on_forward_task_;
    +
    +  FML_DISALLOW_COPY_AND_ASSIGN(EmbedderTestTaskRunner);
    +};
    +
    +TEST_F(EmbedderTest, CanSpecifyCustomTaskRunner) {
    +  auto& context = GetEmbedderContext();
    +  fml::AutoResetWaitableEvent latch;
    +
    +  // Run the test on its own thread with a message loop so that it san safely
    +  // pump its event loop while we wait for all the conditions to be checked.
    +  fml::Thread thread;
    +  UniqueEngine engine;
    +  bool signalled = false;
    +
    +  EmbedderTestTaskRunner runner([&](FlutterTask task) {
    +    // There may be multiple tasks posted but we only need to check assertions
    +    // once.
    +    if (signalled) {
    +      // Since we have the baton, return it back to the engine. We don't care
    +      // about the return value because the engine could be shutting down an it
    +      // may not actually be able to accept the same.
    +      FlutterEngineRunTask(engine.get(), &task);
    +      return;
    +    }
    +
    +    signalled = true;
    +    FML_LOG(INFO) << "Checking assertions.";
    +    ASSERT_TRUE(engine.is_valid());
    +    ASSERT_EQ(FlutterEngineRunTask(engine.get(), &task), kSuccess);
    +    latch.Signal();
    +  });
    +
    +  thread.GetTaskRunner()->PostTask([&]() {
    +    EmbedderConfigBuilder builder(context);
    +    builder.AddCommandLineArgument("--verbose-logging");
    +    const auto task_runner_description = runner.GetEmbedderDescription();
    +    runner.SetForwardingTaskRunner(
    +        fml::MessageLoop::GetCurrent().GetTaskRunner());
    +    builder.SetPlatformTaskRunner(&task_runner_description);
    +    builder.SetDartEntrypoint("invokePlatformTaskRunner");
    +    engine = builder.LaunchEngine();
    +    ASSERT_TRUE(engine.is_valid());
    +  });
    +
    +  // Signalled when all the assertions are checked.
    +  latch.Wait();
    +  FML_LOG(INFO) << "Assertions checked. Killing engine.";
    +  ASSERT_TRUE(engine.is_valid());
    +
    +  // Since the engine was started on its own thread, it must be killed there as
    +  // well.
    +  fml::AutoResetWaitableEvent kill_latch;
    +  thread.GetTaskRunner()->PostTask(
    +      fml::MakeCopyable([&engine, &kill_latch]() mutable {
    +        engine.reset();
    +        FML_LOG(INFO) << "Engine killed.";
    +        kill_latch.Signal();
    +      }));
    +  kill_latch.Wait();
    +
    +  ASSERT_TRUE(signalled);
    +}
    +
    +TEST(EmbedderTestNoFixture, CanGetCurrentTimeInNanoseconds) {
    +  auto point1 = fml::TimePoint::FromEpochDelta(
    +      fml::TimeDelta::FromNanoseconds(FlutterEngineGetCurrentTime()));
    +  auto point2 = fml::TimePoint::Now();
    +
    +  ASSERT_LT((point2 - point1), fml::TimeDelta::FromMilliseconds(1));
    +}
    +
     }  // namespace testing
     }  // namespace shell
    
    From 4efc32163c7433a469f149c2eb05a2f88780ab2d Mon Sep 17 00:00:00 2001
    From: Chris Bracken 
    Date: Wed, 27 Mar 2019 16:22:12 -0700
    Subject: [PATCH 1525/1537] Add super call in FLEView reshape (#8335)
    
    NSOpenGLView reshape is annotated with NS_REQUIRES_SUPER. This avoids
    build failures when building with `-Wobjc-missing-super-calls`.
    ---
     shell/platform/darwin/macos/framework/Source/FLEView.mm | 1 +
     1 file changed, 1 insertion(+)
    
    diff --git a/shell/platform/darwin/macos/framework/Source/FLEView.mm b/shell/platform/darwin/macos/framework/Source/FLEView.mm
    index 5ce7ddb8ffc78..7d67fc33c0abc 100644
    --- a/shell/platform/darwin/macos/framework/Source/FLEView.mm
    +++ b/shell/platform/darwin/macos/framework/Source/FLEView.mm
    @@ -32,6 +32,7 @@ - (BOOL)isOpaque {
     }
     
     - (void)reshape {
    +  [super reshape];
       [_reshapeListener viewDidReshape:self];
     }
     
    
    From 6d8b836777f1e8eec3fd568de19e25236807bbfa Mon Sep 17 00:00:00 2001
    From: stuartmorgan 
    Date: Wed, 27 Mar 2019 19:24:03 -0400
    Subject: [PATCH 1526/1537] Remove use of epoxy from Linux shell (#8334)
    
    Simplifies the build and runtime requirements for the Linux shell.
    Since the engine does GL extension lookup manually anway, an extension
    loader library isn't necessary.
    ---
     build/install-build-deps-linux-desktop.sh | 2 +-
     shell/platform/glfw/BUILD.gn              | 1 -
     shell/platform/glfw/flutter_glfw.cc       | 5 -----
     shell/platform/linux/config/BUILD.gn      | 4 ----
     4 files changed, 1 insertion(+), 11 deletions(-)
    
    diff --git a/build/install-build-deps-linux-desktop.sh b/build/install-build-deps-linux-desktop.sh
    index e3c47a69a3375..6048470aa43de 100755
    --- a/build/install-build-deps-linux-desktop.sh
    +++ b/build/install-build-deps-linux-desktop.sh
    @@ -8,4 +8,4 @@
     
     set -e
     
    -sudo apt-get -y install libglfw3-dev libepoxy-dev libgtk-3-dev libx11-dev
    +sudo apt-get -y install libglfw3-dev libgtk-3-dev libx11-dev
    diff --git a/shell/platform/glfw/BUILD.gn b/shell/platform/glfw/BUILD.gn
    index 5fa29fc02c717..00b1aec1bccd9 100644
    --- a/shell/platform/glfw/BUILD.gn
    +++ b/shell/platform/glfw/BUILD.gn
    @@ -59,7 +59,6 @@ source_set("flutter_glfw") {
         libs = [ "GL" ]
     
         configs += [
    -      "$flutter_root/shell/platform/linux/config:epoxy",
           "$flutter_root/shell/platform/linux/config:glfw3",
           "$flutter_root/shell/platform/linux/config:gtk3",
           "$flutter_root/shell/platform/linux/config:x11",
    diff --git a/shell/platform/glfw/flutter_glfw.cc b/shell/platform/glfw/flutter_glfw.cc
    index 9b2e6c4871d6c..ab03cac69f9c5 100644
    --- a/shell/platform/glfw/flutter_glfw.cc
    +++ b/shell/platform/glfw/flutter_glfw.cc
    @@ -10,11 +10,6 @@
     #include 
     #include 
     
    -#ifdef __linux__
    -// Epoxy must be included before any graphics-related code.
    -#include 
    -#endif
    -
     #include 
     
     #include "flutter/shell/platform/common/cpp/client_wrapper/include/flutter/plugin_registrar.h"
    diff --git a/shell/platform/linux/config/BUILD.gn b/shell/platform/linux/config/BUILD.gn
    index 81043013717b1..8eeeaf687b258 100644
    --- a/shell/platform/linux/config/BUILD.gn
    +++ b/shell/platform/linux/config/BUILD.gn
    @@ -4,10 +4,6 @@
     
     import("//build/config/linux/pkg_config.gni")
     
    -pkg_config("epoxy") {
    -  packages = [ "epoxy" ]
    -}
    -
     pkg_config("glfw3") {
       packages = [ "glfw3" ]
     }
    
    From 68002458f4762f14f99778a517e9665229c10dfb Mon Sep 17 00:00:00 2001
    From: Chinmay Garde 
    Date: Wed, 27 Mar 2019 16:43:08 -0700
    Subject: [PATCH 1527/1537] Fix Windows build. (#8336)
    
    ---
     .../platform/embedder/embedder_thread_host.cc  | 18 ++++++++++--------
     1 file changed, 10 insertions(+), 8 deletions(-)
    
    diff --git a/shell/platform/embedder/embedder_thread_host.cc b/shell/platform/embedder/embedder_thread_host.cc
    index 648025ea5a317..925b596d8a18d 100644
    --- a/shell/platform/embedder/embedder_thread_host.cc
    +++ b/shell/platform/embedder/embedder_thread_host.cc
    @@ -39,19 +39,21 @@ static fml::RefPtr CreateEmbedderTaskRunner(
           description->runs_task_on_current_thread_callback;
     
       EmbedderTaskRunner::DispatchTable task_runner_dispatch_table = {
    -      .post_task_callback = [post_task_callback_c, user_data](
    -                                EmbedderTaskRunner* task_runner,
    -                                uint64_t task_baton,
    -                                fml::TimePoint target_time) -> void {
    +      // .post_task_callback
    +      [post_task_callback_c, user_data](EmbedderTaskRunner* task_runner,
    +                                        uint64_t task_baton,
    +                                        fml::TimePoint target_time) -> void {
             FlutterTask task = {
    -            .runner = reinterpret_cast(task_runner),
    -            .task = task_baton,
    +            // runner
    +            reinterpret_cast(task_runner),
    +            // task
    +            task_baton,
             };
             post_task_callback_c(task, target_time.ToEpochDelta().ToNanoseconds(),
                                  user_data);
           },
    -      .runs_task_on_current_thread_callback =
    -          [runs_task_on_current_thread_callback_c, user_data]() -> bool {
    +      // runs_task_on_current_thread_callback
    +      [runs_task_on_current_thread_callback_c, user_data]() -> bool {
             return runs_task_on_current_thread_callback_c(user_data);
           }};
     
    
    From 5c99138fa8e9f65d307e84b92a08adeff0bc26ef Mon Sep 17 00:00:00 2001
    From: stuartmorgan 
    Date: Wed, 27 Mar 2019 20:22:50 -0400
    Subject: [PATCH 1528/1537] Build GLFW from source for Linux shell (#8327)
    
    Instead of requiring a system-level GLFW, build it from source and
    statically link it into the Linux shell.
    ---
     DEPS                                      | 2 +-
     build/install-build-deps-linux-desktop.sh | 2 +-
     shell/platform/glfw/BUILD.gn              | 2 +-
     shell/platform/linux/config/BUILD.gn      | 4 ----
     4 files changed, 3 insertions(+), 7 deletions(-)
    
    diff --git a/DEPS b/DEPS
    index ac42e3fa0a2fa..8fa0aeff133ba 100644
    --- a/DEPS
    +++ b/DEPS
    @@ -121,7 +121,7 @@ allowed_hosts = [
     ]
     
     deps = {
    -  'src': 'https://github.com/flutter/buildroot.git' + '@' + 'ee817fb84542865e253bcce1866bc13e4065ca4d',
    +  'src': 'https://github.com/flutter/buildroot.git' + '@' + 'ad098fcdb1b41fcf57c22e46e898d0dc04d3a178',
     
        # Fuchsia compatibility
        #
    diff --git a/build/install-build-deps-linux-desktop.sh b/build/install-build-deps-linux-desktop.sh
    index 6048470aa43de..ef24ad5d95cf5 100755
    --- a/build/install-build-deps-linux-desktop.sh
    +++ b/build/install-build-deps-linux-desktop.sh
    @@ -8,4 +8,4 @@
     
     set -e
     
    -sudo apt-get -y install libglfw3-dev libgtk-3-dev libx11-dev
    +sudo apt-get -y install libgtk-3-dev libx11-dev
    diff --git a/shell/platform/glfw/BUILD.gn b/shell/platform/glfw/BUILD.gn
    index 00b1aec1bccd9..478d2e80e3255 100644
    --- a/shell/platform/glfw/BUILD.gn
    +++ b/shell/platform/glfw/BUILD.gn
    @@ -52,6 +52,7 @@ source_set("flutter_glfw") {
         "$flutter_root/shell/platform/common/cpp/client_wrapper:client_wrapper",
         "$flutter_root/shell/platform/embedder:embedder",
         "$flutter_root/shell/platform/glfw/client_wrapper:client_wrapper_glfw",
    +    "//build/secondary/third_party/glfw",
         "//third_party/rapidjson",
       ]
     
    @@ -59,7 +60,6 @@ source_set("flutter_glfw") {
         libs = [ "GL" ]
     
         configs += [
    -      "$flutter_root/shell/platform/linux/config:glfw3",
           "$flutter_root/shell/platform/linux/config:gtk3",
           "$flutter_root/shell/platform/linux/config:x11",
         ]
    diff --git a/shell/platform/linux/config/BUILD.gn b/shell/platform/linux/config/BUILD.gn
    index 8eeeaf687b258..f501bac61096e 100644
    --- a/shell/platform/linux/config/BUILD.gn
    +++ b/shell/platform/linux/config/BUILD.gn
    @@ -4,10 +4,6 @@
     
     import("//build/config/linux/pkg_config.gni")
     
    -pkg_config("glfw3") {
    -  packages = [ "glfw3" ]
    -}
    -
     pkg_config("gtk3") {
       packages = [ "gtk+-3.0" ]
     }
    
    From 2098398e10facafbca6d257735c96075b283c454 Mon Sep 17 00:00:00 2001
    From: Chris Bracken 
    Date: Wed, 27 Mar 2019 18:09:08 -0700
    Subject: [PATCH 1529/1537] Cleanups to run_tests.sh script (#8337)
    
    Bugfix:
    * Use the `pub` from within the built Dart SDK (not whatever's on
      `$PATH`, if anything).
    
    A few minor improvements:
    * Allow running from below the src/ buildroot dir, as it's often
      convenient to work from within the flutter/engine git dir.
    * Echo test name before running, for slightly better debuggability.
    * Minor line-wrapping for readability.
    ---
     testing/run_tests.sh | 86 +++++++++++++++++++++++++++++++++-----------
     1 file changed, 66 insertions(+), 20 deletions(-)
    
    diff --git a/testing/run_tests.sh b/testing/run_tests.sh
    index e3f54cd02842d..ea491b4bb720a 100755
    --- a/testing/run_tests.sh
    +++ b/testing/run_tests.sh
    @@ -2,35 +2,81 @@
     
     set -o pipefail -e;
     
    -HOST_DIR=${1:-host_debug_unopt}
    +BUILDROOT_DIR="$(pwd)"
    +if [[ "$BUILDROOT_DIR" != */src ]]; then
    +  if [[ "$BUILDROOT_DIR" != */src/* ]]; then
    +    echo "Unable to determine build root. Exiting."
    +    exit 1
    +  fi
    +  BUILDROOT_DIR="${BUILDROOT_DIR%/src/*}/src"
    +fi
    +echo "Using build root: $BUILDROOT_DIR"
    +
    +OUT_DIR="$BUILDROOT_DIR/out"
    +HOST_DIR="$OUT_DIR/${1:-host_debug_unopt}"
    +
    +# Check a Dart SDK has been built.
    +if [[ ! -d "$HOST_DIR/dart-sdk" ]]; then
    +  echo "Built Dart SDK not found at $HOST_DIR/dart-sdk. Exiting."
    +  exit 1
    +fi
    +
    +# Switch to buildroot dir. Some tests assume paths relative to buildroot.
    +cd "$BUILDROOT_DIR"
     
     # TODO(dnfield): Re-enable this when the upstream Dart changes that make it not be flaky land.
    -# out/$HOST_DIR/embedder_unittests
    -out/$HOST_DIR/flow_unittests
    -out/$HOST_DIR/fml_unittests --gtest_filter="-*TimeSensitiveTest*"
    -out/$HOST_DIR/runtime_unittests
    -out/$HOST_DIR/shell_unittests
    -out/$HOST_DIR/synchronization_unittests
    -out/$HOST_DIR/txt_unittests  --font-directory=flutter/third_party/txt/third_party/fonts
    -
    -# pubspec.yaml points to these files
    -./flutter/tools/gn --unoptimized
    -ninja -C out/host_debug_unopt flutter/sky/packages
    -
    -pushd flutter/testing/dart
    -pub get
    +# $HOST_DIR/embedder_unittests
    +echo "Running flow_unittests..."
    +"$HOST_DIR/flow_unittests"
    +
    +echo "Running fml_unittests..."
    +"$HOST_DIR/fml_unittests" --gtest_filter="-*TimeSensitiveTest*"
    +
    +echo "Running runtime_unittests..."
    +"$HOST_DIR/runtime_unittests"
    +
    +echo "Running shell_unittests..."
    +"$HOST_DIR/shell_unittests"
    +
    +echo "Running synchronization_unittests..."
    +"$HOST_DIR/synchronization_unittests"
    +
    +echo "Running txt_unittests..."
    +"$HOST_DIR/txt_unittests" --font-directory="$BUILDROOT_DIR/flutter/third_party/txt/third_party/fonts"
    +
    +# Build flutter/sky/packages.
    +#
    +# flutter/testing/dart/pubspec.yaml contains harcoded path deps to
    +# host_debug_unopt packages.
    +"$BUILDROOT_DIR/flutter/tools/gn" --unoptimized
    +ninja -C $OUT_DIR/host_debug_unopt flutter/sky/packages
    +
    +# Fetch Dart test dependencies.
    +pushd "$BUILDROOT_DIR/flutter/testing/dart"
    +"$HOST_DIR/dart-sdk/bin/pub" get
     popd
     
     run_test () {
    -  out/$HOST_DIR/dart out/$HOST_DIR/gen/frontend_server.dart.snapshot --sdk-root out/$HOST_DIR/flutter_patched_sdk --incremental --strong --target=flutter --packages flutter/testing/dart/.packages --output-dill out/$HOST_DIR/engine_test.dill $1
    -  out/$HOST_DIR/flutter_tester --disable-observatory --use-test-fonts out/$HOST_DIR/engine_test.dill
    +  "$HOST_DIR/dart" $HOST_DIR/gen/frontend_server.dart.snapshot \
    +      --sdk-root $HOST_DIR/flutter_patched_sdk \
    +      --incremental \
    +      --strong \
    +      --target=flutter \
    +      --packages flutter/testing/dart/.packages \
    +      --output-dill $HOST_DIR/engine_test.dill \
    +      $1
    +
    +  "$HOST_DIR/flutter_tester" \
    +      --disable-observatory \
    +      --use-test-fonts \
    +      "$HOST_DIR/engine_test.dill"
     }
     
     # Verify that a failing test returns a failure code.
    -! run_test flutter/testing/smoke_test_failure/fail_test.dart
    +! run_test "$BUILDROOT_DIR/flutter/testing/smoke_test_failure/fail_test.dart"
     
    -for TEST_SCRIPT in flutter/testing/dart/*.dart; do
    -  run_test $TEST_SCRIPT
    +for TEST_SCRIPT in "$BUILDROOT_DIR"/flutter/testing/dart/*.dart; do
    +  run_test "$TEST_SCRIPT"
     done
     
     pushd flutter
    
    From a0110107ee2de5ee8e921bfc2446d2a84c5660be Mon Sep 17 00:00:00 2001
    From: Ben Konyi 
    Date: Wed, 27 Mar 2019 18:58:04 -0700
    Subject: [PATCH 1530/1537] Roll src/third_party/dart 991c9da720..ffee99d79b (7
     commits)
    
    ffee99d79b Add asyncExpectThrows() to async_helper.
    994f535e03 [vm/bytecode/compiler] Remove excessive stack overflow checks when inlining
    9ea9612ce8 Object can be used in for-in and await for elements.
    4555cf788d Convert one more set of tests
    a9ee08051d [dartdevc] Remove redundant parameters from helper methods
    1bbd282d65 Make analyzer/tool/summary/generate.dart take an IDL path
    f12715354a [co19] DEPS updated
    ---
     DEPS                                    | 2 +-
     ci/licenses_golden/licenses_third_party | 2 +-
     2 files changed, 2 insertions(+), 2 deletions(-)
    
    diff --git a/DEPS b/DEPS
    index 8fa0aeff133ba..51ff603bdf802 100644
    --- a/DEPS
    +++ b/DEPS
    @@ -31,7 +31,7 @@ vars = {
       # Dart is: https://github.com/dart-lang/sdk/blob/master/DEPS.
       # You can use //tools/dart/create_updated_flutter_deps.py to produce
       # updated revision list of existing dependencies.
    -  'dart_revision': '991c9da7205b512e479283419bcbdc19f1f1f6c2',
    +  'dart_revision': 'ffee99d79b1c3d57c24c6b06384d7e14208302af',
     
       # WARNING: DO NOT EDIT MANUALLY
       # The lines between blank lines above and below are generated by a script. See create_updated_flutter_deps.py
    diff --git a/ci/licenses_golden/licenses_third_party b/ci/licenses_golden/licenses_third_party
    index bc2bb1adbb6d9..20fa6f01f11dd 100644
    --- a/ci/licenses_golden/licenses_third_party
    +++ b/ci/licenses_golden/licenses_third_party
    @@ -1,4 +1,4 @@
    -Signature: 7836db551ccf7833d0c865f0d2a3cfad
    +Signature: 6961e56f8b4a164c0bc30ffadf5292ba
     
     UNUSED LICENSES:
     
    
    From 6415277d023ff43d9fd7a7ed39a2416d6cb93a0c Mon Sep 17 00:00:00 2001
    From: skia-flutter-autoroll 
    Date: Wed, 27 Mar 2019 22:29:49 -0400
    Subject: [PATCH 1531/1537] Roll src/third_party/skia
     8d2c19554e4a..e4c67058ddb1 (1 commits) (#8341)
    
    https://skia.googlesource.com/skia.git/%2Blog/8d2c19554e4a..e4c67058ddb1
    
    git log 8d2c19554e4a1f9f75abaf1093558f9fc712ddf4..e4c67058ddb14564c0a28cb32a5d878b13fd9f98 --date=short --no-merges --format=%ad %ae %s
    2019-03-28 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/angle2 c240abe4ef2c..208af3ebda25 (3 commits)
    
    The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll
    
    Documentation for the AutoRoller is here:
    https://skia.googlesource.com/buildbot/+/master/autoroll/README.md
    
    If the roll is causing failures, please contact the current sheriff (stani@google.com), and stop
    the roller if necessary.
    ---
     DEPS                             | 2 +-
     ci/licenses_golden/licenses_skia | 2 +-
     2 files changed, 2 insertions(+), 2 deletions(-)
    
    diff --git a/DEPS b/DEPS
    index 51ff603bdf802..5af7c8b1b546d 100644
    --- a/DEPS
    +++ b/DEPS
    @@ -23,7 +23,7 @@ vars = {
       'fuchsia_git': 'https://fuchsia.googlesource.com',
       'github_git': 'https://github.com',
       'skia_git': 'https://skia.googlesource.com',
    -  'skia_revision': '8d2c19554e4a1f9f75abaf1093558f9fc712ddf4',
    +  'skia_revision': 'e4c67058ddb14564c0a28cb32a5d878b13fd9f98',
     
       # When updating the Dart revision, ensure that all entries that are
       # dependencies of Dart are also updated to match the entries in the
    diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia
    index 631043f15f904..788c734598fe9 100644
    --- a/ci/licenses_golden/licenses_skia
    +++ b/ci/licenses_golden/licenses_skia
    @@ -1,4 +1,4 @@
    -Signature: de6d3f4aa462810f8b52a646cac334d6
    +Signature: 027ae28920b252dbcb5370cc65bef8cb
     
     UNUSED LICENSES:
     
    
    From 84c62b4c7d254762c53f33bc881edd0358861798 Mon Sep 17 00:00:00 2001
    From: stuartmorgan 
    Date: Wed, 27 Mar 2019 23:38:44 -0400
    Subject: [PATCH 1532/1537] Build Windows shell (#8331)
    
    Enables the build of the Windows shell, based on the same GLFW code used
    by the current Linux shell.
    ---
     shell/platform/BUILD.gn                       |  9 +++++---
     .../common/cpp/client_wrapper/publish.gni     | 12 +++++++++-
     shell/platform/windows/BUILD.gn               | 22 +++++++++++++++++++
     3 files changed, 39 insertions(+), 4 deletions(-)
     create mode 100644 shell/platform/windows/BUILD.gn
    
    diff --git a/shell/platform/BUILD.gn b/shell/platform/BUILD.gn
    index 206f997d9d04b..89b1bbabe6f4d 100644
    --- a/shell/platform/BUILD.gn
    +++ b/shell/platform/BUILD.gn
    @@ -13,9 +13,12 @@ group("platform") {
         ]
       } else if (is_linux) {
         deps = []
    -  } else if (is_win || is_fuchsia) {
    -    # There is no platform target on Windows. Fuchsia has its own runner
    -    # implementation.
    +  } else if (is_win) {
    +    deps = [
    +      "windows",
    +    ]
    +  } else if ( is_fuchsia) {
    +    # Fuchsia has its own runner implementation.
         deps = []
       } else {
         assert(false, "Unknown/Unsupported platform.")
    diff --git a/shell/platform/common/cpp/client_wrapper/publish.gni b/shell/platform/common/cpp/client_wrapper/publish.gni
    index 8913062ced2f4..5483ab56a6a7c 100644
    --- a/shell/platform/common/cpp/client_wrapper/publish.gni
    +++ b/shell/platform/common/cpp/client_wrapper/publish.gni
    @@ -23,7 +23,10 @@ template("publish_client_wrapper") {
       }
     
       copy("${template_target_name}_publish_includes") {
    -    visibility = [ ":$template_target_name" ]
    +    visibility = [
    +      ":$template_target_name",
    +      ":${template_target_name}_publish_sources",
    +    ]
     
         sources = invoker.public
         outputs = [
    @@ -38,5 +41,12 @@ template("publish_client_wrapper") {
         outputs = [
           "$publish_dir_root/{{source_file_part}}",
         ]
    +
    +    # GN on Windows appears to do #include checks even for copy
    +    # targets, so add the dependency to the headers to satisfy
    +    # the check.
    +    deps = [
    +      ":${template_target_name}_publish_includes",
    +    ]
       }
     }
    diff --git a/shell/platform/windows/BUILD.gn b/shell/platform/windows/BUILD.gn
    new file mode 100644
    index 0000000000000..26fe53036b49a
    --- /dev/null
    +++ b/shell/platform/windows/BUILD.gn
    @@ -0,0 +1,22 @@
    +# 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.
    +
    +assert(is_win)
    +
    +group("windows") {
    +  deps = [
    +    ":flutter_windows",
    +    "$flutter_root/shell/platform/glfw:publish_headers_glfw",
    +    "$flutter_root/shell/platform/common/cpp/client_wrapper:publish_wrapper",
    +    "$flutter_root/shell/platform/glfw/client_wrapper:publish_wrapper_glfw",
    +  ]
    +}
    +
    +shared_library("flutter_windows") {
    +  deps = [
    +    "$flutter_root/shell/platform/glfw:flutter_glfw",
    +  ]
    +
    +  public_configs = [ "$flutter_root:config" ]
    +}
    
    From 5983b7adf85c476100745954b59a2c6d12bf5496 Mon Sep 17 00:00:00 2001
    From: Ben Konyi 
    Date: Wed, 27 Mar 2019 22:00:26 -0700
    Subject: [PATCH 1533/1537] Roll src/third_party/dart ffee99d79b..cf32584870 (6
     commits)
    
    cf32584870 [vm] Support compiling static field initializers and dynamic invocation forwarders from a compilation trace.
    3364df5050 Fix a bug that led to a divide-by-zero exception
    f226f4ff24 Improve type of typed-array load
    e5bc8c2d39 [ VM / Service ] Remove Platform.pathSeparator from test and replace with / to fix Windows failure
    0d93a85916 [vm/bytecode] Clean component metadata except bytecode when dropping AST
    ca2f03c5f8 [ VM / Service ] Allow for breakpoints to be set using either file: or package: URIs for packages.
    ---
     DEPS                                    | 2 +-
     ci/licenses_golden/licenses_third_party | 2 +-
     2 files changed, 2 insertions(+), 2 deletions(-)
    
    diff --git a/DEPS b/DEPS
    index 5af7c8b1b546d..2769e4b0c0f10 100644
    --- a/DEPS
    +++ b/DEPS
    @@ -31,7 +31,7 @@ vars = {
       # Dart is: https://github.com/dart-lang/sdk/blob/master/DEPS.
       # You can use //tools/dart/create_updated_flutter_deps.py to produce
       # updated revision list of existing dependencies.
    -  'dart_revision': 'ffee99d79b1c3d57c24c6b06384d7e14208302af',
    +  'dart_revision': 'cf32584870c752f0f00927edb40eec0adda29fd8',
     
       # WARNING: DO NOT EDIT MANUALLY
       # The lines between blank lines above and below are generated by a script. See create_updated_flutter_deps.py
    diff --git a/ci/licenses_golden/licenses_third_party b/ci/licenses_golden/licenses_third_party
    index 20fa6f01f11dd..f74ac768d3574 100644
    --- a/ci/licenses_golden/licenses_third_party
    +++ b/ci/licenses_golden/licenses_third_party
    @@ -1,4 +1,4 @@
    -Signature: 6961e56f8b4a164c0bc30ffadf5292ba
    +Signature: 5da60d3bb0b6e344cc2d9cf63016123e
     
     UNUSED LICENSES:
     
    
    From c4d14a00716fa616b69d51bab957aee483bdc9c2 Mon Sep 17 00:00:00 2001
    From: skia-flutter-autoroll 
    Date: Thu, 28 Mar 2019 01:58:49 -0400
    Subject: [PATCH 1534/1537] Roll src/third_party/skia
     e4c67058ddb1..01a065884b7d (1 commits) (#8344)
    
    https://skia.googlesource.com/skia.git/%2Blog/e4c67058ddb1..01a065884b7d
    
    git log e4c67058ddb14564c0a28cb32a5d878b13fd9f98..01a065884b7d0a1fe563007e72bbf2793727c5f4 --date=short --no-merges --format=%ad %ae %s
    2019-03-28 skia-autoroll@skia-public.iam.gserviceaccount.com Roll ../src 83d44af5c208..eb8d3bc0b607 (520 commits)
    
    The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll
    
    Documentation for the AutoRoller is here:
    https://skia.googlesource.com/buildbot/+/master/autoroll/README.md
    
    If the roll is causing failures, please contact the current sheriff (stani@google.com), and stop
    the roller if necessary.
    ---
     DEPS                             | 2 +-
     ci/licenses_golden/licenses_skia | 2 +-
     2 files changed, 2 insertions(+), 2 deletions(-)
    
    diff --git a/DEPS b/DEPS
    index 2769e4b0c0f10..e57750c19b22a 100644
    --- a/DEPS
    +++ b/DEPS
    @@ -23,7 +23,7 @@ vars = {
       'fuchsia_git': 'https://fuchsia.googlesource.com',
       'github_git': 'https://github.com',
       'skia_git': 'https://skia.googlesource.com',
    -  'skia_revision': 'e4c67058ddb14564c0a28cb32a5d878b13fd9f98',
    +  'skia_revision': '01a065884b7d0a1fe563007e72bbf2793727c5f4',
     
       # When updating the Dart revision, ensure that all entries that are
       # dependencies of Dart are also updated to match the entries in the
    diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia
    index 788c734598fe9..f4f5990a31af1 100644
    --- a/ci/licenses_golden/licenses_skia
    +++ b/ci/licenses_golden/licenses_skia
    @@ -1,4 +1,4 @@
    -Signature: 027ae28920b252dbcb5370cc65bef8cb
    +Signature: 94546a1a89029e670c7d59ef446bab01
     
     UNUSED LICENSES:
     
    
    From 80ea029d9b26d2f5de57f81a703b125fc4836993 Mon Sep 17 00:00:00 2001
    From: skia-flutter-autoroll 
    Date: Thu, 28 Mar 2019 05:28:50 -0400
    Subject: [PATCH 1535/1537] Roll src/third_party/skia
     01a065884b7d..3240800a9487 (2 commits) (#8347)
    
    https://skia.googlesource.com/skia.git/%2Blog/01a065884b7d..3240800a9487
    
    git log 01a065884b7d0a1fe563007e72bbf2793727c5f4..3240800a9487b736fa268f10c3f5dc0612dbc39d --date=short --no-merges --format=%ad %ae %s
    2019-03-28 skia-recreate-skps@skia-swarming-bots.iam.gserviceaccount.com Update go_deps asset
    2019-03-28 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader 179c932426b3..57e05b8be2d9 (1 commits)
    
    The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll
    
    Documentation for the AutoRoller is here:
    https://skia.googlesource.com/buildbot/+/master/autoroll/README.md
    
    If the roll is causing failures, please contact the current sheriff (stani@google.com), and stop
    the roller if necessary.
    ---
     DEPS                             | 2 +-
     ci/licenses_golden/licenses_skia | 2 +-
     2 files changed, 2 insertions(+), 2 deletions(-)
    
    diff --git a/DEPS b/DEPS
    index e57750c19b22a..121477fbd9f6b 100644
    --- a/DEPS
    +++ b/DEPS
    @@ -23,7 +23,7 @@ vars = {
       'fuchsia_git': 'https://fuchsia.googlesource.com',
       'github_git': 'https://github.com',
       'skia_git': 'https://skia.googlesource.com',
    -  'skia_revision': '01a065884b7d0a1fe563007e72bbf2793727c5f4',
    +  'skia_revision': '3240800a9487b736fa268f10c3f5dc0612dbc39d',
     
       # When updating the Dart revision, ensure that all entries that are
       # dependencies of Dart are also updated to match the entries in the
    diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia
    index f4f5990a31af1..7b030e75488f5 100644
    --- a/ci/licenses_golden/licenses_skia
    +++ b/ci/licenses_golden/licenses_skia
    @@ -1,4 +1,4 @@
    -Signature: 94546a1a89029e670c7d59ef446bab01
    +Signature: 4d61eccd0693e0b870ccb46afabc6905
     
     UNUSED LICENSES:
     
    
    From 2aa3c3ef291867b8654987e38497d690308d2ab7 Mon Sep 17 00:00:00 2001
    From: skia-flutter-autoroll 
    Date: Thu, 28 Mar 2019 08:57:50 -0400
    Subject: [PATCH 1536/1537] Roll src/third_party/skia
     3240800a9487..e51181387f76 (2 commits) (#8349)
    
    https://skia.googlesource.com/skia.git/%2Blog/3240800a9487..e51181387f76
    
    git log 3240800a9487b736fa268f10c3f5dc0612dbc39d..e51181387f763864acf5be828831b2d7c2b29065 --date=short --no-merges --format=%ad %ae %s
    2019-03-28 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/angle2 208af3ebda25..e810ad90799c (10 commits)
    2019-03-28 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader 57e05b8be2d9..94f195b18776 (1 commits)
    
    The AutoRoll server is located here: https://autoroll.skia.org/r/skia-flutter-autoroll
    
    Documentation for the AutoRoller is here:
    https://skia.googlesource.com/buildbot/+/master/autoroll/README.md
    
    If the roll is causing failures, please contact the current sheriff (stani@google.com), and stop
    the roller if necessary.
    ---
     DEPS                             | 2 +-
     ci/licenses_golden/licenses_skia | 2 +-
     2 files changed, 2 insertions(+), 2 deletions(-)
    
    diff --git a/DEPS b/DEPS
    index 121477fbd9f6b..6f0cc80f5b8ee 100644
    --- a/DEPS
    +++ b/DEPS
    @@ -23,7 +23,7 @@ vars = {
       'fuchsia_git': 'https://fuchsia.googlesource.com',
       'github_git': 'https://github.com',
       'skia_git': 'https://skia.googlesource.com',
    -  'skia_revision': '3240800a9487b736fa268f10c3f5dc0612dbc39d',
    +  'skia_revision': 'e51181387f763864acf5be828831b2d7c2b29065',
     
       # When updating the Dart revision, ensure that all entries that are
       # dependencies of Dart are also updated to match the entries in the
    diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia
    index 7b030e75488f5..9c936362aadc5 100644
    --- a/ci/licenses_golden/licenses_skia
    +++ b/ci/licenses_golden/licenses_skia
    @@ -1,4 +1,4 @@
    -Signature: 4d61eccd0693e0b870ccb46afabc6905
    +Signature: 030f180c2ea7f19ce2d731d1d314400b
     
     UNUSED LICENSES:
     
    
    From 90ad1e1abff67c2498f3a87a50692d488b4283e3 Mon Sep 17 00:00:00 2001
    From: Ben Konyi 
    Date: Thu, 28 Mar 2019 06:59:44 -0700
    Subject: [PATCH 1537/1537] Roll src/third_party/dart cf32584870..05f3b12960
     (11 commits)
    
    05f3b12960 Add test for native declarations
    b978fdd142 Move experimental flag defaults to CFE
    cc00203310 Update pub client version
    3e4a1de6e9 Use dart:foo-patch import uri for patches; remove VM workaround for sdk uris
    cf768254fd Temporarily disable 'Allow the incremental compiler to load modules'
    7baae76480 Always use ir constants in annotations when constant-update-2018 is enabled
    10abacba10 Use hasOnlyNonDeferredImportPathsToConstant to add deferred constants
    32a5fa0a83 Allow incremental compiler to just create outline
    83e6e9f8e6 Allow the incremental compiler to load modules
    ef168de000 [vm/kernel] Index all source and line starts before using them (2nd try)
    add5a27120 [infra] Add `constant-update-2018` flag to v2.3 lang features tests
    ---
     DEPS                                    | 4 ++--
     ci/licenses_golden/licenses_third_party | 2 +-
     2 files changed, 3 insertions(+), 3 deletions(-)
    
    diff --git a/DEPS b/DEPS
    index 6f0cc80f5b8ee..213da9773e38f 100644
    --- a/DEPS
    +++ b/DEPS
    @@ -31,7 +31,7 @@ vars = {
       # Dart is: https://github.com/dart-lang/sdk/blob/master/DEPS.
       # You can use //tools/dart/create_updated_flutter_deps.py to produce
       # updated revision list of existing dependencies.
    -  'dart_revision': 'cf32584870c752f0f00927edb40eec0adda29fd8',
    +  'dart_revision': '05f3b12960fbe1808d367df18b86095b1baed369',
     
       # WARNING: DO NOT EDIT MANUALLY
       # The lines between blank lines above and below are generated by a script. See create_updated_flutter_deps.py
    @@ -74,7 +74,7 @@ vars = {
       'dart_path_tag': '1.6.2',
       'dart_pool_tag': '1.3.6',
       'dart_protobuf_rev': '0c77167b16d00b561a6055bfe26690af7f26ae88',
    -  'dart_pub_rev': '3c060aae47985e9a248b850f1d0450304a5c97e3',
    +  'dart_pub_rev': '8c363fe26f059c3063f1129adbb3c4e22a8ce954',
       'dart_pub_semver_tag': '1.4.2',
       'dart_quiver_tag': '2.0.0+1',
       'dart_resource_rev': '2.1.5',
    diff --git a/ci/licenses_golden/licenses_third_party b/ci/licenses_golden/licenses_third_party
    index f74ac768d3574..c1da59b9aaf3e 100644
    --- a/ci/licenses_golden/licenses_third_party
    +++ b/ci/licenses_golden/licenses_third_party
    @@ -1,4 +1,4 @@
    -Signature: 5da60d3bb0b6e344cc2d9cf63016123e
    +Signature: 7fd62bb67d412c7e900c9f47816f1440
     
     UNUSED LICENSES: