| 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 1518 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1529 return false; | 1529 return false; |
| 1530 return true; | 1530 return true; |
| 1531 } | 1531 } |
| 1532 | 1532 |
| 1533 void Document::scheduleLayoutTreeUpdate() | 1533 void Document::scheduleLayoutTreeUpdate() |
| 1534 { | 1534 { |
| 1535 ASSERT(!hasPendingStyleRecalc()); | 1535 ASSERT(!hasPendingStyleRecalc()); |
| 1536 ASSERT(shouldScheduleLayoutTreeUpdate()); | 1536 ASSERT(shouldScheduleLayoutTreeUpdate()); |
| 1537 ASSERT(needsLayoutTreeUpdate()); | 1537 ASSERT(needsLayoutTreeUpdate()); |
| 1538 | 1538 |
| 1539 if (!view()->shouldThrottleRendering()) | 1539 if (!view()->canThrottleRendering()) |
| 1540 page()->animator().scheduleVisualUpdate(frame()); | 1540 page()->animator().scheduleVisualUpdate(frame()); |
| 1541 m_lifecycle.ensureStateAtMost(DocumentLifecycle::VisualUpdatePending); | 1541 m_lifecycle.ensureStateAtMost(DocumentLifecycle::VisualUpdatePending); |
| 1542 | 1542 |
| 1543 TRACE_EVENT_INSTANT1(TRACE_DISABLED_BY_DEFAULT("devtools.timeline"), "Schedu
leStyleRecalculation", TRACE_EVENT_SCOPE_THREAD, "data", InspectorRecalculateSty
lesEvent::data(frame())); | 1543 TRACE_EVENT_INSTANT1(TRACE_DISABLED_BY_DEFAULT("devtools.timeline"), "Schedu
leStyleRecalculation", TRACE_EVENT_SCOPE_THREAD, "data", InspectorRecalculateSty
lesEvent::data(frame())); |
| 1544 InspectorInstrumentation::didScheduleStyleRecalculation(this); | 1544 InspectorInstrumentation::didScheduleStyleRecalculation(this); |
| 1545 | 1545 |
| 1546 ++m_styleVersion; | 1546 ++m_styleVersion; |
| 1547 } | 1547 } |
| 1548 | 1548 |
| 1549 bool Document::hasPendingForcedStyleRecalc() const | 1549 bool Document::hasPendingForcedStyleRecalc() const |
| (...skipping 254 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1804 TRACE_EVENT_END1("blink,devtools.timeline", "UpdateLayoutTree", "elementCoun
t", elementCount); | 1804 TRACE_EVENT_END1("blink,devtools.timeline", "UpdateLayoutTree", "elementCoun
t", elementCount); |
| 1805 InspectorInstrumentation::didRecalculateStyle(cookie, elementCount); | 1805 InspectorInstrumentation::didRecalculateStyle(cookie, elementCount); |
| 1806 | 1806 |
| 1807 #if ENABLE(ASSERT) | 1807 #if ENABLE(ASSERT) |
| 1808 assertLayoutTreeUpdated(*this); | 1808 assertLayoutTreeUpdated(*this); |
| 1809 #endif | 1809 #endif |
| 1810 } | 1810 } |
| 1811 | 1811 |
| 1812 void Document::updateStyle(StyleRecalcChange change) | 1812 void Document::updateStyle(StyleRecalcChange change) |
| 1813 { | 1813 { |
| 1814 if (view()->shouldThrottleRendering()) | 1814 ASSERT(!view()->shouldThrottleRendering()); |
| 1815 return; | |
| 1816 | |
| 1817 TRACE_EVENT_BEGIN0("blink,blink_style", "Document::updateStyle"); | 1815 TRACE_EVENT_BEGIN0("blink,blink_style", "Document::updateStyle"); |
| 1818 unsigned initialElementCount = styleEngine().styleForElementCount(); | 1816 unsigned initialElementCount = styleEngine().styleForElementCount(); |
| 1819 | 1817 |
| 1820 HTMLFrameOwnerElement::UpdateSuspendScope suspendWidgetHierarchyUpdates; | 1818 HTMLFrameOwnerElement::UpdateSuspendScope suspendWidgetHierarchyUpdates; |
| 1821 m_lifecycle.advanceTo(DocumentLifecycle::InStyleRecalc); | 1819 m_lifecycle.advanceTo(DocumentLifecycle::InStyleRecalc); |
| 1822 | 1820 |
| 1823 NthIndexCache nthIndexCache(*this); | 1821 NthIndexCache nthIndexCache(*this); |
| 1824 | 1822 |
| 1825 if (styleChangeType() >= SubtreeStyleChange) | 1823 if (styleChangeType() >= SubtreeStyleChange) |
| 1826 change = Force; | 1824 change = Force; |
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1910 return true; | 1908 return true; |
| 1911 } | 1909 } |
| 1912 return false; | 1910 return false; |
| 1913 } | 1911 } |
| 1914 | 1912 |
| 1915 void Document::updateLayoutTreeForNodeIfNeeded(Node* node) | 1913 void Document::updateLayoutTreeForNodeIfNeeded(Node* node) |
| 1916 { | 1914 { |
| 1917 ASSERT(node); | 1915 ASSERT(node); |
| 1918 if (!needsLayoutTreeUpdateForNode(*node)) | 1916 if (!needsLayoutTreeUpdateForNode(*node)) |
| 1919 return; | 1917 return; |
| 1920 DocumentLifecycle::PreventThrottlingScope preventThrottling(lifecycle()); | |
| 1921 updateLayoutTreeIfNeeded(); | 1918 updateLayoutTreeIfNeeded(); |
| 1922 } | 1919 } |
| 1923 | 1920 |
| 1924 void Document::updateLayout() | 1921 void Document::updateLayout() |
| 1925 { | 1922 { |
| 1926 ASSERT(isMainThread()); | 1923 ASSERT(isMainThread()); |
| 1927 | 1924 |
| 1928 ScriptForbiddenScope forbidScript; | 1925 ScriptForbiddenScope forbidScript; |
| 1929 | 1926 |
| 1930 RefPtrWillBeRawPtr<FrameView> frameView = view(); | 1927 RefPtrWillBeRawPtr<FrameView> frameView = view(); |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1995 | 1992 |
| 1996 // FIXME: This is a bad idea and needs to be removed eventually. | 1993 // FIXME: This is a bad idea and needs to be removed eventually. |
| 1997 // Other browsers load stylesheets before they continue parsing the web page. | 1994 // Other browsers load stylesheets before they continue parsing the web page. |
| 1998 // Since we don't, we can run JavaScript code that needs answers before the | 1995 // Since we don't, we can run JavaScript code that needs answers before the |
| 1999 // stylesheets are loaded. Doing a layout ignoring the pending stylesheets | 1996 // stylesheets are loaded. Doing a layout ignoring the pending stylesheets |
| 2000 // lets us get reasonable answers. The long term solution to this problem is | 1997 // lets us get reasonable answers. The long term solution to this problem is |
| 2001 // to instead suspend JavaScript execution. | 1998 // to instead suspend JavaScript execution. |
| 2002 void Document::updateLayoutTreeIgnorePendingStylesheets() | 1999 void Document::updateLayoutTreeIgnorePendingStylesheets() |
| 2003 { | 2000 { |
| 2004 StyleEngine::IgnoringPendingStylesheet ignoring(styleEngine()); | 2001 StyleEngine::IgnoringPendingStylesheet ignoring(styleEngine()); |
| 2005 DocumentLifecycle::PreventThrottlingScope preventThrottling(lifecycle()); | |
| 2006 | 2002 |
| 2007 if (styleEngine().hasPendingSheets()) { | 2003 if (styleEngine().hasPendingSheets()) { |
| 2008 // FIXME: We are willing to attempt to suppress painting with outdated s
tyle info only once. | 2004 // FIXME: We are willing to attempt to suppress painting with outdated s
tyle info only once. |
| 2009 // Our assumption is that it would be dangerous to try to stop it a seco
nd time, after page | 2005 // Our assumption is that it would be dangerous to try to stop it a seco
nd time, after page |
| 2010 // content has already been loaded and displayed with accurate style inf
ormation. (Our | 2006 // content has already been loaded and displayed with accurate style inf
ormation. (Our |
| 2011 // suppression involves blanking the whole page at the moment. If it wer
e more refined, we | 2007 // suppression involves blanking the whole page at the moment. If it wer
e more refined, we |
| 2012 // might be able to do something better.) It's worth noting though that
this entire method | 2008 // might be able to do something better.) It's worth noting though that
this entire method |
| 2013 // is a hack, since what we really want to do is suspend JS instead of d
oing a layout with | 2009 // is a hack, since what we really want to do is suspend JS instead of d
oing a layout with |
| 2014 // inaccurate information. | 2010 // inaccurate information. |
| 2015 HTMLElement* bodyElement = body(); | 2011 HTMLElement* bodyElement = body(); |
| 2016 if (bodyElement && !bodyElement->layoutObject() && m_pendingSheetLayout
== NoLayoutWithPendingSheets) { | 2012 if (bodyElement && !bodyElement->layoutObject() && m_pendingSheetLayout
== NoLayoutWithPendingSheets) { |
| 2017 m_pendingSheetLayout = DidLayoutWithPendingSheets; | 2013 m_pendingSheetLayout = DidLayoutWithPendingSheets; |
| 2018 styleResolverChanged(); | 2014 styleResolverChanged(); |
| 2019 } else if (m_hasNodesWithPlaceholderStyle) { | 2015 } else if (m_hasNodesWithPlaceholderStyle) { |
| 2020 // If new nodes have been added or style recalc has been done with s
tyle sheets still | 2016 // If new nodes have been added or style recalc has been done with s
tyle sheets still |
| 2021 // pending, some nodes may not have had their real style calculated
yet. Normally this | 2017 // pending, some nodes may not have had their real style calculated
yet. Normally this |
| 2022 // gets cleaned when style sheets arrive but here we need up-to-date
style immediately. | 2018 // gets cleaned when style sheets arrive but here we need up-to-date
style immediately. |
| 2023 updateLayoutTree(Force); | 2019 updateLayoutTree(Force); |
| 2024 } | 2020 } |
| 2025 } | 2021 } |
| 2026 updateLayoutTreeIfNeeded(); | 2022 updateLayoutTreeIfNeeded(); |
| 2027 } | 2023 } |
| 2028 | 2024 |
| 2029 void Document::updateLayoutIgnorePendingStylesheets(Document::RunPostLayoutTasks
runPostLayoutTasks) | 2025 void Document::updateLayoutIgnorePendingStylesheets(Document::RunPostLayoutTasks
runPostLayoutTasks) |
| 2030 { | 2026 { |
| 2031 DocumentLifecycle::PreventThrottlingScope preventThrottling(lifecycle()); | |
| 2032 | |
| 2033 updateLayoutTreeIgnorePendingStylesheets(); | 2027 updateLayoutTreeIgnorePendingStylesheets(); |
| 2034 updateLayout(); | 2028 updateLayout(); |
| 2035 | 2029 |
| 2036 if (runPostLayoutTasks == RunPostLayoutTasksSynchronously && view()) | 2030 if (runPostLayoutTasks == RunPostLayoutTasksSynchronously && view()) |
| 2037 view()->flushAnyPendingPostLayoutTasks(); | 2031 view()->flushAnyPendingPostLayoutTasks(); |
| 2038 } | 2032 } |
| 2039 | 2033 |
| 2040 PassRefPtr<ComputedStyle> Document::styleForElementIgnoringPendingStylesheets(El
ement* element) | 2034 PassRefPtr<ComputedStyle> Document::styleForElementIgnoringPendingStylesheets(El
ement* element) |
| 2041 { | 2035 { |
| 2042 ASSERT_ARG(element, element->document() == this); | 2036 ASSERT_ARG(element, element->document() == this); |
| (...skipping 3908 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5951 #ifndef NDEBUG | 5945 #ifndef NDEBUG |
| 5952 using namespace blink; | 5946 using namespace blink; |
| 5953 void showLiveDocumentInstances() | 5947 void showLiveDocumentInstances() |
| 5954 { | 5948 { |
| 5955 Document::WeakDocumentSet& set = Document::liveDocumentSet(); | 5949 Document::WeakDocumentSet& set = Document::liveDocumentSet(); |
| 5956 fprintf(stderr, "There are %u documents currently alive:\n", set.size()); | 5950 fprintf(stderr, "There are %u documents currently alive:\n", set.size()); |
| 5957 for (Document* document : set) | 5951 for (Document* document : set) |
| 5958 fprintf(stderr, "- Document %p URL: %s\n", document, document->url().str
ing().utf8().data()); | 5952 fprintf(stderr, "- Document %p URL: %s\n", document, document->url().str
ing().utf8().data()); |
| 5959 } | 5953 } |
| 5960 #endif | 5954 #endif |
| OLD | NEW |