From fcb807db42fdcdc5cf0050761a5402b2f1b5afcc Mon Sep 17 00:00:00 2001 From: Karl Date: Tue, 30 Mar 2021 00:59:01 +0800 Subject: [PATCH] Add clear method in FlutterEngineCache to clear all cached Flutter engines #78420 (flutter/engine#25280) --- .../embedding/engine/FlutterEngineCache.java | 5 +++++ .../engine/FlutterEngineCacheTest.java | 22 +++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/engine/src/flutter/shell/platform/android/io/flutter/embedding/engine/FlutterEngineCache.java b/engine/src/flutter/shell/platform/android/io/flutter/embedding/engine/FlutterEngineCache.java index d75ea03a804..76fbfdd01c6 100644 --- a/engine/src/flutter/shell/platform/android/io/flutter/embedding/engine/FlutterEngineCache.java +++ b/engine/src/flutter/shell/platform/android/io/flutter/embedding/engine/FlutterEngineCache.java @@ -82,4 +82,9 @@ public class FlutterEngineCache { public void remove(@NonNull String engineId) { put(engineId, null); } + + /** Removes all {@link FlutterEngine}'s that are currently in the cache. */ + public void clear() { + cachedEngines.clear(); + } } diff --git a/engine/src/flutter/shell/platform/android/test/io/flutter/embedding/engine/FlutterEngineCacheTest.java b/engine/src/flutter/shell/platform/android/test/io/flutter/embedding/engine/FlutterEngineCacheTest.java index ff584b86484..e552611cdab 100644 --- a/engine/src/flutter/shell/platform/android/test/io/flutter/embedding/engine/FlutterEngineCacheTest.java +++ b/engine/src/flutter/shell/platform/android/test/io/flutter/embedding/engine/FlutterEngineCacheTest.java @@ -55,4 +55,26 @@ public class FlutterEngineCacheTest { // --- Verify Results --- assertNull(cache.get("my_flutter_engine")); } + + @Test + public void itRemovesAllFlutterEngines() { + // --- Test Setup --- + FlutterEngine flutterEngine = mock(FlutterEngine.class); + FlutterEngine flutterEngine2 = mock(FlutterEngine.class); + FlutterEngineCache cache = new FlutterEngineCache(); + + // --- Execute Test --- + cache.put("my_flutter_engine", flutterEngine); + cache.put("my_flutter_engine_2", flutterEngine2); + + // --- Verify Results --- + assertEquals(flutterEngine, cache.get("my_flutter_engine")); + assertEquals(flutterEngine2, cache.get("my_flutter_engine_2")); + + cache.clear(); + + // --- Verify Results --- + assertNull(cache.get("my_flutter_engine")); + assertNull(cache.get("my_flutter_engine_2")); + } }