OLD | NEW |
---|---|
1 /* | 1 /* |
2 * Copyright 2010 Apple Inc. All rights reserved. | 2 * Copyright (C) 2013 Google Inc. All rights reserved. |
tkent
2014/06/05 16:06:18
If you rewrote this file, please use the 3-line co
timvolodine
2014/06/05 17:29:04
Done.
| |
3 * Copyright (C) 2012 Samsung Electronics. All rights reserved. | |
4 * | 3 * |
5 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
6 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions are |
7 * are met: | 6 * met: |
8 * * Redistributions of source code must retain the above copyright | |
9 * notice, this list of conditions and the following disclaimer. | |
10 * * Redistributions in binary form must reproduce the above copyright | |
11 * notice, this list of conditions and the following disclaimer in the | |
12 * documentation and/or other materials provided with the distribution. | |
13 * | 7 * |
14 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY | 8 * * Redistributions of source code must retain the above copyright |
15 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | 9 * notice, this list of conditions and the following disclaimer. |
16 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | 10 * * Redistributions in binary form must reproduce the above |
17 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR | 11 * copyright notice, this list of conditions and the following disclaimer |
18 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, | 12 * in the documentation and/or other materials provided with the |
19 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, | 13 * distribution. |
20 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR | 14 * * Neither the name of Google Inc. nor the names of its |
21 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY | 15 * contributors may be used to endorse or promote products derived from |
22 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 16 * this software without specific prior written permission. |
17 * | |
18 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | |
19 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | |
20 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | |
21 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | |
22 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | |
23 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | |
24 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | |
25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | |
26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | |
23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
24 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
25 */ | 29 */ |
26 | 30 |
27 #include "config.h" | 31 #include "config.h" |
28 #include "modules/device_orientation/DeviceMotionController.h" | 32 #include "modules/device_orientation/DeviceMotionController.h" |
29 | 33 |
30 #include "core/dom/Document.h" | 34 #include "core/dom/Document.h" |
31 #include "core/frame/DOMWindow.h" | 35 #include "modules/EventModules.h" |
32 #include "core/page/Page.h" | |
33 #include "modules/device_orientation/DeviceMotionData.h" | 36 #include "modules/device_orientation/DeviceMotionData.h" |
34 #include "modules/device_orientation/DeviceMotionDispatcher.h" | 37 #include "modules/device_orientation/DeviceMotionDispatcher.h" |
35 #include "modules/device_orientation/DeviceMotionEvent.h" | 38 #include "modules/device_orientation/DeviceMotionEvent.h" |
36 | 39 |
37 namespace WebCore { | 40 namespace WebCore { |
38 | 41 |
39 DeviceMotionController::DeviceMotionController(Document& document) | 42 DeviceMotionController::DeviceMotionController(Document& document) |
40 : DeviceSensorEventController(document.page()) | 43 : DeviceSingleWindowEventController(document) |
41 , DOMWindowLifecycleObserver(document.domWindow()) | |
42 , m_document(document) | |
43 { | 44 { |
44 } | 45 } |
45 | 46 |
46 DeviceMotionController::~DeviceMotionController() | 47 DeviceMotionController::~DeviceMotionController() |
47 { | 48 { |
48 stopUpdating(); | 49 stopUpdating(); |
49 } | 50 } |
50 | 51 |
51 void DeviceMotionController::didChangeDeviceMotion(DeviceMotionData* deviceMotio nData) | |
52 { | |
53 dispatchDeviceEvent(DeviceMotionEvent::create(EventTypeNames::devicemotion, deviceMotionData)); | |
54 } | |
55 | |
56 const char* DeviceMotionController::supplementName() | 52 const char* DeviceMotionController::supplementName() |
57 { | 53 { |
58 return "DeviceMotionController"; | 54 return "DeviceMotionController"; |
59 } | 55 } |
60 | 56 |
61 DeviceMotionController& DeviceMotionController::from(Document& document) | 57 DeviceMotionController& DeviceMotionController::from(Document& document) |
62 { | 58 { |
63 DeviceMotionController* controller = static_cast<DeviceMotionController*>(Do cumentSupplement::from(document, supplementName())); | 59 DeviceMotionController* controller = static_cast<DeviceMotionController*>(Do cumentSupplement::from(document, supplementName())); |
64 if (!controller) { | 60 if (!controller) { |
65 controller = new DeviceMotionController(document); | 61 controller = new DeviceMotionController(document); |
66 DocumentSupplement::provideTo(document, supplementName(), adoptPtrWillBe Noop(controller)); | 62 DocumentSupplement::provideTo(document, supplementName(), adoptPtrWillBe Noop(controller)); |
67 } | 63 } |
68 return *controller; | 64 return *controller; |
69 } | 65 } |
70 | 66 |
71 bool DeviceMotionController::hasLastData() | 67 bool DeviceMotionController::hasLastData() |
72 { | 68 { |
73 return DeviceMotionDispatcher::instance().latestDeviceMotionData(); | 69 return DeviceMotionDispatcher::instance().latestDeviceMotionData(); |
74 } | 70 } |
75 | 71 |
76 PassRefPtrWillBeRawPtr<Event> DeviceMotionController::getLastEvent() | 72 void DeviceMotionController::registerWithDispatcher() |
73 { | |
74 DeviceMotionDispatcher::instance().addController(this); | |
75 } | |
76 | |
77 void DeviceMotionController::unregisterWithDispatcher() | |
78 { | |
79 DeviceMotionDispatcher::instance().removeController(this); | |
80 } | |
81 | |
82 PassRefPtrWillBeRawPtr<Event> DeviceMotionController::lastEvent() const | |
77 { | 83 { |
78 return DeviceMotionEvent::create(EventTypeNames::devicemotion, DeviceMotionD ispatcher::instance().latestDeviceMotionData()); | 84 return DeviceMotionEvent::create(EventTypeNames::devicemotion, DeviceMotionD ispatcher::instance().latestDeviceMotionData()); |
79 } | 85 } |
80 | 86 |
81 void DeviceMotionController::registerWithDispatcher() | 87 bool DeviceMotionController::isNullEvent(Event* event) const |
82 { | |
83 DeviceMotionDispatcher::instance().addDeviceMotionController(this); | |
84 } | |
85 | |
86 void DeviceMotionController::unregisterWithDispatcher() | |
87 { | |
88 DeviceMotionDispatcher::instance().removeDeviceMotionController(this); | |
89 } | |
90 | |
91 bool DeviceMotionController::isNullEvent(Event* event) | |
92 { | 88 { |
93 DeviceMotionEvent* motionEvent = toDeviceMotionEvent(event); | 89 DeviceMotionEvent* motionEvent = toDeviceMotionEvent(event); |
94 return !motionEvent->deviceMotionData()->canProvideEventData(); | 90 return !motionEvent->deviceMotionData()->canProvideEventData(); |
95 } | 91 } |
96 | 92 |
97 Document* DeviceMotionController::document() | 93 const AtomicString& DeviceMotionController::eventTypeName() const |
98 { | 94 { |
99 return &m_document; | 95 return EventTypeNames::devicemotion; |
100 } | |
101 | |
102 void DeviceMotionController::didAddEventListener(DOMWindow* window, const Atomic String& eventType) | |
103 { | |
104 if (eventType != EventTypeNames::devicemotion) | |
105 return; | |
106 | |
107 if (page() && page()->visibilityState() == PageVisibilityStateVisible) | |
108 startUpdating(); | |
109 | |
110 m_hasEventListener = true; | |
111 } | |
112 | |
113 void DeviceMotionController::didRemoveEventListener(DOMWindow* window, const Ato micString& eventType) | |
114 { | |
115 if (eventType != EventTypeNames::devicemotion || window->hasEventListeners(E ventTypeNames::devicemotion)) | |
116 return; | |
117 | |
118 stopUpdating(); | |
119 m_hasEventListener = false; | |
120 } | |
121 | |
122 void DeviceMotionController::didRemoveAllEventListeners(DOMWindow*) | |
123 { | |
124 stopUpdating(); | |
125 m_hasEventListener = false; | |
126 } | 96 } |
127 | 97 |
128 } // namespace WebCore | 98 } // namespace WebCore |
OLD | NEW |