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

Unified Diff: content/browser/geolocation/wifi_data.cc

Issue 2188933002: Revert of Reland: Geolocation: move from content/browser to device/ (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 5 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 | « content/browser/geolocation/wifi_data.h ('k') | content/browser/geolocation/wifi_data_provider.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/browser/geolocation/wifi_data.cc
diff --git a/content/browser/geolocation/wifi_data.cc b/content/browser/geolocation/wifi_data.cc
new file mode 100644
index 0000000000000000000000000000000000000000..d82e6f442f0334ac3db46680335e216416423f70
--- /dev/null
+++ b/content/browser/geolocation/wifi_data.cc
@@ -0,0 +1,57 @@
+// Copyright 2013 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "content/browser/geolocation/wifi_data.h"
+
+#include <stddef.h>
+#include <stdint.h>
+
+#include <algorithm>
+#include <limits>
+
+#include "base/logging.h"
+
+namespace content {
+
+AccessPointData::AccessPointData()
+ : radio_signal_strength(std::numeric_limits<int32_t>::min()),
+ channel(std::numeric_limits<int32_t>::min()),
+ signal_to_noise(std::numeric_limits<int32_t>::min()) {}
+
+AccessPointData::~AccessPointData() {}
+
+WifiData::WifiData() {}
+
+WifiData::WifiData(const WifiData& other) = default;
+
+WifiData::~WifiData() {}
+
+bool WifiData::DiffersSignificantly(const WifiData& other) const {
+ // More than 4 or 50% of access points added or removed is significant.
+ static const size_t kMinChangedAccessPoints = 4;
+ const size_t min_ap_count =
+ std::min(access_point_data.size(), other.access_point_data.size());
+ const size_t max_ap_count =
+ std::max(access_point_data.size(), other.access_point_data.size());
+ const size_t difference_threadhold = std::min(kMinChangedAccessPoints,
+ min_ap_count / 2);
+ if (max_ap_count > min_ap_count + difference_threadhold)
+ return true;
+ // Compute size of intersection of old and new sets.
+ size_t num_common = 0;
+ for (AccessPointDataSet::const_iterator iter = access_point_data.begin();
+ iter != access_point_data.end();
+ iter++) {
+ if (other.access_point_data.find(*iter) !=
+ other.access_point_data.end()) {
+ ++num_common;
+ }
+ }
+ DCHECK(num_common <= min_ap_count);
+
+ // Test how many have changed.
+ return max_ap_count > num_common + difference_threadhold;
+}
+
+} // namespace content
« no previous file with comments | « content/browser/geolocation/wifi_data.h ('k') | content/browser/geolocation/wifi_data_provider.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698