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/1160929Reviewed-by:Avi Drissman <avi@chromium.org> Commit-Queue: Tessa Nijssen <tnijssen@google.com> Cr-Commit-Position: refs/heads/master@{#580658}
Showing
Please register or sign in to comment