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