/*
* Copyright (C) 2015 The Pennsylvania State University and the University of Wisconsin
* Systems and Internet Infrastructure Security Laboratory
*
* Author: Damien Octeau
*
* 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.
*/
package edu.psu.cse.siis.ic3.manifest;
import java.util.HashSet;
import java.util.Set;
import soot.SootMethod;
import soot.Unit;
public class ManifestComponent {
private final String name;
private boolean exported;
private final boolean foundExported;
private final String type;
private Set<ManifestIntentFilter> intentFilters = null;
private final String permission;
// Target activity.
private final String target;
private final Integer missingIntentFilters;
private final SootMethod registrationMethod;
private final Unit registrationUnit;
public ManifestComponent(String type, String name, boolean exported, boolean foundExported,
String permission, String target, Integer missingIntentFilters,
SootMethod registrationMethod, Unit registrationUnit) {
this.type = type;
this.exported = exported;
this.foundExported = foundExported;
this.name = name;
this.permission = permission;
this.target = target;
this.missingIntentFilters = missingIntentFilters;
this.registrationMethod = registrationMethod;
this.registrationUnit = registrationUnit;
}
/**
* @return the name
*/
public String getName() {
return name;
}
/**
* @return the exported
*/
public boolean isExported() {
return exported;
}
/**
* @return the type
*/
public String getType() {
return type;
}
/**
* @return the intentFilters
*/
public Set<ManifestIntentFilter> getIntentFilters() {
return intentFilters;
}
public SootMethod getRegistrationMethod() {
return registrationMethod;
}
public Unit getRegistrationUnit() {
return registrationUnit;
}
/**
* @param intentFilters the intentFilters to set
*/
public void setIntentFilters(Set<ManifestIntentFilter> intentFilters) {
this.intentFilters = intentFilters;
}
public void addIntentFilters(Set<ManifestIntentFilter> intentFilters) {
if (intentFilters != null) {
if (this.intentFilters == null) {
this.intentFilters = new HashSet<>();
}
this.intentFilters.addAll(intentFilters);
}
}
/**
* Sets the intent filter and sets the exported flag accordingly.
*
* @param intentFilters The intent filters to set.
*/
public void setIntentFiltersAndExported(Set<ManifestIntentFilter> intentFilters) {
this.intentFilters = intentFilters;
if (!foundExported) {
exported = (intentFilters != null && intentFilters.size() > 0);
}
}
/**
* @return the foundExported
*/
public boolean isFoundExported() {
return foundExported;
}
/**
* @return the permission
*/
public String getPermission() {
return permission;
}
/**
* @return the target
*/
public String getTarget() {
return target;
}
/**
* @return the missingIntentFilters
*/
public Integer missingIntentFilters() {
return missingIntentFilters;
}
}