Commit 71d669cf authored by Becky Zhou's avatar Becky Zhou Committed by Commit Bot

[Feed] Set referrer url in FeedActionHandler

Bug: 881500
Change-Id: Ib362f0563b12aa8b5d299840a965ea5e0c8f003c
Reviewed-on: https://chromium-review.googlesource.com/1222194
Commit-Queue: Becky Zhou <huayinz@chromium.org>
Reviewed-by: default avatarFilip Gorski <fgorski@chromium.org>
Reviewed-by: default avatarTheresa <twellington@chromium.org>
Cr-Commit-Position: refs/heads/master@{#591099}
parent 6fa5f391
......@@ -9,11 +9,15 @@ import android.support.annotation.NonNull;
import com.google.android.libraries.feed.api.knowncontent.ContentMetadata;
import com.google.android.libraries.feed.host.action.ActionApi;
import org.chromium.blink_public.web.WebReferrerPolicy;
import org.chromium.chrome.browser.ChromeFeatureList;
import org.chromium.chrome.browser.feed.FeedOfflineIndicator;
import org.chromium.chrome.browser.offlinepages.OfflinePageBridge;
import org.chromium.chrome.browser.suggestions.SuggestionsConfig;
import org.chromium.chrome.browser.suggestions.SuggestionsNavigationDelegate;
import org.chromium.components.offline_items_collection.LaunchLocation;
import org.chromium.content_public.browser.LoadUrlParams;
import org.chromium.content_public.common.Referrer;
import org.chromium.ui.base.PageTransition;
import org.chromium.ui.mojom.WindowOpenDisposition;
......@@ -109,7 +113,12 @@ public class FeedActionHandler implements ActionApi {
}
private LoadUrlParams createLoadUrlParams(String url) {
return new LoadUrlParams(url, PageTransition.AUTO_BOOKMARK);
LoadUrlParams params = new LoadUrlParams(url, PageTransition.AUTO_BOOKMARK);
params.setReferrer(
new Referrer(SuggestionsConfig.getReferrerUrl(
ChromeFeatureList.INTEREST_FEED_CONTENT_SUGGESTIONS),
WebReferrerPolicy.ALWAYS));
return params;
}
/**
......
......@@ -66,10 +66,14 @@ public final class SuggestionsConfig {
return false;
}
/** @return The value of referrer URL to use with content suggestions. */
public static String getReferrerUrl() {
String referrerParamValue = ChromeFeatureList.getFieldTrialParamByFeature(
ChromeFeatureList.NTP_ARTICLE_SUGGESTIONS, REFERRER_URL_PARAM);
/**
* @param featureName The feature from {@link ChromeFeatureList}, which provides the referrer
* URL parameter.
* @return The value of referrer URL to use with content suggestions.
*/
public static String getReferrerUrl(String featureName) {
String referrerParamValue =
ChromeFeatureList.getFieldTrialParamByFeature(featureName, REFERRER_URL_PARAM);
if (!TextUtils.isEmpty(referrerParamValue)) {
return referrerParamValue;
......
......@@ -10,6 +10,7 @@ import org.chromium.base.metrics.RecordUserAction;
import org.chromium.blink_public.web.WebReferrerPolicy;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.ChromeActivity;
import org.chromium.chrome.browser.ChromeFeatureList;
import org.chromium.chrome.browser.UrlConstants;
import org.chromium.chrome.browser.bookmarks.BookmarkUtils;
import org.chromium.chrome.browser.device.DeviceClassManager;
......@@ -147,8 +148,9 @@ public class SuggestionsNavigationDelegateImpl implements SuggestionsNavigationD
// to filter out these history entries for NTP tiles.
// TODO(mastiz): Extend this with support for other categories.
if (article.mCategory == KnownCategories.ARTICLES) {
loadUrlParams.setReferrer(
new Referrer(SuggestionsConfig.getReferrerUrl(), WebReferrerPolicy.ALWAYS));
loadUrlParams.setReferrer(new Referrer(
SuggestionsConfig.getReferrerUrl(ChromeFeatureList.NTP_ARTICLE_SUGGESTIONS),
WebReferrerPolicy.ALWAYS));
}
// Set appropriate referrer for contextual suggestions to distinguish them from navigation
......
......@@ -13,9 +13,11 @@ import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import android.support.test.filters.SmallTest;
import android.util.ArrayMap;
import com.google.android.libraries.feed.api.knowncontent.ContentMetadata;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
......@@ -27,6 +29,7 @@ import org.robolectric.annotation.Config;
import org.chromium.base.Callback;
import org.chromium.base.test.BaseRobolectricTestRunner;
import org.chromium.chrome.browser.ChromeFeatureList;
import org.chromium.chrome.browser.feed.FeedOfflineIndicator;
import org.chromium.chrome.browser.offlinepages.OfflinePageBridge;
import org.chromium.chrome.browser.suggestions.SuggestionsNavigationDelegate;
......@@ -34,6 +37,7 @@ import org.chromium.content_public.browser.LoadUrlParams;
import org.chromium.ui.mojom.WindowOpenDisposition;
import java.util.Collections;
import java.util.Map;
/**
* Unit tests for {@link FeedActionHandler}.
......@@ -97,6 +101,15 @@ public class FeedActionHandlerTest {
.when(mOfflinePageBridge)
.getLoadUrlParamsByOfflineId(mOfflineIdCapture.capture(), anyInt(),
mLoadUrlParamsCallbackCapture.capture());
Map<String, Boolean> featureMap = new ArrayMap<>();
featureMap.put(ChromeFeatureList.INTEREST_FEED_CONTENT_SUGGESTIONS, true);
ChromeFeatureList.setTestFeatures(featureMap);
}
@After
public void tearDown() {
ChromeFeatureList.setTestFeatures(null);
}
@Test
......
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