Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1445)

Unified Diff: content/renderer/disambiguation_popup_helper.cc

Issue 1926173002: Erase LinkDisambiguation code on desktop. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: another merge conflict Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/renderer/disambiguation_popup_helper.cc
diff --git a/content/renderer/disambiguation_popup_helper.cc b/content/renderer/disambiguation_popup_helper.cc
deleted file mode 100644
index 246877a904304db39304b492a63acf96e32940b7..0000000000000000000000000000000000000000
--- a/content/renderer/disambiguation_popup_helper.cc
+++ /dev/null
@@ -1,114 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "content/renderer/disambiguation_popup_helper.h"
-
-#include <stddef.h>
-
-#include "third_party/WebKit/public/platform/WebRect.h"
-#include "ui/gfx/geometry/size_conversions.h"
-
-using blink::WebRect;
-using blink::WebVector;
-
-namespace {
-
-// The amount of padding to add to the disambiguation popup to show
-// content around the possible elements, adding some context.
-const int kDisambiguationPopupPadding = 8;
-
-// Constants used for fitting the disambiguation popup inside the bounds of
-// the view. Note that there are mirror constants in PopupZoomer.java.
-const int kDisambiguationPopupBoundsMargin = 25;
-
-// The smallest allowable touch target used for disambiguation popup.
-// This value is used to determine the minimum amount we need to scale to
-// make all targets touchable.
-const int kDisambiguationPopupMinimumTouchSize = 40;
-const float kDisambiguationPopupMaxScale = 5.0;
-const float kDisambiguationPopupMinScale = 2.0;
-
-// Compute the scaling factor to ensure the smallest touch candidate reaches
-// a certain clickable size after zooming
-float FindOptimalScaleFactor(const WebVector<WebRect>& target_rects,
- float total_scale) {
- using std::min;
- using std::max;
- if (!target_rects.size()) // shall never reach
- return kDisambiguationPopupMinScale;
- float smallest_target = min(target_rects[0].width * total_scale,
- target_rects[0].height * total_scale);
- for (size_t i = 1; i < target_rects.size(); i++) {
- smallest_target = min(smallest_target, target_rects[i].width * total_scale);
- smallest_target = min(smallest_target,
- target_rects[i].height * total_scale);
- }
- smallest_target = max(smallest_target, 1.0f);
- return min(kDisambiguationPopupMaxScale, max(kDisambiguationPopupMinScale,
- kDisambiguationPopupMinimumTouchSize / smallest_target)) * total_scale;
-}
-
-void TrimEdges(int *e1, int *e2, int max_combined) {
- if (*e1 + *e2 <= max_combined)
- return;
-
- if (std::min(*e1, *e2) * 2 >= max_combined)
- *e1 = *e2 = max_combined / 2;
- else if (*e1 > *e2)
- *e1 = max_combined - *e2;
- else
- *e2 = max_combined - *e1;
-}
-
-// Ensure the disambiguation popup fits inside the screen,
-// clip the edges farthest to the touch point if needed.
-gfx::Rect CropZoomArea(const gfx::Rect& zoom_rect,
- const gfx::Size& viewport_size,
- const gfx::Point& touch_point,
- float scale) {
- gfx::Size max_size = viewport_size;
- max_size.Enlarge(-2 * kDisambiguationPopupBoundsMargin,
- -2 * kDisambiguationPopupBoundsMargin);
- max_size = gfx::ScaleToCeiledSize(max_size, 1.0 / scale);
-
- int left = touch_point.x() - zoom_rect.x();
- int right = zoom_rect.right() - touch_point.x();
- int top = touch_point.y() - zoom_rect.y();
- int bottom = zoom_rect.bottom() - touch_point.y();
- TrimEdges(&left, &right, max_size.width());
- TrimEdges(&top, &bottom, max_size.height());
-
- return gfx::Rect(touch_point.x() - left,
- touch_point.y() - top,
- left + right,
- top + bottom);
-}
-
-} // namespace
-
-namespace content {
-
-float DisambiguationPopupHelper::ComputeZoomAreaAndScaleFactor(
- const gfx::Rect& tap_rect,
- const WebVector<WebRect>& target_rects,
- const gfx::Size& screen_size,
- const gfx::Size& visible_content_size,
- float total_scale,
- gfx::Rect* zoom_rect) {
- *zoom_rect = tap_rect;
- for (size_t i = 0; i < target_rects.size(); i++)
- zoom_rect->Union(gfx::Rect(target_rects[i]));
- zoom_rect->Inset(-kDisambiguationPopupPadding, -kDisambiguationPopupPadding);
-
- zoom_rect->Intersect(gfx::Rect(visible_content_size));
-
- float new_total_scale =
- FindOptimalScaleFactor(target_rects, total_scale);
- *zoom_rect = CropZoomArea(
- *zoom_rect, screen_size, tap_rect.CenterPoint(), new_total_scale);
-
- return new_total_scale;
-}
-
-} // namespace content
« no previous file with comments | « content/renderer/disambiguation_popup_helper.h ('k') | content/renderer/disambiguation_popup_helper_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698