Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(486)

Unified Diff: chrome/browser/android/ntp/ntp_snippets_bridge.cc

Issue 2166523002: [TEMP DO NOT COMMIT] NewTabPageAdapter for multiple sections (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@bridgeumbiegen
Patch Set: Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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(),

Powered by Google App Engine
This is Rietveld 408576698