OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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/media_controls/MediaControlsOrientationLockDelegate.h" | 5 #include "modules/media_controls/MediaControlsOrientationLockDelegate.h" |
6 | 6 |
7 #include "core/dom/TaskRunnerHelper.h" | 7 #include "core/dom/TaskRunnerHelper.h" |
8 #include "core/events/Event.h" | 8 #include "core/events/Event.h" |
9 #include "core/frame/LocalDOMWindow.h" | 9 #include "core/frame/LocalDOMWindow.h" |
10 #include "core/frame/Screen.h" | 10 #include "core/frame/Screen.h" |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
65 metadata_histogram.Count(static_cast<int>(metrics)); | 65 metadata_histogram.Count(static_cast<int>(metrics)); |
66 } | 66 } |
67 | 67 |
68 void RecordLockResult(LockResultMetrics metrics) { | 68 void RecordLockResult(LockResultMetrics metrics) { |
69 DEFINE_STATIC_LOCAL(EnumerationHistogram, lock_result_histogram, | 69 DEFINE_STATIC_LOCAL(EnumerationHistogram, lock_result_histogram, |
70 ("Media.Video.FullscreenOrientationLock.LockResult", | 70 ("Media.Video.FullscreenOrientationLock.LockResult", |
71 static_cast<int>(LockResultMetrics::kMax))); | 71 static_cast<int>(LockResultMetrics::kMax))); |
72 lock_result_histogram.Count(static_cast<int>(metrics)); | 72 lock_result_histogram.Count(static_cast<int>(metrics)); |
73 } | 73 } |
74 | 74 |
| 75 void RecordAutoRotateEnabled(bool enabled) { |
| 76 DEFINE_STATIC_LOCAL( |
| 77 BooleanHistogram, auto_rotate_histogram, |
| 78 ("Media.Video.FullscreenOrientationLock.AutoRotateEnabled")); |
| 79 auto_rotate_histogram.Count(enabled); |
| 80 } |
| 81 |
75 // WebLockOrientationCallback implementation that will not react to a success | 82 // WebLockOrientationCallback implementation that will not react to a success |
76 // nor a failure. | 83 // nor a failure. |
77 class DummyScreenOrientationCallback : public WebLockOrientationCallback { | 84 class DummyScreenOrientationCallback : public WebLockOrientationCallback { |
78 public: | 85 public: |
79 void OnSuccess() override {} | 86 void OnSuccess() override {} |
80 void OnError(WebLockOrientationError) override {} | 87 void OnError(WebLockOrientationError) override {} |
81 }; | 88 }; |
82 | 89 |
83 } // anonymous namespace | 90 } // anonymous namespace |
84 | 91 |
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
203 WrapPersistent(this)))); | 210 WrapPersistent(this)))); |
204 #else | 211 #else |
205 GotIsAutoRotateEnabledByUser(true); // Assume always enabled on other OSes. | 212 GotIsAutoRotateEnabledByUser(true); // Assume always enabled on other OSes. |
206 #endif // OS(ANDROID) | 213 #endif // OS(ANDROID) |
207 } | 214 } |
208 | 215 |
209 void MediaControlsOrientationLockDelegate::GotIsAutoRotateEnabledByUser( | 216 void MediaControlsOrientationLockDelegate::GotIsAutoRotateEnabledByUser( |
210 bool enabled) { | 217 bool enabled) { |
211 monitor_.reset(); | 218 monitor_.reset(); |
212 | 219 |
| 220 RecordAutoRotateEnabled(enabled); |
| 221 |
213 if (!enabled) { | 222 if (!enabled) { |
214 // Since the user has locked their screen orientation, prevent | 223 // Since the user has locked their screen orientation, prevent |
215 // MediaControlsRotateToFullscreenDelegate from exiting fullscreen by not | 224 // MediaControlsRotateToFullscreenDelegate from exiting fullscreen by not |
216 // listening for deviceorientation events and instead continuing to hold the | 225 // listening for deviceorientation events and instead continuing to hold the |
217 // orientation lock until the user exits fullscreen. This enables users to | 226 // orientation lock until the user exits fullscreen. This enables users to |
218 // watch videos in bed with their head facing sideways (which requires a | 227 // watch videos in bed with their head facing sideways (which requires a |
219 // landscape screen orientation when the device is portrait and vice versa). | 228 // landscape screen orientation when the device is portrait and vice versa). |
220 // TODO(johnme): Ideally we would start listening for deviceorientation | 229 // TODO(johnme): Ideally we would start listening for deviceorientation |
221 // events and allow rotating to exit if a user enables screen auto rotation | 230 // events and allow rotating to exit if a user enables screen auto rotation |
222 // after we have locked to landscape. That would require listening for | 231 // after we have locked to landscape. That would require listening for |
(...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
429 WrapPersistent(this)), | 438 WrapPersistent(this)), |
430 TimeDelta::FromMilliseconds(kUnlockDelayMs)); | 439 TimeDelta::FromMilliseconds(kUnlockDelayMs)); |
431 } | 440 } |
432 | 441 |
433 DEFINE_TRACE(MediaControlsOrientationLockDelegate) { | 442 DEFINE_TRACE(MediaControlsOrientationLockDelegate) { |
434 EventListener::Trace(visitor); | 443 EventListener::Trace(visitor); |
435 visitor->Trace(video_element_); | 444 visitor->Trace(video_element_); |
436 } | 445 } |
437 | 446 |
438 } // namespace blink | 447 } // namespace blink |
OLD | NEW |