OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) |
3 * (C) 1999 Antti Koivisto (koivisto@kde.org) | 3 * (C) 1999 Antti Koivisto (koivisto@kde.org) |
4 * (C) 2001 Dirk Mueller (mueller@kde.org) | 4 * (C) 2001 Dirk Mueller (mueller@kde.org) |
5 * (C) 2006 Alexey Proskuryakov (ap@webkit.org) | 5 * (C) 2006 Alexey Proskuryakov (ap@webkit.org) |
6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2011, 2012 Apple Inc. All r
ights reserved. | 6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2011, 2012 Apple Inc. All r
ights reserved. |
7 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t
orchmobile.com/) | 7 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t
orchmobile.com/) |
8 * Copyright (C) 2008, 2009, 2011, 2012 Google Inc. All rights reserved. | 8 * Copyright (C) 2008, 2009, 2011, 2012 Google Inc. All rights reserved. |
9 * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies) | 9 * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies) |
10 * Copyright (C) Research In Motion Limited 2010-2011. All rights reserved. | 10 * Copyright (C) Research In Motion Limited 2010-2011. All rights reserved. |
(...skipping 2499 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2510 implicitClose(); | 2510 implicitClose(); |
2511 return; | 2511 return; |
2512 } | 2512 } |
2513 | 2513 |
2514 m_frame->loader().checkCompleted(); | 2514 m_frame->loader().checkCompleted(); |
2515 } | 2515 } |
2516 | 2516 |
2517 void Document::implicitClose() | 2517 void Document::implicitClose() |
2518 { | 2518 { |
2519 ASSERT(!inStyleRecalc()); | 2519 ASSERT(!inStyleRecalc()); |
2520 | 2520 if (processingLoadEvent() || !m_parser) |
2521 bool wasLocationChangePending = frame() && frame()->navigationScheduler().lo
cationChangePending(); | 2521 return; |
2522 bool doload = !parsing() && m_parser && !processingLoadEvent() && !wasLocati
onChangePending; | 2522 if (frame() && frame()->navigationScheduler().locationChangePending()) |
2523 | |
2524 // If the load was blocked because of a pending location change and the loca
tion change triggers a same document | |
2525 // navigation, don't fire load events after the same document navigation com
pletes (unless there's an explicit open). | |
2526 m_loadEventProgress = LoadEventTried; | |
2527 | |
2528 if (!doload) | |
2529 return; | 2523 return; |
2530 | 2524 |
2531 // The call to dispatchWindowLoadEvent can detach the LocalDOMWindow and cau
se it (and its | 2525 // The call to dispatchWindowLoadEvent can detach the LocalDOMWindow and cau
se it (and its |
2532 // attached Document) to be destroyed. | 2526 // attached Document) to be destroyed. |
2533 RefPtrWillBeRawPtr<LocalDOMWindow> protectedWindow(this->domWindow()); | 2527 RefPtrWillBeRawPtr<LocalDOMWindow> protectedWindow(this->domWindow()); |
2534 | 2528 |
2535 m_loadEventProgress = LoadEventInProgress; | 2529 m_loadEventProgress = LoadEventInProgress; |
2536 | 2530 |
2537 ScriptableDocumentParser* parser = scriptableDocumentParser(); | 2531 ScriptableDocumentParser* parser = scriptableDocumentParser(); |
2538 m_wellFormed = parser && parser->wellFormed(); | 2532 m_wellFormed = parser && parser->wellFormed(); |
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2646 } | 2640 } |
2647 return false; | 2641 return false; |
2648 } | 2642 } |
2649 | 2643 |
2650 void Document::dispatchUnloadEvents() | 2644 void Document::dispatchUnloadEvents() |
2651 { | 2645 { |
2652 RefPtrWillBeRawPtr<Document> protect(this); | 2646 RefPtrWillBeRawPtr<Document> protect(this); |
2653 if (m_parser) | 2647 if (m_parser) |
2654 m_parser->stopParsing(); | 2648 m_parser->stopParsing(); |
2655 | 2649 |
2656 if (m_loadEventProgress >= LoadEventTried && m_loadEventProgress <= UnloadEv
entInProgress) { | 2650 if (m_loadEventProgress == LoadEventNotRun) |
| 2651 return; |
| 2652 |
| 2653 if (m_loadEventProgress <= UnloadEventInProgress) { |
2657 Element* currentFocusedElement = focusedElement(); | 2654 Element* currentFocusedElement = focusedElement(); |
2658 if (isHTMLInputElement(currentFocusedElement)) | 2655 if (isHTMLInputElement(currentFocusedElement)) |
2659 toHTMLInputElement(*currentFocusedElement).endEditing(); | 2656 toHTMLInputElement(*currentFocusedElement).endEditing(); |
2660 if (m_loadEventProgress < PageHideInProgress) { | 2657 if (m_loadEventProgress < PageHideInProgress) { |
2661 m_loadEventProgress = PageHideInProgress; | 2658 m_loadEventProgress = PageHideInProgress; |
2662 if (LocalDOMWindow* window = domWindow()) | 2659 if (LocalDOMWindow* window = domWindow()) |
2663 window->dispatchEvent(PageTransitionEvent::create(EventTypeNames
::pagehide, false), this); | 2660 window->dispatchEvent(PageTransitionEvent::create(EventTypeNames
::pagehide, false), this); |
2664 if (!m_frame) | 2661 if (!m_frame) |
2665 return; | 2662 return; |
2666 | 2663 |
(...skipping 3183 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5850 using namespace blink; | 5847 using namespace blink; |
5851 void showLiveDocumentInstances() | 5848 void showLiveDocumentInstances() |
5852 { | 5849 { |
5853 WeakDocumentSet& set = liveDocumentSet(); | 5850 WeakDocumentSet& set = liveDocumentSet(); |
5854 fprintf(stderr, "There are %u documents currently alive:\n", set.size()); | 5851 fprintf(stderr, "There are %u documents currently alive:\n", set.size()); |
5855 for (WeakDocumentSet::const_iterator it = set.begin(); it != set.end(); ++it
) { | 5852 for (WeakDocumentSet::const_iterator it = set.begin(); it != set.end(); ++it
) { |
5856 fprintf(stderr, "- Document %p URL: %s\n", *it, (*it)->url().string().ut
f8().data()); | 5853 fprintf(stderr, "- Document %p URL: %s\n", *it, (*it)->url().string().ut
f8().data()); |
5857 } | 5854 } |
5858 } | 5855 } |
5859 #endif | 5856 #endif |
OLD | NEW |