Move BackgroundColor from widgets and child frames to the WebView.

SetBackgroundOpaque() is a concept that applies only to WebViews, not to
WebWidgets. It is set by ChromeOS UI pieces, which each have their own
WebView/Page. It is also set by webview tag, which has its own WebView
contained inside another outer one. So we move the SetBackgroundOpaque()
methods and IPCs from RenderWidget to RenderView.

In the renderer, the WebWidget::BackgroundColor() is not used except
internally, so remove it from the WebWidget API. The WebFrameWidgetImpl
is only used for child frames, and during Initialize(), it will set its
background color to be overridden to transparent, preventing any future
colors to matter, unless the override was cleared. But since clearing
overrides only happens by IPC to the main frame widget (now to the
RenderView) that clearing can't happen. So remove all background color
code from WebFrameWidgetImpl, and just set the compositor's background
color to transparent during startup.

Android WebView and ChromeCast code was also setting the base background
color via the WebFrameWidget, but both are in code that corresponds to a
view, not a widget, so pass the value to WebViewImpl directly
instead by adding SetBaseBackgroundColor to the WebView API. Then we
remove all background color APIs from WebFrameWidget as well.

R=ajwong@chromium.org, avi@chromium.org, dcheng@chromium.org
TBR=dcheng

Change-Id: I3d83064d13836f286f8ebc89118b990bbdbb80d3
Bug: 912193
Reviewed-on: https://chromium-review.googlesource.com/c/1382861
Commit-Queue: danakj <danakj@chromium.org>
Reviewed-by: Daniel Cheng <dcheng@chromium.org>
Reviewed-by: Avi Drissman <avi@chromium.org>
Reviewed-by: Luke Halliwell <halliwell@chromium.org>
Reviewed-by: Albert J. Wong <ajwong@chromium.org>
Cr-Commit-Position: refs/heads/master@{#618653}
33 files changed