Home | History | Annotate | Download | only in screen_orientation
      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
      3 // found in the LICENSE file.
      4 
      5 #include "config.h"
      6 #include "modules/screen_orientation/LockOrientationCallback.h"
      7 
      8 #include "bindings/core/v8/ScriptPromiseResolver.h"
      9 #include "core/dom/DOMException.h"
     10 #include "core/dom/ExceptionCode.h"
     11 #include "modules/screen_orientation/ScreenOrientation.h"
     12 
     13 namespace blink {
     14 
     15 LockOrientationCallback::LockOrientationCallback(PassRefPtr<ScriptPromiseResolver> resolver)
     16     : m_resolver(resolver)
     17 {
     18 }
     19 
     20 LockOrientationCallback::~LockOrientationCallback()
     21 {
     22 }
     23 
     24 void LockOrientationCallback::onSuccess()
     25 {
     26     m_resolver->resolve();
     27 }
     28 
     29 void LockOrientationCallback::onError(WebLockOrientationError error)
     30 {
     31     ExceptionCode code = 0;
     32     String msg = "";
     33 
     34     switch (error) {
     35     case WebLockOrientationErrorNotAvailable:
     36         code = NotSupportedError;
     37         msg = "lockOrientation() is not available on this device.";
     38         break;
     39     case WebLockOrientationErrorFullScreenRequired:
     40         code = SecurityError;
     41         msg = "The page needs to be fullscreen in order to call lockOrientation().";
     42         break;
     43     case WebLockOrientationErrorCanceled:
     44         code = AbortError;
     45         msg = "A call to lockOrientation() or unlockOrientation() canceled this call.";
     46         break;
     47     }
     48 
     49     m_resolver->reject(DOMException::create(code, msg));
     50 }
     51 
     52 } // namespace blink
     53