1 /* 2 * Copyright (C) 2013 Google Inc. All rights reserved. 3 * 4 * Redistribution and use in source and binary forms, with or without 5 * modification, are permitted provided that the following conditions are 6 * met: 7 * 8 * * Redistributions of source code must retain the above copyright 9 * notice, this list of conditions and the following disclaimer. 10 * * Redistributions in binary form must reproduce the above 11 * copyright notice, this list of conditions and the following disclaimer 12 * in the documentation and/or other materials provided with the 13 * distribution. 14 * * Neither the name of Google Inc. nor the names of its 15 * contributors may be used to endorse or promote products derived from 16 * this software without specific prior written permission. 17 * 18 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 19 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 20 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 21 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 22 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 24 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29 */ 30 31 #include "config.h" 32 #include "ServiceWorkerError.h" 33 34 #include "core/dom/ExceptionCode.h" 35 36 using blink::WebServiceWorkerError; 37 namespace WebCore { 38 39 // static 40 PassRefPtrWillBeRawPtr<DOMException> ServiceWorkerError::from(ScriptPromiseResolverWithContext*, WebType* webErrorRaw) 41 { 42 OwnPtr<WebType> webError = adoptPtr(webErrorRaw); 43 switch (webError->errorType) { 44 case WebServiceWorkerError::ErrorTypeDisabled: 45 return DOMException::create(NotSupportedError, "Service Worker support is disabled."); 46 case WebServiceWorkerError::ErrorTypeAbort: 47 return DOMException::create(AbortError, "The Service Worker operation was aborted."); 48 case WebServiceWorkerError::ErrorTypeSecurity: 49 return DOMException::create(SecurityError, "The Service Worker security policy prevented an action."); 50 case WebServiceWorkerError::ErrorTypeInstall: 51 // FIXME: Introduce new InstallError type to ExceptionCodes? 52 return DOMException::create(AbortError, "The Service Worker installation failed."); 53 case WebServiceWorkerError::ErrorTypeActivate: 54 // Not currently returned as a promise rejection. 55 // FIXME: Introduce new ActivateError type to ExceptionCodes? 56 return DOMException::create(AbortError, "The Service Worker activation failed."); 57 case WebServiceWorkerError::ErrorTypeNotFound: 58 return DOMException::create(NotFoundError, "The specified Service Worker resource was not found."); 59 case WebServiceWorkerError::ErrorTypeUnknown: 60 return DOMException::create(UnknownError, "An unknown error occurred within Service Worker."); 61 } 62 ASSERT_NOT_REACHED(); 63 return DOMException::create(UnknownError); 64 } 65 66 } // namespace WebCore 67