| Index: cc/trees/layer_tree_host_impl.cc
 | 
| diff --git a/cc/trees/layer_tree_host_impl.cc b/cc/trees/layer_tree_host_impl.cc
 | 
| index 5bfd300482594c8f1690595ff918f1c1be176edc..f3f960ff96b51a774210d0280387865996faa551 100644
 | 
| --- a/cc/trees/layer_tree_host_impl.cc
 | 
| +++ b/cc/trees/layer_tree_host_impl.cc
 | 
| @@ -306,6 +306,7 @@ LayerTreeHostImpl::~LayerTreeHostImpl() {
 | 
|  void LayerTreeHostImpl::BeginMainFrameAborted(
 | 
|      CommitEarlyOutReason reason,
 | 
|      std::vector<std::unique_ptr<SwapPromise>> swap_promises) {
 | 
| +  is_main_thread_frame_ = true;
 | 
|    // If the begin frame data was handled, then scroll and scale set was applied
 | 
|    // by the main thread, so the active tree needs to be updated as if these sent
 | 
|    // values were applied and committed.
 | 
| @@ -338,6 +339,7 @@ void LayerTreeHostImpl::BeginCommit() {
 | 
|  
 | 
|  void LayerTreeHostImpl::CommitComplete() {
 | 
|    TRACE_EVENT0("cc", "LayerTreeHostImpl::CommitComplete");
 | 
| +  is_main_thread_frame_ = true;
 | 
|  
 | 
|    UpdateSyncTreeAfterCommitOrImplSideInvalidation();
 | 
|    micro_benchmark_controller_.DidCompleteCommit();
 | 
| @@ -1581,6 +1583,7 @@ void LayerTreeHostImpl::OnCanDrawStateChangedForTree() {
 | 
|  
 | 
|  CompositorFrameMetadata LayerTreeHostImpl::MakeCompositorFrameMetadata() const {
 | 
|    CompositorFrameMetadata metadata;
 | 
| +  metadata.is_main_thread_frame = is_main_thread_frame_;
 | 
|    metadata.device_scale_factor = active_tree_->painted_device_scale_factor() *
 | 
|                                   active_tree_->device_scale_factor();
 | 
|  
 | 
| @@ -1760,6 +1763,8 @@ bool LayerTreeHostImpl::DrawLayers(FrameData* frame) {
 | 
|    benchmark_instrumentation::IssueImplThreadRenderingStatsEvent(
 | 
|        rendering_stats_instrumentation_->impl_thread_rendering_stats());
 | 
|    rendering_stats_instrumentation_->AccumulateAndClearImplThreadStats();
 | 
| +
 | 
| +  is_main_thread_frame_ = false;
 | 
|    return true;
 | 
|  }
 | 
|  
 | 
| 
 |