| 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 9e86f43a6cfe9c3d40ca2e22e7bec89e3b7159aa..315818424ae75f4c339e8442723e7684d2e6cab9 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,56 @@ 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 = GURL(ConvertJavaStringToUTF8(j_request_url));
|
| + metadata.resolved_url = GURL(ConvertJavaStringToUTF8(j_site_url));
|
| + metadata.icon_url = GURL(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 = base::Time::FromJavaTime(scan_timestamp);
|
| + metadata_list_->push_back(std::move(metadata));
|
| }
|
|
|
| -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::GetMetadata() {
|
| + DCHECK(!accessed_once_);
|
| + accessed_once_ = true;
|
| + return std::move(dictionary_value_list_);
|
| +}
|
| +
|
| PhysicalWebDataSourceAndroid::PhysicalWebDataSourceAndroid() {
|
| Initialize();
|
| }
|
| @@ -85,16 +105,28 @@ void PhysicalWebDataSourceAndroid::StopDiscovery() {
|
| NOTREACHED();
|
| }
|
|
|
| -std::unique_ptr<base::ListValue> PhysicalWebDataSourceAndroid::GetMetadata() {
|
| +std::unique_ptr<physical_web::MetadataList>
|
| + PhysicalWebDataSourceAndroid::GetMetadataList() {
|
| JNIEnv* env = AttachCurrentThread();
|
|
|
| auto pw_collection = base::MakeUnique<PhysicalWebCollection>();
|
| Java_UrlManager_getPwCollection(env, url_manager_.obj(),
|
| - (long)pw_collection.get());
|
| + reinterpret_cast<long>(pw_collection.get()));
|
|
|
| return pw_collection->GetMetadataList();
|
| }
|
|
|
| +std::unique_ptr<base::ListValue>
|
| + PhysicalWebDataSourceAndroid::GetMetadata() {
|
| + JNIEnv* env = AttachCurrentThread();
|
| +
|
| + auto pw_collection = base::MakeUnique<PhysicalWebCollection>();
|
| + Java_UrlManager_getPwCollection(env, url_manager_.obj(),
|
| + reinterpret_cast<long>(pw_collection.get()));
|
| +
|
| + return pw_collection->GetMetadata();
|
| +}
|
| +
|
| bool PhysicalWebDataSourceAndroid::HasUnresolvedDiscoveries() {
|
| NOTIMPLEMENTED();
|
| return false;
|
|
|