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 362cd2e04e4b2d9cca409017c8a48b2b7d8b7c67..d28364a6941707f0072cff806921b3b27749dcb4 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 |
@@ -19,7 +19,8 @@ using base::android::JavaParamRef; |
using base::android::ScopedJavaLocalRef; |
PhysicalWebCollection::PhysicalWebCollection() |
- : metadata_list_(base::MakeUnique<base::ListValue>()), |
+ : dictionary_value_list_(base::MakeUnique<base::ListValue>()), |
+ metadata_list_(base::MakeUnique<physical_web::MetadataList>()), |
accessed_once_(false) {} |
PhysicalWebCollection::~PhysicalWebCollection() {} |
@@ -29,37 +30,57 @@ void PhysicalWebCollection::AppendMetadataItem( |
const JavaParamRef<jobject>& obj, |
const JavaParamRef<jstring>& j_request_url, |
jdouble distance_estimate, |
- jint scan_timestamp, |
+ jlong 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(physical_web::kScannedUrlKey, |
+ // Create a DictionaryValue. Notice that we no longer set the timestamp |
+ // since it is a long and the DictionaryValue can only store ints. |
+ auto dictionary_value = base::MakeUnique<base::DictionaryValue>(); |
+ dictionary_value->SetString(physical_web::kScannedUrlKey, |
ConvertJavaStringToUTF8(j_request_url)); |
- metadata_item->SetDouble(physical_web::kDistanceEstimateKey, |
+ dictionary_value->SetDouble(physical_web::kDistanceEstimateKey, |
distance_estimate); |
- metadata_item->SetInteger(physical_web::kScanTimestampKey, scan_timestamp); |
- metadata_item->SetString(physical_web::kResolvedUrlKey, |
+ dictionary_value->SetString(physical_web::kResolvedUrlKey, |
ConvertJavaStringToUTF8(j_site_url)); |
- metadata_item->SetString(physical_web::kIconUrlKey, |
+ dictionary_value->SetString(physical_web::kIconUrlKey, |
ConvertJavaStringToUTF8(j_icon_url)); |
- metadata_item->SetString(physical_web::kTitleKey, |
+ dictionary_value->SetString(physical_web::kTitleKey, |
ConvertJavaStringToUTF8(j_title)); |
- metadata_item->SetString(physical_web::kDescriptionKey, |
+ dictionary_value->SetString(physical_web::kDescriptionKey, |
ConvertJavaStringToUTF8(j_description)); |
- metadata_item->SetString(physical_web::kGroupIdKey, |
+ dictionary_value->SetString(physical_web::kGroupIdKey, |
ConvertJavaStringToUTF8(j_group_id)); |
- metadata_list_->Append(std::move(metadata_item)); |
+ dictionary_value_list_->Append(std::move(dictionary_value)); |
+ |
+ physical_web::Metadata metadata; |
+ metadata.scanned_url = ConvertJavaStringToUTF8(j_request_url); |
+ metadata.resolved_url = ConvertJavaStringToUTF8(j_site_url); |
+ metadata.icon_url = ConvertJavaStringToUTF8(j_icon_url); |
+ metadata.title = ConvertJavaStringToUTF8(j_title); |
+ metadata.description = ConvertJavaStringToUTF8(j_description); |
+ metadata.group_id = ConvertJavaStringToUTF8(j_group_id); |
+ metadata.distance_estimate = distance_estimate; |
+ metadata.scan_timestamp = scan_timestamp; |
vitaliii
2016/12/09 09:52:49
I do not feel that this works as expected.
But eve
cco3
2016/12/10 00:25:23
Yea, I didn't think it would either. Thanks for f
vitaliii
2016/12/12 07:04:13
Acknowledged.
|
+ metadata_list_->push_back(std::move(metadata_item)); |
} |
-std::unique_ptr<base::ListValue> PhysicalWebCollection::GetMetadataList() { |
+std::unique_ptr<physical_web::MetadataList> |
+ PhysicalWebCollection::GetMetadataList() { |
DCHECK(!accessed_once_); |
accessed_once_ = true; |
return std::move(metadata_list_); |
} |
+std::unique_ptr<base::ListValue> |
+ PhysicalWebCollection::GetMetadataListValue() { |
+ DCHECK(!accessed_once_); |
+ accessed_once_ = true; |
+ return std::move(dictionary_value_list_); |
+} |
+ |
PhysicalWebDataSourceAndroid::PhysicalWebDataSourceAndroid() { |
Initialize(); |
} |
@@ -85,7 +106,8 @@ void PhysicalWebDataSourceAndroid::StopDiscovery() { |
NOTREACHED(); |
} |
-std::unique_ptr<base::ListValue> PhysicalWebDataSourceAndroid::GetMetadata() { |
+std::unique_ptr<physical_web::MetadataList> |
+ PhysicalWebDataSourceAndroid::GetMetadata() { |
JNIEnv* env = AttachCurrentThread(); |
auto pw_collection = base::MakeUnique<PhysicalWebCollection>(); |
@@ -95,6 +117,17 @@ std::unique_ptr<base::ListValue> PhysicalWebDataSourceAndroid::GetMetadata() { |
return pw_collection->GetMetadataList(); |
} |
+std::unique_ptr<base::ListValue> |
+ PhysicalWebDataSourceAndroid::GetMetadataListValue() { |
+ JNIEnv* env = AttachCurrentThread(); |
+ |
+ auto pw_collection = base::MakeUnique<PhysicalWebCollection>(); |
+ Java_UrlManager_getPwCollection(env, url_manager_.obj(), |
+ (long)pw_collection.get()); |
+ |
+ return pw_collection->GetMetadataListValue(); |
+} |
+ |
bool PhysicalWebDataSourceAndroid::HasUnresolvedDiscoveries() { |
NOTIMPLEMENTED(); |
return false; |