| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/android/ntp/ntp_snippets_bridge.h" | 5 #include "chrome/browser/android/ntp/ntp_snippets_bridge.h" |
| 6 | 6 |
| 7 #include <jni.h> | 7 #include <jni.h> |
| 8 | 8 |
| 9 #include "base/android/jni_android.h" | 9 #include "base/android/jni_android.h" |
| 10 #include "base/android/jni_array.h" | 10 #include "base/android/jni_array.h" |
| 11 #include "base/android/scoped_java_ref.h" | 11 #include "base/android/scoped_java_ref.h" |
| 12 #include "chrome/browser/ntp_snippets/ntp_snippets_service_factory.h" | 12 #include "chrome/browser/ntp_snippets/ntp_snippets_service_factory.h" |
| 13 #include "chrome/browser/profiles/profile.h" | 13 #include "chrome/browser/profiles/profile.h" |
| 14 #include "chrome/browser/profiles/profile_android.h" | 14 #include "chrome/browser/profiles/profile_android.h" |
| 15 #include "components/ntp_snippets/ntp_snippet.h" | 15 #include "components/ntp_snippets/ntp_snippet.h" |
| 16 #include "components/ntp_snippets/ntp_snippets_service.h" | 16 #include "components/ntp_snippets/ntp_snippets_service.h" |
| 17 #include "jni/SnippetsBridge_jni.h" | 17 #include "jni/SnippetsBridge_jni.h" |
| 18 | 18 |
| 19 using base::android::JavaParamRef; | 19 using base::android::JavaParamRef; |
| 20 using base::android::ToJavaArrayOfStrings; | 20 using base::android::ToJavaArrayOfStrings; |
| 21 using base::android::ToJavaLongArray; |
| 21 using ntp_snippets::NTPSnippetsService; | 22 using ntp_snippets::NTPSnippetsService; |
| 22 using ntp_snippets::NTPSnippetsServiceObserver; | 23 using ntp_snippets::NTPSnippetsServiceObserver; |
| 23 | 24 |
| 24 static jlong Init(JNIEnv* env, | 25 static jlong Init(JNIEnv* env, |
| 25 const JavaParamRef<jobject>& obj, | 26 const JavaParamRef<jobject>& obj, |
| 26 const JavaParamRef<jobject>& j_profile) { | 27 const JavaParamRef<jobject>& j_profile) { |
| 27 NTPSnippetsBridge* snippets_bridge = new NTPSnippetsBridge(env, j_profile); | 28 NTPSnippetsBridge* snippets_bridge = new NTPSnippetsBridge(env, j_profile); |
| 28 return reinterpret_cast<intptr_t>(snippets_bridge); | 29 return reinterpret_cast<intptr_t>(snippets_bridge); |
| 29 } | 30 } |
| 30 | 31 |
| (...skipping 21 matching lines...) Expand all Loading... |
| 52 } | 53 } |
| 53 | 54 |
| 54 void NTPSnippetsBridge::NTPSnippetsServiceLoaded(NTPSnippetsService* service) { | 55 void NTPSnippetsBridge::NTPSnippetsServiceLoaded(NTPSnippetsService* service) { |
| 55 if (observer_.is_null()) | 56 if (observer_.is_null()) |
| 56 return; | 57 return; |
| 57 | 58 |
| 58 std::vector<std::string> titles; | 59 std::vector<std::string> titles; |
| 59 std::vector<std::string> urls; | 60 std::vector<std::string> urls; |
| 60 std::vector<std::string> thumbnail_urls; | 61 std::vector<std::string> thumbnail_urls; |
| 61 std::vector<std::string> snippets; | 62 std::vector<std::string> snippets; |
| 63 std::vector<int64_t> timestamps; |
| 62 for (const ntp_snippets::NTPSnippet& snippet : *service) { | 64 for (const ntp_snippets::NTPSnippet& snippet : *service) { |
| 63 titles.push_back(snippet.title()); | 65 titles.push_back(snippet.title()); |
| 64 urls.push_back(snippet.url().spec()); | 66 urls.push_back(snippet.url().spec()); |
| 65 thumbnail_urls.push_back(snippet.salient_image_url().spec()); | 67 thumbnail_urls.push_back(snippet.salient_image_url().spec()); |
| 66 snippets.push_back(snippet.snippet()); | 68 snippets.push_back(snippet.snippet()); |
| 69 timestamps.push_back(snippet.publish_date().ToJavaTime()); |
| 67 } | 70 } |
| 68 | 71 |
| 69 JNIEnv* env = base::android::AttachCurrentThread(); | 72 JNIEnv* env = base::android::AttachCurrentThread(); |
| 70 Java_SnippetsObserver_onSnippetsAvailable( | 73 Java_SnippetsBridge_onSnippetsAvailable( |
| 71 env, observer_.obj(), ToJavaArrayOfStrings(env, titles).obj(), | 74 env, observer_.obj(), ToJavaArrayOfStrings(env, titles).obj(), |
| 72 ToJavaArrayOfStrings(env, urls).obj(), | 75 ToJavaArrayOfStrings(env, urls).obj(), |
| 73 ToJavaArrayOfStrings(env, thumbnail_urls).obj(), | 76 ToJavaArrayOfStrings(env, thumbnail_urls).obj(), |
| 74 ToJavaArrayOfStrings(env, snippets).obj()); | 77 ToJavaArrayOfStrings(env, snippets).obj(), |
| 78 ToJavaLongArray(env, timestamps).obj()); |
| 75 } | 79 } |
| 76 | 80 |
| 77 void NTPSnippetsBridge::NTPSnippetsServiceShutdown( | 81 void NTPSnippetsBridge::NTPSnippetsServiceShutdown( |
| 78 NTPSnippetsService* service) { | 82 NTPSnippetsService* service) { |
| 79 observer_.Reset(); | 83 observer_.Reset(); |
| 80 snippet_service_observer_.Remove(ntp_snippets_service_); | 84 snippet_service_observer_.Remove(ntp_snippets_service_); |
| 81 } | 85 } |
| 82 | 86 |
| 83 // static | 87 // static |
| 84 bool NTPSnippetsBridge::Register(JNIEnv* env) { | 88 bool NTPSnippetsBridge::Register(JNIEnv* env) { |
| 85 return RegisterNativesImpl(env); | 89 return RegisterNativesImpl(env); |
| 86 } | 90 } |
| OLD | NEW |