daa06bcc9ee300a98c34322a7bcdc76f5b5d912f
[WebKit-https.git] / Source / WebCore / replay / CapturingInputCursor.cpp
1 /*
2  * Copyright (C) 2013 University of Washington. All rights reserved.
3  * Copyright (C) 2014 Apple Inc. All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  *
9  * 1.  Redistributions of source code must retain the above copyright
10  *     notice, this list of conditions and the following disclaimer.
11  * 2.  Redistributions in binary form must reproduce the above copyright
12  *     notice, this list of conditions and the following disclaimer in the
13  *     documentation and/or other materials provided with the distribution.
14  *
15  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
16  * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
17  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
18  * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
19  * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
20  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
21  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
22  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
23  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
25  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26  */
27
28 #include "config.h"
29 #include "CapturingInputCursor.h"
30
31 #if ENABLE(WEB_REPLAY)
32
33 #include "Logging.h"
34 #include "SegmentedInputStorage.h"
35
36 namespace WebCore {
37
38 CapturingInputCursor::CapturingInputCursor(SegmentedInputStorage& storage)
39     : m_storage(storage)
40     , m_withinEventLoopInputExtent(false)
41 {
42     LOG(WebReplay, "%-30sCreated capture cursor=%p.\n", "[ReplayController]", this);
43 }
44
45 CapturingInputCursor::~CapturingInputCursor()
46 {
47     LOG(WebReplay, "%-30sDestroyed capture cursor=%p.\n", "[ReplayController]", this);
48 }
49
50 PassRefPtr<CapturingInputCursor> CapturingInputCursor::create(SegmentedInputStorage& storage)
51 {
52     return adoptRef(new CapturingInputCursor(storage));
53 }
54
55 void CapturingInputCursor::storeInput(std::unique_ptr<NondeterministicInputBase> input)
56 {
57     ASSERT(input);
58     m_storage.store(WTF::move(input));
59 }
60
61 NondeterministicInputBase* CapturingInputCursor::loadInput(InputQueue, const AtomicString&)
62 {
63     // Can't load inputs from capturing cursor.
64     ASSERT_NOT_REACHED();
65     return nullptr;
66 }
67
68 NondeterministicInputBase* CapturingInputCursor::uncheckedLoadInput(InputQueue)
69 {
70     // Can't load inputs from capturing cursor.
71     ASSERT_NOT_REACHED();
72     return nullptr;
73 }
74
75 void CapturingInputCursor::setWithinEventLoopInputExtent(bool withinEventLoopInputExtent)
76 {
77     // We cannot enter more than one extent at a time, since they represent a single run loop.
78     ASSERT(withinEventLoopInputExtent != m_withinEventLoopInputExtent);
79     m_withinEventLoopInputExtent = withinEventLoopInputExtent;
80 }
81
82 }; // namespace WebCore
83
84 #endif // ENABLE(WEB_REPLAY)