15c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/* 25267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * Copyright (C) 2013 Google Inc. All rights reserved. 35267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * 45c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Redistribution and use in source and binary forms, with or without 55c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * modification, are permitted provided that the following conditions are 65c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * met: 75267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * 85c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * * Redistributions of source code must retain the above copyright 95c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * notice, this list of conditions and the following disclaimer. 105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * * Redistributions in binary form must reproduce the above 115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * copyright notice, this list of conditions and the following disclaimer 125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * in the documentation and/or other materials provided with the 135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * distribution. 145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * * Neither the name of Google Inc. nor the names of its 155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * contributors may be used to endorse or promote products derived from 165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * this software without specific prior written permission. 175267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * 185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3151b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)#include "config.h" 3251b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)#include "ServiceWorkerError.h" 3351b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) 34f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu#include "core/dom/ExceptionCode.h" 35f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu 3651b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)using blink::WebServiceWorkerError; 37e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) 38c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)namespace blink { 3951b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) 40f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu// static 41c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)PassRefPtrWillBeRawPtr<DOMException> ServiceWorkerError::take(ScriptPromiseResolver*, WebType* webErrorRaw) 4251b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles){ 43f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu OwnPtr<WebType> webError = adoptPtr(webErrorRaw); 44f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu switch (webError->errorType) { 45d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) case WebServiceWorkerError::ErrorTypeDisabled: 46f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu return DOMException::create(NotSupportedError, "Service Worker support is disabled."); 4776c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) case WebServiceWorkerError::ErrorTypeAbort: 4876c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) return DOMException::create(AbortError, "The Service Worker operation was aborted."); 49d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) case WebServiceWorkerError::ErrorTypeSecurity: 50f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu return DOMException::create(SecurityError, "The Service Worker security policy prevented an action."); 51d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) case WebServiceWorkerError::ErrorTypeInstall: 52f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu // FIXME: Introduce new InstallError type to ExceptionCodes? 53f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu return DOMException::create(AbortError, "The Service Worker installation failed."); 54d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) case WebServiceWorkerError::ErrorTypeActivate: 55f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu // Not currently returned as a promise rejection. 56f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu // FIXME: Introduce new ActivateError type to ExceptionCodes? 57f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu return DOMException::create(AbortError, "The Service Worker activation failed."); 587242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci case WebServiceWorkerError::ErrorTypeNetwork: 597242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci return DOMException::create(NetworkError, "The Service Worker failed by network."); 60d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) case WebServiceWorkerError::ErrorTypeNotFound: 61f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu return DOMException::create(NotFoundError, "The specified Service Worker resource was not found."); 62d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) case WebServiceWorkerError::ErrorTypeUnknown: 63f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu return DOMException::create(UnknownError, "An unknown error occurred within Service Worker."); 6451b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) } 6509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) ASSERT_NOT_REACHED(); 66f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu return DOMException::create(UnknownError); 6751b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)} 6851b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) 69c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)// static 70c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)void ServiceWorkerError::dispose(WebType* webErrorRaw) 71c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles){ 72c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) delete webErrorRaw; 73c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)} 74c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 75c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)} // namespace blink 76