1// Copyright 2014 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef DeviceSingleWindowEventController_h
6#define DeviceSingleWindowEventController_h
7
8#include "core/frame/DOMWindowLifecycleObserver.h"
9#include "core/frame/PlatformEventController.h"
10#include "platform/heap/Handle.h"
11
12namespace blink {
13
14class Document;
15class Event;
16
17class DeviceSingleWindowEventController : public NoBaseWillBeGarbageCollectedFinalized<DeviceSingleWindowEventController>, public PlatformEventController, public DOMWindowLifecycleObserver {
18public:
19    virtual ~DeviceSingleWindowEventController();
20
21    // Inherited from DeviceEventControllerBase.
22    virtual void didUpdateData() OVERRIDE;
23    virtual void trace(Visitor*);
24
25    // Inherited from DOMWindowLifecycleObserver.
26    virtual void didAddEventListener(LocalDOMWindow*, const AtomicString&) OVERRIDE;
27    virtual void didRemoveEventListener(LocalDOMWindow*, const AtomicString&) OVERRIDE;
28    virtual void didRemoveAllEventListeners(LocalDOMWindow*) OVERRIDE;
29
30protected:
31    explicit DeviceSingleWindowEventController(Document&);
32
33    void dispatchDeviceEvent(const PassRefPtrWillBeRawPtr<Event>);
34
35    virtual PassRefPtrWillBeRawPtr<Event> lastEvent() const = 0;
36    virtual const AtomicString& eventTypeName() const = 0;
37    virtual bool isNullEvent(Event*) const = 0;
38
39private:
40    Document& document() const { return *m_document; }
41
42    bool m_needsCheckingNullEvents;
43    RawPtrWillBeMember<Document> m_document;
44};
45
46} // namespace blink
47
48#endif // DeviceSingleWindowEventController_h
49