Call DidNotProduceFrame if begin frames are not needed

Begin frames were being processed when there was no BeginFrameObserver,
occasionally causing |last_begin_frame_args_| in
ExternalBeginFrameSource to be overwritten. These lost frames create a
backlog in |pipeline_reporting_frame_times_|, which eventually causes a
DCHECK.

Remember whether or not begin frames are needed. If they aren't, call
DidNotProduceFrame() instead of OnBeginFrame(). This mirrors a check in
AsyncLayerTreeFrameSink::OnBeginFrame().

Bug: 916354
Change-Id: Id5361ec6c48044a21c4946585f0da5ef862dd6d5
Reviewed-on: https://chromium-review.googlesource.com/c/1393441
Reviewed-by: kylechar <kylechar@chromium.org>
Reviewed-by: Sadrul Chowdhury <sadrul@chromium.org>
Commit-Queue: Sadrul Chowdhury <sadrul@chromium.org>
Cr-Commit-Position: refs/heads/master@{#619883}
3 files changed