| 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 * Copyright (C) 2011 Google Inc. All rights reserved. | 8 * Copyright (C) 2011 Google Inc. All rights reserved. |
| 9 * | 9 * |
| 10 * Redistribution and use in source and binary forms, with or without | 10 * Redistribution and use in source and binary forms, with or without |
| (...skipping 712 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 723 return true; | 723 return true; |
| 724 // FIXME: This case is a workaround for the fact that ctrl+clicking a form s
ubmission incorrectly | 724 // FIXME: This case is a workaround for the fact that ctrl+clicking a form s
ubmission incorrectly |
| 725 // sends as a GET rather than a POST if it creates a new window in a differe
nt process. | 725 // sends as a GET rather than a POST if it creates a new window in a differe
nt process. |
| 726 return request.formState() && action.shouldOpenInNewWindow(); | 726 return request.formState() && action.shouldOpenInNewWindow(); |
| 727 } | 727 } |
| 728 | 728 |
| 729 void FrameLoader::load(const FrameLoadRequest& passedRequest) | 729 void FrameLoader::load(const FrameLoadRequest& passedRequest) |
| 730 { | 730 { |
| 731 ASSERT(m_frame->document()); | 731 ASSERT(m_frame->document()); |
| 732 | 732 |
| 733 // Protect frame from getting blown away inside dispatchBeforeLoadEvent in l
oadWithDocumentLoader. | |
| 734 RefPtr<LocalFrame> protect(m_frame); | 733 RefPtr<LocalFrame> protect(m_frame); |
| 735 | 734 |
| 736 if (m_inStopAllLoaders) | 735 if (m_inStopAllLoaders) |
| 737 return; | 736 return; |
| 738 | 737 |
| 739 FrameLoadRequest request(passedRequest); | 738 FrameLoadRequest request(passedRequest); |
| 740 if (!prepareRequestForThisFrame(request)) | 739 if (!prepareRequestForThisFrame(request)) |
| 741 return; | 740 return; |
| 742 | 741 |
| 743 RefPtr<LocalFrame> targetFrame = request.formState() ? 0 : findFrameForNavig
ation(AtomicString(request.frameName()), request.formState() ? request.formState
()->sourceDocument() : m_frame->document()); | 742 RefPtr<LocalFrame> targetFrame = request.formState() ? 0 : findFrameForNavig
ation(AtomicString(request.frameName()), request.formState() ? request.formState
()->sourceDocument() : m_frame->document()); |
| (...skipping 531 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1275 } | 1274 } |
| 1276 return shouldClose; | 1275 return shouldClose; |
| 1277 } | 1276 } |
| 1278 | 1277 |
| 1279 void FrameLoader::loadWithNavigationAction(const NavigationAction& action, Frame
LoadType type, PassRefPtr<FormState> formState, const SubstituteData& substitute
Data, ClientRedirectPolicy clientRedirect, const AtomicString& overrideEncoding) | 1278 void FrameLoader::loadWithNavigationAction(const NavigationAction& action, Frame
LoadType type, PassRefPtr<FormState> formState, const SubstituteData& substitute
Data, ClientRedirectPolicy clientRedirect, const AtomicString& overrideEncoding) |
| 1280 { | 1279 { |
| 1281 ASSERT(m_client->hasWebView()); | 1280 ASSERT(m_client->hasWebView()); |
| 1282 if (m_frame->document()->pageDismissalEventBeingDispatched() != Document::No
Dismissal) | 1281 if (m_frame->document()->pageDismissalEventBeingDispatched() != Document::No
Dismissal) |
| 1283 return; | 1282 return; |
| 1284 | 1283 |
| 1285 // We skip dispatching the beforeload event on the frame owner if we've alre
ady committed a real | |
| 1286 // document load because the event would leak subsequent activity by the fra
me which the parent | |
| 1287 // frame isn't supposed to learn. For example, if the child frame navigated
to a new URL, the | |
| 1288 // parent frame shouldn't learn the URL. | |
| 1289 const ResourceRequest& request = action.resourceRequest(); | 1284 const ResourceRequest& request = action.resourceRequest(); |
| 1290 if (!m_stateMachine.committedFirstRealDocumentLoad() && m_frame->ownerElemen
t() && !m_frame->ownerElement()->dispatchBeforeLoadEvent(request.url().string())
) | |
| 1291 return; | |
| 1292 | |
| 1293 // Dispatching the beforeload event could have blown away the frame. | |
| 1294 if (!m_client) | |
| 1295 return; | |
| 1296 | 1285 |
| 1297 if (!m_stateMachine.startedFirstRealLoad()) | 1286 if (!m_stateMachine.startedFirstRealLoad()) |
| 1298 m_stateMachine.advanceTo(FrameLoaderStateMachine::StartedFirstRealLoad); | 1287 m_stateMachine.advanceTo(FrameLoaderStateMachine::StartedFirstRealLoad); |
| 1299 | 1288 |
| 1300 // The current load should replace the history item if it is the first real | 1289 // The current load should replace the history item if it is the first real |
| 1301 // load of the frame. | 1290 // load of the frame. |
| 1302 bool replacesCurrentHistoryItem = false; | 1291 bool replacesCurrentHistoryItem = false; |
| 1303 if (type == FrameLoadTypeRedirectWithLockedBackForwardList | 1292 if (type == FrameLoadTypeRedirectWithLockedBackForwardList |
| 1304 || !m_stateMachine.committedFirstRealDocumentLoad()) { | 1293 || !m_stateMachine.committedFirstRealDocumentLoad()) { |
| 1305 replacesCurrentHistoryItem = true; | 1294 replacesCurrentHistoryItem = true; |
| (...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1473 { | 1462 { |
| 1474 SandboxFlags flags = m_forcedSandboxFlags; | 1463 SandboxFlags flags = m_forcedSandboxFlags; |
| 1475 if (LocalFrame* parentFrame = m_frame->tree().parent()) | 1464 if (LocalFrame* parentFrame = m_frame->tree().parent()) |
| 1476 flags |= parentFrame->document()->sandboxFlags(); | 1465 flags |= parentFrame->document()->sandboxFlags(); |
| 1477 if (HTMLFrameOwnerElement* ownerElement = m_frame->ownerElement()) | 1466 if (HTMLFrameOwnerElement* ownerElement = m_frame->ownerElement()) |
| 1478 flags |= ownerElement->sandboxFlags(); | 1467 flags |= ownerElement->sandboxFlags(); |
| 1479 return flags; | 1468 return flags; |
| 1480 } | 1469 } |
| 1481 | 1470 |
| 1482 } // namespace WebCore | 1471 } // namespace WebCore |
| OLD | NEW |