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

Side by Side Diff: third_party/WebKit/Source/web/WebViewImpl.cpp

Issue 1922793002: Move deferred commit logic from WebViewImpl to Document. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 8 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
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2011, 2012 Google Inc. All rights reserved. 2 * Copyright (C) 2011, 2012 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 3968 matching lines...) Expand 10 before | Expand all | Expand 10 after
3979 3979
3980 // Give the visual viewport's scroll layer its initial size. 3980 // Give the visual viewport's scroll layer its initial size.
3981 page()->frameHost().visualViewport().mainFrameDidChangeSize(); 3981 page()->frameHost().visualViewport().mainFrameDidChangeSize();
3982 3982
3983 // Make sure link highlight from previous page is cleared. 3983 // Make sure link highlight from previous page is cleared.
3984 m_linkHighlights.clear(); 3984 m_linkHighlights.clear();
3985 endActiveFlingAnimation(); 3985 endActiveFlingAnimation();
3986 m_userGestureObserved = false; 3986 m_userGestureObserved = false;
3987 } 3987 }
3988 3988
3989 void WebViewImpl::mainFrameDocumentElementAvailable()
3990 {
3991 // This check is necessary to avoid provisional frames
3992 // (see WebLocalFrame::createProvisional) leaking
3993 // their calls into WebViewImpl.
3994 // See http://crbug.com/578349 for details.
3995 // TODO(dcheng): Remove this when the provisional frames
3996 // bite the dust.
3997 if (!mainFrameImpl())
3998 return;
3999
4000 // For non-HTML documents the willInsertBody notification won't happen
4001 // so we resume as soon as we have a document element. Even for XHTML
4002 // documents there may never be a <body> (since the parser won't always
4003 // insert one), so we resume here too. That does mean XHTML documents make
4004 // frames when there's only a <head>, but such documents are pretty rare.
4005 if (!mainFrameImpl()->frame()->document()->isHTMLDocument())
4006 resumeTreeViewCommitsIfRenderingReady();
4007 }
4008
4009 void WebViewImpl::willInsertMainFrameDocumentBody()
4010 {
4011 // This check is necessary to avoid provisional frames
4012 // (see WebLocalFrame::createProvisional) leaking
4013 // their calls into WebViewImpl.
4014 // See http://crbug.com/578349 for details.
4015 // TODO(dcheng): Remove this when the provisional frames
4016 // bite the dust.
4017 if (!mainFrameImpl())
4018 return;
4019
4020 // If we get to the <body> try to resume commits since we should have conten t
4021 // to paint now.
4022 // TODO(esprehn): Is this really optimal? We might start producing frames
4023 // for very little content, should we wait for some heuristic like
4024 // isVisuallyNonEmpty() ?
4025 resumeTreeViewCommitsIfRenderingReady();
4026 }
4027
4028 void WebViewImpl::didFinishMainFrameDocumentLoad()
4029 {
4030 resumeTreeViewCommitsIfRenderingReady();
4031 }
4032
4033 void WebViewImpl::didRemoveAllPendingStylesheetsInMainFrameDocument()
4034 {
4035 Document& document = *mainFrameImpl()->frame()->document();
4036
4037 // For HTML if we have no more stylesheets to load and we're past the body
4038 // tag, we should have something to paint so resume.
4039 if (document.isHTMLDocument() && !document.body())
4040 return;
4041
4042 // For non-HTML there is no body so resume as soon as the sheets are loaded.
4043 if (!document.isHTMLDocument() && !document.documentElement())
4044 return;
4045
4046 resumeTreeViewCommitsIfRenderingReady();
4047 }
4048
4049 void WebViewImpl::resumeTreeViewCommitsIfRenderingReady()
4050 {
4051 LocalFrame* frame = mainFrameImpl()->frame();
4052 if (!frame->loader().stateMachine()->committedFirstRealDocumentLoad())
4053 return;
4054 if (!frame->document()->isRenderingReady())
4055 return;
4056 if (m_layerTreeView) {
4057 m_layerTreeView->setDeferCommits(false);
4058 m_layerTreeView->setNeedsBeginFrame();
4059 }
4060 }
4061
4062 void WebViewImpl::postLayoutResize(WebLocalFrameImpl* webframe) 3989 void WebViewImpl::postLayoutResize(WebLocalFrameImpl* webframe)
4063 { 3990 {
4064 FrameView* view = webframe->frame()->view(); 3991 FrameView* view = webframe->frame()->view();
4065 if (webframe == mainFrame()) 3992 if (webframe == mainFrame())
4066 view->resize(mainFrameSize()); 3993 view->resize(mainFrameSize());
4067 else 3994 else
4068 view->resize(webframe->frameView()->size()); 3995 view->resize(webframe->frameView()->size());
4069 } 3996 }
4070 3997
4071 void WebViewImpl::layoutUpdated(WebLocalFrameImpl* webframe) 3998 void WebViewImpl::layoutUpdated(WebLocalFrameImpl* webframe)
(...skipping 498 matching lines...) Expand 10 before | Expand all | Expand 10 after
4570 { 4497 {
4571 // TODO(oshima): Investigate if this should return the ScreenInfo's scale fa ctor rather than 4498 // TODO(oshima): Investigate if this should return the ScreenInfo's scale fa ctor rather than
4572 // page's scale factor, which can be 1 in use-zoom-for-dsf mode. 4499 // page's scale factor, which can be 1 in use-zoom-for-dsf mode.
4573 if (!page()) 4500 if (!page())
4574 return 1; 4501 return 1;
4575 4502
4576 return page()->deviceScaleFactor(); 4503 return page()->deviceScaleFactor();
4577 } 4504 }
4578 4505
4579 } // namespace blink 4506 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698