OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2008, 2010 Apple Inc. All rights reserved. | 2 * Copyright (C) 2008, 2010 Apple Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
6 * are met: | 6 * are met: |
7 * | 7 * |
8 * 1. Redistributions of source code must retain the above copyright | 8 * 1. Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * 2. Redistributions in binary form must reproduce the above copyright | 10 * 2. Redistributions in binary form must reproduce the above copyright |
(...skipping 11 matching lines...) Expand all Loading... |
22 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | 22 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
23 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | 23 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND |
24 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 24 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | 25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
27 */ | 27 */ |
28 | 28 |
29 #include "sky/engine/config.h" | 29 #include "sky/engine/config.h" |
30 #include "sky/engine/core/frame/Location.h" | 30 #include "sky/engine/core/frame/Location.h" |
31 | 31 |
32 #include "sky/engine/bindings/core/v8/ExceptionState.h" | 32 #include "sky/engine/bindings2/exception_state.h" |
33 #include "sky/engine/core/dom/DOMURLUtilsReadOnly.h" | 33 #include "sky/engine/core/dom/DOMURLUtilsReadOnly.h" |
34 #include "sky/engine/core/dom/Document.h" | 34 #include "sky/engine/core/dom/Document.h" |
35 #include "sky/engine/core/dom/ExceptionCode.h" | 35 #include "sky/engine/core/dom/ExceptionCode.h" |
36 #include "sky/engine/core/frame/LocalDOMWindow.h" | 36 #include "sky/engine/core/frame/LocalDOMWindow.h" |
37 #include "sky/engine/core/frame/LocalFrame.h" | 37 #include "sky/engine/core/frame/LocalFrame.h" |
38 #include "sky/engine/platform/weborigin/KURL.h" | 38 #include "sky/engine/platform/weborigin/KURL.h" |
39 | 39 |
40 namespace blink { | 40 namespace blink { |
41 | 41 |
42 Location::Location(LocalFrame* frame) | 42 Location::Location(LocalFrame* frame) |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
113 } | 113 } |
114 | 114 |
115 String Location::hash() const | 115 String Location::hash() const |
116 { | 116 { |
117 if (!m_frame) | 117 if (!m_frame) |
118 return String(); | 118 return String(); |
119 | 119 |
120 return DOMURLUtilsReadOnly::hash(url()); | 120 return DOMURLUtilsReadOnly::hash(url()); |
121 } | 121 } |
122 | 122 |
123 void Location::setHref(LocalDOMWindow* callingWindow, LocalDOMWindow* enteredWin
dow, const String& url) | 123 void Location::setHref(const String& url) |
124 { | 124 { |
125 if (!m_frame) | 125 if (!m_frame) |
126 return; | 126 return; |
127 setLocation(url, callingWindow, enteredWindow); | 127 setLocation(url); |
128 } | 128 } |
129 | 129 |
130 void Location::setProtocol(LocalDOMWindow* callingWindow, LocalDOMWindow* entere
dWindow, const String& protocol, ExceptionState& exceptionState) | 130 void Location::setProtocol(const String& protocol, ExceptionState& exceptionStat
e) |
131 { | 131 { |
132 if (!m_frame) | 132 if (!m_frame) |
133 return; | 133 return; |
134 KURL url = m_frame->document()->url(); | 134 KURL url = m_frame->document()->url(); |
135 if (!url.setProtocol(protocol)) { | 135 if (!url.setProtocol(protocol)) { |
136 exceptionState.throwDOMException(SyntaxError, "'" + protocol + "' is an
invalid protocol."); | 136 exceptionState.ThrowDOMException(SyntaxError, "'" + protocol + "' is an
invalid protocol."); |
137 return; | 137 return; |
138 } | 138 } |
139 setLocation(url.string(), callingWindow, enteredWindow); | 139 setLocation(url.string()); |
140 } | 140 } |
141 | 141 |
142 void Location::setHost(LocalDOMWindow* callingWindow, LocalDOMWindow* enteredWin
dow, const String& host) | 142 void Location::setHost(const String& host) |
143 { | 143 { |
144 if (!m_frame) | 144 if (!m_frame) |
145 return; | 145 return; |
146 KURL url = m_frame->document()->url(); | 146 KURL url = m_frame->document()->url(); |
147 url.setHostAndPort(host); | 147 url.setHostAndPort(host); |
148 setLocation(url.string(), callingWindow, enteredWindow); | 148 setLocation(url.string()); |
149 } | 149 } |
150 | 150 |
151 void Location::setHostname(LocalDOMWindow* callingWindow, LocalDOMWindow* entere
dWindow, const String& hostname) | 151 void Location::setHostname(const String& hostname) |
152 { | 152 { |
153 if (!m_frame) | 153 if (!m_frame) |
154 return; | 154 return; |
155 KURL url = m_frame->document()->url(); | 155 KURL url = m_frame->document()->url(); |
156 url.setHost(hostname); | 156 url.setHost(hostname); |
157 setLocation(url.string(), callingWindow, enteredWindow); | 157 setLocation(url.string()); |
158 } | 158 } |
159 | 159 |
160 void Location::setPort(LocalDOMWindow* callingWindow, LocalDOMWindow* enteredWin
dow, const String& portString) | 160 void Location::setPort(const String& portString) |
161 { | 161 { |
162 if (!m_frame) | 162 if (!m_frame) |
163 return; | 163 return; |
164 KURL url = m_frame->document()->url(); | 164 KURL url = m_frame->document()->url(); |
165 url.setPort(portString); | 165 url.setPort(portString); |
166 setLocation(url.string(), callingWindow, enteredWindow); | 166 setLocation(url.string()); |
167 } | 167 } |
168 | 168 |
169 void Location::setPathname(LocalDOMWindow* callingWindow, LocalDOMWindow* entere
dWindow, const String& pathname) | 169 void Location::setPathname(const String& pathname) |
170 { | 170 { |
171 if (!m_frame) | 171 if (!m_frame) |
172 return; | 172 return; |
173 KURL url = m_frame->document()->url(); | 173 KURL url = m_frame->document()->url(); |
174 url.setPath(pathname); | 174 url.setPath(pathname); |
175 setLocation(url.string(), callingWindow, enteredWindow); | 175 setLocation(url.string()); |
176 } | 176 } |
177 | 177 |
178 void Location::setSearch(LocalDOMWindow* callingWindow, LocalDOMWindow* enteredW
indow, const String& search) | 178 void Location::setSearch(const String& search) |
179 { | 179 { |
180 if (!m_frame) | 180 if (!m_frame) |
181 return; | 181 return; |
182 KURL url = m_frame->document()->url(); | 182 KURL url = m_frame->document()->url(); |
183 url.setQuery(search); | 183 url.setQuery(search); |
184 setLocation(url.string(), callingWindow, enteredWindow); | 184 setLocation(url.string()); |
185 } | 185 } |
186 | 186 |
187 void Location::setHash(LocalDOMWindow* callingWindow, LocalDOMWindow* enteredWin
dow, const String& hash) | 187 void Location::setHash(const String& hash) |
188 { | 188 { |
189 if (!m_frame) | 189 if (!m_frame) |
190 return; | 190 return; |
191 KURL url = m_frame->document()->url(); | 191 KURL url = m_frame->document()->url(); |
192 String oldFragmentIdentifier = url.fragmentIdentifier(); | 192 String oldFragmentIdentifier = url.fragmentIdentifier(); |
193 String newFragmentIdentifier = hash; | 193 String newFragmentIdentifier = hash; |
194 if (hash[0] == '#') | 194 if (hash[0] == '#') |
195 newFragmentIdentifier = hash.substring(1); | 195 newFragmentIdentifier = hash.substring(1); |
196 url.setFragmentIdentifier(newFragmentIdentifier); | 196 url.setFragmentIdentifier(newFragmentIdentifier); |
197 // Note that by parsing the URL and *then* comparing fragments, we are | 197 // Note that by parsing the URL and *then* comparing fragments, we are |
198 // comparing fragments post-canonicalization, and so this handles the | 198 // comparing fragments post-canonicalization, and so this handles the |
199 // cases where fragment identifiers are ignored or invalid. | 199 // cases where fragment identifiers are ignored or invalid. |
200 if (equalIgnoringNullity(oldFragmentIdentifier, url.fragmentIdentifier())) | 200 if (equalIgnoringNullity(oldFragmentIdentifier, url.fragmentIdentifier())) |
201 return; | 201 return; |
202 setLocation(url.string(), callingWindow, enteredWindow); | 202 setLocation(url.string()); |
203 } | 203 } |
204 | 204 |
205 void Location::assign(LocalDOMWindow* callingWindow, LocalDOMWindow* enteredWind
ow, const String& url) | 205 void Location::assign(const String& url) |
206 { | 206 { |
207 if (!m_frame) | 207 if (!m_frame) |
208 return; | 208 return; |
209 setLocation(url, callingWindow, enteredWindow); | 209 setLocation(url); |
210 } | 210 } |
211 | 211 |
212 void Location::replace(LocalDOMWindow* callingWindow, LocalDOMWindow* enteredWin
dow, const String& url) | 212 void Location::replace(const String& url) |
213 { | 213 { |
214 if (!m_frame) | 214 if (!m_frame) |
215 return; | 215 return; |
216 // Note: We call LocalDOMWindow::setLocation directly here because replace()
always operates on the current frame. | 216 // Note: We call LocalDOMWindow::setLocation directly here because replace()
always operates on the current frame. |
217 m_frame->domWindow()->setLocation(url, callingWindow, enteredWindow, LockHis
toryAndBackForwardList); | 217 m_frame->domWindow()->setLocation(url, LockHistoryAndBackForwardList); |
218 } | 218 } |
219 | 219 |
220 void Location::reload(LocalDOMWindow* callingWindow) | 220 void Location::reload() |
221 { | 221 { |
222 // FIXME(sky): remove. | 222 // FIXME(sky): remove. |
223 } | 223 } |
224 | 224 |
225 void Location::setLocation(const String& url, LocalDOMWindow* callingWindow, Loc
alDOMWindow* enteredWindow) | 225 void Location::setLocation(const String& url) |
226 { | 226 { |
227 ASSERT(m_frame); | 227 ASSERT(m_frame); |
228 m_frame->domWindow()->setLocation(url, callingWindow, enteredWindow); | 228 m_frame->domWindow()->setLocation(url); |
229 } | 229 } |
230 | 230 |
231 } // namespace blink | 231 } // namespace blink |
OLD | NEW |