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