Index: cc/blink/web_content_layer_impl.cc |
diff --git a/cc/blink/web_content_layer_impl.cc b/cc/blink/web_content_layer_impl.cc |
index d0a4cca4722b57166a92947c8de69e977729a4d7..6dfdad9c160fc56d7d7ef7e88863aebc33617c20 100644 |
--- a/cc/blink/web_content_layer_impl.cc |
+++ b/cc/blink/web_content_layer_impl.cc |
@@ -19,12 +19,13 @@ |
namespace cc_blink { |
WebContentLayerImpl::WebContentLayerImpl(blink::WebContentLayerClient* client) |
- : client_(client) { |
+ : client_(client), ignore_lcd_text_change_(false) { |
if (WebLayerImpl::UsingPictureLayer()) |
layer_ = make_scoped_ptr(new WebLayerImpl(PictureLayer::Create(this))); |
else |
layer_ = make_scoped_ptr(new WebLayerImpl(ContentLayer::Create(this))); |
layer_->layer()->SetIsDrawable(true); |
+ can_use_lcd_text_ = layer_->layer()->can_use_lcd_text(); |
} |
WebContentLayerImpl::~WebContentLayerImpl() { |
@@ -53,14 +54,28 @@ |
if (!client_) |
return; |
- // TODO(danakj): Stop passing this to blink it should always use LCD when it |
- // wants to. crbug.com/430617 |
- bool can_use_lcd_text = true; |
client_->paintContents( |
- canvas, clip, can_use_lcd_text, |
+ canvas, |
+ clip, |
+ can_use_lcd_text_, |
graphics_context_status == ContentLayerClient::GRAPHICS_CONTEXT_ENABLED |
? blink::WebContentLayerClient::GraphicsContextEnabled |
: blink::WebContentLayerClient::GraphicsContextDisabled); |
+} |
+ |
+void WebContentLayerImpl::DidChangeLayerCanUseLCDText() { |
+ // It is important to make this comparison because the LCD text status |
+ // here can get out of sync with that in the layer. |
+ if (can_use_lcd_text_ == layer_->layer()->can_use_lcd_text()) |
+ return; |
+ |
+ // LCD text cannot be enabled once disabled. |
+ if (layer_->layer()->can_use_lcd_text() && ignore_lcd_text_change_) |
+ return; |
+ |
+ can_use_lcd_text_ = layer_->layer()->can_use_lcd_text(); |
+ ignore_lcd_text_change_ = true; |
+ layer_->invalidate(); |
} |
bool WebContentLayerImpl::FillsBoundsCompletely() const { |