Observed when investigating issue 507609 .
Steps to repro:
1. Open m.youtube.com
2. Click any video, start playing
3. Scroll a little bit down on the screen (so the top-half of the video is cut-off)
4. Press the fullscreen button
5. Observe crash (if DCHECK enabled)
---
The stack looks like:
0x00000000000c01c4: base::debug::(anonymous namespace)::DebugBreak()
at [chromium] //src/base/debug/debugger_posix.cc:228
(inlined by) base::debug::BreakDebugger()
at [chromium] //src/base/debug/debugger_posix.cc:258
0x00000000000e4b7c: logging::LogMessage::~LogMessage()
at [chromium] //src/base/logging.cc:791
0x00000000000fe87c: gfx::Vector2d::y() const
at [chromium] //src/ui/gfx/geometry/vector2d.h:31
(inlined by) android_webview::BrowserViewRenderer::SetTotalRootLayerScrollOffset(gfx::Vector2dF const&)
at [chromium] //src/android_webview/browser/browser_view_renderer.cc:650
0x00000000000feb84: android_webview::BrowserViewRenderer::UpdateRootLayerState(content::SynchronousCompositor*, gfx::Vector2dF const&, gfx::Vector2dF const&, gfx::SizeF const&, float, float, float)
at [chromium] //src/android_webview/browser/browser_view_renderer.cc:680 (discriminator 8)
0x0000000000e5777c: content::SynchronousCompositorHost::ProcessCommonParams(content::SyncCompositorCommonRendererParams const&)
at [chromium] //src/content/browser/android/synchronous_compositor_host.cc:414
0x0000000000e558c4: content::SynchronousCompositorBrowserFilter::VSyncComplete()
at [chromium] //src/content/browser/android/synchronous_compositor_browser_filter.cc:212 (discriminator 4)
0x000000000002084c: base::RepeatingCallback<void ()>::Run() const &
at [chromium] //src/base/callback.h:92 (discriminator 2)
(inlined by) ui::WindowAndroid::OnVSync(_JNIEnv*, base::android::JavaParamRef<_jobject*> const&, long long, long long)
at [chromium] //src/ui/android/window_android.cc:226 (discriminator 2)
0x0000000000020764: Java_org_chromium_ui_base_WindowAndroid_nativeOnVSync
at [chromium] //src/out/Default/gen/ui/android/ui_android_jni_headers/ui_android/jni/WindowAndroid_jni.h:59 (discriminator 2)
---
I added some logs (inside SetTotalRootLayerScrollOffset) and saw:
- scroll_offset.x(): 0
- scroll_offset.y(): -262
- max_offset.x(): 1082
- max_offset.y(): 5311
---
Bo, I'm guessing this DCHECK is not really valid, since the behavior seems correct. Or is the DCHECK correct, and our mistake is somewhere else?