11320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Copyright 2014 The Chromium Authors. All rights reserved. 21320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Use of this source code is governed by a BSD-style license that can be 31320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// found in the LICENSE file. 41320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 51320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "content/browser/device_sensors/device_light_message_filter.h" 61320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 71320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "content/browser/device_sensors/device_inertial_sensor_service.h" 81320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "content/common/device_sensors/device_light_messages.h" 91320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccinamespace content { 111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciDeviceLightMessageFilter::DeviceLightMessageFilter() 131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci : BrowserMessageFilter(DeviceLightMsgStart), is_started_(false) { 141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciDeviceLightMessageFilter::~DeviceLightMessageFilter() { 171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (is_started_) { 191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DeviceInertialSensorService::GetInstance()->RemoveConsumer( 201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci CONSUMER_TYPE_LIGHT); 211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccibool DeviceLightMessageFilter::OnMessageReceived(const IPC::Message& message) { 251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci bool handled = true; 261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci IPC_BEGIN_MESSAGE_MAP(DeviceLightMessageFilter, message) 271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci IPC_MESSAGE_HANDLER(DeviceLightHostMsg_StartPolling, 281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci OnDeviceLightStartPolling) 291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci IPC_MESSAGE_HANDLER(DeviceLightHostMsg_StopPolling, OnDeviceLightStopPolling) 301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci IPC_MESSAGE_UNHANDLED(handled = false) 311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci IPC_END_MESSAGE_MAP() 321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return handled; 331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid DeviceLightMessageFilter::OnDeviceLightStartPolling() { 361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DCHECK(!is_started_); 371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (is_started_) 381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return; 391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci is_started_ = true; 401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DeviceInertialSensorService::GetInstance()->AddConsumer(CONSUMER_TYPE_LIGHT); 411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DidStartDeviceLightPolling(); 421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid DeviceLightMessageFilter::OnDeviceLightStopPolling() { 451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DCHECK(is_started_); 461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (!is_started_) 471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return; 481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci is_started_ = false; 491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DeviceInertialSensorService::GetInstance()->RemoveConsumer( 501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci CONSUMER_TYPE_LIGHT); 511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid DeviceLightMessageFilter::DidStartDeviceLightPolling() { 541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci Send(new DeviceLightMsg_DidStartPolling( 551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DeviceInertialSensorService::GetInstance() 561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ->GetSharedMemoryHandleForProcess(CONSUMER_TYPE_LIGHT, 571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci PeerHandle()))); 581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} // namespace content 61