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

Unified Diff: extensions/browser/file_highlighter.h

Issue 23624002: Add UI for RuntimeErrors in the ErrorConsole (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@dc_ec_merge
Patch Set: Created 7 years, 3 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 side-by-side diff with in-line comments
Download patch
Index: extensions/browser/file_highlighter.h
diff --git a/extensions/browser/manifest_highlighter.h b/extensions/browser/file_highlighter.h
similarity index 61%
rename from extensions/browser/manifest_highlighter.h
rename to extensions/browser/file_highlighter.h
index bb20fef7d835fea2aad8f16c242c6724dee9fb50..c4beaf3be15f28de946e0adc0d1f4e7c7bc54239 100644
--- a/extensions/browser/manifest_highlighter.h
+++ b/extensions/browser/file_highlighter.h
@@ -2,18 +2,61 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#ifndef EXTENSIONS_BROWSER_MANIFEST_HIGHLIGHTER_H_
-#define EXTENSIONS_BROWSER_MANIFEST_HIGHLIGHTER_H_
+#ifndef EXTENSIONS_BROWSER_FILE_HIGHLIGHTER_H_
+#define EXTENSIONS_BROWSER_FILE_HIGHLIGHTER_H_
#include <string>
#include "base/basictypes.h"
+namespace base {
+class DictionaryValue;
+}
+
namespace extensions {
-// Use the ManifestHighlighter class to find the bounds of a feature in the
-// manifest. The manifest is parsed for the feature upon construction of the
+// The FileHighlighter class is used in order to isolate and highlight a portion
+// of a given file (in string form). The Highlighter will split the source into
+// three portions: the portion before the highlighted feature, the highlighted
+// feature, and the portion following the highlighted feature.
+// The file will be parsed for highlighting upon construction of the Highlighter
// object.
+class FileHighlighter {
+ public:
+ virtual ~FileHighlighter();
+
+ // Get the portion of the manifest which should not be highlighted and is
+ // before the feature.
+ std::string GetBeforeFeature() const;
+
+ // Get the feature portion of the manifest, which should be highlighted.
+ std::string GetFeature() const;
+
+ // Get the portion of the manifest which should not be highlighted and is
+ // after the feature.
+ std::string GetAfterFeature() const;
+
+ // Populate a DictionaryValue with the highlighted portions (in UTF16) of the
+ // source file.
+ void SetHighlightedRegions(base::DictionaryValue* dict) const;
+
+ protected:
+ FileHighlighter(const std::string& contents);
+
+ // The contents of the file we are parsing.
+ std::string contents_;
+
+ // The start of the feature.
+ size_t start_;
+
+ // The end of the feature.
+ size_t end_;
+
+ DISALLOW_COPY_AND_ASSIGN(FileHighlighter);
+};
+
+// Use the ManifestHighlighter class to find the bounds of a feature in the
+// manifest.
// A feature can be at any level in the hierarchy. The "start" of a feature is
// the first character of the feature name, or the beginning quote of the name,
// if present. The "end" of a feature is wherever the next item at the same
@@ -25,23 +68,12 @@ namespace extensions {
// manifest, and once we parse it into Values, we lose any formatting the user
// may have had.
// If a feature cannot be found, the feature will have zero-length.
-class ManifestHighlighter {
+class ManifestHighlighter : public FileHighlighter {
public:
ManifestHighlighter(const std::string& manifest,
const std::string& key,
const std::string& specific /* optional */);
- ~ManifestHighlighter();
-
- // Get the portion of the manifest which should not be highlighted and is
- // before the feature.
- std::string GetBeforeFeature() const;
-
- // Get the feature portion of the manifest, which should be highlighted.
- std::string GetFeature() const;
-
- // Get the portion of the manifest which should not be highlighted and is
- // after the feature.
- std::string GetAfterFeature() const;
+ virtual ~ManifestHighlighter();
private:
// Called from the constructor; determine the start and end bounds of a
@@ -57,18 +89,24 @@ class ManifestHighlighter {
// Finds the end of the feature.
void FindBoundsEnd(const std::string& feature, size_t local_start);
- // The manifest we are parsing.
- std::string manifest_;
+ DISALLOW_COPY_AND_ASSIGN(ManifestHighlighter);
+};
- // The start of the feature.
- size_t start_;
+// Use the SourceHighlighter to highlight a particular line in a given source
+// file.
+class SourceHighlighter : public FileHighlighter {
+ public:
+ SourceHighlighter(const std::string& source, size_t line_number);
+ virtual ~SourceHighlighter();
- // The end of the feature.
- size_t end_;
+ private:
+ // Called from the constructor; determine the bounds of the line in the source
+ // file.
+ void Parse(size_t line_number);
- DISALLOW_COPY_AND_ASSIGN(ManifestHighlighter);
+ DISALLOW_COPY_AND_ASSIGN(SourceHighlighter);
};
} // namespace extensions
-#endif // EXTENSIONS_BROWSER_MANIFEST_HIGHLIGHTER_H_
+#endif // EXTENSIONS_BROWSER_FILE_HIGHLIGHTER_H_

Powered by Google App Engine
This is Rietveld 408576698