16e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 26e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 36e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)// found in the LICENSE file. 46e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 56e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "content/browser/screen_orientation/screen_orientation_message_filter_android.h" 66e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 76e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "content/browser/screen_orientation/screen_orientation_provider_android.h" 86e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "content/common/screen_orientation_messages.h" 96e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 106e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)namespace content { 116e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 126e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)ScreenOrientationMessageFilterAndroid::ScreenOrientationMessageFilterAndroid() 136e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) : BrowserMessageFilter(ScreenOrientationMsgStart) 146e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) , listeners_count_(0) { 156e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 166e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 176e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)ScreenOrientationMessageFilterAndroid::~ScreenOrientationMessageFilterAndroid() 186e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles){ 196e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) if (listeners_count_ > 0) 206e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) ScreenOrientationProviderAndroid::StopAccurateListening(); 216e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 226e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 236e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)bool ScreenOrientationMessageFilterAndroid::OnMessageReceived( 246e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) const IPC::Message& message) { 256e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) bool handled = true; 266e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) IPC_BEGIN_MESSAGE_MAP(ScreenOrientationMessageFilterAndroid, message) 276e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) IPC_MESSAGE_HANDLER(ScreenOrientationHostMsg_StartListening, 286e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) OnStartListening) 296e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) IPC_MESSAGE_HANDLER(ScreenOrientationHostMsg_StopListening, 306e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) OnStopListening) 316e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) IPC_MESSAGE_UNHANDLED(handled = false) 326e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) IPC_END_MESSAGE_MAP() 336e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) return handled; 346e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 356e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 366e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)void ScreenOrientationMessageFilterAndroid::OnStartListening() { 376e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) ++listeners_count_; 386e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) if (listeners_count_ == 1) 396e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) ScreenOrientationProviderAndroid::StartAccurateListening(); 406e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 416e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 426e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)void ScreenOrientationMessageFilterAndroid::OnStopListening() { 436e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) DCHECK(listeners_count_ > 0); 446e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) --listeners_count_; 456e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) if (listeners_count_ == 0) 466e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) ScreenOrientationProviderAndroid::StopAccurateListening(); 476e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 486e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 496e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} // namespace content 50