OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "base/memory/scoped_ptr.h" | 5 #include "base/memory/scoped_ptr.h" |
6 #include "content/browser/geolocation/arbitrator_dependency_factory.h" | 6 #include "content/browser/geolocation/arbitrator_dependency_factory.h" |
7 #include "content/browser/geolocation/fake_access_token_store.h" | 7 #include "content/browser/geolocation/fake_access_token_store.h" |
8 #include "content/browser/geolocation/geolocation_observer.h" | 8 #include "content/browser/geolocation/geolocation_observer.h" |
9 #include "content/browser/geolocation/location_arbitrator.h" | 9 #include "content/browser/geolocation/location_arbitrator.h" |
10 #include "content/browser/geolocation/location_provider.h" | 10 #include "content/browser/geolocation/location_provider.h" |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
63 SetPositionFix(provider, 51.0, -0.1, 400); | 63 SetPositionFix(provider, 51.0, -0.1, 400); |
64 } | 64 } |
65 | 65 |
66 class MockDependencyFactory : public GeolocationArbitratorDependencyFactory { | 66 class MockDependencyFactory : public GeolocationArbitratorDependencyFactory { |
67 public: | 67 public: |
68 explicit MockDependencyFactory(AccessTokenStore* access_token_store) | 68 explicit MockDependencyFactory(AccessTokenStore* access_token_store) |
69 : cell_(NULL), | 69 : cell_(NULL), |
70 gps_(NULL), | 70 gps_(NULL), |
71 access_token_store_(access_token_store) { | 71 access_token_store_(access_token_store) { |
72 } | 72 } |
| 73 |
73 virtual GeolocationArbitrator::GetTimeNow GetTimeFunction() { | 74 virtual GeolocationArbitrator::GetTimeNow GetTimeFunction() { |
74 return GetTimeNowForTest; | 75 return GetTimeNowForTest; |
75 } | 76 } |
| 77 |
76 virtual AccessTokenStore* NewAccessTokenStore() { | 78 virtual AccessTokenStore* NewAccessTokenStore() { |
77 return access_token_store_.get(); | 79 return access_token_store_.get(); |
78 } | 80 } |
| 81 |
79 virtual LocationProviderBase* NewNetworkLocationProvider( | 82 virtual LocationProviderBase* NewNetworkLocationProvider( |
80 AccessTokenStore* access_token_store, | 83 AccessTokenStore* access_token_store, |
81 net::URLRequestContextGetter* context, | 84 net::URLRequestContextGetter* context, |
82 const GURL& url, | 85 const GURL& url, |
83 const string16& access_token) { | 86 const string16& access_token) { |
84 return new MockLocationProvider(&cell_); | 87 return new MockLocationProvider(&cell_); |
85 } | 88 } |
| 89 |
86 virtual LocationProviderBase* NewSystemLocationProvider() { | 90 virtual LocationProviderBase* NewSystemLocationProvider() { |
87 return new MockLocationProvider(&gps_); | 91 return new MockLocationProvider(&gps_); |
88 } | 92 } |
89 | 93 |
90 // Two location providers, with nice short names to make the tests more | 94 // Two location providers, with nice short names to make the tests more |
91 // readable. Note |gps_| will only be set when there is a high accuracy | 95 // readable. Note |gps_| will only be set when there is a high accuracy |
92 // observer registered (and |cell_| when there's at least one observer of any | 96 // observer registered (and |cell_| when there's at least one observer of any |
93 // type). | 97 // type). |
94 MockLocationProvider* cell_; | 98 MockLocationProvider* cell_; |
95 MockLocationProvider* gps_; | 99 MockLocationProvider* gps_; |
96 | 100 |
97 scoped_refptr<AccessTokenStore> access_token_store_; | 101 scoped_refptr<AccessTokenStore> access_token_store_; |
| 102 |
| 103 private: |
| 104 virtual ~MockDependencyFactory() {} |
98 }; | 105 }; |
99 | 106 |
100 class GeolocationLocationArbitratorTest : public testing::Test { | 107 class GeolocationLocationArbitratorTest : public testing::Test { |
101 protected: | 108 protected: |
102 // testing::Test | 109 // testing::Test |
103 virtual void SetUp() { | 110 virtual void SetUp() { |
104 access_token_store_ = new NiceMock<FakeAccessTokenStore>; | 111 access_token_store_ = new NiceMock<FakeAccessTokenStore>; |
105 observer_.reset(new MockLocationObserver); | 112 observer_.reset(new MockLocationObserver); |
106 dependency_factory_ = new MockDependencyFactory(access_token_store_); | 113 dependency_factory_ = new MockDependencyFactory(access_token_store_); |
107 GeolocationArbitrator::SetDependencyFactoryForTest( | 114 GeolocationArbitrator::SetDependencyFactoryForTest( |
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
280 CheckLastPositionInfo(3.5657104, 139.690341, 300); | 287 CheckLastPositionInfo(3.5657104, 139.690341, 300); |
281 | 288 |
282 // 2 minutes later | 289 // 2 minutes later |
283 AdvanceTimeNow(base::TimeDelta::FromMinutes(2)); | 290 AdvanceTimeNow(base::TimeDelta::FromMinutes(2)); |
284 // Arrive in station. Cell moves but GPS is stale. Switch to fresher cell. | 291 // Arrive in station. Cell moves but GPS is stale. Switch to fresher cell. |
285 SetPositionFix(cell(), 3.5658700, 139.069979, 1000); | 292 SetPositionFix(cell(), 3.5658700, 139.069979, 1000); |
286 CheckLastPositionInfo(3.5658700, 139.069979, 1000); | 293 CheckLastPositionInfo(3.5658700, 139.069979, 1000); |
287 } | 294 } |
288 | 295 |
289 } // namespace | 296 } // namespace |
OLD | NEW |