OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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/history_report/history_report_jni_bridge.h" | 5 #include "chrome/browser/android/history_report/history_report_jni_bridge.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 #include <stdint.h> | 8 #include <stdint.h> |
9 | 9 |
10 #include <vector> | 10 #include <vector> |
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
94 data_provider_->Query(last_seq_no, limit); | 94 data_provider_->Query(last_seq_no, limit); |
95 ScopedJavaLocalRef<jobjectArray> jentries_array = | 95 ScopedJavaLocalRef<jobjectArray> jentries_array = |
96 history_report::Java_HistoryReportJniBridge_createDeltaFileEntriesArray( | 96 history_report::Java_HistoryReportJniBridge_createDeltaFileEntriesArray( |
97 env, entries->size()); | 97 env, entries->size()); |
98 | 98 |
99 int64_t max_seq_no = 0; | 99 int64_t max_seq_no = 0; |
100 for (size_t i = 0; i < entries->size(); ++i) { | 100 for (size_t i = 0; i < entries->size(); ++i) { |
101 const DeltaFileEntryWithData& entry = (*entries)[i]; | 101 const DeltaFileEntryWithData& entry = (*entries)[i]; |
102 max_seq_no = max_seq_no < entry.SeqNo() ? entry.SeqNo() : max_seq_no; | 102 max_seq_no = max_seq_no < entry.SeqNo() ? entry.SeqNo() : max_seq_no; |
103 history_report::Java_HistoryReportJniBridge_setDeltaFileEntry( | 103 history_report::Java_HistoryReportJniBridge_setDeltaFileEntry( |
104 env, jentries_array.obj(), i, entry.SeqNo(), | 104 env, jentries_array, i, entry.SeqNo(), |
105 base::android::ConvertUTF8ToJavaString(env, entry.Type()).obj(), | 105 base::android::ConvertUTF8ToJavaString(env, entry.Type()), |
106 base::android::ConvertUTF8ToJavaString(env, entry.Id()).obj(), | 106 base::android::ConvertUTF8ToJavaString(env, entry.Id()), |
107 base::android::ConvertUTF8ToJavaString(env, entry.Url()).obj(), | 107 base::android::ConvertUTF8ToJavaString(env, entry.Url()), entry.Score(), |
108 entry.Score(), | 108 base::android::ConvertUTF16ToJavaString(env, entry.Title()), |
109 base::android::ConvertUTF16ToJavaString(env, entry.Title()).obj(), | 109 base::android::ConvertUTF8ToJavaString(env, entry.IndexedUrl())); |
110 base::android::ConvertUTF8ToJavaString(env, entry.IndexedUrl()).obj()); | |
111 } | 110 } |
112 | 111 |
113 // Check if all entries from delta file were synced and start reporting usage | 112 // Check if all entries from delta file were synced and start reporting usage |
114 // if it's true. | 113 // if it's true. |
115 if (entries->empty() || delta_file_service_->Query(max_seq_no, 1)->empty()) | 114 if (entries->empty() || delta_file_service_->Query(max_seq_no, 1)->empty()) |
116 StartReporting(); | 115 StartReporting(); |
117 | 116 |
118 return jentries_array; | 117 return jentries_array; |
119 } | 118 } |
120 | 119 |
121 base::android::ScopedJavaLocalRef<jobjectArray> | 120 base::android::ScopedJavaLocalRef<jobjectArray> |
122 HistoryReportJniBridge::GetUsageReportsBatch(JNIEnv* env, | 121 HistoryReportJniBridge::GetUsageReportsBatch(JNIEnv* env, |
123 const JavaParamRef<jobject>& obj, | 122 const JavaParamRef<jobject>& obj, |
124 jint batch_size) { | 123 jint batch_size) { |
125 std::unique_ptr<std::vector<UsageReport>> reports = | 124 std::unique_ptr<std::vector<UsageReport>> reports = |
126 usage_reports_buffer_service_->GetUsageReportsBatch(batch_size); | 125 usage_reports_buffer_service_->GetUsageReportsBatch(batch_size); |
127 ScopedJavaLocalRef<jobjectArray> jreports_array = | 126 ScopedJavaLocalRef<jobjectArray> jreports_array = |
128 history_report::Java_HistoryReportJniBridge_createUsageReportsArray(env, | 127 history_report::Java_HistoryReportJniBridge_createUsageReportsArray(env, |
129 reports->size()); | 128 reports->size()); |
130 | 129 |
131 for (size_t i = 0; i < reports->size(); ++i) { | 130 for (size_t i = 0; i < reports->size(); ++i) { |
132 const UsageReport& report = (*reports)[i]; | 131 const UsageReport& report = (*reports)[i]; |
133 std::string key = usage_report_util::ReportToKey(report); | 132 std::string key = usage_report_util::ReportToKey(report); |
134 history_report::Java_HistoryReportJniBridge_setUsageReport( | 133 history_report::Java_HistoryReportJniBridge_setUsageReport( |
135 env, jreports_array.obj(), i, | 134 env, jreports_array, i, |
136 base::android::ConvertUTF8ToJavaString(env, key).obj(), | 135 base::android::ConvertUTF8ToJavaString(env, key), |
137 base::android::ConvertUTF8ToJavaString(env, report.id()).obj(), | 136 base::android::ConvertUTF8ToJavaString(env, report.id()), |
138 report.timestamp_ms(), report.typed_visit()); | 137 report.timestamp_ms(), report.typed_visit()); |
139 } | 138 } |
140 return jreports_array; | 139 return jreports_array; |
141 } | 140 } |
142 | 141 |
143 void HistoryReportJniBridge::RemoveUsageReports( | 142 void HistoryReportJniBridge::RemoveUsageReports( |
144 JNIEnv* env, | 143 JNIEnv* env, |
145 const JavaParamRef<jobject>& obj, | 144 const JavaParamRef<jobject>& obj, |
146 const JavaParamRef<jobjectArray>& batch) { | 145 const JavaParamRef<jobjectArray>& batch) { |
147 std::vector<std::string> to_remove; | 146 std::vector<std::string> to_remove; |
148 base::android::AppendJavaStringArrayToStringVector(env, batch, &to_remove); | 147 base::android::AppendJavaStringArrayToStringVector(env, batch, &to_remove); |
149 usage_reports_buffer_service_->Remove(to_remove); | 148 usage_reports_buffer_service_->Remove(to_remove); |
150 } | 149 } |
151 | 150 |
152 void HistoryReportJniBridge::NotifyDataChanged() { | 151 void HistoryReportJniBridge::NotifyDataChanged() { |
153 JNIEnv* env = base::android::AttachCurrentThread(); | 152 JNIEnv* env = base::android::AttachCurrentThread(); |
154 ScopedJavaLocalRef<jobject> obj = weak_java_provider_.get(env); | 153 ScopedJavaLocalRef<jobject> obj = weak_java_provider_.get(env); |
155 if (!obj.is_null()) | 154 if (!obj.is_null()) |
156 history_report::Java_HistoryReportJniBridge_onDataChanged(env, obj.obj()); | 155 history_report::Java_HistoryReportJniBridge_onDataChanged(env, obj); |
157 } | 156 } |
158 | 157 |
159 void HistoryReportJniBridge::NotifyDataCleared() { | 158 void HistoryReportJniBridge::NotifyDataCleared() { |
160 JNIEnv* env = base::android::AttachCurrentThread(); | 159 JNIEnv* env = base::android::AttachCurrentThread(); |
161 ScopedJavaLocalRef<jobject> obj = weak_java_provider_.get(env); | 160 ScopedJavaLocalRef<jobject> obj = weak_java_provider_.get(env); |
162 if (!obj.is_null()) | 161 if (!obj.is_null()) |
163 history_report::Java_HistoryReportJniBridge_onDataCleared(env, obj.obj()); | 162 history_report::Java_HistoryReportJniBridge_onDataCleared(env, obj); |
164 } | 163 } |
165 | 164 |
166 void HistoryReportJniBridge::StopReporting() { | 165 void HistoryReportJniBridge::StopReporting() { |
167 JNIEnv* env = base::android::AttachCurrentThread(); | 166 JNIEnv* env = base::android::AttachCurrentThread(); |
168 ScopedJavaLocalRef<jobject> obj = weak_java_provider_.get(env); | 167 ScopedJavaLocalRef<jobject> obj = weak_java_provider_.get(env); |
169 if (!obj.is_null()) | 168 if (!obj.is_null()) |
170 history_report::Java_HistoryReportJniBridge_stopReportingTask(env, | 169 history_report::Java_HistoryReportJniBridge_stopReportingTask(env, obj); |
171 obj.obj()); | |
172 } | 170 } |
173 | 171 |
174 void HistoryReportJniBridge::StartReporting() { | 172 void HistoryReportJniBridge::StartReporting() { |
175 JNIEnv* env = base::android::AttachCurrentThread(); | 173 JNIEnv* env = base::android::AttachCurrentThread(); |
176 ScopedJavaLocalRef<jobject> obj = weak_java_provider_.get(env); | 174 ScopedJavaLocalRef<jobject> obj = weak_java_provider_.get(env); |
177 if (!obj.is_null()) | 175 if (!obj.is_null()) |
178 history_report::Java_HistoryReportJniBridge_startReportingTask(env, | 176 history_report::Java_HistoryReportJniBridge_startReportingTask(env, obj); |
179 obj.obj()); | |
180 } | 177 } |
181 | 178 |
182 jboolean HistoryReportJniBridge::AddHistoricVisitsToUsageReportsBuffer( | 179 jboolean HistoryReportJniBridge::AddHistoricVisitsToUsageReportsBuffer( |
183 JNIEnv* env, | 180 JNIEnv* env, |
184 const JavaParamRef<jobject>& obj) { | 181 const JavaParamRef<jobject>& obj) { |
185 data_provider_->StartVisitMigrationToUsageBuffer( | 182 data_provider_->StartVisitMigrationToUsageBuffer( |
186 usage_reports_buffer_service_.get()); | 183 usage_reports_buffer_service_.get()); |
187 // TODO(nileshagrawal): Return true when actually done, | 184 // TODO(nileshagrawal): Return true when actually done, |
188 // or callback on success. | 185 // or callback on success. |
189 return true; | 186 return true; |
190 } | 187 } |
191 | 188 |
192 base::android::ScopedJavaLocalRef<jstring> HistoryReportJniBridge::Dump( | 189 base::android::ScopedJavaLocalRef<jstring> HistoryReportJniBridge::Dump( |
193 JNIEnv* env, | 190 JNIEnv* env, |
194 const JavaParamRef<jobject>& obj) { | 191 const JavaParamRef<jobject>& obj) { |
195 std::string dump; | 192 std::string dump; |
196 dump.append(delta_file_service_->Dump()); | 193 dump.append(delta_file_service_->Dump()); |
197 dump.append(usage_reports_buffer_service_->Dump()); | 194 dump.append(usage_reports_buffer_service_->Dump()); |
198 return base::android::ConvertUTF8ToJavaString(env, dump); | 195 return base::android::ConvertUTF8ToJavaString(env, dump); |
199 } | 196 } |
200 | 197 |
201 } // namespace history_report | 198 } // namespace history_report |
OLD | NEW |