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

Side by Side Diff: chrome/browser/geolocation/core_location_provider_mac.mm

Issue 6037016: Fix incorrect assertion following the move of Geolocation provider in to its own thread. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 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 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/geolocation/core_location_provider_mac.h" 5 #include "chrome/browser/geolocation/core_location_provider_mac.h"
6 #include "chrome/browser/geolocation/core_location_data_provider_mac.h" 6 #include "chrome/browser/geolocation/core_location_data_provider_mac.h"
7 7
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "chrome/common/chrome_switches.h" 10 #include "chrome/common/chrome_switches.h"
11 11
12 CoreLocationProviderMac::CoreLocationProviderMac() { 12 CoreLocationProviderMac::CoreLocationProviderMac()
13 : is_updating_(false) {
13 data_provider_ = new CoreLocationDataProviderMac(); 14 data_provider_ = new CoreLocationDataProviderMac();
14 data_provider_->AddRef(); 15 data_provider_->AddRef();
15 } 16 }
16 17
17 CoreLocationProviderMac::~CoreLocationProviderMac() { 18 CoreLocationProviderMac::~CoreLocationProviderMac() {
18 data_provider_->StopUpdating(); 19 data_provider_->StopUpdating();
19 data_provider_->Release(); 20 data_provider_->Release();
20 } 21 }
21 22
22 bool CoreLocationProviderMac::StartProvider(bool high_accuracy) { 23 bool CoreLocationProviderMac::StartProvider(bool high_accuracy) {
23 data_provider_->StartUpdating(this); 24 // StartProvider maybe called multiple times (e.g. to update the high_accuracy hint)
bulach 2011/01/06 12:44:59 >80cols
25 // TODO(jknotten): Support high_accuracy hint in underlying data provider.
26 if (is_updating_)
27 return true;
28
29 is_updating_ = data_provider_->StartUpdating(this);
24 return true; 30 return true;
25 } 31 }
26 32
27 void CoreLocationProviderMac::StopProvider() { 33 void CoreLocationProviderMac::StopProvider() {
28 data_provider_->StopUpdating(); 34 data_provider_->StopUpdating();
35 is_updating_ = false;
29 } 36 }
30 37
31 void CoreLocationProviderMac::GetPosition(Geoposition* position) { 38 void CoreLocationProviderMac::GetPosition(Geoposition* position) {
32 DCHECK(position); 39 DCHECK(position);
33 *position = position_; 40 *position = position_;
34 DCHECK(position->IsInitialized()); 41 DCHECK(position->IsInitialized());
35 } 42 }
36 43
37 void CoreLocationProviderMac::SetPosition(Geoposition* position) { 44 void CoreLocationProviderMac::SetPosition(Geoposition* position) {
38 DCHECK(position); 45 DCHECK(position);
39 position_ = *position; 46 position_ = *position;
40 DCHECK(position->IsInitialized()); 47 DCHECK(position->IsInitialized());
41 48
42 UpdateListeners(); 49 UpdateListeners();
43 } 50 }
44 51
45 LocationProviderBase* NewSystemLocationProvider() { 52 LocationProviderBase* NewSystemLocationProvider() {
46 if(CommandLine::ForCurrentProcess() 53 if (CommandLine::ForCurrentProcess()
bulach 2011/01/06 12:44:59 I think a more natural break would be: if (Command
47 ->HasSwitch(switches::kExperimentalLocationFeatures)) { 54 ->HasSwitch(switches::kExperimentalLocationFeatures)) {
48 return new CoreLocationProviderMac; 55 return new CoreLocationProviderMac;
49 } 56 }
50 return NULL; 57 return NULL;
51 } 58 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698