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

Side by Side Diff: content/browser/geolocation/device_data_provider.cc

Issue 6597044: Revert 76228 - Move core pieces of geolocation from chrome to content.This is... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 9 years, 9 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "content/browser/geolocation/device_data_provider.h"
6
7 namespace {
8
9 bool CellDataMatches(const CellData &data1, const CellData &data2) {
10 return data1.Matches(data2);
11 }
12
13 } // namespace
14
15 CellData::CellData()
16 : cell_id(kint32min),
17 location_area_code(kint32min),
18 mobile_network_code(kint32min),
19 mobile_country_code(kint32min),
20 radio_signal_strength(kint32min),
21 timing_advance(kint32min) {
22 }
23
24 RadioData::RadioData()
25 : home_mobile_network_code(kint32min),
26 home_mobile_country_code(kint32min),
27 radio_type(RADIO_TYPE_UNKNOWN) {
28 }
29
30 RadioData::~RadioData() {}
31
32 bool RadioData::Matches(const RadioData &other) const {
33 if (cell_data.size() != other.cell_data.size()) {
34 return false;
35 }
36 if (!std::equal(cell_data.begin(), cell_data.end(), other.cell_data.begin(),
37 CellDataMatches)) {
38 return false;
39 }
40 return device_id == other.device_id &&
41 home_mobile_network_code == other.home_mobile_network_code &&
42 home_mobile_country_code == other.home_mobile_country_code &&
43 radio_type == other.radio_type &&
44 carrier == other.carrier;
45 }
46
47 AccessPointData::AccessPointData()
48 : radio_signal_strength(kint32min),
49 channel(kint32min),
50 signal_to_noise(kint32min) {
51 }
52
53 AccessPointData::~AccessPointData() {}
54
55 WifiData::WifiData() {}
56
57 WifiData::~WifiData() {}
58
59 bool WifiData::DiffersSignificantly(const WifiData& other) const {
60 // More than 4 or 50% of access points added or removed is significant.
61 static const size_t kMinChangedAccessPoints = 4;
62 const size_t min_ap_count =
63 std::min(access_point_data.size(), other.access_point_data.size());
64 const size_t max_ap_count =
65 std::max(access_point_data.size(), other.access_point_data.size());
66 const size_t difference_threadhold = std::min(kMinChangedAccessPoints,
67 min_ap_count / 2);
68 if (max_ap_count > min_ap_count + difference_threadhold)
69 return true;
70 // Compute size of interesction of old and new sets.
71 size_t num_common = 0;
72 for (AccessPointDataSet::const_iterator iter = access_point_data.begin();
73 iter != access_point_data.end();
74 iter++) {
75 if (other.access_point_data.find(*iter) !=
76 other.access_point_data.end()) {
77 ++num_common;
78 }
79 }
80 DCHECK(num_common <= min_ap_count);
81
82 // Test how many have changed.
83 return max_ap_count > num_common + difference_threadhold;
84 }
85
86 GatewayData::GatewayData() {}
87
88 GatewayData::~GatewayData() {}
89
90 bool GatewayData::DiffersSignificantly(const GatewayData& other) const {
91 // Any change is significant.
92 if (this->router_data.size() != other.router_data.size())
93 return true;
94 RouterDataSet::const_iterator iter1 = router_data.begin();
95 RouterDataSet::const_iterator iter2 = other.router_data.begin();
96 while (iter1 != router_data.end()) {
97 if (iter1->mac_address != iter2->mac_address) {
98 // There is a difference between the sets of routers.
99 return true;
100 }
101 ++iter1;
102 ++iter2;
103 }
104 return false;
105 }
OLDNEW
« no previous file with comments | « content/browser/geolocation/device_data_provider.h ('k') | content/browser/geolocation/device_data_provider_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698