10529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch// Copyright 2014 The Chromium Authors. All rights reserved.
27dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// Use of this source code is governed by a BSD-style license that can be
37dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// found in the LICENSE file.
47dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
50529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#include "content/browser/device_sensors/data_fetcher_shared_memory.h"
67dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
77dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "base/logging.h"
80529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#include "content/browser/device_sensors/sensor_manager_android.h"
90529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#include "content/common/device_sensors/device_motion_hardware_buffer.h"
100529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#include "content/common/device_sensors/device_orientation_hardware_buffer.h"
117dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
127dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochnamespace content {
137dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
143551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)DataFetcherSharedMemory::DataFetcherSharedMemory() {
157dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch}
167dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
173551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)DataFetcherSharedMemory::~DataFetcherSharedMemory() {
187dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch}
197dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
2058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)bool DataFetcherSharedMemory::Start(ConsumerType consumer_type, void* buffer) {
2158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  DCHECK(buffer);
2258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
233551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  switch (consumer_type) {
243551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)    case CONSUMER_TYPE_MOTION:
255d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      return SensorManagerAndroid::GetInstance()->
2658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)          StartFetchingDeviceMotionData(
2758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)              static_cast<DeviceMotionHardwareBuffer*>(buffer));
283551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)    case CONSUMER_TYPE_ORIENTATION:
295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      return SensorManagerAndroid::GetInstance()->
3058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)          StartFetchingDeviceOrientationData(
3158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)              static_cast<DeviceOrientationHardwareBuffer*>(buffer));
323551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)    default:
333551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)      NOTREACHED();
343551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  }
357dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  return false;
367dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch}
377dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
383551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)bool DataFetcherSharedMemory::Stop(ConsumerType consumer_type) {
393551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  switch (consumer_type) {
403551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)    case CONSUMER_TYPE_MOTION:
415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      SensorManagerAndroid::GetInstance()->StopFetchingDeviceMotionData();
423551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)      return true;
433551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)    case CONSUMER_TYPE_ORIENTATION:
445d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      SensorManagerAndroid::GetInstance()->StopFetchingDeviceOrientationData();
45424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)      return true;
463551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)    default:
473551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)      NOTREACHED();
483551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  }
493551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  return false;
507dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch}
517dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
527dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch}  // namespace content
53