| Index: chrome/browser/geolocation/core_location_data_provider_mac.mm | 
| diff --git a/chrome/browser/geolocation/core_location_data_provider_mac.mm b/chrome/browser/geolocation/core_location_data_provider_mac.mm | 
| index b20230e9ba8332e7d9759c593b8de8216d97a514..a88c6c41ab9ee556b3a2524ab72cb4309a36bb2b 100644 | 
| --- a/chrome/browser/geolocation/core_location_data_provider_mac.mm | 
| +++ b/chrome/browser/geolocation/core_location_data_provider_mac.mm | 
| @@ -11,6 +11,7 @@ | 
|  | 
| #include "chrome/browser/geolocation/core_location_data_provider_mac.h" | 
| #include "chrome/browser/geolocation/core_location_provider_mac.h" | 
| +#include "chrome/browser/geolocation/geolocation_provider.h" | 
| #include "base/logging.h" | 
| #include "base/time.h" | 
|  | 
| @@ -41,7 +42,7 @@ enum { | 
| - (void)stopUpdatingLocation; | 
| @end | 
|  | 
| -@interface CLLocation : NSObject <NSCopying, NSCoding> | 
| +@interface CLLocation : NSObject<NSCopying, NSCoding> | 
| @property(readonly) CLLocationCoordinate2D coordinate; | 
| @property(readonly) CLLocationDistance altitude; | 
| @property(readonly) CLLocationAccuracy horizontalAccuracy; | 
| @@ -64,9 +65,9 @@ enum { | 
| //       CLLocationManager.  The location manaager's start and stop updating | 
| //       methods must be called from a thread that has an active run loop (which | 
| //       seems to only be the UI thread) | 
| -@interface CoreLocationWrapperMac : NSObject <CLLocationManagerDelegate> | 
| +@interface CoreLocationWrapperMac : NSObject<CLLocationManagerDelegate> | 
| { | 
| -@private | 
| + @private | 
| NSBundle* bundle_; | 
| Class locationManagerClass_; | 
| id locationManager_; | 
| @@ -119,8 +120,8 @@ enum { | 
| } | 
|  | 
| - (void)startLocation { | 
| -  if([self locationDataAvailable]) { | 
| -    if(!locationManager_) { | 
| +  if ([self locationDataAvailable]) { | 
| +    if (!locationManager_) { | 
| locationManager_ = [[locationManagerClass_ alloc] init]; | 
| [locationManager_ setDelegate:self]; | 
| } | 
| @@ -151,7 +152,7 @@ enum { | 
| - (void)locationManager:(CLLocationManager*)manager | 
| didFailWithError:(NSError*)error { | 
| Geoposition position; | 
| -  switch([error code]) { | 
| +  switch ([error code]) { | 
| case kCLErrorLocationUnknown: | 
| position.error_code = Geoposition::ERROR_CODE_POSITION_UNAVAILABLE; | 
| break; | 
| @@ -166,10 +167,10 @@ enum { | 
| } | 
|  | 
| - (BOOL)loadCoreLocationBundle { | 
| -  if(!bundle_) { | 
| +  if (!bundle_) { | 
| bundle_ = [[NSBundle alloc] | 
| initWithPath:@"/System/Library/Frameworks/CoreLocation.framework"]; | 
| -    if(!bundle_) { | 
| +    if (!bundle_) { | 
| DLOG(WARNING) << "Couldn't load CoreLocation Framework"; | 
| return NO; | 
| } | 
| @@ -183,9 +184,11 @@ enum { | 
| @end | 
|  | 
| CoreLocationDataProviderMac::CoreLocationDataProviderMac() { | 
| -  if(!BrowserThread::GetCurrentThreadIdentifier(&origin_thread_id_)) | 
| -    NOTREACHED() << | 
| -         "CoreLocation data provider must be created in a valid BrowserThread."; | 
| +  if (MessageLoop::current() != | 
| +      GeolocationProvider::GetInstance()->message_loop()) { | 
| +    NOTREACHED() << "CoreLocation data provider must be created on " | 
| +        "the Geolocation thread."; | 
| +  } | 
| provider_ = NULL; | 
| wrapper_.reset([[CoreLocationWrapperMac alloc] initWithDataProvider:this]); | 
| } | 
| @@ -200,7 +203,7 @@ bool CoreLocationDataProviderMac:: | 
| StartUpdating(CoreLocationProviderMac* provider) { | 
| DCHECK(provider); | 
| DCHECK(!provider_) << "StartUpdating called twice"; | 
| -  if(![wrapper_ locationDataAvailable]) return false; | 
| +  if (![wrapper_ locationDataAvailable]) return false; | 
| provider_ = provider; | 
| BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, | 
| NewRunnableMethod(this, &CoreLocationDataProviderMac::StartUpdatingTask)); | 
| @@ -216,7 +219,7 @@ void CoreLocationDataProviderMac::StopUpdating() { | 
| } | 
|  | 
| void CoreLocationDataProviderMac::UpdatePosition(Geoposition *position) { | 
| -  BrowserThread::PostTask(origin_thread_id_, FROM_HERE, | 
| +  GeolocationProvider::GetInstance()->message_loop()->PostTask(FROM_HERE, | 
| NewRunnableMethod(this, | 
| &CoreLocationDataProviderMac::PositionUpdated, | 
| *position)); | 
| @@ -235,7 +238,8 @@ void CoreLocationDataProviderMac::StopUpdatingTask() { | 
| } | 
|  | 
| void CoreLocationDataProviderMac::PositionUpdated(Geoposition position) { | 
| -  DCHECK(BrowserThread::CurrentlyOn(origin_thread_id_)); | 
| -  if(provider_) | 
| +  DCHECK(MessageLoop::current() == | 
| +         GeolocationProvider::GetInstance()->message_loop()); | 
| +  if (provider_) | 
| provider_->SetPosition(&position); | 
| } | 
|  |