[iOS] Replace "node assistance" terminology in WebKit with "focused element"
[WebKit-https.git] / Source / WebKit / UIProcess / WebNavigationState.cpp
1 /*
2  * Copyright (C) 2015 Apple Inc. All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  * 1. Redistributions of source code must retain the above copyright
8  *    notice, this list of conditions and the following disclaimer.
9  * 2. Redistributions in binary form must reproduce the above copyright
10  *    notice, this list of conditions and the following disclaimer in the
11  *    documentation and/or other materials provided with the distribution.
12  *
13  * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
14  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
15  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
17  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
18  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
19  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
20  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
21  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
22  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
23  * THE POSSIBILITY OF SUCH DAMAGE.
24  */
25
26 #include "config.h"
27 #include "WebNavigationState.h"
28
29 #include "APINavigation.h"
30 #include "WebPageProxy.h"
31 #include <WebCore/ResourceRequest.h>
32
33 namespace WebKit {
34 using namespace WebCore;
35
36 WebNavigationState::WebNavigationState()
37 {
38 }
39
40 WebNavigationState::~WebNavigationState()
41 {
42 }
43
44 Ref<API::Navigation> WebNavigationState::createLoadRequestNavigation(ResourceRequest&& request, WebBackForwardListItem* currentItem)
45 {
46     auto navigation = API::Navigation::create(*this, WTFMove(request), currentItem);
47
48     m_navigations.set(navigation->navigationID(), navigation.ptr());
49
50     return navigation;
51 }
52
53 Ref<API::Navigation> WebNavigationState::createBackForwardNavigation(WebBackForwardListItem& targetItem, WebBackForwardListItem* currentItem, FrameLoadType frameLoadType)
54 {
55     auto navigation = API::Navigation::create(*this, targetItem, currentItem, frameLoadType);
56
57     m_navigations.set(navigation->navigationID(), navigation.ptr());
58
59     return navigation;
60 }
61
62 Ref<API::Navigation> WebNavigationState::createReloadNavigation()
63 {
64     auto navigation = API::Navigation::create(*this);
65
66     m_navigations.set(navigation->navigationID(), navigation.ptr());
67
68     return navigation;
69 }
70
71 Ref<API::Navigation> WebNavigationState::createLoadDataNavigation(std::unique_ptr<API::SubstituteData>&& substituteData)
72 {
73     auto navigation = API::Navigation::create(*this, WTFMove(substituteData));
74
75     m_navigations.set(navigation->navigationID(), navigation.ptr());
76
77     return navigation;
78 }
79
80 API::Navigation* WebNavigationState::navigation(uint64_t navigationID)
81 {
82     ASSERT(navigationID);
83     ASSERT(m_navigations.contains(navigationID));
84
85     return m_navigations.get(navigationID);
86 }
87
88 RefPtr<API::Navigation> WebNavigationState::takeNavigation(uint64_t navigationID)
89 {
90     ASSERT(navigationID);
91     ASSERT(m_navigations.contains(navigationID));
92     
93     return m_navigations.take(navigationID);
94 }
95
96 void WebNavigationState::didDestroyNavigation(uint64_t navigationID)
97 {
98     ASSERT(navigationID);
99
100     m_navigations.remove(navigationID);
101 }
102
103 void WebNavigationState::clearAllNavigations()
104 {
105     m_navigations.clear();
106 }
107
108 } // namespace WebKit