Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(199)

Side by Side Diff: Source/core/dom/Document.cpp

Issue 156943004: Remove minimum layout delay (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « Source/core/dom/Document.h ('k') | Source/core/frame/Frame.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 2414 matching lines...) Expand 10 before | Expand all | Expand 10 after
2425 } 2425 }
2426 2426
2427 // Make sure both the initial layout and reflow happen after the onload 2427 // Make sure both the initial layout and reflow happen after the onload
2428 // fires. This will improve onload scores, and other browsers do it. 2428 // fires. This will improve onload scores, and other browsers do it.
2429 // If they wanna cheat, we can too. -dwh 2429 // If they wanna cheat, we can too. -dwh
2430 2430
2431 if (frame()->navigationScheduler().locationChangePending() && elapsedTime() < cLayoutScheduleThreshold) { 2431 if (frame()->navigationScheduler().locationChangePending() && elapsedTime() < cLayoutScheduleThreshold) {
2432 // Just bail out. Before or during the onload we were shifted to another page. 2432 // Just bail out. Before or during the onload we were shifted to another page.
2433 // The old i-Bench suite does this. When this happens don't bother paint ing or laying out. 2433 // The old i-Bench suite does this. When this happens don't bother paint ing or laying out.
2434 m_loadEventProgress = LoadEventCompleted; 2434 m_loadEventProgress = LoadEventCompleted;
2435 view()->unscheduleRelayout();
2436 return; 2435 return;
2437 } 2436 }
2438 2437
2439 // We used to force a synchronous display and flush here. This really isn't 2438 // We used to force a synchronous display and flush here. This really isn't
2440 // necessary and can in fact be actively harmful if pages are loading at a r ate of > 60fps 2439 // necessary and can in fact be actively harmful if pages are loading at a r ate of > 60fps
2441 // (if your platform is syncing flushes and limiting them to 60fps). 2440 // (if your platform is syncing flushes and limiting them to 60fps).
2442 m_overMinimumLayoutThreshold = true; 2441 m_overMinimumLayoutThreshold = true;
2443 if (!ownerElement() || (ownerElement()->renderer() && !ownerElement()->rende rer()->needsLayout())) { 2442 if (!ownerElement() || (ownerElement()->renderer() && !ownerElement()->rende rer()->needsLayout())) {
2444 updateStyleIfNeeded(); 2443 updateStyleIfNeeded();
2445 2444
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
2578 // 2577 //
2579 // (a) Only schedule a layout once the stylesheets are loaded. 2578 // (a) Only schedule a layout once the stylesheets are loaded.
2580 // (b) Only schedule layout once we have a body element. 2579 // (b) Only schedule layout once we have a body element.
2581 2580
2582 return (haveStylesheetsLoaded() && body()) 2581 return (haveStylesheetsLoaded() && body())
2583 || (documentElement() && !documentElement()->hasTagName(htmlTag)); 2582 || (documentElement() && !documentElement()->hasTagName(htmlTag));
2584 } 2583 }
2585 2584
2586 bool Document::shouldParserYieldAgressivelyBeforeScriptExecution() 2585 bool Document::shouldParserYieldAgressivelyBeforeScriptExecution()
2587 { 2586 {
2588 return view() && view()->layoutPending() && !minimumLayoutDelay(); 2587 return view() && view()->layoutPending();
2589 }
2590
2591 int Document::minimumLayoutDelay()
2592 {
2593 if (m_overMinimumLayoutThreshold)
2594 return 0;
2595
2596 int elapsed = elapsedTime();
2597 m_overMinimumLayoutThreshold = elapsed > cLayoutScheduleThreshold;
2598
2599 // We'll want to schedule the timer to fire at the minimum layout threshold.
2600 return max(0, cLayoutScheduleThreshold - elapsed);
2601 } 2588 }
2602 2589
2603 int Document::elapsedTime() const 2590 int Document::elapsedTime() const
2604 { 2591 {
2605 return static_cast<int>((currentTime() - m_startTime) * 1000); 2592 return static_cast<int>((currentTime() - m_startTime) * 1000);
2606 } 2593 }
2607 2594
2608 void Document::write(const SegmentedString& text, Document* ownerDocument) 2595 void Document::write(const SegmentedString& text, Document* ownerDocument)
2609 { 2596 {
2610 NestingLevelIncrementer nestingLevelIncrementer(m_writeRecursionDepth); 2597 NestingLevelIncrementer nestingLevelIncrementer(m_writeRecursionDepth);
(...skipping 2808 matching lines...) Expand 10 before | Expand all | Expand 10 after
5419 void Document::defaultEventHandler(Event* event) 5406 void Document::defaultEventHandler(Event* event)
5420 { 5407 {
5421 if (frame() && frame()->remotePlatformLayer()) { 5408 if (frame() && frame()->remotePlatformLayer()) {
5422 frame()->chromeClient().forwardInputEvent(this, event); 5409 frame()->chromeClient().forwardInputEvent(this, event);
5423 return; 5410 return;
5424 } 5411 }
5425 Node::defaultEventHandler(event); 5412 Node::defaultEventHandler(event);
5426 } 5413 }
5427 5414
5428 } // namespace WebCore 5415 } // namespace WebCore
OLDNEW
« no previous file with comments | « Source/core/dom/Document.h ('k') | Source/core/frame/Frame.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698