Chromium Code Reviews| Index: chrome/browser/android/physical_web/physical_web_data_source_android.cc |
| diff --git a/chrome/browser/android/physical_web/physical_web_data_source_android.cc b/chrome/browser/android/physical_web/physical_web_data_source_android.cc |
| index 2f8eed56b84a066eacf4b440260fec8cb4f1d7a6..782da633f72f18071787bd8c6a86305c015172c7 100644 |
| --- a/chrome/browser/android/physical_web/physical_web_data_source_android.cc |
| +++ b/chrome/browser/android/physical_web/physical_web_data_source_android.cc |
| @@ -6,15 +6,52 @@ |
| #include <jni.h> |
| +#include "base/android/jni_android.h" |
| +#include "base/android/jni_string.h" |
| #include "base/memory/ptr_util.h" |
| #include "base/values.h" |
| #include "chrome/browser/browser_process.h" |
| #include "jni/UrlManager_jni.h" |
| using base::android::AttachCurrentThread; |
| +using base::android::ConvertJavaStringToUTF8; |
| using base::android::JavaParamRef; |
| using base::android::ScopedJavaLocalRef; |
| +PhysicalWebCollection::PhysicalWebCollection() |
| + : metadata_list_(base::MakeUnique<base::ListValue>()) {} |
| + |
| +PhysicalWebCollection::~PhysicalWebCollection() {} |
| + |
| +void PhysicalWebCollection::AppendMetadataItem( |
| + JNIEnv* env, |
| + const JavaParamRef<jobject>& obj, |
| + const JavaParamRef<jstring>& j_request_url, |
| + jdouble distance_estimate, |
| + jint scan_timestamp, |
| + const JavaParamRef<jstring>& j_site_url, |
| + const JavaParamRef<jstring>& j_icon_url, |
| + const JavaParamRef<jstring>& j_title, |
| + const JavaParamRef<jstring>& j_description, |
| + const JavaParamRef<jstring>& j_group_id) { |
| + auto metadata_item = new base::DictionaryValue(); |
| + metadata_item->SetString("scannedUrl", |
|
gone
2016/10/24 16:35:35
Are these key constants referenced anywhere else?
mattreynolds
2016/10/24 22:39:52
Done. They are also hard-coded in the WebUI HTML b
|
| + ConvertJavaStringToUTF8(j_request_url)); |
| + metadata_item->SetDouble("distanceEstimate", distance_estimate); |
| + metadata_item->SetInteger("scanTimestamp", scan_timestamp); |
| + metadata_item->SetString("resolvedUrl", ConvertJavaStringToUTF8(j_site_url)); |
| + metadata_item->SetString("icon", ConvertJavaStringToUTF8(j_icon_url)); |
| + metadata_item->SetString("title", ConvertJavaStringToUTF8(j_title)); |
| + metadata_item->SetString("description", |
| + ConvertJavaStringToUTF8(j_description)); |
| + metadata_item->SetString("groupId", ConvertJavaStringToUTF8(j_group_id)); |
| + metadata_list_->Append(std::move(metadata_item)); |
| +} |
| + |
| +std::unique_ptr<base::ListValue> PhysicalWebCollection::GetMetadataList() { |
| + return std::move(metadata_list_); |
| +} |
| + |
| PhysicalWebDataSourceAndroid::PhysicalWebDataSourceAndroid() { |
| Initialize(); |
| } |
| @@ -41,8 +78,13 @@ void PhysicalWebDataSourceAndroid::StopDiscovery() { |
| } |
| std::unique_ptr<base::ListValue> PhysicalWebDataSourceAndroid::GetMetadata() { |
| - // TODO(mattreynolds): get the metadata from the Java layer |
| - return base::MakeUnique<base::ListValue>(); |
| + JNIEnv* env = AttachCurrentThread(); |
| + |
| + auto pw_collection = base::MakeUnique<PhysicalWebCollection>(); |
| + Java_UrlManager_getPwCollection(env, url_manager_.obj(), |
| + (long)pw_collection.get()); |
| + |
| + return pw_collection->GetMetadataList(); |
| } |
| bool PhysicalWebDataSourceAndroid::HasUnresolvedDiscoveries() { |