Make all ScriptWrappable IsoHeap-ed
[WebKit-https.git] / Source / WebCore / dom / HashChangeEvent.h
1 /*
2  * Copyright (C) 2010 Apple Inc. All rights reserved.
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Library General Public
6  * License as published by the Free Software Foundation; either
7  * version 2 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * Library General Public License for more details.
13  *
14  * You should have received a copy of the GNU Library General Public License
15  * along with this library; see the file COPYING.LIB.  If not, write to
16  * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17  * Boston, MA 02110-1301, USA.
18  *
19  */
20
21 #pragma once
22
23 #include "Event.h"
24 #include "EventNames.h"
25
26 namespace WebCore {
27
28 class HashChangeEvent final : public Event {
29     WTF_MAKE_ISO_ALLOCATED(HashChangeEvent);
30 public:
31     static Ref<HashChangeEvent> create(const String& oldURL, const String& newURL)
32     {
33         return adoptRef(*new HashChangeEvent(oldURL, newURL));
34     }
35
36     static Ref<HashChangeEvent> createForBindings()
37     {
38         return adoptRef(*new HashChangeEvent);
39     }
40
41     struct Init : EventInit {
42         String oldURL;
43         String newURL;
44     };
45
46     static Ref<HashChangeEvent> create(const AtomString& type, const Init& initializer, IsTrusted isTrusted = IsTrusted::No)
47     {
48         return adoptRef(*new HashChangeEvent(type, initializer, isTrusted));
49     }
50
51     void initHashChangeEvent(const AtomString& eventType, bool canBubble, bool cancelable, const String& oldURL, const String& newURL)
52     {
53         if (isBeingDispatched())
54             return;
55
56         initEvent(eventType, canBubble, cancelable);
57
58         m_oldURL = oldURL;
59         m_newURL = newURL;
60     }
61
62     const String& oldURL() const { return m_oldURL; }
63     const String& newURL() const { return m_newURL; }
64
65     EventInterface eventInterface() const override { return HashChangeEventInterfaceType; }
66
67 private:
68     HashChangeEvent()
69     {
70     }
71
72     HashChangeEvent(const String& oldURL, const String& newURL)
73         : Event(eventNames().hashchangeEvent, CanBubble::No, IsCancelable::No)
74         , m_oldURL(oldURL)
75         , m_newURL(newURL)
76     {
77     }
78
79     HashChangeEvent(const AtomString& type, const Init& initializer, IsTrusted isTrusted)
80         : Event(type, initializer, isTrusted)
81         , m_oldURL(initializer.oldURL)
82         , m_newURL(initializer.newURL)
83     {
84     }
85
86     String m_oldURL;
87     String m_newURL;
88 };
89
90 } // namespace WebCore