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 "core/events/ApplicationCacheErrorEvent.h"
7
8namespace blink {
9
10static const String& errorReasonToString(blink::WebApplicationCacheHost::ErrorReason reason)
11{
12    DEFINE_STATIC_LOCAL(String, errorManifest, ("manifest"));
13    DEFINE_STATIC_LOCAL(String, errorSignature, ("signature"));
14    DEFINE_STATIC_LOCAL(String, errorResource, ("resource"));
15    DEFINE_STATIC_LOCAL(String, errorChanged, ("changed"));
16    DEFINE_STATIC_LOCAL(String, errorAbort, ("abort"));
17    DEFINE_STATIC_LOCAL(String, errorQuota, ("quota"));
18    DEFINE_STATIC_LOCAL(String, errorPolicy, ("policy"));
19    DEFINE_STATIC_LOCAL(String, errorUnknown, ("unknown"));
20
21    switch (reason) {
22    case blink::WebApplicationCacheHost::ManifestError:
23        return errorManifest;
24    case blink::WebApplicationCacheHost::SignatureError:
25        return errorSignature;
26    case blink::WebApplicationCacheHost::ResourceError:
27        return errorResource;
28    case blink::WebApplicationCacheHost::ChangedError:
29        return errorChanged;
30    case blink::WebApplicationCacheHost::AbortError:
31        return errorAbort;
32    case blink::WebApplicationCacheHost::QuotaError:
33        return errorQuota;
34    case blink::WebApplicationCacheHost::PolicyError:
35        return errorPolicy;
36    case blink::WebApplicationCacheHost::UnknownError:
37        return errorUnknown;
38    }
39    ASSERT_NOT_REACHED();
40    return emptyString();
41}
42
43ApplicationCacheErrorEventInit::ApplicationCacheErrorEventInit()
44    : status(0)
45{
46}
47
48ApplicationCacheErrorEvent::ApplicationCacheErrorEvent()
49{
50}
51
52ApplicationCacheErrorEvent::ApplicationCacheErrorEvent(blink::WebApplicationCacheHost::ErrorReason reason, const String& url, int status, const String& message)
53    : Event(EventTypeNames::error, false, false)
54    , m_reason(errorReasonToString(reason))
55    , m_url(url)
56    , m_status(status)
57    , m_message(message)
58{
59}
60
61ApplicationCacheErrorEvent::ApplicationCacheErrorEvent(const AtomicString& eventType, const ApplicationCacheErrorEventInit& initializer)
62    : Event(eventType, initializer)
63    , m_reason(initializer.reason)
64    , m_url(initializer.url)
65    , m_status(initializer.status)
66    , m_message(initializer.message)
67{
68}
69
70ApplicationCacheErrorEvent::~ApplicationCacheErrorEvent()
71{
72}
73
74void ApplicationCacheErrorEvent::trace(Visitor* visitor)
75{
76    Event::trace(visitor);
77}
78
79} // namespace blink
80