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