| Index: chrome/browser/android/ntp/ntp_snippets_bridge.cc
|
| diff --git a/chrome/browser/android/ntp/ntp_snippets_bridge.cc b/chrome/browser/android/ntp/ntp_snippets_bridge.cc
|
| index 49ef541d84e94329742a05da8c3ed716ffec5c6f..605ce563031a07b18f52f54e0c17ed93223e869e 100644
|
| --- a/chrome/browser/android/ntp/ntp_snippets_bridge.cc
|
| +++ b/chrome/browser/android/ntp/ntp_snippets_bridge.cc
|
| @@ -25,12 +25,15 @@
|
|
|
| using base::android::AttachCurrentThread;
|
| using base::android::ConvertJavaStringToUTF8;
|
| +using base::android::ConvertUTF8ToJavaString;
|
| using base::android::JavaParamRef;
|
| using base::android::ToJavaArrayOfStrings;
|
| +using base::android::ToJavaIntArray;
|
| using base::android::ToJavaLongArray;
|
| using base::android::ToJavaFloatArray;
|
| using base::android::ScopedJavaGlobalRef;
|
| using base::android::ScopedJavaLocalRef;
|
| +using ntp_snippets::ContentSuggestion;
|
| using ntp_snippets::ContentSuggestionsCategory;
|
| using ntp_snippets::ContentSuggestionsCategoryStatus;
|
|
|
| @@ -122,18 +125,70 @@ void NTPSnippetsBridge::SnippetVisited(JNIEnv* env,
|
| &tracker_);
|
| }
|
|
|
| -int NTPSnippetsBridge::GetCategoryStatus(JNIEnv* env,
|
| - const JavaParamRef<jobject>& obj) {
|
| +ScopedJavaLocalRef<jintArray> NTPSnippetsBridge::GetCategories(
|
| + JNIEnv* env,
|
| + const base::android::JavaParamRef<jobject>& obj) {
|
| + std::vector<ContentSuggestionsCategory> categories =
|
| + content_suggestions_service_->GetCategories();
|
| + return ToJavaIntArray(env, reinterpret_cast<int*>(categories.data()),
|
| + categories.size());
|
| +}
|
| +
|
| +ScopedJavaLocalRef<jobjectArray> NTPSnippetsBridge::GetSuggestionsForCategory(
|
| + JNIEnv* env,
|
| + const base::android::JavaParamRef<jobject>& obj,
|
| + jint category) {
|
| + // Could potentially cache these?
|
| + ScopedJavaLocalRef<jclass> content_suggestion_clazz(
|
| + env, env->FindClass(
|
| + "org/chromium/chrome/browser/ntp/snippets/SnippetArticle"));
|
| + const std::vector<ContentSuggestion>& suggestions =
|
| + content_suggestions_service_->GetSuggestionsForCategory(
|
| + static_cast<ContentSuggestionsCategory>(category));
|
| + ScopedJavaLocalRef<jobjectArray> result(
|
| + env, env->NewObjectArray(suggestions.size(),
|
| + content_suggestion_clazz.obj(), nullptr));
|
| + for (size_t index = 0; index < suggestions.size(); index++) {
|
| + const ContentSuggestion& suggestion = suggestions[index];
|
| + ScopedJavaLocalRef<jobject> javaSuggestion =
|
| + Java_SnippetsBridge_createContentSuggestion(
|
| + env, obj.obj(), ConvertUTF8ToJavaString(env, suggestion.id()).obj(),
|
| + ConvertUTF8ToJavaString(env, suggestion.title()).obj(),
|
| + ConvertUTF8ToJavaString(env, suggestion.url().spec()).obj(),
|
| + ConvertUTF8ToJavaString(env, suggestion.amp_url().spec()).obj(),
|
| + ConvertUTF8ToJavaString(env, suggestion.snippet_text()).obj(),
|
| + static_cast<jlong>(suggestion.publish_date().ToJavaTime()),
|
| + ConvertUTF8ToJavaString(env, suggestion.publisher_name()).obj(),
|
| + static_cast<jfloat>(suggestion.score()), JniIntWrapper(index));
|
| + env->SetObjectArrayElement(result.obj(), index, javaSuggestion.obj());
|
| + }
|
| + return result;
|
| +}
|
| +
|
| +int NTPSnippetsBridge::GetArticlesCategoryStatus(
|
| + JNIEnv* env,
|
| + const JavaParamRef<jobject>& obj) {
|
| return static_cast<int>(content_suggestions_service_->GetCategoryStatus(
|
| ContentSuggestionsCategory::ARTICLES));
|
| }
|
|
|
| +int NTPSnippetsBridge::GetCategoryStatus(
|
| + JNIEnv* env,
|
| + const base::android::JavaParamRef<jobject>& obj,
|
| + jint category) {
|
| + return static_cast<int>(content_suggestions_service_->GetCategoryStatus(
|
| + static_cast<ContentSuggestionsCategory>(category)));
|
| +}
|
| +
|
| NTPSnippetsBridge::~NTPSnippetsBridge() {}
|
|
|
| void NTPSnippetsBridge::OnNewSuggestions() {
|
| if (observer_.is_null())
|
| return;
|
|
|
| + JNIEnv* env = base::android::AttachCurrentThread();
|
| + Java_SnippetsBridge_onNewSuggestions(env, observer_.obj());
|
| +
|
| std::vector<std::string> ids;
|
| std::vector<std::string> titles;
|
| // URL for the article. This will also be used to find the favicon for the
|
| @@ -161,7 +216,6 @@ void NTPSnippetsBridge::OnNewSuggestions() {
|
| scores.push_back(suggestion.score());
|
| }
|
|
|
| - JNIEnv* env = base::android::AttachCurrentThread();
|
| Java_SnippetsBridge_onSnippetsAvailable(
|
| env, observer_.obj(), ToJavaArrayOfStrings(env, ids).obj(),
|
| ToJavaArrayOfStrings(env, titles).obj(),
|
|
|