1// Copyright 2013 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 "content/browser/service_worker/service_worker_registration_status.h"
6
7#include "base/logging.h"
8#include "base/strings/utf_string_conversions.h"
9
10namespace content {
11
12using blink::WebServiceWorkerError;
13
14void GetServiceWorkerRegistrationStatusResponse(
15    ServiceWorkerStatusCode status,
16    blink::WebServiceWorkerError::ErrorType* error_type,
17    base::string16* message) {
18  *error_type = WebServiceWorkerError::ErrorTypeUnknown;
19  *message = base::ASCIIToUTF16(ServiceWorkerStatusToString(status));
20  switch (status) {
21    case SERVICE_WORKER_OK:
22      NOTREACHED() << "Calling this when status == OK is not allowed";
23      return;
24
25    case SERVICE_WORKER_ERROR_START_WORKER_FAILED:
26    case SERVICE_WORKER_ERROR_INSTALL_WORKER_FAILED:
27      *error_type = WebServiceWorkerError::ErrorTypeInstall;
28      return;
29
30    case SERVICE_WORKER_ERROR_ACTIVATE_WORKER_FAILED:
31      *error_type = WebServiceWorkerError::ErrorTypeActivate;
32      return;
33
34    case SERVICE_WORKER_ERROR_NOT_FOUND:
35      *error_type = WebServiceWorkerError::ErrorTypeNotFound;
36      return;
37
38    case SERVICE_WORKER_ERROR_NETWORK:
39      *error_type = WebServiceWorkerError::ErrorTypeNetwork;
40      return;
41
42    case SERVICE_WORKER_ERROR_SECURITY:
43      *error_type = WebServiceWorkerError::ErrorTypeSecurity;
44      return;
45
46    case SERVICE_WORKER_ERROR_ABORT:
47    case SERVICE_WORKER_ERROR_IPC_FAILED:
48    case SERVICE_WORKER_ERROR_FAILED:
49    case SERVICE_WORKER_ERROR_PROCESS_NOT_FOUND:
50    case SERVICE_WORKER_ERROR_EXISTS:
51      // Unexpected, or should have bailed out before calling this, or we don't
52      // have a corresponding blink error code yet.
53      break;  // Fall through to NOTREACHED().
54  }
55  NOTREACHED() << "Got unexpected error code: "
56               << status << " " << ServiceWorkerStatusToString(status);
57}
58
59}  // namespace content
60