| Index: cc/resources/picture_layer_tiling_set.cc
 | 
| diff --git a/cc/resources/picture_layer_tiling_set.cc b/cc/resources/picture_layer_tiling_set.cc
 | 
| index 7c36a3ff552e40ccf701abdb466e489560500562..d9315434860bbd516a8e0b415ca569b50c7667f6 100644
 | 
| --- a/cc/resources/picture_layer_tiling_set.cc
 | 
| +++ b/cc/resources/picture_layer_tiling_set.cc
 | 
| @@ -65,6 +65,13 @@ void PictureLayerTilingSet::UpdateTilingsToCurrentRasterSource(
 | 
|    // Copy over tilings that are shared with the |twin_set| tiling set (if it
 | 
|    // exists).
 | 
|    if (twin_set) {
 | 
| +    if (twin_set->tilings_.empty()) {
 | 
| +      // If the twin (pending) tiling set is empty, it was not updated for the
 | 
| +      // current frame. So we drop tilings from our set as well, instead of
 | 
| +      // leaving behind unshared tilings that are all non-ideal.
 | 
| +      RemoveAllTilings();
 | 
| +    }
 | 
| +
 | 
|      for (PictureLayerTiling* twin_tiling : twin_set->tilings_) {
 | 
|        float contents_scale = twin_tiling->contents_scale();
 | 
|        DCHECK_GE(contents_scale, minimum_contents_scale);
 | 
| @@ -479,7 +486,8 @@ PictureLayerTilingSet::CoverageIterator::operator bool() const {
 | 
|        region_iter_.has_rect();
 | 
|  }
 | 
|  
 | 
| -void PictureLayerTilingSet::AsValueInto(base::debug::TracedValue* state) const {
 | 
| +void PictureLayerTilingSet::AsValueInto(
 | 
| +    base::trace_event::TracedValue* state) const {
 | 
|    for (size_t i = 0; i < tilings_.size(); ++i) {
 | 
|      state->BeginDictionary();
 | 
|      tilings_[i]->AsValueInto(state);
 | 
| 
 |