1db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block/* 2db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block * Copyright (C) 2010 Google Inc. All rights reserved. 3db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block * 4db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block * Redistribution and use in source and binary forms, with or without 5db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block * modification, are permitted provided that the following conditions 6db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block * are met: 7db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block * * Redistributions of source code must retain the above copyright 8db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block * notice, this list of conditions and the following disclaimer. 9db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block * * Redistributions in binary form must reproduce the above copyright 10db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block * notice, this list of conditions and the following disclaimer in the 11db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block * documentation and/or other materials provided with the distribution. 12db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block * 13db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY 14db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 15db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 16db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 17db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 18db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 19db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 20db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 21db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 22db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 23db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 24db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block */ 25db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block 26db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block#include "config.h" 27db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block#include "DeviceOrientationClientMock.h" 28db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block 29db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block#include "DeviceOrientationController.h" 30db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block 31db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Blocknamespace WebCore { 32db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block 33db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve BlockDeviceOrientationClientMock::DeviceOrientationClientMock() 34db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block : m_controller(0) 35db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block , m_timer(this, &DeviceOrientationClientMock::timerFired) 36db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block , m_isUpdating(false) 37db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block{ 38db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block} 39db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block 40db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Blockvoid DeviceOrientationClientMock::setController(DeviceOrientationController* controller) 41db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block{ 426b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner ASSERT(!m_controller); 43db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block m_controller = controller; 44db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block ASSERT(m_controller); 45db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block} 46db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block 47db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Blockvoid DeviceOrientationClientMock::startUpdating() 48db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block{ 49db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block m_isUpdating = true; 50db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block} 51db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block 52db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Blockvoid DeviceOrientationClientMock::stopUpdating() 53db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block{ 54db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block m_isUpdating = false; 55db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block m_timer.stop(); 56db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block} 57db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block 58db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Blockvoid DeviceOrientationClientMock::setOrientation(PassRefPtr<DeviceOrientation> orientation) 59db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block{ 60db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block m_orientation = orientation; 61db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block if (m_isUpdating && !m_timer.isActive()) 62db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block m_timer.startOneShot(0); 63db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block} 64db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block 65db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Blockvoid DeviceOrientationClientMock::timerFired(Timer<DeviceOrientationClientMock>* timer) 66db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block{ 67db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block ASSERT_UNUSED(timer, timer == &m_timer); 68db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block m_timer.stop(); 69db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block m_controller->didChangeDeviceOrientation(m_orientation.get()); 70db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block} 71db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block 72db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block} // namespace WebCore 73