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 3 // found in the LICENSE file. 4 5 #include "content/browser/device_orientation/provider.h" 6 7 #include "base/logging.h" 8 #include "content/browser/device_orientation/data_fetcher.h" 9 #include "content/browser/device_orientation/provider_impl.h" 10 #include "content/public/browser/browser_thread.h" 11 12 #if defined(OS_MACOSX) 13 #include "content/browser/device_orientation/accelerometer_mac.h" 14 #elif defined(OS_ANDROID) 15 #include "content/browser/device_orientation/data_fetcher_orientation_android.h" 16 #elif defined(OS_WIN) 17 #include "content/browser/device_orientation/data_fetcher_impl_win.h" 18 #endif 19 20 namespace content { 21 22 Provider* Provider::GetInstance() { 23 if (!instance_) { 24 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 25 ProviderImpl::DataFetcherFactory default_factory = NULL; 26 27 #if defined(OS_MACOSX) 28 default_factory = AccelerometerMac::Create; 29 #elif defined(OS_ANDROID) 30 default_factory = DataFetcherOrientationAndroid::Create; 31 #elif defined(OS_WIN) 32 default_factory = DataFetcherImplWin::Create; 33 #endif 34 35 instance_ = new ProviderImpl(default_factory); 36 } 37 return instance_; 38 } 39 40 void Provider::SetInstanceForTests(Provider* provider) { 41 DCHECK(!instance_); 42 instance_ = provider; 43 } 44 45 Provider* Provider::GetInstanceForTests() { 46 return instance_; 47 } 48 49 Provider::Provider() { 50 } 51 52 Provider::~Provider() { 53 DCHECK(instance_ == this); 54 instance_ = NULL; 55 } 56 57 Provider* Provider::instance_ = NULL; 58 59 } // namespace content 60