[go: nahoru, domu]

blob: acda4d484f343414b97c0d47892993707efb793f [file] [log] [blame]
// Copyright 2021 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package org.chromium.chrome.browser.privacy_sandbox;
import org.chromium.base.Callback;
import java.util.Arrays;
import java.util.HashMap;
import java.util.LinkedHashSet;
import java.util.Set;
/** Java implementation of PrivacySandboxBridge for testing. */
public class FakePrivacySandboxBridge implements PrivacySandboxBridge.Natives {
private boolean mIsPrivacySandboxRestricted /* = false*/;
private boolean mIsRestrictedNoticeEnabled /* = false*/;
private final HashMap<String, Topic> mTopics = new HashMap<>();
private final Set<Topic> mCurrentTopTopics = new LinkedHashSet<>();
private final Set<Topic> mBlockedTopics = new LinkedHashSet<>();
private final Set<Topic> mFirstLevelTopics = new LinkedHashSet<>();
private final Set<Topic> mChildTopics = new LinkedHashSet<>();
private final Set<String> mCurrentFledgeSites = new LinkedHashSet<>();
private final Set<String> mBlockedFledgeSites = new LinkedHashSet<>();
private @PromptType int mPromptType = PromptType.NONE;
private Integer mLastPromptAction;
private boolean mLastTopicsToggleValue;
public void setCurrentTopTopics(String... topics) {
mCurrentTopTopics.clear();
for (String name : topics) {
mCurrentTopTopics.add(getOrCreateTopic(name));
}
}
public void setBlockedTopics(String... topics) {
mBlockedTopics.clear();
for (String name : topics) {
mBlockedTopics.add(getOrCreateTopic(name));
}
}
public void setFirstLevelTopics(String... topics) {
mFirstLevelTopics.clear();
for (String name : topics) {
mFirstLevelTopics.add(getOrCreateTopic(name));
}
}
public void setChildTopics(String... topics) {
mChildTopics.clear();
for (String name : topics) {
mChildTopics.add(getOrCreateTopic(name));
}
}
public void setCurrentFledgeSites(String... sites) {
mCurrentFledgeSites.clear();
mCurrentFledgeSites.addAll(Arrays.asList(sites));
}
public void setBlockedFledgeSites(String... sites) {
mBlockedFledgeSites.clear();
mBlockedFledgeSites.addAll(Arrays.asList(sites));
}
private Topic getOrCreateTopic(String name) {
Topic t = mTopics.get(name);
if (t == null) {
t = new Topic(mTopics.size(), -1, name);
mTopics.put(name, t);
}
return t;
}
@Override
public boolean isPrivacySandboxRestricted() {
return mIsPrivacySandboxRestricted;
}
@Override
public boolean isRestrictedNoticeEnabled() {
return mIsRestrictedNoticeEnabled;
}
@Override
public boolean isFirstPartySetsDataAccessEnabled() {
return false;
}
@Override
public boolean isFirstPartySetsDataAccessManaged() {
return false;
}
@Override
public boolean isPartOfManagedFirstPartySet(String origin) {
return false;
}
@Override
public void setFirstPartySetsDataAccessEnabled(boolean enabled) {}
@Override
public String getFirstPartySetOwner(String memberOrigin) {
return null;
}
public void setPrivacySandboxRestricted(boolean restricted) {
mIsPrivacySandboxRestricted = restricted;
}
public void setRestrictedNoticeEnabled(boolean restrictedNoticeEnabled) {
mIsRestrictedNoticeEnabled = restrictedNoticeEnabled;
}
@Override
public Topic[] getCurrentTopTopics() {
return mCurrentTopTopics.toArray(new Topic[] {});
}
@Override
public Topic[] getBlockedTopics() {
return mBlockedTopics.toArray(new Topic[] {});
}
@Override
public Topic[] getFirstLevelTopics() {
return mFirstLevelTopics.toArray(new Topic[] {});
}
@Override
public Topic[] getChildTopicsCurrentlyAssigned(int topicId, int taxonomyVersion) {
return mChildTopics.toArray(new Topic[] {});
}
@Override
public void setTopicAllowed(int topicId, int taxonomyVersion, boolean allowed) {
Topic topic = null;
for (Topic t : mTopics.values()) {
if (t.getTopicId() == topicId) {
topic = t;
}
}
if (allowed) {
mCurrentTopTopics.add(topic);
mBlockedTopics.remove(topic);
} else {
mCurrentTopTopics.remove(topic);
mBlockedTopics.add(topic);
}
}
@Override
public void getFledgeJoiningEtldPlusOneForDisplay(Callback<String[]> callback) {
callback.onResult(mCurrentFledgeSites.toArray(new String[0]));
}
@Override
public String[] getBlockedFledgeJoiningTopFramesForDisplay() {
return mBlockedFledgeSites.toArray(new String[0]);
}
@Override
public void setFledgeJoiningAllowed(String topFrameEtldPlus1, boolean allowed) {
if (allowed) {
mCurrentFledgeSites.add(topFrameEtldPlus1);
mBlockedFledgeSites.remove(topFrameEtldPlus1);
} else {
mCurrentFledgeSites.remove(topFrameEtldPlus1);
mBlockedFledgeSites.add(topFrameEtldPlus1);
}
}
public void setRequiredPromptType(@PromptType int type) {
mPromptType = type;
}
@Override
public int getRequiredPromptType() {
return mPromptType;
}
@Override
public void promptActionOccurred(@PromptAction int action) {
mLastPromptAction = action;
}
public Integer getLastPromptAction() {
return mLastPromptAction;
}
public void resetLastPromptAction() {
mLastPromptAction = null;
}
@Override
public void topicsToggleChanged(boolean newValue) {
mLastTopicsToggleValue = newValue;
}
public boolean getLastTopicsToggleValue() {
return mLastTopicsToggleValue;
}
@Override
public void setAllPrivacySandboxAllowedForTesting() {}
}