OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights reserv
ed. | 2 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights reserv
ed. |
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) 2008 Alp Toker <alp@atoker.com> | 5 * Copyright (C) 2008 Alp Toker <alp@atoker.com> |
6 * Copyright (C) Research In Motion Limited 2009. All rights reserved. | 6 * Copyright (C) Research In Motion Limited 2009. All rights reserved. |
7 * Copyright (C) 2011 Kris Jordan <krisjordan@gmail.com> | 7 * Copyright (C) 2011 Kris Jordan <krisjordan@gmail.com> |
8 * | 8 * |
9 * Redistribution and use in source and binary forms, with or without | 9 * Redistribution and use in source and binary forms, with or without |
10 * modification, are permitted provided that the following conditions | 10 * modification, are permitted provided that the following conditions |
(...skipping 1106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1117 } | 1117 } |
1118 | 1118 |
1119 void FrameLoader::setupForReplace() | 1119 void FrameLoader::setupForReplace() |
1120 { | 1120 { |
1121 setState(FrameStateProvisional); | 1121 setState(FrameStateProvisional); |
1122 m_provisionalDocumentLoader = m_documentLoader; | 1122 m_provisionalDocumentLoader = m_documentLoader; |
1123 m_documentLoader = 0; | 1123 m_documentLoader = 0; |
1124 detachChildren(); | 1124 detachChildren(); |
1125 } | 1125 } |
1126 | 1126 |
1127 // This is a hack to allow keep navigation to http/https feeds working. To remov
e this | |
1128 // we need to introduce new API akin to registerURLSchemeAsLocal, that registers
a | |
1129 // protocols navigation policy. | |
1130 static bool isFeedWithNestedProtocolInHTTPFamily(const KURL& url) | |
1131 { | |
1132 const String& urlString = url.string(); | |
1133 if (!urlString.startsWith("feed", false)) | |
1134 return false; | |
1135 | |
1136 return urlString.startsWith("feed://", false) | |
1137 || urlString.startsWith("feed:http:", false) || urlString.startsWith("fe
ed:https:", false) | |
1138 || urlString.startsWith("feeds:http:", false) || urlString.startsWith("f
eeds:https:", false) | |
1139 || urlString.startsWith("feedsearch:http:", false) || urlString.startsWi
th("feedsearch:https:", false); | |
1140 } | |
1141 | |
1142 void FrameLoader::loadFrameRequest(const FrameLoadRequest& request, bool lockHis
tory, bool lockBackForwardList, | 1127 void FrameLoader::loadFrameRequest(const FrameLoadRequest& request, bool lockHis
tory, bool lockBackForwardList, |
1143 PassRefPtr<Event> event, PassRefPtr<FormState> formState, ReferrerPolicy ref
errerPolicy) | 1128 PassRefPtr<Event> event, PassRefPtr<FormState> formState, ReferrerPolicy ref
errerPolicy) |
1144 { | 1129 { |
1145 // Protect frame from getting blown away inside dispatchBeforeLoadEvent in l
oadWithDocumentLoader. | 1130 // Protect frame from getting blown away inside dispatchBeforeLoadEvent in l
oadWithDocumentLoader. |
1146 RefPtr<Frame> protect(m_frame); | 1131 RefPtr<Frame> protect(m_frame); |
1147 | 1132 |
1148 KURL url = request.resourceRequest().url(); | 1133 KURL url = request.resourceRequest().url(); |
1149 | 1134 |
1150 ASSERT(m_frame->document()); | 1135 ASSERT(m_frame->document()); |
1151 // FIXME: Should we move the isFeedWithNestedProtocolInHTTPFamily logic insi
de SecurityOrigin::canDisplay? | 1136 if (!request.requester()->canDisplay(url)) { |
1152 if (!isFeedWithNestedProtocolInHTTPFamily(url) && !request.requester()->canD
isplay(url)) { | |
1153 reportLocalLoadFailed(m_frame, url.string()); | 1137 reportLocalLoadFailed(m_frame, url.string()); |
1154 return; | 1138 return; |
1155 } | 1139 } |
1156 | 1140 |
1157 String referrer; | 1141 String referrer; |
1158 String argsReferrer = request.resourceRequest().httpReferrer(); | 1142 String argsReferrer = request.resourceRequest().httpReferrer(); |
1159 if (!argsReferrer.isEmpty()) | 1143 if (!argsReferrer.isEmpty()) |
1160 referrer = argsReferrer; | 1144 referrer = argsReferrer; |
1161 else | 1145 else |
1162 referrer = m_outgoingReferrer; | 1146 referrer = m_outgoingReferrer; |
(...skipping 2168 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3331 windowRect.setHeight(features.height + (windowRect.height() - pageSize.h
eight())); | 3315 windowRect.setHeight(features.height + (windowRect.height() - pageSize.h
eight())); |
3332 page->chrome()->setWindowRect(windowRect); | 3316 page->chrome()->setWindowRect(windowRect); |
3333 | 3317 |
3334 page->chrome()->show(); | 3318 page->chrome()->show(); |
3335 | 3319 |
3336 created = true; | 3320 created = true; |
3337 return frame; | 3321 return frame; |
3338 } | 3322 } |
3339 | 3323 |
3340 } // namespace WebCore | 3324 } // namespace WebCore |
OLD | NEW |