Reland [Mac] Re-Generate Text Suggestions on WebContents Update

Previously, each tab had its own SuggestedTextTouchBarController. Now,
because of http://crrev/c/1151613, there is only one
SuggestedTextTouchBarController per window. Because the controller does
not maintain the state of each tab, as a user switches tabs, the
controller needs to update its state to match the tab. When the
controller's WebContents change, new suggestions should be generated
for the selected text in the current tab.

The methods -webContentsTextSelectionChanged:range: and
-webContentsFinishedLoading were combined into a singular method,
-updateTextSelection:range:, because they had very similar
functionality.

The parameters for -requestSuggestionsForText:inRange: were removed
because they were always |text_| and |selectionRange_|.

A new method was created, -webContentsChanged, to get a tab's current
text and selected range and then call -updateTextSelection:range: with
the proper parameters.

When the controller gets a new pointer to a WebContents, the pointer
may be null. To avoid calling WebContents::IsFocusedElementEditable()
on a null pointer, a method -isTextfieldFocused was created to check
that |webContents_| is not a null pointer and that an editable element
is focused.

A new SuggestedTextTouchBarControllerBrowserTest was written,
SetWebContentsTest, to test that the SuggestedTextTouchBarController
properly updates its current text selection based on the new
WebContents.

This CL is the same as http://crrev/c/1153728 with the following
changes:
  - Browser tests for methods that are not restricted to MacOS 10.12.2+
    were modified to also run on earlier versions of MacOS. The
    expected behavior for different MacOS versions is accounted for in
    the tests.
  - A call to UnfocusTextfield() was added to SetWebContentsTest to
    ensure that a later call to FocusTextfield() works as intended and
    focuses an editable element.

Bug: 717553
Change-Id: Id061e392dd279e7a3cc9a34a023eb9bd97e52940
Reviewed-on: https://chromium-review.googlesource.com/1160929
Reviewed-by: Avi Drissman <avi@chromium.org>
Commit-Queue: Tessa Nijssen <tnijssen@google.com>
Cr-Commit-Position: refs/heads/master@{#580658}
4 files changed