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 38 namespace blink { 39 40 // static 41 PassRefPtrWillBeRawPtr<DOMException> ServiceWorkerError::take(ScriptPromiseResolver*, WebType* webErrorRaw) 42 { 43 OwnPtr<WebType> webError = adoptPtr(webErrorRaw); 44 switch (webError->errorType) { 45 case WebServiceWorkerError::ErrorTypeDisabled: 46 return DOMException::create(NotSupportedError, "Service Worker support is disabled."); 47 case WebServiceWorkerError::ErrorTypeAbort: 48 return DOMException::create(AbortError, "The Service Worker operation was aborted."); 49 case WebServiceWorkerError::ErrorTypeSecurity: 50 return DOMException::create(SecurityError, "The Service Worker security policy prevented an action."); 51 case WebServiceWorkerError::ErrorTypeInstall: 52 // FIXME: Introduce new InstallError type to ExceptionCodes? 53 return DOMException::create(AbortError, "The Service Worker installation failed."); 54 case WebServiceWorkerError::ErrorTypeActivate: 55 // Not currently returned as a promise rejection. 56 // FIXME: Introduce new ActivateError type to ExceptionCodes? 57 return DOMException::create(AbortError, "The Service Worker activation failed."); 58 case WebServiceWorkerError::ErrorTypeNetwork: 59 return DOMException::create(NetworkError, "The Service Worker failed by network."); 60 case WebServiceWorkerError::ErrorTypeNotFound: 61 return DOMException::create(NotFoundError, "The specified Service Worker resource was not found."); 62 case WebServiceWorkerError::ErrorTypeUnknown: 63 return DOMException::create(UnknownError, "An unknown error occurred within Service Worker."); 64 } 65 ASSERT_NOT_REACHED(); 66 return DOMException::create(UnknownError); 67 } 68 69 // static 70 void ServiceWorkerError::dispose(WebType* webErrorRaw) 71 { 72 delete webErrorRaw; 73 } 74 75 } // namespace blink 76