diff options
Diffstat (limited to 'extensions')
-rw-r--r-- | extensions/browser/file_highlighter.cc | 15 | ||||
-rw-r--r-- | extensions/browser/file_highlighter_unittest.cc | 22 |
2 files changed, 35 insertions, 2 deletions
diff --git a/extensions/browser/file_highlighter.cc b/extensions/browser/file_highlighter.cc index d3edeca..2cc669e 100644 --- a/extensions/browser/file_highlighter.cc +++ b/extensions/browser/file_highlighter.cc @@ -203,8 +203,19 @@ SourceHighlighter::~SourceHighlighter() { } void SourceHighlighter::Parse(size_t line_number) { - for (size_t i = 1; i < line_number; ++i) - start_ = contents_.find('\n', start_) + 1; + // If line 0 is requested, highlight nothing. + if (line_number == 0) { + start_ = contents_.size(); + return; + } + + for (size_t i = 1; i < line_number; ++i) { + start_ = contents_.find('\n', start_); + if (start_ == std::string::npos) + break; + start_ += 1; + } + end_ = contents_.find('\n', start_); // If we went off the end of the string (i.e., the line number was invalid), diff --git a/extensions/browser/file_highlighter_unittest.cc b/extensions/browser/file_highlighter_unittest.cc index 6352be4..a449bf9 100644 --- a/extensions/browser/file_highlighter_unittest.cc +++ b/extensions/browser/file_highlighter_unittest.cc @@ -95,4 +95,26 @@ TEST(ManifestHighlighterUnitTest, ManifestHighlighterUnitTest) { EXPECT_EQ(kInternationalFeature, international_feature.GetFeature()); } +TEST(SouceHighlighterUnitTest, SourceHighlighterUnitTest) { + const char kBasicSourceFile[] = "line one\nline two\nline three"; + + SourceHighlighter basic1(kBasicSourceFile, 1u); + EXPECT_EQ("line one", basic1.GetFeature()); + SourceHighlighter basic2(kBasicSourceFile, 2u); + EXPECT_EQ("line two", basic2.GetFeature()); + SourceHighlighter basic3(kBasicSourceFile, 3u); + EXPECT_EQ("line three", basic3.GetFeature()); + + const char kNoNewlineSourceFile[] = "thisisonelonglinewithnobreaksinit"; + + SourceHighlighter full_line(kNoNewlineSourceFile, 1u); + EXPECT_EQ(kNoNewlineSourceFile, full_line.GetFeature()); + + SourceHighlighter line_zero(kNoNewlineSourceFile, 0u); + EXPECT_EQ(EmptyString(), line_zero.GetFeature()); + + SourceHighlighter out_of_bounds(kNoNewlineSourceFile, 2u); + EXPECT_EQ(EmptyString(), out_of_bounds.GetFeature()); +} + } // namespace extensions |