Index: Source/modules/screen_orientation/LockOrientationCallback.cpp |
diff --git a/Source/modules/screen_orientation/LockOrientationCallback.cpp b/Source/modules/screen_orientation/LockOrientationCallback.cpp |
new file mode 100644 |
index 0000000000000000000000000000000000000000..b1c54b24d7bd434351acfda4112e349a0b2becdf |
--- /dev/null |
+++ b/Source/modules/screen_orientation/LockOrientationCallback.cpp |
@@ -0,0 +1,57 @@ |
+// Copyright 2014 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "config.h" |
+#include "modules/screen_orientation/LockOrientationCallback.h" |
+ |
+#include "bindings/v8/ScriptPromiseResolverWithContext.h" |
+#include "core/dom/DOMException.h" |
+#include "core/dom/ExceptionCode.h" |
+#include "modules/screen_orientation/ScreenOrientation.h" |
+ |
+namespace WebCore { |
+ |
+LockOrientationCallback::LockOrientationCallback(PassRefPtr<ScriptPromiseResolverWithContext> resolver) |
+ : m_resolver(resolver) |
+{ |
+} |
+ |
+LockOrientationCallback::~LockOrientationCallback() |
+{ |
+} |
+ |
+void LockOrientationCallback::onSuccess(unsigned angle, blink::WebScreenOrientationType type) |
+{ |
+ // FIXME: for the moment, we do nothing with the angle, we should use it and |
+ // convert it to the appropriate type if the type == 'undefined' when the |
+ // method will be implemented in ScreenOrientationController. |
+ m_resolver->resolve(ScreenOrientation::orientationTypeToString(type)); |
+} |
+ |
+void LockOrientationCallback::onError(ErrorType error) |
+{ |
+ ExceptionCode code = 0; |
+ String msg = ""; |
+ |
+ switch (error) { |
+ case NotAvailable: |
+ code = NotSupportedError; |
+ msg = "lockOrientation() is not available on this device."; |
+ break; |
+ case FullScreenRequired: |
+ code = SecurityError; |
+ msg = "The page needs to be fullscreen in order to call lockOrientation()."; |
+ break; |
+ case Canceled: |
+ code = AbortError; |
+ msg = "A call to lockOrientation() or unlockOrientation() canceled this call."; |
+ break; |
+ default: |
jochen (gone - plz use gerrit)
2014/05/22 08:34:35
we usually omit the default branch so the compiler
mlamouri (slow - plz ping)
2014/05/22 08:58:56
Done.
|
+ ASSERT_NOT_REACHED(); |
+ } |
+ |
+ m_resolver->reject(DOMException::create(code, msg)); |
+} |
+ |
+} // namespace WebCore |