Commit 1414e78b authored by tfarina@chromium.org's avatar tfarina@chromium.org

base/i18n: Pass |str| as const reference in BreakIterator::Init().

BUG=None
TEST=out/Debug/base_unittests --gtest_filter=BreakIteratorTest.*

R=tsepez@chromium.org,evan@chromium.org

Review URL: http://codereview.chromium.org/7008005

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@86689 0039d316-1c4b-4281-b951-d872f2087c98
parent d3afcdab
......@@ -14,7 +14,7 @@ namespace i18n {
const size_t npos = -1;
BreakIterator::BreakIterator(const string16* str, BreakType break_type)
BreakIterator::BreakIterator(const string16& str, BreakType break_type)
: iter_(NULL),
string_(str),
break_type_(break_type),
......@@ -43,7 +43,7 @@ bool BreakIterator::Init() {
return false;
}
iter_ = ubrk_open(break_type, NULL,
string_->data(), static_cast<int32_t>(string_->size()),
string_.data(), static_cast<int32_t>(string_.size()),
&status);
if (U_FAILURE(status)) {
NOTREACHED() << "ubrk_open failed";
......@@ -96,7 +96,7 @@ bool BreakIterator::IsWord() const {
string16 BreakIterator::GetString() const {
DCHECK(prev_ != npos && pos_ != npos);
return string_->substr(prev_, pos_ - prev_);
return string_.substr(prev_, pos_ - prev_);
}
} // namespace i18n
......
......@@ -67,7 +67,7 @@ class BreakIterator {
};
// Requires |str| to live as long as the BreakIterator does.
BreakIterator(const string16* str, BreakType break_type);
BreakIterator(const string16& str, BreakType break_type);
~BreakIterator();
// Init() must be called before any of the iterators are valid.
......@@ -106,7 +106,7 @@ class BreakIterator {
void* iter_;
// The string we're iterating over.
const string16* string_;
const string16& string_;
// The breaking style (word/space/newline).
BreakType break_type_;
......
......@@ -14,7 +14,7 @@ namespace i18n {
TEST(BreakIteratorTest, BreakWordEmpty) {
string16 empty;
BreakIterator iter(&empty, BreakIterator::BREAK_WORD);
BreakIterator iter(empty, BreakIterator::BREAK_WORD);
ASSERT_TRUE(iter.Init());
EXPECT_FALSE(iter.Advance());
EXPECT_FALSE(iter.IsWord());
......@@ -25,7 +25,7 @@ TEST(BreakIteratorTest, BreakWordEmpty) {
TEST(BreakIteratorTest, BreakWord) {
string16 space(UTF8ToUTF16(" "));
string16 str(UTF8ToUTF16(" foo bar! \npouet boom"));
BreakIterator iter(&str, BreakIterator::BREAK_WORD);
BreakIterator iter(str, BreakIterator::BREAK_WORD);
ASSERT_TRUE(iter.Init());
EXPECT_TRUE(iter.Advance());
EXPECT_FALSE(iter.IsWord());
......@@ -70,7 +70,7 @@ TEST(BreakIteratorTest, BreakWide16) {
L"\x03bf\x03c2\x0020\x0399\x03c3\x03c4\x03cc\x03c2"));
const string16 word1(str.substr(0, 10));
const string16 word2(str.substr(11, 5));
BreakIterator iter(&str, BreakIterator::BREAK_WORD);
BreakIterator iter(str, BreakIterator::BREAK_WORD);
ASSERT_TRUE(iter.Init());
EXPECT_TRUE(iter.Advance());
EXPECT_TRUE(iter.IsWord());
......@@ -94,7 +94,7 @@ TEST(BreakIteratorTest, BreakWide32) {
UTF8ToUTF16(base::StringPrintf("%s a", very_wide_char)));
const string16 very_wide_word(str.substr(0, 2));
BreakIterator iter(&str, BreakIterator::BREAK_WORD);
BreakIterator iter(str, BreakIterator::BREAK_WORD);
ASSERT_TRUE(iter.Init());
EXPECT_TRUE(iter.Advance());
EXPECT_TRUE(iter.IsWord());
......@@ -113,7 +113,7 @@ TEST(BreakIteratorTest, BreakWide32) {
TEST(BreakIteratorTest, BreakSpaceEmpty) {
string16 empty;
BreakIterator iter(&empty, BreakIterator::BREAK_SPACE);
BreakIterator iter(empty, BreakIterator::BREAK_SPACE);
ASSERT_TRUE(iter.Init());
EXPECT_FALSE(iter.Advance());
EXPECT_FALSE(iter.IsWord());
......@@ -123,7 +123,7 @@ TEST(BreakIteratorTest, BreakSpaceEmpty) {
TEST(BreakIteratorTest, BreakSpace) {
string16 str(UTF8ToUTF16(" foo bar! \npouet boom"));
BreakIterator iter(&str, BreakIterator::BREAK_SPACE);
BreakIterator iter(str, BreakIterator::BREAK_SPACE);
ASSERT_TRUE(iter.Init());
EXPECT_TRUE(iter.Advance());
EXPECT_FALSE(iter.IsWord());
......@@ -148,7 +148,7 @@ TEST(BreakIteratorTest, BreakSpace) {
TEST(BreakIteratorTest, BreakSpaceSP) {
string16 str(UTF8ToUTF16(" foo bar! \npouet boom "));
BreakIterator iter(&str, BreakIterator::BREAK_SPACE);
BreakIterator iter(str, BreakIterator::BREAK_SPACE);
ASSERT_TRUE(iter.Init());
EXPECT_TRUE(iter.Advance());
EXPECT_FALSE(iter.IsWord());
......@@ -178,7 +178,7 @@ TEST(BreakIteratorTest, BreakSpacekWide16) {
L"\x03bf\x03c2\x0020\x0399\x03c3\x03c4\x03cc\x03c2"));
const string16 word1(str.substr(0, 11));
const string16 word2(str.substr(11, 5));
BreakIterator iter(&str, BreakIterator::BREAK_SPACE);
BreakIterator iter(str, BreakIterator::BREAK_SPACE);
ASSERT_TRUE(iter.Init());
EXPECT_TRUE(iter.Advance());
EXPECT_FALSE(iter.IsWord());
......@@ -199,7 +199,7 @@ TEST(BreakIteratorTest, BreakSpaceWide32) {
UTF8ToUTF16(base::StringPrintf("%s a", very_wide_char)));
const string16 very_wide_word(str.substr(0, 3));
BreakIterator iter(&str, BreakIterator::BREAK_SPACE);
BreakIterator iter(str, BreakIterator::BREAK_SPACE);
ASSERT_TRUE(iter.Init());
EXPECT_TRUE(iter.Advance());
EXPECT_FALSE(iter.IsWord());
......@@ -215,7 +215,7 @@ TEST(BreakIteratorTest, BreakSpaceWide32) {
TEST(BreakIteratorTest, BreakLineEmpty) {
string16 empty;
BreakIterator iter(&empty, BreakIterator::BREAK_NEWLINE);
BreakIterator iter(empty, BreakIterator::BREAK_NEWLINE);
ASSERT_TRUE(iter.Init());
EXPECT_FALSE(iter.Advance());
EXPECT_FALSE(iter.IsWord());
......@@ -226,7 +226,7 @@ TEST(BreakIteratorTest, BreakLineEmpty) {
TEST(BreakIteratorTest, BreakLine) {
string16 nl(UTF8ToUTF16("\n"));
string16 str(UTF8ToUTF16("\nfoo bar!\n\npouet boom"));
BreakIterator iter(&str, BreakIterator::BREAK_NEWLINE);
BreakIterator iter(str, BreakIterator::BREAK_NEWLINE);
ASSERT_TRUE(iter.Init());
EXPECT_TRUE(iter.Advance());
EXPECT_FALSE(iter.IsWord());
......@@ -249,7 +249,7 @@ TEST(BreakIteratorTest, BreakLine) {
TEST(BreakIteratorTest, BreakLineNL) {
string16 nl(UTF8ToUTF16("\n"));
string16 str(UTF8ToUTF16("\nfoo bar!\n\npouet boom\n"));
BreakIterator iter(&str, BreakIterator::BREAK_NEWLINE);
BreakIterator iter(str, BreakIterator::BREAK_NEWLINE);
ASSERT_TRUE(iter.Init());
EXPECT_TRUE(iter.Advance());
EXPECT_FALSE(iter.IsWord());
......@@ -276,7 +276,7 @@ TEST(BreakIteratorTest, BreakLineWide16) {
L"\x03bf\x03c2\x000a\x0399\x03c3\x03c4\x03cc\x03c2"));
const string16 line1(str.substr(0, 11));
const string16 line2(str.substr(11, 5));
BreakIterator iter(&str, BreakIterator::BREAK_NEWLINE);
BreakIterator iter(str, BreakIterator::BREAK_NEWLINE);
ASSERT_TRUE(iter.Init());
EXPECT_TRUE(iter.Advance());
EXPECT_FALSE(iter.IsWord());
......@@ -296,7 +296,7 @@ TEST(BreakIteratorTest, BreakLineWide32) {
const string16 str(
UTF8ToUTF16(base::StringPrintf("%s\na", very_wide_char)));
const string16 very_wide_line(str.substr(0, 3));
BreakIterator iter(&str, BreakIterator::BREAK_NEWLINE);
BreakIterator iter(str, BreakIterator::BREAK_NEWLINE);
ASSERT_TRUE(iter.Init());
EXPECT_TRUE(iter.Advance());
EXPECT_FALSE(iter.IsWord());
......
......@@ -487,7 +487,7 @@ InMemoryURLIndex::String16Vector InMemoryURLIndex::WordVectorFromString16(
const string16& uni_string,
bool break_on_space) {
base::i18n::BreakIterator iter(
&uni_string,
uni_string,
break_on_space ? base::i18n::BreakIterator::BREAK_SPACE
: base::i18n::BreakIterator::BREAK_WORD);
String16Vector words;
......
......@@ -354,7 +354,7 @@ bool QueryParser::DoesQueryMatch(const string16& text,
}
bool QueryParser::ParseQueryImpl(const string16& query, QueryNodeList* root) {
base::i18n::BreakIterator iter(&query, base::i18n::BreakIterator::BREAK_WORD);
base::i18n::BreakIterator iter(query, base::i18n::BreakIterator::BREAK_WORD);
// TODO(evanm): support a locale here
if (!iter.Init())
return false;
......@@ -395,7 +395,7 @@ bool QueryParser::ParseQueryImpl(const string16& query, QueryNodeList* root) {
void QueryParser::ExtractQueryWords(const string16& text,
std::vector<QueryWord>* words) {
base::i18n::BreakIterator iter(&text, base::i18n::BreakIterator::BREAK_WORD);
base::i18n::BreakIterator iter(text, base::i18n::BreakIterator::BREAK_WORD);
// TODO(evanm): support a locale here
if (!iter.Init())
return;
......
......@@ -1043,7 +1043,7 @@ void DownloadItemView::SizeLabelToMinWidth() {
// Using BREAK_WORD can work in most cases, but it can also break
// lines where it should not. Using BREAK_LINE is safer although
// slower for Chinese/Japanese. This is not perf-critical at all, though.
base::i18n::BreakIterator iter(&text, base::i18n::BreakIterator::BREAK_LINE);
base::i18n::BreakIterator iter(text, base::i18n::BreakIterator::BREAK_LINE);
bool status = iter.Init();
DCHECK(status);
......
......@@ -576,7 +576,7 @@ class RectangleString {
};
void RectangleString::AddString(const string16& input) {
base::i18n::BreakIterator lines(&input,
base::i18n::BreakIterator lines(input,
base::i18n::BreakIterator::BREAK_NEWLINE);
if (lines.Init()) {
while (lines.Advance())
......@@ -598,7 +598,7 @@ void RectangleString::AddLine(const string16& line) {
if (line.length() < max_cols_) {
Append(line);
} else {
base::i18n::BreakIterator words(&line,
base::i18n::BreakIterator words(line,
base::i18n::BreakIterator::BREAK_SPACE);
if (words.Init()) {
while (words.Advance())
......
......@@ -431,7 +431,7 @@ void TextfieldViewsModel::MoveCursorToPreviousWord(bool select) {
// This is probably fast enough for our usage, but we may
// want to modify WordIterator so that it can start from the
// middle of string and advance backwards.
base::i18n::BreakIterator iter(&text_, base::i18n::BreakIterator::BREAK_WORD);
base::i18n::BreakIterator iter(text_, base::i18n::BreakIterator::BREAK_WORD);
bool success = iter.Init();
DCHECK(success);
if (!success)
......@@ -463,7 +463,7 @@ void TextfieldViewsModel::MoveCursorToPreviousWord(bool select) {
void TextfieldViewsModel::MoveCursorToNextWord(bool select) {
if (HasCompositionText())
ConfirmCompositionText();
base::i18n::BreakIterator iter(&text_, base::i18n::BreakIterator::BREAK_WORD);
base::i18n::BreakIterator iter(text_, base::i18n::BreakIterator::BREAK_WORD);
bool success = iter.Init();
DCHECK(success);
if (!success)
......
......@@ -98,7 +98,7 @@ void DrawTextStartingFrom(gfx::Canvas* canvas,
// Iterate through line breaking opportunities (which in English would be
// spaces and such). This tells us where to wrap.
string16 text16(WideToUTF16(text));
base::i18n::BreakIterator iter(&text16,
base::i18n::BreakIterator iter(text16,
base::i18n::BreakIterator::BREAK_SPACE);
if (!iter.Init())
return;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment