Commit f2b9f600 authored by Andrew Luo's avatar Andrew Luo Committed by Commit Bot

Add FeedSchedulerConformanceTest to run third_party/feed's SchedulerConformance test.

Bug: 852617
Change-Id: I3d0e485ac5660e485bc23ffbf7b9069a9187ca72
Reviewed-on: https://chromium-review.googlesource.com/1100195
Commit-Queue: Andrew Luo <aluo@chromium.org>
Reviewed-by: default avatarFilip Gorski <fgorski@chromium.org>
Reviewed-by: default avatarSky Malice <skym@chromium.org>
Reviewed-by: default avatarDavid Trainor <dtrainor@chromium.org>
Cr-Commit-Position: refs/heads/master@{#568191}
parent fb902c63
......@@ -21,7 +21,10 @@ if (enable_feed_in_chrome) {
feed_srcjar_deps = [ "//components/feed/core:feed_core_java_enums_srcjar" ]
feed_conformance_test_sources = [ "//chrome/android/javatests/src/org/chromium/chrome/browser/feed/FeedNetworkBridgeConformanceTest.java" ]
feed_conformance_test_sources = [
"//chrome/android/javatests/src/org/chromium/chrome/browser/feed/FeedNetworkBridgeConformanceTest.java",
"//chrome/android/javatests/src/org/chromium/chrome/browser/feed/FeedSchedulerBridgeConformanceTest.java",
]
feed_conformance_test_deps = [
"//third_party/feed:feed_lib_java",
......
// Copyright 2018 The Chromium Authors. All rights reserved.
// 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.feed;
import android.support.test.filters.SmallTest;
import android.support.test.rule.UiThreadTestRule;
import com.google.android.libraries.feed.api.requestmanager.RequestManager;
import com.google.android.libraries.feed.common.Result;
import com.google.android.libraries.feed.common.functional.Consumer;
import com.google.android.libraries.feed.testing.conformance.scheduler.SchedulerConformanceTest;
import com.google.search.now.feed.client.StreamDataProto.StreamDataOperation;
import com.google.search.now.feed.client.StreamDataProto.StreamToken;
import com.google.search.now.wire.feed.FeedQueryProto.FeedQuery.RequestReason;
import org.junit.After;
import org.junit.Before;
import org.junit.Rule;
import org.junit.rules.RuleChain;
import org.junit.runner.Description;
import org.junit.runner.RunWith;
import org.chromium.base.test.params.ParameterAnnotations.ClassParameter;
import org.chromium.base.test.params.ParameterAnnotations.UseRunnerDelegate;
import org.chromium.base.test.params.ParameterSet;
import org.chromium.base.test.params.ParameterizedRunner;
import org.chromium.chrome.browser.profiles.Profile;
import org.chromium.chrome.browser.test.ChromeBrowserTestRule;
import org.chromium.chrome.test.ChromeJUnit4RunnerDelegate;
import java.util.Arrays;
import java.util.List;
/**
* Conformance Tests for {@link FeedSchedulerBridge}.
* The actual tests are implemented in SchedulerConformanceTest.
*/
// The @SmallTest class annotation is needed to allow the inherited @Test methods to run using
// build/android/test_runner.py.
@SmallTest
@RunWith(ParameterizedRunner.class)
@UseRunnerDelegate(ChromeJUnit4RunnerDelegate.class)
public final class FeedSchedulerBridgeConformanceTest extends SchedulerConformanceTest {
@ClassParameter
private static List<ParameterSet> sClassParams =
Arrays.asList(new ParameterSet().value(false).name("withoutRequestManager"),
new ParameterSet().value(true).name("withRequestManager"));
@Rule
public RuleChain mChain =
RuleChain.outerRule(new ChromeBrowserTestRule()).around(new UiThreadTestRule() {
@Override
protected boolean shouldRunOnUiThread(Description description) {
// FeedSchedulerBridge requires the used methods to be called on the UI Thread.
return true;
}
});
private final class NoOpRequestManager implements RequestManager {
@Override
public void loadMore(StreamToken streamToken,
Consumer < Result < List<StreamDataOperation>>> consumer) {}
@Override
public void triggerRefresh(RequestReason reason,
Consumer < Result < List<StreamDataOperation>>> consumer) {}
}
private boolean mUseRequestManager;
public FeedSchedulerBridgeConformanceTest(boolean useRequestManager) {
mUseRequestManager = useRequestManager;
}
@Before
public void setUp() throws Exception {
// The scheduler is declared and tested in SchedulerConformanceTest.
scheduler = new FeedSchedulerBridge(Profile.getLastUsedProfile());
if (mUseRequestManager) {
((FeedSchedulerBridge) scheduler).setRequestManager(new NoOpRequestManager());
}
}
@After
public void tearDown() {
((FeedSchedulerBridge) scheduler).destroy();
scheduler = null;
}
}
......@@ -3,5 +3,6 @@ pavely@chromium.org
pnoland@chromium.org
zea@chromium.org
per-file *Test.java=aluo@chromium.org
# Team: chrome-jardin-team@google.com
# COMPONENT: UI>Browser>ContentSuggestions>Feed
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment