| Index: content/browser/renderer_host/render_widget_host_view_android.cc
|
| diff --git a/content/browser/renderer_host/render_widget_host_view_android.cc b/content/browser/renderer_host/render_widget_host_view_android.cc
|
| index e77d7f3e9277b0cd2e95097576756520171f6492..5fd5956fa6ab08efd29c1ab8fea5fba5c91b16c3 100644
|
| --- a/content/browser/renderer_host/render_widget_host_view_android.cc
|
| +++ b/content/browser/renderer_host/render_widget_host_view_android.cc
|
| @@ -192,7 +192,6 @@ RenderWidgetHostViewAndroid::RenderWidgetHostViewAndroid(
|
| weak_ptr_factory_(this),
|
| overscroll_effect_enabled_(!CommandLine::ForCurrentProcess()->HasSwitch(
|
| switches::kDisableOverscrollEdgeEffect)),
|
| - overscroll_effect_(OverscrollGlow::Create(overscroll_effect_enabled_)),
|
| gesture_provider_(CreateGestureProviderConfig(), this),
|
| gesture_text_selector_(this),
|
| touch_scrolling_(false),
|
| @@ -368,7 +367,7 @@ void RenderWidgetHostViewAndroid::MovePluginWindows(
|
| void RenderWidgetHostViewAndroid::Focus() {
|
| host_->Focus();
|
| host_->SetInputMethodActive(true);
|
| - if (overscroll_effect_enabled_)
|
| + if (overscroll_effect_)
|
| overscroll_effect_->Enable();
|
| }
|
|
|
| @@ -376,7 +375,8 @@ void RenderWidgetHostViewAndroid::Blur() {
|
| host_->ExecuteEditCommand("Unselect", "");
|
| host_->SetInputMethodActive(false);
|
| host_->Blur();
|
| - overscroll_effect_->Disable();
|
| + if (overscroll_effect_)
|
| + overscroll_effect_->Disable();
|
| }
|
|
|
| bool RenderWidgetHostViewAndroid::HasFocus() const {
|
| @@ -929,8 +929,10 @@ void RenderWidgetHostViewAndroid::ComputeContentsSize(
|
| gfx::Size(texture_size_in_layer_.width() - offset.x(),
|
| texture_size_in_layer_.height() - offset.y());
|
|
|
| - overscroll_effect_->UpdateDisplayParameters(
|
| - CreateOverscrollDisplayParameters(frame_metadata));
|
| + if (overscroll_effect_) {
|
| + overscroll_effect_->UpdateDisplayParameters(
|
| + CreateOverscrollDisplayParameters(frame_metadata));
|
| + }
|
| }
|
|
|
| void RenderWidgetHostViewAndroid::InternalSwapCompositorFrame(
|
| @@ -1143,7 +1145,7 @@ void RenderWidgetHostViewAndroid::AttachLayers() {
|
| return;
|
|
|
| content_view_core_->AttachLayer(layer_);
|
| - if (overscroll_effect_enabled_)
|
| + if (overscroll_effect_)
|
| overscroll_effect_->Enable();
|
| layer_->SetHideLayerAndSubtree(!is_showing_);
|
| }
|
| @@ -1156,11 +1158,13 @@ void RenderWidgetHostViewAndroid::RemoveLayers() {
|
| return;
|
|
|
| content_view_core_->RemoveLayer(layer_);
|
| - overscroll_effect_->Disable();
|
| + if (overscroll_effect_)
|
| + overscroll_effect_->Disable();
|
| }
|
|
|
| bool RenderWidgetHostViewAndroid::Animate(base::TimeTicks frame_time) {
|
| - bool needs_animate = overscroll_effect_->Animate(frame_time);
|
| + bool needs_animate =
|
| + overscroll_effect_ ? overscroll_effect_->Animate(frame_time) : false;
|
| if (selection_controller_)
|
| needs_animate |= selection_controller_->Animate(frame_time);
|
| return needs_animate;
|
| @@ -1361,8 +1365,8 @@ void RenderWidgetHostViewAndroid::SendMouseWheelEvent(
|
| void RenderWidgetHostViewAndroid::SendGestureEvent(
|
| const blink::WebGestureEvent& event) {
|
| // Sending a gesture that may trigger overscroll should resume the effect.
|
| - if (overscroll_effect_enabled_)
|
| - overscroll_effect_->Enable();
|
| + if (overscroll_effect_)
|
| + overscroll_effect_->Enable();
|
|
|
| if (host_)
|
| host_->ForwardGestureEventWithLatencyInfo(event, CreateLatencyInfo(event));
|
| @@ -1388,7 +1392,9 @@ void RenderWidgetHostViewAndroid::DidOverscroll(
|
| return;
|
|
|
| const float device_scale_factor = content_view_core_->GetDpiScale();
|
| - if (overscroll_effect_->OnOverscrolled(
|
| +
|
| + if (overscroll_effect_ &&
|
| + overscroll_effect_->OnOverscrolled(
|
| content_view_core_->GetLayer(),
|
| base::TimeTicks::Now(),
|
| gfx::ScaleVector2d(params.accumulated_overscroll,
|
| @@ -1455,6 +1461,16 @@ void RenderWidgetHostViewAndroid::SetContentViewCore(
|
|
|
| if (!selection_controller_)
|
| selection_controller_.reset(new TouchSelectionController(this));
|
| +
|
| + if (!content_view_core_) {
|
| + overscroll_effect_.reset();
|
| + } else if (overscroll_effect_enabled_ && !overscroll_effect_) {
|
| + DCHECK(content_view_core_->GetWindowAndroid()->GetCompositor());
|
| + overscroll_effect_ =
|
| + OverscrollGlow::Create(&content_view_core_->GetWindowAndroid()
|
| + ->GetCompositor()
|
| + ->GetSystemUIResourceManager());
|
| + }
|
| }
|
|
|
| void RenderWidgetHostViewAndroid::RunAckCallbacks() {
|
|
|