From 25f3db72a620b672b69681c1b8edf9f601020236 Mon Sep 17 00:00:00 2001 From: Jason Monk Date: Thu, 6 Apr 2017 14:41:00 -0400 Subject: [PATCH] Make sure to synchronize on references to plugin dependencies Test: make Change-Id: I361cb3e4ac4ff5d19e2b0322531c8c614f5b7635 Fixes: 36867744 --- .../systemui/plugins/PluginDependencyProvider.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/plugins/PluginDependencyProvider.java b/packages/SystemUI/src/com/android/systemui/plugins/PluginDependencyProvider.java index 59f6d56ac1be1..c58d889270e27 100644 --- a/packages/SystemUI/src/com/android/systemui/plugins/PluginDependencyProvider.java +++ b/packages/SystemUI/src/com/android/systemui/plugins/PluginDependencyProvider.java @@ -34,7 +34,9 @@ public class PluginDependencyProvider extends DependencyProvider { } public void allowPluginDependency(Class cls, T obj) { - mDependencies.put(cls, obj); + synchronized (mDependencies) { + mDependencies.put(cls, obj); + } } @Override @@ -42,9 +44,11 @@ public class PluginDependencyProvider extends DependencyProvider { if (!mManager.dependsOn(p, cls)) { throw new IllegalArgumentException(p.getClass() + " does not depend on " + cls); } - if (!mDependencies.containsKey(cls)) { - throw new IllegalArgumentException("Unknown dependency " + cls); + synchronized (mDependencies) { + if (!mDependencies.containsKey(cls)) { + throw new IllegalArgumentException("Unknown dependency " + cls); + } + return (T) mDependencies.get(cls); } - return (T) mDependencies.get(cls); } }