Chromium Code Reviews| Index: chrome/browser/ui/cocoa/omnibox/omnibox_view_mac_unittest.mm |
| diff --git a/chrome/browser/ui/cocoa/omnibox/omnibox_view_mac_unittest.mm b/chrome/browser/ui/cocoa/omnibox/omnibox_view_mac_unittest.mm |
| index f3d584163744b7e88bfe357c62590294be108e84..07d97cc930ba1adb40df224faec4beeb89a6c773 100644 |
| --- a/chrome/browser/ui/cocoa/omnibox/omnibox_view_mac_unittest.mm |
| +++ b/chrome/browser/ui/cocoa/omnibox/omnibox_view_mac_unittest.mm |
| @@ -6,8 +6,11 @@ |
| #include <stddef.h> |
| +#include "base/i18n/rtl.h" |
| #include "base/macros.h" |
| #include "base/memory/ptr_util.h" |
| +#include "base/test/scoped_feature_list.h" |
| +#include "chrome/browser/ui/cocoa/l10n_util.h" |
| #include "chrome/browser/ui/cocoa/test/cocoa_profile_test.h" |
| #include "chrome/browser/ui/omnibox/chrome_omnibox_client.h" |
| #include "chrome/browser/ui/omnibox/chrome_omnibox_edit_controller.h" |
| @@ -33,18 +36,24 @@ class MockOmniboxEditModel : public OmniboxEditModel { |
| view, |
| controller, |
| base::WrapUnique(new ChromeOmniboxClient(controller, profile))), |
| - up_or_down_count_(0) {} |
| + up_or_down_count_(0), |
| + current_text_is_url_(false) {} |
| void OnUpOrDownKeyPressed(int count) override { up_or_down_count_ = count; } |
| + bool CurrentTextIsURL() const override { return current_text_is_url_; } |
|
Peter Kasting
2016/12/12 19:57:10
Why are you adding this override instead of simply
|
| + |
| int up_or_down_count() const { return up_or_down_count_; } |
| void set_up_or_down_count(int count) { |
| up_or_down_count_ = count; |
| } |
| + void set_current_text_is_url(bool is_url) { current_text_is_url_ = is_url; } |
| + |
| private: |
| int up_or_down_count_; |
| + bool current_text_is_url_; |
| DISALLOW_COPY_AND_ASSIGN(MockOmniboxEditModel); |
| }; |
| @@ -176,3 +185,67 @@ TEST_F(OmniboxViewMacTest, UpDownArrow) { |
| view.OnDoCommandBySelector(@selector(moveUp:)); |
| EXPECT_EQ(-1, model->up_or_down_count()); |
| } |
| + |
| +TEST_F(OmniboxViewMacTest, WritingDirectionLTR) { |
| + OmniboxViewMac view(NULL, profile(), NULL, NULL); |
| + |
| + // This is deleted by the omnibox view. |
| + MockOmniboxEditModel* model = |
| + new MockOmniboxEditModel(&view, NULL, profile()); |
| + model->set_current_text_is_url(true); |
| + SetModel(&view, model); |
| + base::scoped_nsobject<NSMutableAttributedString> string( |
| + [[NSMutableAttributedString alloc] initWithString:@"Foo"]); |
| + view.ApplyTextStyle(string); |
| + |
| + NSParagraphStyle* paragraphStyle = |
| + [string attribute:NSParagraphStyleAttributeName |
| + atIndex:0 |
| + effectiveRange:NULL]; |
| + DCHECK(paragraphStyle); |
| + EXPECT_EQ(paragraphStyle.alignment, NSLeftTextAlignment); |
| + model->set_current_text_is_url(true); |
| + EXPECT_EQ(paragraphStyle.baseWritingDirection, NSWritingDirectionLeftToRight); |
| +} |
| + |
| +TEST_F(OmniboxViewMacTest, WritingDirectionRTL) { |
| + // TODO(lgrey): Replace setup with scoper when crrev.com/2555033003 lands. |
| + std::string old_locale(base::i18n::GetConfiguredLocale()); |
| + base::i18n::SetICUDefaultLocale("he"); // Hebrew |
| + base::test::ScopedFeatureList scoped_feature_list; |
| + scoped_feature_list.InitAndEnableFeature( |
| + cocoa_l10n_util::kExperimentalMacRTL); |
| + NSString* const appleTextDirectionDefaultsKey = @"AppleTextDirection"; |
| + NSString* const forceRTLWritingDirectionDefaultsKey = |
| + @"NSForceRightToLeftWritingDirection"; |
| + NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults]; |
| + BOOL oldTextDirection = [defaults boolForKey:appleTextDirectionDefaultsKey]; |
| + BOOL oldRTLWritingDirection = |
| + [defaults boolForKey:forceRTLWritingDirectionDefaultsKey]; |
| + [defaults setBool:YES forKey:appleTextDirectionDefaultsKey]; |
| + [defaults setBool:YES forKey:forceRTLWritingDirectionDefaultsKey]; |
| + |
| + OmniboxViewMac view(NULL, profile(), NULL, NULL); |
| + |
| + // This is deleted by the omnibox view. |
| + MockOmniboxEditModel* model = |
| + new MockOmniboxEditModel(&view, NULL, profile()); |
| + SetModel(&view, model); |
| + model->set_current_text_is_url(true); |
| + base::scoped_nsobject<NSMutableAttributedString> string( |
| + [[NSMutableAttributedString alloc] initWithString:@"Foo"]); |
| + view.ApplyTextStyle(string); |
| + |
| + NSParagraphStyle* paragraphStyle = |
| + [string attribute:NSParagraphStyleAttributeName |
| + atIndex:0 |
| + effectiveRange:NULL]; |
| + DCHECK(paragraphStyle); |
| + EXPECT_EQ(paragraphStyle.alignment, NSRightTextAlignment); |
| + EXPECT_EQ(paragraphStyle.baseWritingDirection, NSWritingDirectionLeftToRight); |
| + |
| + base::i18n::SetICUDefaultLocale(old_locale); |
| + [defaults setBool:oldTextDirection forKey:appleTextDirectionDefaultsKey]; |
| + [defaults setBool:oldRTLWritingDirection |
| + forKey:forceRTLWritingDirectionDefaultsKey]; |
| +} |