OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "modules/screen_orientation/ScreenOrientationController.h" | 5 #include "modules/screen_orientation/ScreenOrientationController.h" |
6 | 6 |
7 #include "core/events/Event.h" | 7 #include "core/events/Event.h" |
8 #include "core/frame/FrameHost.h" | 8 #include "core/frame/FrameHost.h" |
9 #include "core/frame/FrameView.h" | 9 #include "core/frame/FrameView.h" |
10 #include "core/frame/LocalFrame.h" | 10 #include "core/frame/LocalFrame.h" |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
86 orientationType = computeOrientation(chromeClient.screenInfo().rect, scr
eenInfo.orientationAngle); | 86 orientationType = computeOrientation(chromeClient.screenInfo().rect, scr
eenInfo.orientationAngle); |
87 } | 87 } |
88 ASSERT(orientationType != WebScreenOrientationUndefined); | 88 ASSERT(orientationType != WebScreenOrientationUndefined); |
89 | 89 |
90 m_orientation->setType(orientationType); | 90 m_orientation->setType(orientationType); |
91 m_orientation->setAngle(screenInfo.orientationAngle); | 91 m_orientation->setAngle(screenInfo.orientationAngle); |
92 } | 92 } |
93 | 93 |
94 bool ScreenOrientationController::isActiveAndVisible() const | 94 bool ScreenOrientationController::isActiveAndVisible() const |
95 { | 95 { |
96 return m_orientation && frame() && page() && page()->isPageVisible(); | 96 return m_orientation && m_client && frame() && page() && page()->isPageVisib
le(); |
97 } | 97 } |
98 | 98 |
99 void ScreenOrientationController::pageVisibilityChanged() | 99 void ScreenOrientationController::pageVisibilityChanged() |
100 { | 100 { |
101 notifyDispatcher(); | 101 notifyDispatcher(); |
102 | 102 |
103 if (!isActiveAndVisible()) | 103 if (!isActiveAndVisible()) |
104 return; | 104 return; |
105 | 105 |
| 106 DCHECK(frame()); |
| 107 DCHECK(frame()->host()); |
| 108 |
106 // The orientation type and angle are tied in a way that if the angle has | 109 // The orientation type and angle are tied in a way that if the angle has |
107 // changed, the type must have changed. | 110 // changed, the type must have changed. |
108 unsigned short currentAngle = frame()->host()->chromeClient().screenInfo().o
rientationAngle; | 111 unsigned short currentAngle = frame()->host()->chromeClient().screenInfo().o
rientationAngle; |
109 | 112 |
110 // FIXME: sendOrientationChangeEvent() currently send an event all the | 113 // FIXME: sendOrientationChangeEvent() currently send an event all the |
111 // children of the frame, so it should only be called on the frame on | 114 // children of the frame, so it should only be called on the frame on |
112 // top of the tree. We would need the embedder to call | 115 // top of the tree. We would need the embedder to call |
113 // sendOrientationChangeEvent on every WebFrame part of a WebView to be | 116 // sendOrientationChangeEvent on every WebFrame part of a WebView to be |
114 // able to remove this. | 117 // able to remove this. |
115 if (frame() == frame()->localFrameRoot() && m_orientation->angle() != curren
tAngle) | 118 if (frame() == frame()->localFrameRoot() && m_orientation->angle() != curren
tAngle) |
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
211 | 214 |
212 DEFINE_TRACE(ScreenOrientationController) | 215 DEFINE_TRACE(ScreenOrientationController) |
213 { | 216 { |
214 visitor->trace(m_orientation); | 217 visitor->trace(m_orientation); |
215 DOMWindowProperty::trace(visitor); | 218 DOMWindowProperty::trace(visitor); |
216 Supplement<LocalFrame>::trace(visitor); | 219 Supplement<LocalFrame>::trace(visitor); |
217 PlatformEventController::trace(visitor); | 220 PlatformEventController::trace(visitor); |
218 } | 221 } |
219 | 222 |
220 } // namespace blink | 223 } // namespace blink |
OLD | NEW |