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

Side by Side Diff: third_party/WebKit/Source/core/paint/ViewPainter.cpp

Issue 1934753002: NOT FOR COMMIT: sample CL to debug white flashes. Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 7 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 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "core/paint/ViewPainter.h" 5 #include "core/paint/ViewPainter.h"
6 6
7 #include "core/frame/FrameView.h" 7 #include "core/frame/FrameView.h"
8 #include "core/frame/Settings.h" 8 #include "core/frame/Settings.h"
9 #include "core/layout/LayoutBox.h" 9 #include "core/layout/LayoutBox.h"
10 #include "core/layout/LayoutView.h" 10 #include "core/layout/LayoutView.h"
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
122 if (!baseBackgroundColor.alpha() && shouldClearCanvas) 122 if (!baseBackgroundColor.alpha() && shouldClearCanvas)
123 shouldDrawBackgroundInSeparateBuffer = false; 123 shouldDrawBackgroundInSeparateBuffer = false;
124 124
125 if (shouldDrawBackgroundInSeparateBuffer) { 125 if (shouldDrawBackgroundInSeparateBuffer) {
126 if (baseBackgroundColor.alpha()) 126 if (baseBackgroundColor.alpha())
127 context.fillRect(backgroundRect, baseBackgroundColor, shouldClearCan vas ? SkXfermode::kSrc_Mode : SkXfermode::kSrcOver_Mode); 127 context.fillRect(backgroundRect, baseBackgroundColor, shouldClearCan vas ? SkXfermode::kSrc_Mode : SkXfermode::kSrcOver_Mode);
128 context.beginLayer(); 128 context.beginLayer();
129 } 129 }
130 130
131 Color combinedBackgroundColor = shouldDrawBackgroundInSeparateBuffer ? rootB ackgroundColor : baseBackgroundColor.blend(rootBackgroundColor); 131 Color combinedBackgroundColor = shouldDrawBackgroundInSeparateBuffer ? rootB ackgroundColor : baseBackgroundColor.blend(rootBackgroundColor);
132 LOG(ERROR) << "Document background color: " << combinedBackgroundColor.seria lized();
132 if (combinedBackgroundColor.alpha()) { 133 if (combinedBackgroundColor.alpha()) {
133 if (!combinedBackgroundColor.hasAlpha() && RuntimeEnabledFeatures::slimm ingPaintV2Enabled()) 134 if (!combinedBackgroundColor.hasAlpha() && RuntimeEnabledFeatures::slimm ingPaintV2Enabled())
134 recorder.setKnownToBeOpaque(); 135 recorder.setKnownToBeOpaque();
135 context.fillRect(backgroundRect, combinedBackgroundColor, (shouldDrawBac kgroundInSeparateBuffer || shouldClearCanvas) ? SkXfermode::kSrc_Mode : SkXfermo de::kSrcOver_Mode); 136 context.fillRect(backgroundRect, combinedBackgroundColor, (shouldDrawBac kgroundInSeparateBuffer || shouldClearCanvas) ? SkXfermode::kSrc_Mode : SkXfermo de::kSrcOver_Mode);
136 } else if (shouldClearCanvas && !shouldDrawBackgroundInSeparateBuffer) { 137 } else if (shouldClearCanvas && !shouldDrawBackgroundInSeparateBuffer) {
137 context.fillRect(backgroundRect, Color(), SkXfermode::kClear_Mode); 138 context.fillRect(backgroundRect, Color(), SkXfermode::kClear_Mode);
138 } 139 }
139 140
140 for (auto it = reversedPaintList.rbegin(); it != reversedPaintList.rend(); + +it) { 141 for (auto it = reversedPaintList.rbegin(); it != reversedPaintList.rend(); + +it) {
141 ASSERT((*it)->clip() == BorderFillBox); 142 ASSERT((*it)->clip() == BorderFillBox);
142 143
143 bool shouldPaintInViewportSpace = (*it)->attachment() == FixedBackground Attachment; 144 bool shouldPaintInViewportSpace = (*it)->attachment() == FixedBackground Attachment;
144 if (shouldPaintInViewportSpace) { 145 if (shouldPaintInViewportSpace) {
145 BoxPainter::paintFillLayer(m_layoutView, paintInfo, Color(), **it, L ayoutRect(LayoutRect::infiniteIntRect()), BackgroundBleedNone); 146 BoxPainter::paintFillLayer(m_layoutView, paintInfo, Color(), **it, L ayoutRect(LayoutRect::infiniteIntRect()), BackgroundBleedNone);
146 } else { 147 } else {
147 context.save(); 148 context.save();
148 // TODO(trchen): We should be able to handle 3D-transformed root 149 // TODO(trchen): We should be able to handle 3D-transformed root
149 // background with slimming paint by using transform display items. 150 // background with slimming paint by using transform display items.
150 context.concatCTM(transform.toAffineTransform()); 151 context.concatCTM(transform.toAffineTransform());
151 BoxPainter::paintFillLayer(m_layoutView, paintInfo, Color(), **it, L ayoutRect(paintRect), BackgroundBleedNone); 152 BoxPainter::paintFillLayer(m_layoutView, paintInfo, Color(), **it, L ayoutRect(paintRect), BackgroundBleedNone);
152 context.restore(); 153 context.restore();
153 } 154 }
154 } 155 }
155 156
156 if (shouldDrawBackgroundInSeparateBuffer) 157 if (shouldDrawBackgroundInSeparateBuffer)
157 context.endLayer(); 158 context.endLayer();
158 } 159 }
159 160
160 } // namespace blink 161 } // namespace blink
OLDNEW
« no previous file with comments | « content/browser/renderer_host/render_widget_host_view_base.cc ('k') | third_party/WebKit/Source/web/ChromeClientImpl.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698