blob: c35717711fc77a3674fa42e2c212806829a94e55 [file] [log] [blame]
// Copyright (c) 2019, the R8 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.
package com.android.tools.r8.features;
import com.android.tools.r8.DataResourceConsumer;
import com.android.tools.r8.DataResourceProvider;
import com.android.tools.r8.FeatureSplit;
import com.android.tools.r8.ProgramResourceProvider;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class FeatureSplitConfiguration {
private final List<FeatureSplit> featureSplits;
public FeatureSplitConfiguration(List<FeatureSplit> featureSplits) {
this.featureSplits = featureSplits;
}
public static class DataResourceProvidersAndConsumer {
private final Set<DataResourceProvider> providers;
private final DataResourceConsumer consumer;
public DataResourceProvidersAndConsumer(
Set<DataResourceProvider> providers, DataResourceConsumer consumer) {
this.providers = providers;
this.consumer = consumer;
}
public Set<DataResourceProvider> getProviders() {
return providers;
}
public DataResourceConsumer getConsumer() {
return consumer;
}
}
public Collection<DataResourceProvidersAndConsumer> getDataResourceProvidersAndConsumers() {
List<DataResourceProvidersAndConsumer> result = new ArrayList<>();
for (FeatureSplit featureSplit : featureSplits) {
DataResourceConsumer dataResourceConsumer =
featureSplit.getProgramConsumer().getDataResourceConsumer();
if (dataResourceConsumer != null) {
Set<DataResourceProvider> dataResourceProviders = new HashSet<>();
for (ProgramResourceProvider programResourceProvider :
featureSplit.getProgramResourceProviders()) {
DataResourceProvider dataResourceProvider =
programResourceProvider.getDataResourceProvider();
if (dataResourceProvider != null) {
dataResourceProviders.add(dataResourceProvider);
}
}
if (!dataResourceProviders.isEmpty()) {
result.add(
new DataResourceProvidersAndConsumer(dataResourceProviders, dataResourceConsumer));
}
}
}
return result;
}
public List<FeatureSplit> getFeatureSplits() {
return featureSplits;
}
}