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

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/physicalweb/UrlManager.java

Issue 2669603003: Deduplicate Physical Web results with matching group IDs (Closed)
Patch Set: add another URL Created 3 years, 11 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
« no previous file with comments | « no previous file | chrome/android/javatests/src/org/chromium/chrome/browser/physicalweb/UrlManagerTest.java » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/android/java/src/org/chromium/chrome/browser/physicalweb/UrlManager.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/physicalweb/UrlManager.java b/chrome/android/java/src/org/chromium/chrome/browser/physicalweb/UrlManager.java
index 90c6cede5441c61ce0e5e08659322ec797ac99a8..618c97cc3f0297e7f2b2418d2ddcce5fb6799023 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/physicalweb/UrlManager.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/physicalweb/UrlManager.java
@@ -220,7 +220,10 @@ class UrlManager {
return distance1.compareTo(distance2);
}
});
- return urlInfos;
+
+ // Keep only the first UrlInfo with a given groupid. The list is already
+ // sorted by distance, so the first instance will be the closest.
+ return deduplicateByGroupId(urlInfos);
}
public UrlInfo getUrlInfoByUrl(String url) {
@@ -292,6 +295,28 @@ class UrlManager {
}
/**
+ * Given a list of UrlInfos, returns the list with only one UrlInfo for each unique group ID.
+ * When multiple UrlInfos have the same group ID, all but the first instance are discarded.
+ * @param urlInfos A list of UrlInfos, possibly containing duplicates.
+ * @return A list of deduplicated UrlInfos.
+ */
+ private List<UrlInfo> deduplicateByGroupId(List<UrlInfo> urlInfos) {
+ List<UrlInfo> deduplicatedUrlInfos = new ArrayList<>();
+ Set<String> groupIds = new HashSet<>();
+ for (UrlInfo urlInfo : urlInfos) {
+ PwsResult pwsResult = mPwsResultMap.get(urlInfo.getUrl());
+ if (pwsResult != null) {
+ if (pwsResult.groupId == null || groupIds.contains(pwsResult.groupId)) {
+ continue;
+ }
+ groupIds.add(pwsResult.groupId);
+ }
+ deduplicatedUrlInfos.add(urlInfo);
+ }
+ return deduplicatedUrlInfos;
+ }
+
+ /**
* Adds a URL that has been resolved by the PWS.
* @param pwsResult The meta data associated with the resolved URL.
*/
« no previous file with comments | « no previous file | chrome/android/javatests/src/org/chromium/chrome/browser/physicalweb/UrlManagerTest.java » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698