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

Side by Side Diff: chrome/browser/android/physical_web/physical_web_data_source_android.cc

Issue 2561493002: Pass Physical Web metadata through a struct (Closed)
Patch Set: Add required/optional comments Created 4 years 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 unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/android/physical_web/physical_web_data_source_android.h " 5 #include "chrome/browser/android/physical_web/physical_web_data_source_android.h "
6 6
7 #include <jni.h> 7 #include <jni.h>
8 8
9 #include "base/android/jni_android.h" 9 #include "base/android/jni_android.h"
10 #include "base/android/jni_string.h" 10 #include "base/android/jni_string.h"
11 #include "base/memory/ptr_util.h" 11 #include "base/memory/ptr_util.h"
12 #include "base/values.h" 12 #include "base/values.h"
13 #include "chrome/browser/browser_process.h" 13 #include "chrome/browser/browser_process.h"
14 #include "jni/UrlManager_jni.h" 14 #include "jni/UrlManager_jni.h"
15 15
16 using base::android::AttachCurrentThread; 16 using base::android::AttachCurrentThread;
17 using base::android::ConvertJavaStringToUTF8; 17 using base::android::ConvertJavaStringToUTF8;
18 using base::android::JavaParamRef; 18 using base::android::JavaParamRef;
19 using base::android::ScopedJavaLocalRef; 19 using base::android::ScopedJavaLocalRef;
20 20
21 PhysicalWebCollection::PhysicalWebCollection() 21 PhysicalWebCollection::PhysicalWebCollection()
22 : metadata_list_(base::MakeUnique<base::ListValue>()), 22 : dictionary_value_list_(base::MakeUnique<base::ListValue>()),
23 metadata_list_(base::MakeUnique<physical_web::MetadataList>()),
23 accessed_once_(false) {} 24 accessed_once_(false) {}
24 25
25 PhysicalWebCollection::~PhysicalWebCollection() {} 26 PhysicalWebCollection::~PhysicalWebCollection() {}
26 27
27 void PhysicalWebCollection::AppendMetadataItem( 28 void PhysicalWebCollection::AppendMetadataItem(
28 JNIEnv* env, 29 JNIEnv* env,
29 const JavaParamRef<jobject>& obj, 30 const JavaParamRef<jobject>& obj,
30 const JavaParamRef<jstring>& j_request_url, 31 const JavaParamRef<jstring>& j_request_url,
31 jdouble distance_estimate, 32 jdouble distance_estimate,
32 jint scan_timestamp, 33 jlong scan_timestamp,
33 const JavaParamRef<jstring>& j_site_url, 34 const JavaParamRef<jstring>& j_site_url,
34 const JavaParamRef<jstring>& j_icon_url, 35 const JavaParamRef<jstring>& j_icon_url,
35 const JavaParamRef<jstring>& j_title, 36 const JavaParamRef<jstring>& j_title,
36 const JavaParamRef<jstring>& j_description, 37 const JavaParamRef<jstring>& j_description,
37 const JavaParamRef<jstring>& j_group_id) { 38 const JavaParamRef<jstring>& j_group_id) {
38 auto metadata_item = new base::DictionaryValue(); 39 // Create a DictionaryValue. Notice that we no longer set the timestamp
39 metadata_item->SetString(physical_web::kScannedUrlKey, 40 // since it is a long and the DictionaryValue can only store ints.
41 auto dictionary_value = base::MakeUnique<base::DictionaryValue>();
42 dictionary_value->SetString(physical_web::kScannedUrlKey,
40 ConvertJavaStringToUTF8(j_request_url)); 43 ConvertJavaStringToUTF8(j_request_url));
41 metadata_item->SetDouble(physical_web::kDistanceEstimateKey, 44 dictionary_value->SetDouble(physical_web::kDistanceEstimateKey,
42 distance_estimate); 45 distance_estimate);
43 metadata_item->SetInteger(physical_web::kScanTimestampKey, scan_timestamp); 46 dictionary_value->SetString(physical_web::kResolvedUrlKey,
44 metadata_item->SetString(physical_web::kResolvedUrlKey,
45 ConvertJavaStringToUTF8(j_site_url)); 47 ConvertJavaStringToUTF8(j_site_url));
46 metadata_item->SetString(physical_web::kIconUrlKey, 48 dictionary_value->SetString(physical_web::kIconUrlKey,
47 ConvertJavaStringToUTF8(j_icon_url)); 49 ConvertJavaStringToUTF8(j_icon_url));
48 metadata_item->SetString(physical_web::kTitleKey, 50 dictionary_value->SetString(physical_web::kTitleKey,
49 ConvertJavaStringToUTF8(j_title)); 51 ConvertJavaStringToUTF8(j_title));
50 metadata_item->SetString(physical_web::kDescriptionKey, 52 dictionary_value->SetString(physical_web::kDescriptionKey,
51 ConvertJavaStringToUTF8(j_description)); 53 ConvertJavaStringToUTF8(j_description));
52 metadata_item->SetString(physical_web::kGroupIdKey, 54 dictionary_value->SetString(physical_web::kGroupIdKey,
53 ConvertJavaStringToUTF8(j_group_id)); 55 ConvertJavaStringToUTF8(j_group_id));
54 metadata_list_->Append(std::move(metadata_item)); 56 dictionary_value_list_->Append(std::move(dictionary_value));
57
58 physical_web::Metadata metadata;
59 metadata.scanned_url = ConvertJavaStringToUTF8(j_request_url);
60 metadata.resolved_url = ConvertJavaStringToUTF8(j_site_url);
61 metadata.icon_url = ConvertJavaStringToUTF8(j_icon_url);
62 metadata.title = ConvertJavaStringToUTF8(j_title);
63 metadata.description = ConvertJavaStringToUTF8(j_description);
64 metadata.group_id = ConvertJavaStringToUTF8(j_group_id);
65 metadata.distance_estimate = distance_estimate;
66 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.
67 metadata_list_->push_back(std::move(metadata_item));
55 } 68 }
56 69
57 std::unique_ptr<base::ListValue> PhysicalWebCollection::GetMetadataList() { 70 std::unique_ptr<physical_web::MetadataList>
71 PhysicalWebCollection::GetMetadataList() {
58 DCHECK(!accessed_once_); 72 DCHECK(!accessed_once_);
59 accessed_once_ = true; 73 accessed_once_ = true;
60 return std::move(metadata_list_); 74 return std::move(metadata_list_);
61 } 75 }
62 76
77 std::unique_ptr<base::ListValue>
78 PhysicalWebCollection::GetMetadataListValue() {
79 DCHECK(!accessed_once_);
80 accessed_once_ = true;
81 return std::move(dictionary_value_list_);
82 }
83
63 PhysicalWebDataSourceAndroid::PhysicalWebDataSourceAndroid() { 84 PhysicalWebDataSourceAndroid::PhysicalWebDataSourceAndroid() {
64 Initialize(); 85 Initialize();
65 } 86 }
66 87
67 PhysicalWebDataSourceAndroid::~PhysicalWebDataSourceAndroid() {} 88 PhysicalWebDataSourceAndroid::~PhysicalWebDataSourceAndroid() {}
68 89
69 void PhysicalWebDataSourceAndroid::Initialize() { 90 void PhysicalWebDataSourceAndroid::Initialize() {
70 JNIEnv* env = AttachCurrentThread(); 91 JNIEnv* env = AttachCurrentThread();
71 92
72 // Cache a reference to the singleton instance of UrlManager. 93 // Cache a reference to the singleton instance of UrlManager.
73 url_manager_.Reset(Java_UrlManager_getInstance(env)); 94 url_manager_.Reset(Java_UrlManager_getInstance(env));
74 DCHECK(url_manager_.obj()); 95 DCHECK(url_manager_.obj());
75 } 96 }
76 97
77 void PhysicalWebDataSourceAndroid::StartDiscovery( 98 void PhysicalWebDataSourceAndroid::StartDiscovery(
78 bool network_request_enabled) { 99 bool network_request_enabled) {
79 // On Android, scanning is started and stopped through the Java layer. 100 // On Android, scanning is started and stopped through the Java layer.
80 NOTREACHED(); 101 NOTREACHED();
81 } 102 }
82 103
83 void PhysicalWebDataSourceAndroid::StopDiscovery() { 104 void PhysicalWebDataSourceAndroid::StopDiscovery() {
84 // On Android, scanning is started and stopped through the Java layer. 105 // On Android, scanning is started and stopped through the Java layer.
85 NOTREACHED(); 106 NOTREACHED();
86 } 107 }
87 108
88 std::unique_ptr<base::ListValue> PhysicalWebDataSourceAndroid::GetMetadata() { 109 std::unique_ptr<physical_web::MetadataList>
110 PhysicalWebDataSourceAndroid::GetMetadata() {
89 JNIEnv* env = AttachCurrentThread(); 111 JNIEnv* env = AttachCurrentThread();
90 112
91 auto pw_collection = base::MakeUnique<PhysicalWebCollection>(); 113 auto pw_collection = base::MakeUnique<PhysicalWebCollection>();
92 Java_UrlManager_getPwCollection(env, url_manager_.obj(), 114 Java_UrlManager_getPwCollection(env, url_manager_.obj(),
93 (long)pw_collection.get()); 115 (long)pw_collection.get());
94 116
95 return pw_collection->GetMetadataList(); 117 return pw_collection->GetMetadataList();
96 } 118 }
97 119
120 std::unique_ptr<base::ListValue>
121 PhysicalWebDataSourceAndroid::GetMetadataListValue() {
122 JNIEnv* env = AttachCurrentThread();
123
124 auto pw_collection = base::MakeUnique<PhysicalWebCollection>();
125 Java_UrlManager_getPwCollection(env, url_manager_.obj(),
126 (long)pw_collection.get());
127
128 return pw_collection->GetMetadataListValue();
129 }
130
98 bool PhysicalWebDataSourceAndroid::HasUnresolvedDiscoveries() { 131 bool PhysicalWebDataSourceAndroid::HasUnresolvedDiscoveries() {
99 NOTIMPLEMENTED(); 132 NOTIMPLEMENTED();
100 return false; 133 return false;
101 } 134 }
102 135
103 void PhysicalWebDataSourceAndroid::OnFound( 136 void PhysicalWebDataSourceAndroid::OnFound(
104 JNIEnv* env, 137 JNIEnv* env,
105 const base::android::JavaParamRef<jobject>& obj, 138 const base::android::JavaParamRef<jobject>& obj,
106 const base::android::JavaParamRef<jstring>& j_url) { 139 const base::android::JavaParamRef<jstring>& j_url) {
107 std::string url = ConvertJavaStringToUTF8(env, j_url); 140 std::string url = ConvertJavaStringToUTF8(env, j_url);
(...skipping 20 matching lines...) Expand all
128 // static 161 // static
129 bool PhysicalWebDataSourceAndroid::RegisterPhysicalWebDataSource(JNIEnv* env) { 162 bool PhysicalWebDataSourceAndroid::RegisterPhysicalWebDataSource(JNIEnv* env) {
130 return RegisterNativesImpl(env); 163 return RegisterNativesImpl(env);
131 } 164 }
132 165
133 static jlong Init(JNIEnv* env, const JavaParamRef<jobject>& obj) { 166 static jlong Init(JNIEnv* env, const JavaParamRef<jobject>& obj) {
134 physical_web::PhysicalWebDataSource* data_source = 167 physical_web::PhysicalWebDataSource* data_source =
135 g_browser_process->GetPhysicalWebDataSource(); 168 g_browser_process->GetPhysicalWebDataSource();
136 return reinterpret_cast<intptr_t>(data_source); 169 return reinterpret_cast<intptr_t>(data_source);
137 } 170 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698