Revert "Make selection end handle stick to selection at line end."

This reverts commit 7c263ddd582abacbbe9c71341a6ef4c704d12100.

Fixes: 35944608
Bug: 21305922
Test: Manual
Test: Updated CTS and core tests pass.
Change-Id: Ic840f8771c3d5850f4f6f44ea199b144cac740c0
diff --git a/core/java/android/text/Layout.java b/core/java/android/text/Layout.java
index b47fce8..a233ba1 100644
--- a/core/java/android/text/Layout.java
+++ b/core/java/android/text/Layout.java
@@ -1030,24 +1030,17 @@
      * the paragraph's primary direction.
      */
     public float getPrimaryHorizontal(int offset) {
-        return getPrimaryHorizontal(offset, false /* not clamped */,
-                true /* getNewLineStartPosOnLineBreak */);
+        return getPrimaryHorizontal(offset, false /* not clamped */);
     }
 
     /**
      * Get the primary horizontal position for the specified text offset, but
      * optionally clamp it so that it doesn't exceed the width of the layout.
-     *
-     * @param offset the offset to get horizontal position
-     * @param clamped whether to clamp the position by using the width of this layout.
-     * @param getNewLineStartPosOnLineBreak whether to get the start position of new line when the
-     * offset is at automatic line break.
      * @hide
      */
-    public float getPrimaryHorizontal(int offset, boolean clamped,
-            boolean getNewLineStartPosOnLineBreak) {
+    public float getPrimaryHorizontal(int offset, boolean clamped) {
         boolean trailing = primaryIsTrailingPrevious(offset);
-        return getHorizontal(offset, trailing, clamped, getNewLineStartPosOnLineBreak);
+        return getHorizontal(offset, trailing, clamped);
     }
 
     /**
@@ -1056,37 +1049,26 @@
      * the direction other than the paragraph's primary direction.
      */
     public float getSecondaryHorizontal(int offset) {
-        return getSecondaryHorizontal(offset, false /* not clamped */,
-                true /* getNewLineStartPosOnLineBreak */);
+        return getSecondaryHorizontal(offset, false /* not clamped */);
     }
 
     /**
      * Get the secondary horizontal position for the specified text offset, but
      * optionally clamp it so that it doesn't exceed the width of the layout.
-     *
-     * @param offset the offset to get horizontal position
-     * @param clamped whether to clamp the position by using the width of this layout.
-     * @param getNewLineStartPosOnLineBreak whether to get the start position of new line when the
-     * offset is at automatic line break.
      * @hide
      */
-    public float getSecondaryHorizontal(int offset, boolean clamped,
-            boolean getNewLineStartPosOnLineBreak) {
+    public float getSecondaryHorizontal(int offset, boolean clamped) {
         boolean trailing = primaryIsTrailingPrevious(offset);
-        return getHorizontal(offset, !trailing, clamped, getNewLineStartPosOnLineBreak);
+        return getHorizontal(offset, !trailing, clamped);
     }
 
-    private float getHorizontal(int offset, boolean primary,
-            boolean getNewLineStartPosOnLineBreak) {
-        return primary ? getPrimaryHorizontal(offset, false /* not clamped */,
-                getNewLineStartPosOnLineBreak)
-                : getSecondaryHorizontal(offset, false /* not clamped */,
-                        getNewLineStartPosOnLineBreak);
+    private float getHorizontal(int offset, boolean primary) {
+        return primary ? getPrimaryHorizontal(offset) : getSecondaryHorizontal(offset);
     }
 
-    private float getHorizontal(int offset, boolean trailing, boolean clamped,
-            boolean getNewLineStartPosOnLineBreak) {
-        final int line = getLineForOffset(offset, getNewLineStartPosOnLineBreak);
+    private float getHorizontal(int offset, boolean trailing, boolean clamped) {
+        int line = getLineForOffset(offset);
+
         return getHorizontal(offset, trailing, line, clamped);
     }
 
@@ -1300,10 +1282,6 @@
      * beyond the end of the text, you get the last line.
      */
     public int getLineForOffset(int offset) {
-        return getLineForOffset(offset, true);
-    }
-
-    private int getLineForOffset(int offset, boolean getNewLineOnLineBreak) {
         int high = getLineCount(), low = -1, guess;
 
         while (high - low > 1) {
@@ -1318,10 +1296,6 @@
         if (low < 0) {
             return 0;
         } else {
-            if (!getNewLineOnLineBreak && low > 0 && getLineStart(low) == offset
-                    && mText.charAt(offset - 1) != '\n') {
-                return low - 1;
-            }
             return low;
         }
     }
@@ -1357,14 +1331,14 @@
                 false, null);
 
         final int max;
-        if (line != getLineCount() - 1 && mText.charAt(lineEndOffset - 1) == '\n') {
+        if (line == getLineCount() - 1) {
+            max = lineEndOffset;
+        } else {
             max = tl.getOffsetToLeftRightOf(lineEndOffset - lineStartOffset,
                     !isRtlCharAt(lineEndOffset - 1)) + lineStartOffset;
-        } else {
-            max = lineEndOffset;
         }
         int best = lineStartOffset;
-        float bestdist = Math.abs(getHorizontal(best, primary, true) - horiz);
+        float bestdist = Math.abs(getHorizontal(best, primary) - horiz);
 
         for (int i = 0; i < dirs.mDirections.length; i += 2) {
             int here = lineStartOffset + dirs.mDirections[i];
@@ -1380,9 +1354,7 @@
                 guess = (high + low) / 2;
                 int adguess = getOffsetAtStartOf(guess);
 
-                if (getHorizontal(adguess, primary,
-                        adguess == lineStartOffset || adguess != lineEndOffset) * swap
-                                >= horiz * swap) {
+                if (getHorizontal(adguess, primary) * swap >= horiz * swap) {
                     high = guess;
                 } else {
                     low = guess;
@@ -1396,11 +1368,9 @@
                 int aft = tl.getOffsetToLeftRightOf(low - lineStartOffset, isRtl) + lineStartOffset;
                 low = tl.getOffsetToLeftRightOf(aft - lineStartOffset, !isRtl) + lineStartOffset;
                 if (low >= here && low < there) {
-                    float dist = Math.abs(getHorizontal(low, primary,
-                            low == lineStartOffset || low != lineEndOffset) - horiz);
+                    float dist = Math.abs(getHorizontal(low, primary) - horiz);
                     if (aft < there) {
-                        float other = Math.abs(getHorizontal(aft, primary,
-                                aft == lineStartOffset || aft != lineEndOffset) - horiz);
+                        float other = Math.abs(getHorizontal(aft, primary) - horiz);
 
                         if (other < dist) {
                             dist = other;
@@ -1415,8 +1385,7 @@
                 }
             }
 
-            float dist = Math.abs(getHorizontal(here, primary,
-                    here == lineStartOffset || here != lineEndOffset) - horiz);
+            float dist = Math.abs(getHorizontal(here, primary) - horiz);
 
             if (dist < bestdist) {
                 bestdist = dist;
@@ -1424,10 +1393,10 @@
             }
         }
 
-        float dist = Math.abs(getHorizontal(max, primary,
-                max == lineStartOffset || max != lineEndOffset) - horiz);
+        float dist = Math.abs(getHorizontal(max, primary) - horiz);
 
         if (dist <= bestdist) {
+            bestdist = dist;
             best = max;
         }
 
@@ -1621,9 +1590,8 @@
         int bottom = getLineTop(line+1);
 
         boolean clamped = shouldClampCursor(line);
-        float h1 = getPrimaryHorizontal(point, clamped, true) - 0.5f;
-        float h2 = isLevelBoundary(point)
-                ? getSecondaryHorizontal(point, clamped, true) - 0.5f : h1;
+        float h1 = getPrimaryHorizontal(point, clamped) - 0.5f;
+        float h2 = isLevelBoundary(point) ? getSecondaryHorizontal(point, clamped) - 0.5f : h1;
 
         int caps = TextKeyListener.getMetaState(editingBuffer, TextKeyListener.META_SHIFT_ON) |
                    TextKeyListener.getMetaState(editingBuffer, TextKeyListener.META_SELECTING);
@@ -1740,7 +1708,8 @@
         }
 
         int startline = getLineForOffset(start);
-        int endline = getLineForOffset(end, false);
+        int endline = getLineForOffset(end);
+
         int top = getLineTop(startline);
         int bottom = getLineBottom(endline);