forked from chromium/chromium
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathnavigation_context_impl.mm
187 lines (146 loc) · 5.04 KB
/
navigation_context_impl.mm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#import "ios/web/web_state/navigation_context_impl.h"
#import <Foundation/Foundation.h>
#include "base/memory/ptr_util.h"
#include "net/http/http_response_headers.h"
#if !defined(__has_feature) || !__has_feature(objc_arc)
#error "This file requires ARC support."
#endif
namespace web {
namespace {
// Returns a new unique ID for a NavigationContext during construction.
// The returned ID is guaranteed to be nonzero (zero is the "no ID" indicator).
int64_t CreateUniqueContextId() {
static int64_t unique_id_counter = 0;
return ++unique_id_counter;
}
} // namespace
// static
std::unique_ptr<NavigationContextImpl>
NavigationContextImpl::CreateNavigationContext(
WebState* web_state,
const GURL& url,
bool has_user_gesture,
ui::PageTransition page_transition,
bool is_renderer_initiated) {
std::unique_ptr<NavigationContextImpl> result(
new NavigationContextImpl(web_state, url, has_user_gesture,
page_transition, is_renderer_initiated));
return result;
}
#ifndef NDEBUG
NSString* NavigationContextImpl::GetDescription() const {
return [NSString
stringWithFormat:
@"web::WebState: %ld, url: %s, "
"is_same_document: %@, error: %@ is_loading_error_page: %@",
reinterpret_cast<long>(web_state_), url_.spec().c_str(),
is_same_document_ ? @"true" : @"false", error_,
is_loading_error_page_ ? @"true" : @"false"];
}
#endif // NDEBUG
WebState* NavigationContextImpl::GetWebState() {
return web_state_;
}
int64_t NavigationContextImpl::GetNavigationId() const {
return navigation_id_;
}
const GURL& NavigationContextImpl::GetUrl() const {
return url_;
}
bool NavigationContextImpl::HasUserGesture() const {
return has_user_gesture_;
}
ui::PageTransition NavigationContextImpl::GetPageTransition() const {
return page_transition_;
}
bool NavigationContextImpl::IsSameDocument() const {
return is_same_document_;
}
bool NavigationContextImpl::HasCommitted() const {
return has_committed_;
}
bool NavigationContextImpl::IsDownload() const {
return is_download_;
}
bool NavigationContextImpl::IsPost() const {
return is_post_;
}
NSError* NavigationContextImpl::GetError() const {
return error_;
}
net::HttpResponseHeaders* NavigationContextImpl::GetResponseHeaders() const {
return response_headers_.get();
}
bool NavigationContextImpl::IsRendererInitiated() const {
return is_renderer_initiated_;
}
void NavigationContextImpl::SetUrl(const GURL& url) {
url_ = url;
}
void NavigationContextImpl::SetIsSameDocument(bool is_same_document) {
is_same_document_ = is_same_document;
}
void NavigationContextImpl::SetHasCommitted(bool has_committed) {
has_committed_ = has_committed;
}
void NavigationContextImpl::SetIsDownload(bool is_download) {
is_download_ = is_download;
}
void NavigationContextImpl::SetIsPost(bool is_post) {
is_post_ = is_post;
}
void NavigationContextImpl::SetError(NSError* error) {
error_ = error;
}
void NavigationContextImpl::SetResponseHeaders(
const scoped_refptr<net::HttpResponseHeaders>& response_headers) {
response_headers_ = response_headers;
}
void NavigationContextImpl::SetIsRendererInitiated(bool is_renderer_initiated) {
is_renderer_initiated_ = is_renderer_initiated;
}
int NavigationContextImpl::GetNavigationItemUniqueID() const {
return navigation_item_unique_id_;
}
void NavigationContextImpl::SetNavigationItemUniqueID(int unique_id) {
navigation_item_unique_id_ = unique_id;
}
void NavigationContextImpl::SetWKNavigationType(
WKNavigationType wk_navigation_type) {
wk_navigation_type_ = wk_navigation_type;
}
WKNavigationType NavigationContextImpl::GetWKNavigationType() const {
return wk_navigation_type_;
}
bool NavigationContextImpl::IsLoadingErrorPage() const {
return is_loading_error_page_;
}
void NavigationContextImpl::SetLoadingErrorPage(bool is_loading_error_page) {
is_loading_error_page_ = is_loading_error_page;
}
bool NavigationContextImpl::IsNativeContentPresented() const {
return is_native_content_presented_;
}
void NavigationContextImpl::SetIsNativeContentPresented(
bool is_native_content_presented) {
is_native_content_presented_ = is_native_content_presented;
}
NavigationContextImpl::NavigationContextImpl(WebState* web_state,
const GURL& url,
bool has_user_gesture,
ui::PageTransition page_transition,
bool is_renderer_initiated)
: web_state_(web_state),
navigation_id_(CreateUniqueContextId()),
url_(url),
has_user_gesture_(has_user_gesture),
page_transition_(page_transition),
is_same_document_(false),
error_(nil),
response_headers_(nullptr),
is_renderer_initiated_(is_renderer_initiated) {}
NavigationContextImpl::~NavigationContextImpl() = default;
} // namespace web