| // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "content/browser/device_orientation/provider.h" |
| |
| #include "base/logging.h" |
| #include "content/browser/device_orientation/data_fetcher.h" |
| #include "content/browser/device_orientation/provider_impl.h" |
| #include "content/public/browser/browser_thread.h" |
| |
| #if defined(OS_MACOSX) |
| #include "content/browser/device_orientation/accelerometer_mac.h" |
| #elif defined(OS_ANDROID) |
| #include "content/browser/device_orientation/data_fetcher_orientation_android.h" |
| #elif defined(OS_WIN) |
| #include "content/browser/device_orientation/data_fetcher_impl_win.h" |
| #endif |
| |
| namespace content { |
| |
| Provider* Provider::GetInstance() { |
| if (!instance_) { |
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
| ProviderImpl::DataFetcherFactory default_factory = NULL; |
| |
| #if defined(OS_MACOSX) |
| default_factory = AccelerometerMac::Create; |
| #elif defined(OS_ANDROID) |
| default_factory = DataFetcherOrientationAndroid::Create; |
| #elif defined(OS_WIN) |
| default_factory = DataFetcherImplWin::Create; |
| #endif |
| |
| instance_ = new ProviderImpl(default_factory); |
| } |
| return instance_; |
| } |
| |
| void Provider::SetInstanceForTests(Provider* provider) { |
| DCHECK(!instance_); |
| instance_ = provider; |
| } |
| |
| Provider* Provider::GetInstanceForTests() { |
| return instance_; |
| } |
| |
| Provider::Provider() { |
| } |
| |
| Provider::~Provider() { |
| DCHECK(instance_ == this); |
| instance_ = NULL; |
| } |
| |
| Provider* Provider::instance_ = NULL; |
| |
| } // namespace content |