OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights reserved. | 2 * Copyright (C) 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights reserved. |
3 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) | 3 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) |
4 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t
orchmobile.com/) | 4 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t
orchmobile.com/) |
5 * Copyright (C) 2009 Adam Barth. All rights reserved. | 5 * Copyright (C) 2009 Adam Barth. All rights reserved. |
6 * | 6 * |
7 * Redistribution and use in source and binary forms, with or without | 7 * Redistribution and use in source and binary forms, with or without |
8 * modification, are permitted provided that the following conditions | 8 * modification, are permitted provided that the following conditions |
9 * are met: | 9 * are met: |
10 * | 10 * |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
81 virtual ~ScheduledNavigation() { } | 81 virtual ~ScheduledNavigation() { } |
82 | 82 |
83 virtual void fire(LocalFrame*) = 0; | 83 virtual void fire(LocalFrame*) = 0; |
84 | 84 |
85 virtual bool shouldStartTimer(LocalFrame*) { return true; } | 85 virtual bool shouldStartTimer(LocalFrame*) { return true; } |
86 | 86 |
87 double delay() const { return m_delay; } | 87 double delay() const { return m_delay; } |
88 Document* originDocument() const { return m_originDocument.get(); } | 88 Document* originDocument() const { return m_originDocument.get(); } |
89 bool replacesCurrentItem() const { return m_replacesCurrentItem; } | 89 bool replacesCurrentItem() const { return m_replacesCurrentItem; } |
90 bool isLocationChange() const { return m_isLocationChange; } | 90 bool isLocationChange() const { return m_isLocationChange; } |
| 91 virtual bool isRedirect() const { return false; } |
91 PassOwnPtr<UserGestureIndicator> createUserGestureIndicator() | 92 PassOwnPtr<UserGestureIndicator> createUserGestureIndicator() |
92 { | 93 { |
93 if (m_wasUserGesture && m_userGestureToken) | 94 if (m_wasUserGesture && m_userGestureToken) |
94 return adoptPtr(new UserGestureIndicator(m_userGestureToken)); | 95 return adoptPtr(new UserGestureIndicator(m_userGestureToken)); |
95 return adoptPtr(new UserGestureIndicator(DefinitelyNotProcessingUserGest
ure)); | 96 return adoptPtr(new UserGestureIndicator(DefinitelyNotProcessingUserGest
ure)); |
96 } | 97 } |
97 | 98 |
98 DEFINE_INLINE_VIRTUAL_TRACE() | 99 DEFINE_INLINE_VIRTUAL_TRACE() |
99 { | 100 { |
100 visitor->trace(m_originDocument); | 101 visitor->trace(m_originDocument); |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
151 void fire(LocalFrame* frame) override | 152 void fire(LocalFrame* frame) override |
152 { | 153 { |
153 OwnPtr<UserGestureIndicator> gestureIndicator = createUserGestureIndicat
or(); | 154 OwnPtr<UserGestureIndicator> gestureIndicator = createUserGestureIndicat
or(); |
154 FrameLoadRequest request(originDocument(), url(), "_self"); | 155 FrameLoadRequest request(originDocument(), url(), "_self"); |
155 request.setReplacesCurrentItem(replacesCurrentItem()); | 156 request.setReplacesCurrentItem(replacesCurrentItem()); |
156 if (equalIgnoringFragmentIdentifier(frame->document()->url(), request.re
sourceRequest().url())) | 157 if (equalIgnoringFragmentIdentifier(frame->document()->url(), request.re
sourceRequest().url())) |
157 request.resourceRequest().setCachePolicy(ReloadIgnoringCacheData); | 158 request.resourceRequest().setCachePolicy(ReloadIgnoringCacheData); |
158 request.setClientRedirect(ClientRedirect); | 159 request.setClientRedirect(ClientRedirect); |
159 frame->loader().load(request); | 160 frame->loader().load(request); |
160 } | 161 } |
| 162 |
| 163 bool isRedirect() const override { return true; } |
| 164 |
161 private: | 165 private: |
162 ScheduledRedirect(double delay, Document* originDocument, const String& url,
bool replacesCurrentItem) | 166 ScheduledRedirect(double delay, Document* originDocument, const String& url,
bool replacesCurrentItem) |
163 : ScheduledURLNavigation(delay, originDocument, url, replacesCurrentItem
, false) | 167 : ScheduledURLNavigation(delay, originDocument, url, replacesCurrentItem
, false) |
164 { | 168 { |
165 clearUserGesture(); | 169 clearUserGesture(); |
166 } | 170 } |
167 }; | 171 }; |
168 | 172 |
169 class ScheduledLocationChange final : public ScheduledURLNavigation { | 173 class ScheduledLocationChange final : public ScheduledURLNavigation { |
170 public: | 174 public: |
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
272 | 276 |
273 NavigationScheduler::~NavigationScheduler() | 277 NavigationScheduler::~NavigationScheduler() |
274 { | 278 { |
275 } | 279 } |
276 | 280 |
277 bool NavigationScheduler::locationChangePending() | 281 bool NavigationScheduler::locationChangePending() |
278 { | 282 { |
279 return m_redirect && m_redirect->isLocationChange(); | 283 return m_redirect && m_redirect->isLocationChange(); |
280 } | 284 } |
281 | 285 |
| 286 bool NavigationScheduler::isRedirect() const |
| 287 { |
| 288 return m_redirect && m_redirect->isRedirect(); |
| 289 } |
| 290 |
282 inline bool NavigationScheduler::shouldScheduleReload() const | 291 inline bool NavigationScheduler::shouldScheduleReload() const |
283 { | 292 { |
284 return m_frame->page() && isFrameNavigationAllowed() && NavigationDisablerFo
rBeforeUnload::isNavigationAllowed(); | 293 return m_frame->page() && isFrameNavigationAllowed() && NavigationDisablerFo
rBeforeUnload::isNavigationAllowed(); |
285 } | 294 } |
286 | 295 |
287 inline bool NavigationScheduler::shouldScheduleNavigation(const String& url) con
st | 296 inline bool NavigationScheduler::shouldScheduleNavigation(const String& url) con
st |
288 { | 297 { |
289 return m_frame->page() && isFrameNavigationAllowed() && (protocolIsJavaScrip
t(url) || NavigationDisablerForBeforeUnload::isNavigationAllowed()); | 298 return m_frame->page() && isFrameNavigationAllowed() && (protocolIsJavaScrip
t(url) || NavigationDisablerForBeforeUnload::isNavigationAllowed()); |
290 } | 299 } |
291 | 300 |
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
424 m_redirect.clear(); | 433 m_redirect.clear(); |
425 } | 434 } |
426 | 435 |
427 DEFINE_TRACE(NavigationScheduler) | 436 DEFINE_TRACE(NavigationScheduler) |
428 { | 437 { |
429 visitor->trace(m_frame); | 438 visitor->trace(m_frame); |
430 visitor->trace(m_redirect); | 439 visitor->trace(m_redirect); |
431 } | 440 } |
432 | 441 |
433 } // namespace blink | 442 } // namespace blink |
OLD | NEW |