Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3)

Side by Side Diff: chrome/common/l10n_util.cc

Issue 49034: Review request: fix 8997 -- RTL Regression: Word order separated by slash is reversed on "Bookmark M (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/browser/bookmarks/bookmark_table_model.cc ('k') | chrome/common/l10n_util_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "build/build_config.h" 5 #include "build/build_config.h"
6 6
7 #include "chrome/common/l10n_util.h" 7 #include "chrome/common/l10n_util.h"
8 8
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/file_path.h" 10 #include "base/file_path.h"
(...skipping 542 matching lines...) Expand 10 before | Expand all | Expand 10 after
553 void WrapStringWithRTLFormatting(std::wstring* text) { 553 void WrapStringWithRTLFormatting(std::wstring* text) {
554 // Inserting an RLE (Right-To-Left Embedding) mark as the first character. 554 // Inserting an RLE (Right-To-Left Embedding) mark as the first character.
555 text->insert(0, 1, static_cast<wchar_t>(kRightToLeftEmbeddingMark)); 555 text->insert(0, 1, static_cast<wchar_t>(kRightToLeftEmbeddingMark));
556 556
557 // Inserting a PDF (Pop Directional Formatting) mark as the last character. 557 // Inserting a PDF (Pop Directional Formatting) mark as the last character.
558 text->push_back(static_cast<wchar_t>(kPopDirectionalFormatting)); 558 text->push_back(static_cast<wchar_t>(kPopDirectionalFormatting));
559 } 559 }
560 560
561 void WrapPathWithLTRFormatting(const FilePath& path, 561 void WrapPathWithLTRFormatting(const FilePath& path,
562 string16* rtl_safe_path) { 562 string16* rtl_safe_path) {
563 // Split the path. 563 // Wrap the overall path with LRE-PDF pair which essentialy marks the
564 std::vector<FilePath::StringType> path_components; 564 // string as a Left-To-Right string.
565 file_util::PathComponents(path, &path_components);
566 // Compose the whole path from components with the following 2 additions:
567 // 1. Wrap the overall path with LRE-PDF pair which essentialy marks the
568 // string as a Left-To-Right string. Otherwise, the punctuation (if there is
569 // any) at the end of the path will not be displayed at the correct position.
570 // Inserting an LRE (Left-To-Right Embedding) mark as the first character. 565 // Inserting an LRE (Left-To-Right Embedding) mark as the first character.
571 rtl_safe_path->push_back(kLeftToRightEmbeddingMark); 566 rtl_safe_path->push_back(kLeftToRightEmbeddingMark);
572 char16 path_separator = static_cast<char16>(FilePath::kSeparators[0]);
573 for (size_t index = 0; index < path_components.size(); ++index) {
574 #if defined(OS_MACOSX) 567 #if defined(OS_MACOSX)
575 rtl_safe_path->append(UTF8ToUTF16(path_components[index])); 568 rtl_safe_path->append(UTF8ToUTF16(path.value()));
576 #elif defined(OS_WIN) 569 #elif defined(OS_WIN)
577 rtl_safe_path->append(path_components[index]); 570 rtl_safe_path->append(path.value());
578 #else // defined(OS_LINUX) 571 #else // defined(OS_LINUX)
579 std::wstring one_component = 572 std::wstring wide_path = base::SysNativeMBToWide(path.value());
580 base::SysNativeMBToWide(path_components[index]); 573 rtl_safe_path->append(WideToUTF16(wide_path));
581 rtl_safe_path->append(WideToUTF16(one_component));
582 #endif 574 #endif
583 bool first_component_is_separator =
584 ((index == 0) &&
585 (path_components[0].length() == 1) &&
586 (FilePath::IsSeparator(path_components[0][0])));
587 bool last_component = (index == path_components.size() - 1);
588 // Add separator for components except for the first component if itself is
589 // a separator, and except for the last component.
590 if (!last_component && !first_component_is_separator) {
591 rtl_safe_path->push_back(path_separator);
592 // 2. Add left-to-right mark after path separator to force each subfolder
593 // in the path to have LTR directionality. Otherwise, folder path
594 // "CBA/FED" (in which, "CBA" and "FED" stand for folder names in Hebrew,
595 // and "FED" is a subfolder of "CBA") will be displayed as "FED/CBA".
596 rtl_safe_path->push_back(kLeftToRightMark);
597 }
598 }
599 // Inserting a PDF (Pop Directional Formatting) mark as the last character. 575 // Inserting a PDF (Pop Directional Formatting) mark as the last character.
600 rtl_safe_path->push_back(kPopDirectionalFormatting); 576 rtl_safe_path->push_back(kPopDirectionalFormatting);
601 } 577 }
602 578
603 int DefaultCanvasTextAlignment() { 579 int DefaultCanvasTextAlignment() {
604 if (GetTextDirection() == LEFT_TO_RIGHT) { 580 if (GetTextDirection() == LEFT_TO_RIGHT) {
605 return ChromeCanvas::TEXT_ALIGN_LEFT; 581 return ChromeCanvas::TEXT_ALIGN_LEFT;
606 } else { 582 } else {
607 return ChromeCanvas::TEXT_ALIGN_RIGHT; 583 return ChromeCanvas::TEXT_ALIGN_RIGHT;
608 } 584 }
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
725 } 701 }
726 702
727 void BiDiLineIterator::GetLogicalRun(int start, 703 void BiDiLineIterator::GetLogicalRun(int start,
728 int* end, 704 int* end,
729 UBiDiLevel* level) { 705 UBiDiLevel* level) {
730 DCHECK(bidi_ != NULL); 706 DCHECK(bidi_ != NULL);
731 ubidi_getLogicalRun(bidi_, start, end, level); 707 ubidi_getLogicalRun(bidi_, start, end, level);
732 } 708 }
733 709
734 } 710 }
OLDNEW
« no previous file with comments | « chrome/browser/bookmarks/bookmark_table_model.cc ('k') | chrome/common/l10n_util_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698