Commit ce9513fa authored by Sky Malice's avatar Sky Malice Committed by Commit Bot

[Feed] Wire suggestion consumption into user classifier.

The ActionApi implementation might not be the best place to get this
information from long term, it seems like the LoggingApi or the
SchedulerApi might be more logical places. However, only the ActionApi
currently knows when suggestions are used, so send them over for now.

Bug: 831648
Change-Id: Ibfd750590eebb54b75fa9fb45a3706aa2b3b96fe
Reviewed-on: https://chromium-review.googlesource.com/1135844
Commit-Queue: Sky Malice <skym@chromium.org>
Reviewed-by: default avatarFilip Gorski <fgorski@chromium.org>
Reviewed-by: default avatarTheresa <twellington@chromium.org>
Cr-Commit-Position: refs/heads/master@{#579124}
parent 141a88a7
......@@ -16,6 +16,7 @@ import android.widget.FrameLayout;
import com.google.android.libraries.feed.api.scope.FeedProcessScope;
import com.google.android.libraries.feed.api.scope.FeedStreamScope;
import com.google.android.libraries.feed.api.stream.Stream;
import com.google.android.libraries.feed.host.action.ActionApi;
import com.google.android.libraries.feed.host.logging.BasicLoggingApi;
import com.google.android.libraries.feed.host.logging.ContentLoggingData;
import com.google.android.libraries.feed.host.stream.CardConfiguration;
......@@ -178,10 +179,11 @@ public class FeedNewTabPage extends NewTabPage implements TouchEnabledDelegate {
SuggestionsNavigationDelegateImpl navigationDelegate =
new SuggestionsNavigationDelegateImpl(
activity, profile, nativePageHost, tabModelSelector);
ActionApi actionApi = new FeedActionHandler(navigationDelegate,
() -> FeedProcessScopeFactory.getFeedSchedulerBridge().onSuggestionConsumed());
FeedStreamScope streamScope =
feedProcessScope
.createFeedStreamScopeBuilder(activity, mImageLoader,
new FeedActionHandler(navigationDelegate),
.createFeedStreamScopeBuilder(activity, mImageLoader, actionApi,
new BasicStreamConfiguration(activity.getResources()),
new BasicCardConfiguration(activity.getResources()),
new BasicSnackbarApi(), new DummyBasicLoggingApi())
......
......@@ -119,6 +119,11 @@ public class FeedSchedulerBridge implements SchedulerApi {
nativeOnTaskReschedule(mNativeBridge);
}
public void onSuggestionConsumed() {
assert mNativeBridge != 0;
nativeOnSuggestionConsumed(mNativeBridge);
}
@CalledByNative
private boolean triggerRefresh() {
if (mRequestManager != null && mSessionManager != null) {
......@@ -150,4 +155,5 @@ public class FeedSchedulerBridge implements SchedulerApi {
private native void nativeOnFixedTimer(
long nativeFeedSchedulerBridge, Callback<Void> onCompletion);
private native void nativeOnTaskReschedule(long nativeFeedSchedulerBridge);
private native void nativeOnSuggestionConsumed(long nativeFeedSchedulerBridge);
}
......@@ -18,18 +18,24 @@ import org.chromium.ui.mojom.WindowOpenDisposition;
*/
public class FeedActionHandler implements ActionApi {
private final SuggestionsNavigationDelegate mDelegate;
private final Runnable mSuggestionConsumedObserver;
/**
* @param delegate The {@link SuggestionsNavigationDelegate} that this handler calls when
* handling some of the actions.
* @param suggestionConsumedObserver An observer that is interested in any time a suggestion is
* consumed by the user.
*/
public FeedActionHandler(@NonNull SuggestionsNavigationDelegate delegate) {
public FeedActionHandler(@NonNull SuggestionsNavigationDelegate delegate,
@NonNull Runnable suggestionConsumedObserver) {
mDelegate = delegate;
mSuggestionConsumedObserver = suggestionConsumedObserver;
}
@Override
public void openUrl(String url) {
mDelegate.openUrl(WindowOpenDisposition.CURRENT_TAB, createLoadUrlParams(url));
mSuggestionConsumedObserver.run();
}
@Override
......@@ -40,6 +46,7 @@ public class FeedActionHandler implements ActionApi {
@Override
public void openUrlInIncognitoMode(String url) {
mDelegate.openUrl(WindowOpenDisposition.OFF_THE_RECORD, createLoadUrlParams(url));
mSuggestionConsumedObserver.run();
}
@Override
......@@ -50,6 +57,7 @@ public class FeedActionHandler implements ActionApi {
@Override
public void openUrlInNewTab(String url) {
mDelegate.openUrl(WindowOpenDisposition.NEW_BACKGROUND_TAB, createLoadUrlParams(url));
mSuggestionConsumedObserver.run();
}
@Override
......@@ -60,6 +68,7 @@ public class FeedActionHandler implements ActionApi {
@Override
public void openUrlInNewWindow(String url) {
mDelegate.openUrl(WindowOpenDisposition.NEW_WINDOW, createLoadUrlParams(url));
mSuggestionConsumedObserver.run();
}
@Override
......@@ -70,6 +79,7 @@ public class FeedActionHandler implements ActionApi {
@Override
public void downloadUrl(String url) {
mDelegate.openUrl(WindowOpenDisposition.SAVE_TO_DISK, createLoadUrlParams(url));
mSuggestionConsumedObserver.run();
}
@Override
......@@ -91,4 +101,4 @@ public class FeedActionHandler implements ActionApi {
private LoadUrlParams createLoadUrlParams(String url) {
return new LoadUrlParams(url, PageTransition.AUTO_BOOKMARK);
}
}
\ No newline at end of file
}
......@@ -98,6 +98,12 @@ void FeedSchedulerBridge::OnTaskReschedule(
scheduler_host_->OnTaskReschedule();
}
void FeedSchedulerBridge::OnSuggestionConsumed(
JNIEnv* env,
const base::android::JavaRef<jobject>& j_this) {
scheduler_host_->OnSuggestionConsumed();
}
void FeedSchedulerBridge::TriggerRefresh() {
JNIEnv* env = base::android::AttachCurrentThread();
Java_FeedSchedulerBridge_triggerRefresh(env, j_this_);
......
......@@ -56,6 +56,9 @@ class FeedSchedulerBridge {
void OnTaskReschedule(JNIEnv* env,
const base::android::JavaRef<jobject>& j_this);
void OnSuggestionConsumed(JNIEnv* env,
const base::android::JavaRef<jobject>& j_this);
private:
// Callable by native code to invoke Java code. Sends a request to the Feed
// library to make the refresh call.
......
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