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