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

Unified Diff: content/browser/device_orientation/provider_impl.cc

Issue 18572014: Implement Android shared memory data fetcher for Device Motion. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@renderer-sync-12June-tryASYNC-2-bis-tryRebase-6
Patch Set: fixed comments, added proper singleton implementation and shutdown. Created 7 years, 5 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 side-by-side diff with in-line comments
Download patch
Index: content/browser/device_orientation/provider_impl.cc
diff --git a/content/browser/device_orientation/provider_impl.cc b/content/browser/device_orientation/provider_impl.cc
index 25e9bfd968769567b7a1d51b61e30e41634c15a9..b57819993d3eb352c7466c0e281fd66fc880b3ee 100644
--- a/content/browser/device_orientation/provider_impl.cc
+++ b/content/browser/device_orientation/provider_impl.cc
@@ -13,6 +13,12 @@
#include "base/threading/thread.h"
#include "base/threading/worker_pool.h"
+#if defined(OS_ANDROID)
+#include "content/browser/device_orientation/data_fetcher_impl_android.h"
+#elif defined(OS_WIN)
+#include "content/browser/device_orientation/data_fetcher_impl_win.h"
+#endif
+
namespace {
void DeleteThread(base::Thread* thread) {
@@ -54,7 +60,8 @@ class ProviderImpl::PollingThread : public base::Thread {
// Typically the I/O loop, but may be something else during testing.
base::MessageLoop* creator_loop_;
- scoped_ptr<DataFetcher> data_fetcher_;
+ DataFetcher* data_fetcher_;
+
std::map<DeviceData::Type, scoped_refptr<const DeviceData> >
last_device_data_map_;
std::set<DeviceData::Type> polling_data_types_;
@@ -68,6 +75,12 @@ ProviderImpl::PollingThread::PollingThread(const char* name,
: base::Thread(name), creator_loop_(creator_loop), provider_(provider) {}
ProviderImpl::PollingThread::~PollingThread() {
+#if defined(OS_ANDROID)
bulach 2013/07/10 16:59:41 // TODO(timvolodine): Remove this platform depende
timvolodine 2013/07/11 14:31:34 N/A anymore. Done.
+ static_cast<DataFetcherImplAndroid*>(data_fetcher_)->Stop(
+ DeviceData::kTypeOrientation);
+#elif defined(OS_WIN)
+ static_cast<DataFetcherImplWin*>(data_fetcher_)->Stop();
+#endif
Stop();
}
@@ -85,13 +98,13 @@ void ProviderImpl::PollingThread::Initialize(DataFetcherFactory factory,
// Try to use factory to create a fetcher that can provide this type of
// data. If factory creates a fetcher that provides this type of data,
// start polling.
- scoped_ptr<DataFetcher> fetcher(factory());
+ DataFetcher* fetcher = factory();
bulach 2013/07/10 16:59:41 hmm... factory() normally means it'll create an ob
timvolodine 2013/07/11 14:31:34 Sure. I've refactored the code and added a new cla
if (fetcher) {
scoped_refptr<const DeviceData> device_data(fetcher->GetDeviceData(type));
if (device_data.get() != NULL) {
// Pass ownership of fetcher to provider_.
bulach 2013/07/10 16:59:41 remove comment?
timvolodine 2013/07/11 14:31:34 N/A anymore. Done.
- data_fetcher_.swap(fetcher);
+ data_fetcher_ = fetcher;
last_device_data_map_[type] = device_data;
// Notify observers.
@@ -158,7 +171,7 @@ void ProviderImpl::PollingThread::ScheduleDoPoll() {
base::TimeDelta ProviderImpl::PollingThread::SamplingInterval() const {
DCHECK(base::MessageLoop::current() == message_loop());
- DCHECK(data_fetcher_.get());
+ DCHECK(data_fetcher_);
// TODO(erg): There used to be unused code here, that called a default
// implementation on the DataFetcherInterface that was never defined. I'm

Powered by Google App Engine
This is Rietveld 408576698