Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(81)

Unified Diff: chrome/browser/android/physical_web/physical_web_data_source_android.cc

Issue 2403423005: Expose Physical Web metadata to native clients over JNI (Closed)
Patch Set: don't hard-code class paths Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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() {

Powered by Google App Engine
This is Rietveld 408576698