blob: 18b11ba4d1d3eabd8388bb6fdc95d2d7a3606eed [file] [log] [blame]
/*
* Copyright (C) 2022 The Android Open Source Project
*
* 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 com.android.adservices.service.adselection;
import android.annotation.NonNull;
import android.net.Uri;
import com.android.adservices.data.adselection.CustomAudienceSignals;
import com.android.adservices.data.customaudience.DBCustomAudience;
import com.google.auto.value.AutoValue;
import java.util.Objects;
/**
* Information related to Ad bidding that is used for reporting
*/
@AutoValue
public abstract class CustomAudienceBiddingInfo {
/** @return Uri that is used for getting Bidding logic */
public abstract Uri getBiddingLogicUri();
/**
* @return logic for buyer decision used in bidding
*/
public abstract String getBuyerDecisionLogicJs();
/**
* @return CA data used for bidding and later reporting
*/
public abstract CustomAudienceSignals getCustomAudienceSignals();
/**
* @return generic builder
*/
public static Builder builder() {
return new AutoValue_CustomAudienceBiddingInfo.Builder();
}
/**
* Creates an object of CustomAudienceBiddingInfo
*
* @param biddingLogicUri url that fetches bidding logic
* @param buyerDecisionLogicJs JS that helps in making bidding decision
* @param customAudienceSignals signals for CA
* @return an instance of CustomAudienceBiddingInfo
*/
public static CustomAudienceBiddingInfo create(
@NonNull Uri biddingLogicUri,
@NonNull String buyerDecisionLogicJs,
@NonNull CustomAudienceSignals customAudienceSignals) {
Objects.requireNonNull(biddingLogicUri);
Objects.requireNonNull(buyerDecisionLogicJs);
Objects.requireNonNull(customAudienceSignals);
return builder()
.setBiddingLogicUri(biddingLogicUri)
.setBuyerDecisionLogicJs(buyerDecisionLogicJs)
.setCustomAudienceSignals(customAudienceSignals)
.build();
}
/**
* Creates an object of CustomAudienceBiddingInfo
* @param customAudience CA data
* @param buyerDecisionLogicJs JS that helps in making bidding decision
* @return an instance of CustomAudienceBiddingInfo
*/
public static CustomAudienceBiddingInfo create(
@NonNull DBCustomAudience customAudience, @NonNull String buyerDecisionLogicJs) {
Objects.requireNonNull(customAudience);
Objects.requireNonNull(buyerDecisionLogicJs);
Uri biddingLogicUri = customAudience.getBiddingLogicUri();
CustomAudienceSignals customAudienceSignals =
new CustomAudienceSignals(
customAudience.getOwner(),
customAudience.getBuyer(),
customAudience.getName(),
customAudience.getActivationTime(),
customAudience.getExpirationTime(),
customAudience.getUserBiddingSignals());
return builder()
.setBiddingLogicUri(biddingLogicUri)
.setBuyerDecisionLogicJs(buyerDecisionLogicJs)
.setCustomAudienceSignals(customAudienceSignals)
.build();
}
/** Builder for {@link CustomAudienceBiddingInfo} */
@AutoValue.Builder
public abstract static class Builder {
/** Sets the BiddingLogicUri. */
public abstract Builder setBiddingLogicUri(Uri biddingUri);
/** Sets the BuyerDecisionLogicJs. */
public abstract Builder setBuyerDecisionLogicJs(String buyerDecisionLogicJs);
/** Sets the CustomAudienceSignals. */
public abstract Builder setCustomAudienceSignals(
CustomAudienceSignals customAudienceSignals);
/** Build a CustomAudienceBiddingInfo object. */
public abstract CustomAudienceBiddingInfo build();
}
}