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 257 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
268 | 268 |
269 m_frame->editor().clear(); | 269 m_frame->editor().clear(); |
270 m_frame->document()->cancelParsing(); | 270 m_frame->document()->cancelParsing(); |
271 m_frame->document()->prepareForDestruction(); | 271 m_frame->document()->prepareForDestruction(); |
272 m_frame->document()->removeFocusedElementOfSubtree(m_frame->document()); | 272 m_frame->document()->removeFocusedElementOfSubtree(m_frame->document()); |
273 | 273 |
274 // Do this after detaching the document so that the unload event works. | 274 // Do this after detaching the document so that the unload event works. |
275 if (options & ClearWindowProperties) { | 275 if (options & ClearWindowProperties) { |
276 InspectorInstrumentation::frameWindowDiscarded(m_frame, m_frame->domWind
ow()); | 276 InspectorInstrumentation::frameWindowDiscarded(m_frame, m_frame->domWind
ow()); |
277 m_frame->domWindow()->reset(); | 277 m_frame->domWindow()->reset(); |
278 m_frame->script()->clearWindowShell(); | 278 m_frame->script().clearWindowShell(); |
279 } | 279 } |
280 | 280 |
281 m_frame->selection().prepareForDestruction(); | 281 m_frame->selection().prepareForDestruction(); |
282 m_frame->eventHandler()->clear(); | 282 m_frame->eventHandler()->clear(); |
283 if (m_frame->view()) | 283 if (m_frame->view()) |
284 m_frame->view()->clear(); | 284 m_frame->view()->clear(); |
285 | 285 |
286 if (options & ClearWindowObject) { | 286 if (options & ClearWindowObject) { |
287 // Do not drop the DOMWindow (and Document) before the ScriptController
and view are cleared | 287 // Do not drop the DOMWindow (and Document) before the ScriptController
and view are cleared |
288 // as some destructors might still try to access the document. | 288 // as some destructors might still try to access the document. |
289 m_frame->setDOMWindow(0); | 289 m_frame->setDOMWindow(0); |
290 } | 290 } |
291 | 291 |
292 m_containsPlugins = false; | 292 m_containsPlugins = false; |
293 | 293 |
294 if (options & ClearScriptObjects) | 294 if (options & ClearScriptObjects) |
295 m_frame->script()->clearScriptObjects(); | 295 m_frame->script().clearScriptObjects(); |
296 | 296 |
297 m_frame->script()->enableEval(); | 297 m_frame->script().enableEval(); |
298 | 298 |
299 m_frame->navigationScheduler()->clear(); | 299 m_frame->navigationScheduler()->clear(); |
300 | 300 |
301 m_checkTimer.stop(); | 301 m_checkTimer.stop(); |
302 m_shouldCallCheckCompleted = false; | 302 m_shouldCallCheckCompleted = false; |
303 | 303 |
304 if (m_stateMachine.isDisplayingInitialEmptyDocument()) | 304 if (m_stateMachine.isDisplayingInitialEmptyDocument()) |
305 m_stateMachine.advanceTo(FrameLoaderStateMachine::CommittedFirstRealLoad
); | 305 m_stateMachine.advanceTo(FrameLoaderStateMachine::CommittedFirstRealLoad
); |
306 } | 306 } |
307 | 307 |
(...skipping 370 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
678 return FrameLoadTypeStandard; | 678 return FrameLoadTypeStandard; |
679 } | 679 } |
680 | 680 |
681 bool FrameLoader::prepareRequestForThisFrame(FrameLoadRequest& request) | 681 bool FrameLoader::prepareRequestForThisFrame(FrameLoadRequest& request) |
682 { | 682 { |
683 // If no SecurityOrigin was specified, skip security checks and assume the c
aller has fully initialized the FrameLoadRequest. | 683 // If no SecurityOrigin was specified, skip security checks and assume the c
aller has fully initialized the FrameLoadRequest. |
684 if (!request.requester()) | 684 if (!request.requester()) |
685 return true; | 685 return true; |
686 | 686 |
687 KURL url = request.resourceRequest().url(); | 687 KURL url = request.resourceRequest().url(); |
688 if (m_frame->script()->executeScriptIfJavaScriptURL(url)) | 688 if (m_frame->script().executeScriptIfJavaScriptURL(url)) |
689 return false; | 689 return false; |
690 | 690 |
691 if (!request.requester()->canDisplay(url)) { | 691 if (!request.requester()->canDisplay(url)) { |
692 reportLocalLoadFailed(m_frame, url.elidedString()); | 692 reportLocalLoadFailed(m_frame, url.elidedString()); |
693 return false; | 693 return false; |
694 } | 694 } |
695 | 695 |
696 if (request.requester() && !request.formState() && request.frameName().isEmp
ty()) | 696 if (request.requester() && !request.formState() && request.frameName().isEmp
ty()) |
697 request.setFrameName(m_frame->document()->baseTarget()); | 697 request.setFrameName(m_frame->document()->baseTarget()); |
698 | 698 |
(...skipping 868 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1567 history()->setCurrentItem(currentItem.get()); | 1567 history()->setCurrentItem(currentItem.get()); |
1568 } | 1568 } |
1569 | 1569 |
1570 void FrameLoader::dispatchDocumentElementAvailable() | 1570 void FrameLoader::dispatchDocumentElementAvailable() |
1571 { | 1571 { |
1572 m_client->documentElementAvailable(); | 1572 m_client->documentElementAvailable(); |
1573 } | 1573 } |
1574 | 1574 |
1575 void FrameLoader::dispatchDidClearWindowObjectsInAllWorlds() | 1575 void FrameLoader::dispatchDidClearWindowObjectsInAllWorlds() |
1576 { | 1576 { |
1577 if (!m_frame->script()->canExecuteScripts(NotAboutToExecuteScript)) | 1577 if (!m_frame->script().canExecuteScripts(NotAboutToExecuteScript)) |
1578 return; | 1578 return; |
1579 | 1579 |
1580 Vector<RefPtr<DOMWrapperWorld> > worlds; | 1580 Vector<RefPtr<DOMWrapperWorld> > worlds; |
1581 DOMWrapperWorld::getAllWorlds(worlds); | 1581 DOMWrapperWorld::getAllWorlds(worlds); |
1582 for (size_t i = 0; i < worlds.size(); ++i) | 1582 for (size_t i = 0; i < worlds.size(); ++i) |
1583 dispatchDidClearWindowObjectInWorld(worlds[i].get()); | 1583 dispatchDidClearWindowObjectInWorld(worlds[i].get()); |
1584 } | 1584 } |
1585 | 1585 |
1586 void FrameLoader::dispatchDidClearWindowObjectInWorld(DOMWrapperWorld* world) | 1586 void FrameLoader::dispatchDidClearWindowObjectInWorld(DOMWrapperWorld* world) |
1587 { | 1587 { |
1588 if (!m_frame->script()->canExecuteScripts(NotAboutToExecuteScript) || !m_fra
me->script()->existingWindowShell(world)) | 1588 if (!m_frame->script().canExecuteScripts(NotAboutToExecuteScript) || !m_fram
e->script().existingWindowShell(world)) |
1589 return; | 1589 return; |
1590 | 1590 |
1591 m_client->dispatchDidClearWindowObjectInWorld(world); | 1591 m_client->dispatchDidClearWindowObjectInWorld(world); |
1592 | 1592 |
1593 if (Page* page = m_frame->page()) | 1593 if (Page* page = m_frame->page()) |
1594 page->inspectorController().didClearWindowObjectInWorld(m_frame, world); | 1594 page->inspectorController().didClearWindowObjectInWorld(m_frame, world); |
1595 | 1595 |
1596 InspectorInstrumentation::didClearWindowObjectInWorld(m_frame, world); | 1596 InspectorInstrumentation::didClearWindowObjectInWorld(m_frame, world); |
1597 } | 1597 } |
1598 | 1598 |
1599 SandboxFlags FrameLoader::effectiveSandboxFlags() const | 1599 SandboxFlags FrameLoader::effectiveSandboxFlags() const |
1600 { | 1600 { |
1601 SandboxFlags flags = m_forcedSandboxFlags; | 1601 SandboxFlags flags = m_forcedSandboxFlags; |
1602 if (Frame* parentFrame = m_frame->tree().parent()) | 1602 if (Frame* parentFrame = m_frame->tree().parent()) |
1603 flags |= parentFrame->document()->sandboxFlags(); | 1603 flags |= parentFrame->document()->sandboxFlags(); |
1604 if (HTMLFrameOwnerElement* ownerElement = m_frame->ownerElement()) | 1604 if (HTMLFrameOwnerElement* ownerElement = m_frame->ownerElement()) |
1605 flags |= ownerElement->sandboxFlags(); | 1605 flags |= ownerElement->sandboxFlags(); |
1606 return flags; | 1606 return flags; |
1607 } | 1607 } |
1608 | 1608 |
1609 } // namespace WebCore | 1609 } // namespace WebCore |
OLD | NEW |