New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 730461 link

Starred by 7 users

Issue metadata

Status: Verified
Owner:
Closed: Jun 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: iOS
Pri: 1
Type: Bug



Sign in to add a comment

URL is right-aligned in Omnibox in iOS 11

Project Member Reported by mard...@chromium.org, Jun 7 2017

Issue description

App Version (from "Chrome Settings > About Chrome"): M59
iOS Version: iOS 11
Device: iPhone 6+

URLs appear to be right-aligned in omnibox on iOS 11. 

 
iOS11-Omnibox-Bling.jpg
184 KB View Download

Comment 1 by jif@chromium.org, Jun 7 2017

Labels: Hotlist-iOS11
Labels: -Proj-iOS11
 Issue 731697  has been merged into this issue.

Comment 4 Deleted

Owner: rohitrao@chromium.org
Status: Assigned (was: ass)
rohtrao@ is looking at some failing tests, which should probably cover this.
Components: UI>Browser>Omnibox
Labels: -Pri-2 Pri-1
The problem is in the following snippet from -[OmniboxTextFieldIOS updateTextDirection]:

  NSTextAlignment alignment = [self bestTextAlignment];
  [self setTextAlignment:alignment];
  UITextWritingDirection writingDirection =
      alignment == NSTextAlignmentLeft ? UITextWritingDirectionLeftToRight
                                       : UITextWritingDirectionRightToLeft;
  [self
      setBaseWritingDirection:writingDirection
                     forRange:[self
                                  textRangeFromPosition:[self
                                                            beginningOfDocument]
                                             toPosition:[self endOfDocument]]];


When this code was originally written, |bestTextAlignment| could only return Left or Right.  A subsequent change allowed it to return Natural when the text field was not first responder.  As a result, |writingDirection| is initialized to RTL when the field is not focused.

This code has been broken in production for a while now, but the effects were hidden because (presumably) baseWritingDirection had no practical meaning when the field was not first responder.

In iOS11, it appears that setting the baseWritingDirection to RTL also changes the textAlignment to Right.  This is what is forcing the field to be right-aligned.
For M60, I'd prefer to add a fix that's behind IsRunningOnIOS11OrLater(), to prevent behavioral changes for existing users.

Longer-term, Justin wants to update this code to set the baseWritingDirection to Natural (which wasn't supported before but is supported now).  Or maybe we can determine that this code is no longer useful and can be removed entirely.

Comment 8 by jif@chromium.org, Jun 13 2017

https://codereview.chromium.org/2831193004/ would have fixed this.

Comment 9 by jif@chromium.org, Jun 13 2017

Issue 575181 has been merged into this issue.
For posterity, the history of this bug is a combination of an iOS specific workaround coupled with a bad refactor.

For iOS6/7, we added alignment code that forced baseWritingDirection to left or right, because Natural didn't exist and setting alignment did not always work correctly (what was broken is lost to history, it seems)

It seems that sometime around iOS8/9 alignment started working properly for these edge cases, and baseWritingDirection was ignored/overridden by alignment.

Sometime last year, a refactor introduced a hidden bug where baseWritingDirection was set to RTL all the time.  But this was ignored since alignment was set correctly.

The new bug is that in iOS11 baseWritingDirection also sets alignment.  So the alignment is set correctly, then baseWritingDirection is set incorrectly, which then sets alignment to RTL.  Bug.

During the bad refactor, we also introduced a security measure that correctly sets baseWritingDirection somewhere else when in non-editing mode.

Since alignment seems to work, and we already set baseWritingDirection elsewhere, I recommend we simply remove this code.  Adding a change for M60 to wrap a removal for iOS11 only, then remove for everyone in M61.

, the bug is caused by some code added in iOS6/7 to fix alignment issues

Comment 11 by sczs@chromium.org, Jun 14 2017

Cc: hongchic...@chromium.org
 Issue 731278  has been merged into this issue.
Labels: Merge-Request-60
Status: Fixed (was: Assigned)
Project Member

Comment 14 by sheriffbot@chromium.org, Jun 15 2017

Labels: -Merge-Request-60 Hotlist-Merge-Review Merge-Review-60
This bug requires manual review: M60 has already been promoted to the beta branch, so this requires manual review
Please contact the milestone owner if you have questions.
Owners: amineer@(Android), cmasso@(iOS), josafat@(ChromeOS), bustamante@(Desktop)

For more details visit https://www.chromium.org/issue-tracking/autotriage - Your friendly Sheriffbot
Status: Verified (was: Fixed)
Verified the issue on 61.0.3135.0 canary tested on iPhone7+(iOS 11 beta) and iPad Air2(iOS 11 beta).
URLs are left aligned in omnibox works fine.

Owner: justincohen@chromium.org
Cc: rohitrao@chromium.org
Labels: -Hotlist-Merge-Review -Merge-Review-60 Merge-Approved-60
Project Member

Comment 19 by sheriffbot@chromium.org, Jun 23 2017

Cc: cma...@chromium.org
This issue has been approved for a merge. Please merge the fix to any appropriate branches as soon as possible!

If all merges have been completed, please remove any remaining Merge-Approved labels from this issue.

Thanks for your time! To disable nags, add the Disable-Nags label.

For more details visit https://www.chromium.org/issue-tracking/autotriage - Your friendly Sheriffbot
cmasso@ this was merged to branch-heads/3112 here:
  11ad3575ecf65f46f49994cebe12082f858b82f7

Is the auto bot update not working?
Sometimes bugdroid@ takes some time, but this one is taking too long. Let me ping agable@ in case something is broken.
Project Member

Comment 22 by sheriffbot@chromium.org, Jun 26 2017

This issue has been approved for a merge. Please merge the fix to any appropriate branches as soon as possible!

If all merges have been completed, please remove any remaining Merge-Approved labels from this issue.

Thanks for your time! To disable nags, add the Disable-Nags label.

For more details visit https://www.chromium.org/issue-tracking/autotriage - Your friendly Sheriffbot
Cc: aga...@chromium.org
agable Any ideas why this merge didn't get picked up by sheriffbot?
Labels: -Merge-Approved-60 Merge-Merged-60
Looks like bugdroid was broken, that explains that: 
   https://bugs.chromium.org/p/chromium/issues/detail?id=735093
verified the issue on 60.03112.50 beta tested on iPhone7+(iOS 11 beta 2),iPad Air(iOS11 beta 2)
Urls are left aligned 
Labels: -Merge-Merged-60 merge-merged-3112
 Issue 751372  has been merged into this issue.
Project Member

Comment 28 by bugdroid1@chromium.org, Nov 14

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/58a6b4910cafd88be5a971e6cbd5e10171f91524

commit 58a6b4910cafd88be5a971e6cbd5e10171f91524
Author: Justin Cohen <justincohen@google.com>
Date: Wed Nov 14 19:27:19 2018

[ios] Drop iOS10 specific code.

875528, 875528, 750185, 850814

Bug: 894099,  766951 ,  836808 , 740987,  765146 ,  826369 ,  730461 ,  869176 ,
Change-Id: I07b3ab43cff3d4d4f17349fe5eff9070fef5d437
Reviewed-on: https://chromium-review.googlesource.com/c/1335207
Commit-Queue: Justin Cohen <justincohen@chromium.org>
Reviewed-by: Gauthier Ambard <gambard@chromium.org>
Reviewed-by: Rohit Rao <rohitrao@chromium.org>
Cr-Commit-Position: refs/heads/master@{#608075}
[modify] https://crrev.com/58a6b4910cafd88be5a971e6cbd5e10171f91524/ios/chrome/app/main_controller.mm
[modify] https://crrev.com/58a6b4910cafd88be5a971e6cbd5e10171f91524/ios/chrome/browser/autofill/autofill_controller_unittest.mm
[modify] https://crrev.com/58a6b4910cafd88be5a971e6cbd5e10171f91524/ios/chrome/browser/autofill/form_input_accessory_view.mm
[modify] https://crrev.com/58a6b4910cafd88be5a971e6cbd5e10171f91524/ios/chrome/browser/autofill/form_input_accessory_view_controller.mm
[modify] https://crrev.com/58a6b4910cafd88be5a971e6cbd5e10171f91524/ios/chrome/browser/drag_and_drop/drop_and_navigate_interaction_unittest.mm
[modify] https://crrev.com/58a6b4910cafd88be5a971e6cbd5e10171f91524/ios/chrome/browser/metrics/drag_and_drop_recorder.mm
[modify] https://crrev.com/58a6b4910cafd88be5a971e6cbd5e10171f91524/ios/chrome/browser/net/cookie_util.mm
[modify] https://crrev.com/58a6b4910cafd88be5a971e6cbd5e10171f91524/ios/chrome/browser/net/cookie_util_unittest.mm
[modify] https://crrev.com/58a6b4910cafd88be5a971e6cbd5e10171f91524/ios/chrome/browser/prerender/prerender_egtest.mm
[modify] https://crrev.com/58a6b4910cafd88be5a971e6cbd5e10171f91524/ios/chrome/browser/signin/gaia_auth_fetcher_ios.mm
[modify] https://crrev.com/58a6b4910cafd88be5a971e6cbd5e10171f91524/ios/chrome/browser/signin/gaia_auth_fetcher_ios_unittest.mm
[modify] https://crrev.com/58a6b4910cafd88be5a971e6cbd5e10171f91524/ios/chrome/browser/snapshots/snapshot_tab_helper.mm
[modify] https://crrev.com/58a6b4910cafd88be5a971e6cbd5e10171f91524/ios/chrome/browser/ui/activity_services/activity_service_controller_egtest.mm
[modify] https://crrev.com/58a6b4910cafd88be5a971e6cbd5e10171f91524/ios/chrome/browser/ui/app_launcher/open_mail_handler_view_controller.mm
[modify] https://crrev.com/58a6b4910cafd88be5a971e6cbd5e10171f91524/ios/chrome/browser/ui/authentication/consent_bump/consent_bump_option_button.mm
[modify] https://crrev.com/58a6b4910cafd88be5a971e6cbd5e10171f91524/ios/chrome/browser/ui/authentication/consent_bump/consent_bump_personalization_view_controller.mm
[modify] https://crrev.com/58a6b4910cafd88be5a971e6cbd5e10171f91524/ios/chrome/browser/ui/authentication/consent_bump/consent_bump_view_controller.mm
[modify] https://crrev.com/58a6b4910cafd88be5a971e6cbd5e10171f91524/ios/chrome/browser/ui/authentication/unified_consent/identity_chooser/identity_chooser_cell.mm
[modify] https://crrev.com/58a6b4910cafd88be5a971e6cbd5e10171f91524/ios/chrome/browser/ui/authentication/unified_consent/identity_chooser/identity_chooser_presentation_controller.mm
[modify] https://crrev.com/58a6b4910cafd88be5a971e6cbd5e10171f91524/ios/chrome/browser/ui/authentication/unified_consent/unified_consent_view_controller.mm
[modify] https://crrev.com/58a6b4910cafd88be5a971e6cbd5e10171f91524/ios/chrome/browser/ui/autofill/manual_fill/action_cell.mm
[modify] https://crrev.com/58a6b4910cafd88be5a971e6cbd5e10171f91524/ios/chrome/browser/ui/autofill/manual_fill/fallback_view_controller.mm
[modify] https://crrev.com/58a6b4910cafd88be5a971e6cbd5e10171f91524/ios/chrome/browser/ui/autofill/manual_fill/manual_fill_accessory_view_controller.mm
[modify] https://crrev.com/58a6b4910cafd88be5a971e6cbd5e10171f91524/ios/chrome/browser/ui/autofill/manual_fill/manual_fill_address_cell.mm
[modify] https://crrev.com/58a6b4910cafd88be5a971e6cbd5e10171f91524/ios/chrome/browser/ui/autofill/manual_fill/manual_fill_card_cell.mm
[modify] https://crrev.com/58a6b4910cafd88be5a971e6cbd5e10171f91524/ios/chrome/browser/ui/autofill/manual_fill/manual_fill_password_cell.mm
[modify] https://crrev.com/58a6b4910cafd88be5a971e6cbd5e10171f91524/ios/chrome/browser/ui/autofill/manual_fill/password_view_controller.mm
[modify] https://crrev.com/58a6b4910cafd88be5a971e6cbd5e10171f91524/ios/chrome/browser/ui/autofill/save_card_infobar_view.mm
[modify] https://crrev.com/58a6b4910cafd88be5a971e6cbd5e10171f91524/ios/chrome/browser/ui/bookmarks/bookmark_edit_view_controller.mm
[modify] https://crrev.com/58a6b4910cafd88be5a971e6cbd5e10171f91524/ios/chrome/browser/ui/bookmarks/bookmark_home_view_controller.mm
[modify] https://crrev.com/58a6b4910cafd88be5a971e6cbd5e10171f91524/ios/chrome/browser/ui/bookmarks/bookmarks_egtest.mm
[modify] https://crrev.com/58a6b4910cafd88be5a971e6cbd5e10171f91524/ios/chrome/browser/ui/browser_view_controller.mm
[modify] https://crrev.com/58a6b4910cafd88be5a971e6cbd5e10171f91524/ios/chrome/browser/ui/bubble/bubble_view_unittest.mm
[modify] https://crrev.com/58a6b4910cafd88be5a971e6cbd5e10171f91524/ios/chrome/browser/ui/content_suggestions/content_suggestions_coordinator.mm
[modify] https://crrev.com/58a6b4910cafd88be5a971e6cbd5e10171f91524/ios/chrome/browser/ui/content_suggestions/content_suggestions_egtest.mm
[modify] https://crrev.com/58a6b4910cafd88be5a971e6cbd5e10171f91524/ios/chrome/browser/ui/content_suggestions/content_suggestions_header_synchronizer.mm
[modify] https://crrev.com/58a6b4910cafd88be5a971e6cbd5e10171f91524/ios/chrome/browser/ui/content_suggestions/content_suggestions_header_view.mm
[modify] https://crrev.com/58a6b4910cafd88be5a971e6cbd5e10171f91524/ios/chrome/browser/ui/content_suggestions/content_suggestions_header_view_controller.mm
[modify] https://crrev.com/58a6b4910cafd88be5a971e6cbd5e10171f91524/ios/chrome/browser/ui/content_suggestions/content_suggestions_layout.mm
[modify] https://crrev.com/58a6b4910cafd88be5a971e6cbd5e10171f91524/ios/chrome/browser/ui/content_suggestions/content_suggestions_view_controller.mm
[modify] https://crrev.com/58a6b4910cafd88be5a971e6cbd5e10171f91524/ios/chrome/browser/ui/content_suggestions/ntp_home_egtest.mm
[modify] https://crrev.com/58a6b4910cafd88be5a971e6cbd5e10171f91524/ios/chrome/browser/ui/dialogs/javascript_dialog_egtest.mm
[modify] https://crrev.com/58a6b4910cafd88be5a971e6cbd5e10171f91524/ios/chrome/browser/ui/find_bar/find_bar_view.mm
[modify] https://crrev.com/58a6b4910cafd88be5a971e6cbd5e10171f91524/ios/chrome/browser/ui/fullscreen/fullscreen_egtest.mm
[modify] https://crrev.com/58a6b4910cafd88be5a971e6cbd5e10171f91524/ios/chrome/browser/ui/fullscreen/fullscreen_system_notification_observer.mm
[modify] https://crrev.com/58a6b4910cafd88be5a971e6cbd5e10171f91524/ios/chrome/browser/ui/history/history_table_view_controller.mm
[modify] https://crrev.com/58a6b4910cafd88be5a971e6cbd5e10171f91524/ios/chrome/browser/ui/history/history_ui_egtest.mm
[modify] https://crrev.com/58a6b4910cafd88be5a971e6cbd5e10171f91524/ios/chrome/browser/ui/infobars/confirm_infobar_view.mm
[modify] https://crrev.com/58a6b4910cafd88be5a971e6cbd5e10171f91524/ios/chrome/browser/ui/main_content/web_scroll_view_main_content_ui_forwarder.mm
[modify] https://crrev.com/58a6b4910cafd88be5a971e6cbd5e10171f91524/ios/chrome/browser/ui/ntp/incognito_view.mm
[modify] https://crrev.com/58a6b4910cafd88be5a971e6cbd5e10171f91524/ios/chrome/browser/ui/omnibox/omnibox_text_field_ios.mm
[modify] https://crrev.com/58a6b4910cafd88be5a971e6cbd5e10171f91524/ios/chrome/browser/ui/omnibox/popup/omnibox_popup_view_controller.mm
[modify] https://crrev.com/58a6b4910cafd88be5a971e6cbd5e10171f91524/ios/chrome/browser/ui/overscroll_actions/overscroll_actions_controller.mm
[modify] https://crrev.com/58a6b4910cafd88be5a971e6cbd5e10171f91524/ios/chrome/browser/ui/payments/cells/page_info_item.mm
[modify] https://crrev.com/58a6b4910cafd88be5a971e6cbd5e10171f91524/ios/chrome/browser/ui/payments/cells/payments_selector_edit_item.mm
[modify] https://crrev.com/58a6b4910cafd88be5a971e6cbd5e10171f91524/ios/chrome/browser/ui/payments/payment_request_picker_view_controller.mm
[modify] https://crrev.com/58a6b4910cafd88be5a971e6cbd5e10171f91524/ios/chrome/browser/ui/popup_menu/popup_menu_presenter.mm
[modify] https://crrev.com/58a6b4910cafd88be5a971e6cbd5e10171f91524/ios/chrome/browser/ui/popup_menu/popup_menu_table_view_controller.mm
[modify] https://crrev.com/58a6b4910cafd88be5a971e6cbd5e10171f91524/ios/chrome/browser/ui/print/print_controller_egtest.mm
[modify] https://crrev.com/58a6b4910cafd88be5a971e6cbd5e10171f91524/ios/chrome/browser/ui/qr_scanner/qr_scanner_view_controller_egtest.mm
[modify] https://crrev.com/58a6b4910cafd88be5a971e6cbd5e10171f91524/ios/chrome/browser/ui/reading_list/reading_list_egtest.mm
[modify] https://crrev.com/58a6b4910cafd88be5a971e6cbd5e10171f91524/ios/chrome/browser/ui/reading_list/reading_list_table_view_controller.mm
[modify] https://crrev.com/58a6b4910cafd88be5a971e6cbd5e10171f91524/ios/chrome/browser/ui/recent_tabs/recent_tabs_table_view_controller.mm
[modify] https://crrev.com/58a6b4910cafd88be5a971e6cbd5e10171f91524/ios/chrome/browser/ui/settings/settings_navigation_controller.mm
[modify] https://crrev.com/58a6b4910cafd88be5a971e6cbd5e10171f91524/ios/chrome/browser/ui/side_swipe/card_side_swipe_view.mm
[modify] https://crrev.com/58a6b4910cafd88be5a971e6cbd5e10171f91524/ios/chrome/browser/ui/tab_grid/grid/grid_view_controller.mm
[modify] https://crrev.com/58a6b4910cafd88be5a971e6cbd5e10171f91524/ios/chrome/browser/ui/tab_grid/tab_grid_bottom_toolbar.mm
[modify] https://crrev.com/58a6b4910cafd88be5a971e6cbd5e10171f91524/ios/chrome/browser/ui/tab_grid/tab_grid_top_toolbar.mm
[modify] https://crrev.com/58a6b4910cafd88be5a971e6cbd5e10171f91524/ios/chrome/browser/ui/tab_grid/tab_grid_transition_handler.mm
[modify] https://crrev.com/58a6b4910cafd88be5a971e6cbd5e10171f91524/ios/chrome/browser/ui/tab_grid/tab_grid_view_controller.mm
[modify] https://crrev.com/58a6b4910cafd88be5a971e6cbd5e10171f91524/ios/chrome/browser/ui/table_view/chrome_table_view_controller.mm
[modify] https://crrev.com/58a6b4910cafd88be5a971e6cbd5e10171f91524/ios/chrome/browser/ui/table_view/table_view_presentation_controller.mm
[modify] https://crrev.com/58a6b4910cafd88be5a971e6cbd5e10171f91524/ios/chrome/browser/ui/tabs/tab_view.mm
[modify] https://crrev.com/58a6b4910cafd88be5a971e6cbd5e10171f91524/ios/chrome/browser/ui/toolbar/adaptive_toolbar_egtest.mm
[modify] https://crrev.com/58a6b4910cafd88be5a971e6cbd5e10171f91524/ios/chrome/browser/ui/toolbar/keyboard_assist/toolbar_keyboard_accessory_view.mm
[modify] https://crrev.com/58a6b4910cafd88be5a971e6cbd5e10171f91524/ios/chrome/browser/ui/toolbar/primary_toolbar_view.mm
[modify] https://crrev.com/58a6b4910cafd88be5a971e6cbd5e10171f91524/ios/chrome/browser/ui/toolbar/secondary_toolbar_view.mm
[modify] https://crrev.com/58a6b4910cafd88be5a971e6cbd5e10171f91524/ios/chrome/browser/ui/toolbar/toolbar_egtest.mm
[modify] https://crrev.com/58a6b4910cafd88be5a971e6cbd5e10171f91524/ios/chrome/browser/ui/toolbar_container/toolbar_container_view_controller.mm
[modify] https://crrev.com/58a6b4910cafd88be5a971e6cbd5e10171f91524/ios/chrome/browser/ui/toolbar_container/toolbar_container_view_controller_unittest.mm
[modify] https://crrev.com/58a6b4910cafd88be5a971e6cbd5e10171f91524/ios/chrome/browser/ui/util/uikit_ui_util.h
[modify] https://crrev.com/58a6b4910cafd88be5a971e6cbd5e10171f91524/ios/chrome/browser/ui/util/uikit_ui_util.mm
[modify] https://crrev.com/58a6b4910cafd88be5a971e6cbd5e10171f91524/ios/chrome/browser/web/cache_egtest.mm
[modify] https://crrev.com/58a6b4910cafd88be5a971e6cbd5e10171f91524/ios/chrome/common/ui_util/BUILD.gn
[modify] https://crrev.com/58a6b4910cafd88be5a971e6cbd5e10171f91524/ios/chrome/common/ui_util/constraints_ui_util.h
[modify] https://crrev.com/58a6b4910cafd88be5a971e6cbd5e10171f91524/ios/chrome/common/ui_util/constraints_ui_util.mm
[delete] https://crrev.com/d8af30684b21a6141ab4b4e163eb300f6cb1c4af/ios/chrome/common/ui_util/constraints_ui_util_unittest.mm
[modify] https://crrev.com/58a6b4910cafd88be5a971e6cbd5e10171f91524/ios/showcase/payments/sc_payments_picker_egtest.mm
[modify] https://crrev.com/58a6b4910cafd88be5a971e6cbd5e10171f91524/ios/showcase/test/showcase_eg_utils.mm

Sign in to add a comment