OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights | 2 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights |
3 * reserved. | 3 * reserved. |
4 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) | 4 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) |
5 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. | 5 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. |
6 * (http://www.torchmobile.com/) | 6 * (http://www.torchmobile.com/) |
7 * Copyright (C) 2008 Alp Toker <alp@atoker.com> | 7 * Copyright (C) 2008 Alp Toker <alp@atoker.com> |
8 * Copyright (C) Research In Motion Limited 2009. All rights reserved. | 8 * Copyright (C) Research In Motion Limited 2009. All rights reserved. |
9 * Copyright (C) 2011 Kris Jordan <krisjordan@gmail.com> | 9 * Copyright (C) 2011 Kris Jordan <krisjordan@gmail.com> |
10 * Copyright (C) 2011 Google Inc. All rights reserved. | 10 * Copyright (C) 2011 Google Inc. All rights reserved. |
(...skipping 973 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
984 | 984 |
985 KURL url = request.resourceRequest().url(); | 985 KURL url = request.resourceRequest().url(); |
986 if (m_frame->script().executeScriptIfJavaScriptURL(url, nullptr)) | 986 if (m_frame->script().executeScriptIfJavaScriptURL(url, nullptr)) |
987 return false; | 987 return false; |
988 | 988 |
989 if (!request.originDocument()->getSecurityOrigin()->canDisplay(url)) { | 989 if (!request.originDocument()->getSecurityOrigin()->canDisplay(url)) { |
990 reportLocalLoadFailed(m_frame, url.elidedString()); | 990 reportLocalLoadFailed(m_frame, url.elidedString()); |
991 return false; | 991 return false; |
992 } | 992 } |
993 | 993 |
| 994 if (m_frame->isMainFrame() && |
| 995 !request.originDocument()->getSecurityOrigin()->canNavigateInTopFrame( |
| 996 url)) { |
| 997 reportTopLevelNavigationFailed(m_frame, url.elidedString()); |
| 998 return false; |
| 999 } |
| 1000 |
994 if (!request.form() && request.frameName().isEmpty()) | 1001 if (!request.form() && request.frameName().isEmpty()) |
995 request.setFrameName(m_frame->document()->baseTarget()); | 1002 request.setFrameName(m_frame->document()->baseTarget()); |
996 return true; | 1003 return true; |
997 } | 1004 } |
998 | 1005 |
999 static bool shouldNavigateTargetFrame(NavigationPolicy policy) { | 1006 static bool shouldNavigateTargetFrame(NavigationPolicy policy) { |
1000 switch (policy) { | 1007 switch (policy) { |
1001 case NavigationPolicyCurrentTab: | 1008 case NavigationPolicyCurrentTab: |
1002 return true; | 1009 return true; |
1003 | 1010 |
(...skipping 221 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1225 void FrameLoader::reportLocalLoadFailed(LocalFrame* frame, const String& url) { | 1232 void FrameLoader::reportLocalLoadFailed(LocalFrame* frame, const String& url) { |
1226 DCHECK(!url.isEmpty()); | 1233 DCHECK(!url.isEmpty()); |
1227 if (!frame) | 1234 if (!frame) |
1228 return; | 1235 return; |
1229 | 1236 |
1230 frame->document()->addConsoleMessage( | 1237 frame->document()->addConsoleMessage( |
1231 ConsoleMessage::create(SecurityMessageSource, ErrorMessageLevel, | 1238 ConsoleMessage::create(SecurityMessageSource, ErrorMessageLevel, |
1232 "Not allowed to load local resource: " + url)); | 1239 "Not allowed to load local resource: " + url)); |
1233 } | 1240 } |
1234 | 1241 |
| 1242 void FrameLoader::reportTopLevelNavigationFailed(LocalFrame* frame, |
| 1243 const String& url) { |
| 1244 DCHECK(!url.isEmpty()); |
| 1245 if (!frame) |
| 1246 return; |
| 1247 |
| 1248 frame->document()->addConsoleMessage(ConsoleMessage::create( |
| 1249 SecurityMessageSource, ErrorMessageLevel, |
| 1250 "Not allowed to top-level navigate to resource: " + url)); |
| 1251 } |
| 1252 |
1235 void FrameLoader::stopAllLoaders() { | 1253 void FrameLoader::stopAllLoaders() { |
1236 if (m_frame->document()->pageDismissalEventBeingDispatched() != | 1254 if (m_frame->document()->pageDismissalEventBeingDispatched() != |
1237 Document::NoDismissal) | 1255 Document::NoDismissal) |
1238 return; | 1256 return; |
1239 | 1257 |
1240 // If this method is called from within this method, infinite recursion can | 1258 // If this method is called from within this method, infinite recursion can |
1241 // occur (3442218). Avoid this. | 1259 // occur (3442218). Avoid this. |
1242 if (m_inStopAllLoaders) | 1260 if (m_inStopAllLoaders) |
1243 return; | 1261 return; |
1244 | 1262 |
(...skipping 736 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1981 frameLoadRequest.clientRedirect()); | 1999 frameLoadRequest.clientRedirect()); |
1982 | 2000 |
1983 loader->setLoadType(loadType); | 2001 loader->setLoadType(loadType); |
1984 loader->setNavigationType(navigationType); | 2002 loader->setNavigationType(navigationType); |
1985 loader->setReplacesCurrentHistoryItem(loadType == | 2003 loader->setReplacesCurrentHistoryItem(loadType == |
1986 FrameLoadTypeReplaceCurrentItem); | 2004 FrameLoadTypeReplaceCurrentItem); |
1987 return loader; | 2005 return loader; |
1988 } | 2006 } |
1989 | 2007 |
1990 } // namespace blink | 2008 } // namespace blink |
OLD | NEW |