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_SnippetsObserver_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 |