[go: nahoru, domu]

blob: 99b1a35ae20fe56c1d07f4975e8dc0990b8787c2 [file] [log] [blame]
// Copyright 2023 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.android_webview.test;
import org.chromium.android_webview.AwBrowserContext;
import org.chromium.android_webview.AwBrowserContextStore;
import org.chromium.android_webview.AwContents;
import org.chromium.android_webview.AwSettings;
import org.chromium.base.ThreadUtils;
import java.util.function.Consumer;
/** Wrapper around AwActivityTestRule with helper methods for tests using multiple profiles. */
public class MultiProfileTestRule extends AwActivityTestRule {
private final TestAwContentsClient mContentsClient;
public MultiProfileTestRule() {
mContentsClient = new TestAwContentsClient();
}
public MultiProfileTestRule(Consumer<AwSettings> mMaybeMutateAwSettings) {
super(mMaybeMutateAwSettings);
mContentsClient = new TestAwContentsClient();
}
public AwContents createAwContents() {
return createAwTestContainerViewOnMainSync(mContentsClient).getAwContents();
}
public AwContents createAwContents(AwBrowserContext browserContext) {
AwContents awContents =
createAwTestContainerViewOnMainSync(mContentsClient).getAwContents();
setBrowserContextSync(awContents, browserContext);
return awContents;
}
public void setBrowserContextSync(AwContents awContents, AwBrowserContext browserContext) {
ThreadUtils.runOnUiThreadBlockingNoException(
() -> {
awContents.setBrowserContext(browserContext);
return null;
});
}
public AwBrowserContext getProfileSync(String name, boolean createIfNeeded) {
return ThreadUtils.runOnUiThreadBlockingNoException(
() -> AwBrowserContextStore.getNamedContext(name, createIfNeeded));
}
public TestAwContentsClient getContentsClient() {
return mContentsClient;
}
}