Commit 884e1a19 authored by Aldo Culquicondor's avatar Aldo Culquicondor Committed by Commit Bot

[Android] Making the touch handles aware of DIP changes

Instead of caching the DIP scale at creation, query the scale from the
view.

Bug: 851634
Change-Id: Iaacec8f649fcb0da6aa01ec0859b29f8cf1281b3
Reviewed-on: https://chromium-review.googlesource.com/1099045Reviewed-by: default avatarPedro Amaral <amaralp@chromium.org>
Commit-Queue: Aldo Culquicondor <acondor@chromium.org>
Cr-Commit-Position: refs/heads/master@{#566978}
parent 4a80148f
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
#include "cc/layers/ui_resource_layer.h" #include "cc/layers/ui_resource_layer.h"
#include "content/public/browser/android/compositor.h" #include "content/public/browser/android/compositor.h"
#include "ui/android/handle_view_resources.h" #include "ui/android/handle_view_resources.h"
#include "ui/android/view_android.h"
using base::android::JavaRef; using base::android::JavaRef;
...@@ -22,17 +23,16 @@ base::LazyInstance<ui::HandleViewResources>::Leaky g_selection_resources; ...@@ -22,17 +23,16 @@ base::LazyInstance<ui::HandleViewResources>::Leaky g_selection_resources;
} // namespace } // namespace
CompositedTouchHandleDrawable::CompositedTouchHandleDrawable( CompositedTouchHandleDrawable::CompositedTouchHandleDrawable(
cc::Layer* root_layer, gfx::NativeView view,
float dpi_scale,
const JavaRef<jobject>& context) const JavaRef<jobject>& context)
: dpi_scale_(dpi_scale), : view_(view),
orientation_(ui::TouchHandleOrientation::UNDEFINED), orientation_(ui::TouchHandleOrientation::UNDEFINED),
layer_(cc::UIResourceLayer::Create()) { layer_(cc::UIResourceLayer::Create()) {
g_selection_resources.Get().LoadIfNecessary(context); g_selection_resources.Get().LoadIfNecessary(context);
drawable_horizontal_padding_ratio_ = drawable_horizontal_padding_ratio_ =
g_selection_resources.Get().GetDrawableHorizontalPaddingRatio(); g_selection_resources.Get().GetDrawableHorizontalPaddingRatio();
DCHECK(root_layer); DCHECK(view->GetLayer());
root_layer->AddChild(layer_.get()); view->GetLayer()->AddChild(layer_.get());
} }
CompositedTouchHandleDrawable::~CompositedTouchHandleDrawable() { CompositedTouchHandleDrawable::~CompositedTouchHandleDrawable() {
...@@ -78,7 +78,7 @@ void CompositedTouchHandleDrawable::SetOrientation( ...@@ -78,7 +78,7 @@ void CompositedTouchHandleDrawable::SetOrientation(
} }
void CompositedTouchHandleDrawable::SetOrigin(const gfx::PointF& origin) { void CompositedTouchHandleDrawable::SetOrigin(const gfx::PointF& origin) {
origin_position_ = gfx::ScalePoint(origin, dpi_scale_); origin_position_ = origin;
UpdateLayerPosition(); UpdateLayerPosition();
} }
...@@ -91,11 +91,10 @@ void CompositedTouchHandleDrawable::SetAlpha(float alpha) { ...@@ -91,11 +91,10 @@ void CompositedTouchHandleDrawable::SetAlpha(float alpha) {
} }
gfx::RectF CompositedTouchHandleDrawable::GetVisibleBounds() const { gfx::RectF CompositedTouchHandleDrawable::GetVisibleBounds() const {
return gfx::ScaleRect(gfx::RectF(layer_->position().x(), return gfx::ScaleRect(
layer_->position().y(), gfx::RectF(layer_->position().x(), layer_->position().y(),
layer_->bounds().width(), layer_->bounds().width(), layer_->bounds().height()),
layer_->bounds().height()), 1.f / view_->GetDipScale());
1.f / dpi_scale_);
} }
float CompositedTouchHandleDrawable::GetDrawableHorizontalPaddingRatio() const { float CompositedTouchHandleDrawable::GetDrawableHorizontalPaddingRatio() const {
...@@ -107,7 +106,7 @@ void CompositedTouchHandleDrawable::DetachLayer() { ...@@ -107,7 +106,7 @@ void CompositedTouchHandleDrawable::DetachLayer() {
} }
void CompositedTouchHandleDrawable::UpdateLayerPosition() { void CompositedTouchHandleDrawable::UpdateLayerPosition() {
layer_->SetPosition(origin_position_); layer_->SetPosition(gfx::ScalePoint(origin_position_, view_->GetDipScale()));
} }
} // namespace content } // namespace content
...@@ -8,10 +8,10 @@ ...@@ -8,10 +8,10 @@
#include "base/android/scoped_java_ref.h" #include "base/android/scoped_java_ref.h"
#include "base/macros.h" #include "base/macros.h"
#include "base/memory/scoped_refptr.h" #include "base/memory/scoped_refptr.h"
#include "ui/gfx/native_widget_types.h"
#include "ui/touch_selection/touch_handle.h" #include "ui/touch_selection/touch_handle.h"
namespace cc { namespace cc {
class Layer;
class UIResourceLayer; class UIResourceLayer;
} // namespace cc } // namespace cc
...@@ -20,8 +20,7 @@ namespace content { ...@@ -20,8 +20,7 @@ namespace content {
// Touch handle drawable implementation backed by a cc layer. // Touch handle drawable implementation backed by a cc layer.
class CompositedTouchHandleDrawable : public ui::TouchHandleDrawable { class CompositedTouchHandleDrawable : public ui::TouchHandleDrawable {
public: public:
CompositedTouchHandleDrawable(cc::Layer* root_layer, CompositedTouchHandleDrawable(gfx::NativeView view,
float dpi_scale,
const base::android::JavaRef<jobject>& context); const base::android::JavaRef<jobject>& context);
~CompositedTouchHandleDrawable() override; ~CompositedTouchHandleDrawable() override;
...@@ -39,7 +38,7 @@ class CompositedTouchHandleDrawable : public ui::TouchHandleDrawable { ...@@ -39,7 +38,7 @@ class CompositedTouchHandleDrawable : public ui::TouchHandleDrawable {
void DetachLayer(); void DetachLayer();
void UpdateLayerPosition(); void UpdateLayerPosition();
const float dpi_scale_; gfx::NativeView view_;
float drawable_horizontal_padding_ratio_; float drawable_horizontal_padding_ratio_;
ui::TouchHandleOrientation orientation_; ui::TouchHandleOrientation orientation_;
gfx::PointF origin_position_; gfx::PointF origin_position_;
......
...@@ -74,8 +74,7 @@ SelectionPopupController::CreateTouchHandleDrawable() { ...@@ -74,8 +74,7 @@ SelectionPopupController::CreateTouchHandleDrawable() {
// the java side in CompositedTouchHandleDrawable. // the java side in CompositedTouchHandleDrawable.
auto* view = web_contents()->GetNativeView(); auto* view = web_contents()->GetNativeView();
return std::unique_ptr<ui::TouchHandleDrawable>( return std::unique_ptr<ui::TouchHandleDrawable>(
new CompositedTouchHandleDrawable(view->GetLayer(), view->GetDipScale(), new CompositedTouchHandleDrawable(view, activityContext));
activityContext));
} }
void SelectionPopupController::MoveRangeSelectionExtent( void SelectionPopupController::MoveRangeSelectionExtent(
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment