void CCLayerTreeHost::applyScrollAndScale(const CCScrollAndScaleSet& info) { if (!m_rootLayer) return; LayerChromium* rootScrollLayer = findFirstScrollableLayer(m_rootLayer.get()); IntSize rootScrollDelta; for (size_t i = 0; i < info.scrolls.size(); ++i) { LayerChromium* layer = CCLayerTreeHostCommon::findLayerInSubtree(m_rootLayer.get(), info.scrolls[i].layerId); if (!layer) continue; if (layer == rootScrollLayer) rootScrollDelta += info.scrolls[i].scrollDelta; else layer->scrollBy(info.scrolls[i].scrollDelta); } if (!rootScrollDelta.isZero() || info.pageScaleDelta != 1) m_client->applyScrollAndScale(rootScrollDelta, info.pageScaleDelta); }