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

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

Issue 2230473002: Refactor and extend SnippetsBridge for multi-section support (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@categoryinfo
Patch Set: Rename SnippetsObserver to ContentSuggestionsSourceObserver Created 4 years, 4 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 a8d487dad2392cbd060eb53be311862bbc2ae1d4..b0fe1da0cd5404b1a7b837cc40f30b879ac3f2f7 100644
--- a/chrome/browser/android/ntp/ntp_snippets_bridge.cc
+++ b/chrome/browser/android/ntp/ntp_snippets_bridge.cc
@@ -30,9 +30,12 @@ using base::android::ConvertUTF16ToJavaString;
using base::android::JavaParamRef;
using base::android::ScopedJavaGlobalRef;
using base::android::ScopedJavaLocalRef;
+using base::android::ToJavaIntArray;
using ntp_snippets::Category;
+using ntp_snippets::CategoryInfo;
using ntp_snippets::CategoryStatus;
using ntp_snippets::KnownCategories;
+using ntp_snippets::ContentSuggestion;
namespace {
@@ -93,31 +96,87 @@ void NTPSnippetsBridge::SetObserver(JNIEnv* env,
const JavaParamRef<jobject>& obj,
const JavaParamRef<jobject>& j_observer) {
observer_.Reset(env, j_observer);
- OnNewSuggestions();
Marc Treib 2016/08/09 13:38:16 Why this change? Does the UI now explicitly query
Philipp Keck 2016/08/09 14:02:54 Correct: https://codereview.chromium.org/223047300
}
-void NTPSnippetsBridge::FetchImage(JNIEnv* env,
- const JavaParamRef<jobject>& obj,
- const JavaParamRef<jstring>& snippet_id,
- const JavaParamRef<jobject>& j_callback) {
+ScopedJavaLocalRef<jintArray> NTPSnippetsBridge::GetCategories(
+ JNIEnv* env,
+ const base::android::JavaParamRef<jobject>& obj) {
+ std::vector<Category> categories =
+ content_suggestions_service_->GetCategories();
+ return ToJavaIntArray(env, reinterpret_cast<int*>(categories.data()),
Marc Treib 2016/08/09 13:38:16 Ooh, I'm not sure this is safe. Rule of thumb, rei
Philipp Keck 2016/08/09 14:02:54 Done.
+ categories.size());
+}
+
+int NTPSnippetsBridge::GetCategoryStatus(JNIEnv* env,
+ const JavaParamRef<jobject>& obj,
+ jint category) {
+ return static_cast<int>(content_suggestions_service_->GetCategoryStatus(
+ content_suggestions_service_->category_factory()->FromIDValue(category)));
+}
+
+base::android::ScopedJavaLocalRef<jobject> NTPSnippetsBridge::GetCategoryInfo(
+ JNIEnv* env,
+ const base::android::JavaParamRef<jobject>& obj,
+ jint category) {
+ base::Optional<CategoryInfo> info =
+ content_suggestions_service_->GetCategoryInfo(
+ content_suggestions_service_->category_factory()->FromIDValue(
+ category));
+ if (!info)
+ return base::android::ScopedJavaLocalRef<jobject>(env, nullptr);
+ return Java_SnippetsBridge_createSuggestionsCategoryInfo(
+ env, ConvertUTF16ToJavaString(env, info->title()).obj(),
+ static_cast<int>(info->card_layout()));
+}
+
+ScopedJavaLocalRef<jobject> NTPSnippetsBridge::GetSuggestionsForCategory(
+ JNIEnv* env,
+ const base::android::JavaParamRef<jobject>& obj,
+ jint category) {
+ const std::vector<ContentSuggestion>& suggestions =
+ content_suggestions_service_->GetSuggestionsForCategory(
+ content_suggestions_service_->category_factory()->FromIDValue(
+ category));
+ ScopedJavaLocalRef<jobject> result =
+ Java_SnippetsBridge_createSuggestionList(env);
+ for (const ContentSuggestion& suggestion : suggestions) {
+ Java_SnippetsBridge_addSuggestion(
+ env, result.obj(), ConvertUTF8ToJavaString(env, suggestion.id()).obj(),
+ ConvertUTF16ToJavaString(env, suggestion.title()).obj(),
+ ConvertUTF16ToJavaString(env, suggestion.publisher_name()).obj(),
+ ConvertUTF16ToJavaString(env, suggestion.snippet_text()).obj(),
+ ConvertUTF8ToJavaString(env, suggestion.url().spec()).obj(),
+ ConvertUTF8ToJavaString(env, suggestion.amp_url().spec()).obj(),
+ suggestion.publish_date().ToJavaTime(), suggestion.score());
+ }
+ return result;
+}
+
+void NTPSnippetsBridge::FetchSuggestionImage(
+ JNIEnv* env,
+ const JavaParamRef<jobject>& obj,
+ const JavaParamRef<jstring>& suggestion_id,
+ const JavaParamRef<jobject>& j_callback) {
base::android::ScopedJavaGlobalRef<jobject> callback(j_callback);
content_suggestions_service_->FetchSuggestionImage(
- ConvertJavaStringToUTF8(env, snippet_id),
+ ConvertJavaStringToUTF8(env, suggestion_id),
base::Bind(&NTPSnippetsBridge::OnImageFetched,
weak_ptr_factory_.GetWeakPtr(), callback));
}
-void NTPSnippetsBridge::DiscardSnippet(JNIEnv* env,
- const JavaParamRef<jobject>& obj,
- const JavaParamRef<jstring>& id) {
+void NTPSnippetsBridge::DismissSuggestion(
+ JNIEnv* env,
+ const JavaParamRef<jobject>& obj,
+ const JavaParamRef<jstring>& suggestion_id) {
content_suggestions_service_->DismissSuggestion(
- ConvertJavaStringToUTF8(env, id));
+ ConvertJavaStringToUTF8(env, suggestion_id));
}
-void NTPSnippetsBridge::SnippetVisited(JNIEnv* env,
- const JavaParamRef<jobject>& obj,
- const JavaParamRef<jobject>& jcallback,
- const JavaParamRef<jstring>& jurl) {
+void NTPSnippetsBridge::GetSuggestionVisited(
+ JNIEnv* env,
+ const JavaParamRef<jobject>& obj,
+ const JavaParamRef<jobject>& jcallback,
+ const JavaParamRef<jstring>& jurl) {
base::android::ScopedJavaGlobalRef<jobject> callback(jcallback);
history_service_->QueryURL(
@@ -127,60 +186,20 @@ void NTPSnippetsBridge::SnippetVisited(JNIEnv* env,
&tracker_);
}
-int NTPSnippetsBridge::GetCategoryStatus(JNIEnv* env,
- const JavaParamRef<jobject>& obj,
- jint category) {
- return static_cast<int>(content_suggestions_service_->GetCategoryStatus(
- content_suggestions_service_->category_factory()->FromKnownCategory(
- KnownCategories::ARTICLES)));
-}
-
NTPSnippetsBridge::~NTPSnippetsBridge() {}
-void NTPSnippetsBridge::OnNewSuggestions() {
+void NTPSnippetsBridge::OnNewSuggestions(Category category) {
if (observer_.is_null())
return;
- // Show all suggestions from all categories, even though we currently display
- // them in a single section on the UI.
- // TODO(pke): This is only for debugging new sections and will be replaced
- // with proper multi-section UI support.
JNIEnv* env = base::android::AttachCurrentThread();
- ScopedJavaLocalRef<jobject> suggestions =
- Java_SnippetsBridge_createSuggestionList(env);
- for (Category category :
- content_suggestions_service_->GetCategories()) {
- if (content_suggestions_service_->GetCategoryStatus(category) !=
- CategoryStatus::AVAILABLE) {
- continue;
- }
- for (const ntp_snippets::ContentSuggestion& suggestion :
- content_suggestions_service_->GetSuggestionsForCategory(category)) {
- Java_SnippetsBridge_addSuggestion(
- env, suggestions.obj(),
- ConvertUTF8ToJavaString(env, suggestion.id()).obj(),
- ConvertUTF16ToJavaString(env, suggestion.title()).obj(),
- ConvertUTF16ToJavaString(env, suggestion.publisher_name()).obj(),
- ConvertUTF16ToJavaString(env, suggestion.snippet_text()).obj(),
- ConvertUTF8ToJavaString(env, suggestion.url().spec()).obj(),
- ConvertUTF8ToJavaString(env, suggestion.amp_url().spec()).obj(),
- suggestion.publish_date().ToJavaTime(), suggestion.score());
- }
- }
-
- // TODO(mvanouwerkerk): Do not hard code ARTICLES.
- Java_SnippetsBridge_onSuggestionsAvailable(
- env, observer_.obj(),
- static_cast<int>(
- content_suggestions_service_->category_factory()->FromKnownCategory(
- KnownCategories::ARTICLES).id()),
- suggestions.obj());
+ Java_SnippetsBridge_onNewSuggestions(env, observer_.obj(),
+ static_cast<int>(category.id()));
}
void NTPSnippetsBridge::OnCategoryStatusChanged(Category category,
CategoryStatus new_status) {
- // TODO(mvanouwerkerk): Do not hard code ARTICLES.
- if (!category.IsKnownCategory(KnownCategories::ARTICLES))
+ if (observer_.is_null())
return;
JNIEnv* env = base::android::AttachCurrentThread();

Powered by Google App Engine
This is Rietveld 408576698