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