Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1418)

Unified Diff: Source/modules/screen_orientation/LockOrientationCallback.cpp

Issue 283423005: Use Promises for screen.lockOrientation(). (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: review commenst Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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..6f0bcf59c1773ccdb00040d006df2b41334606cb
--- /dev/null
+++ b/Source/modules/screen_orientation/LockOrientationCallback.cpp
@@ -0,0 +1,55 @@
+// 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 ErrorTypeNotAvailable:
+ code = NotSupportedError;
+ msg = "lockOrientation() is not available on this device.";
+ break;
+ case ErrorTypeFullScreenRequired:
+ code = SecurityError;
+ msg = "The page needs to be fullscreen in order to call lockOrientation().";
+ break;
+ case ErrorTypeCanceled:
+ code = AbortError;
+ msg = "A call to lockOrientation() or unlockOrientation() canceled this call.";
+ break;
+ }
+
+ m_resolver->reject(DOMException::create(code, msg));
+}
+
+} // namespace WebCore
« no previous file with comments | « Source/modules/screen_orientation/LockOrientationCallback.h ('k') | Source/modules/screen_orientation/ScreenOrientation.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698