summaryrefslogtreecommitdiffstats
path: root/parser/html/nsHtml5ViewSourceUtils.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'parser/html/nsHtml5ViewSourceUtils.cpp')
-rw-r--r--parser/html/nsHtml5ViewSourceUtils.cpp53
1 files changed, 53 insertions, 0 deletions
diff --git a/parser/html/nsHtml5ViewSourceUtils.cpp b/parser/html/nsHtml5ViewSourceUtils.cpp
new file mode 100644
index 000000000..4dd33fc05
--- /dev/null
+++ b/parser/html/nsHtml5ViewSourceUtils.cpp
@@ -0,0 +1,53 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+#include "nsHtml5ViewSourceUtils.h"
+#include "nsHtml5AttributeName.h"
+#include "mozilla/Preferences.h"
+#include "mozilla/UniquePtr.h"
+
+// static
+nsHtml5HtmlAttributes*
+nsHtml5ViewSourceUtils::NewBodyAttributes()
+{
+ nsHtml5HtmlAttributes* bodyAttrs = new nsHtml5HtmlAttributes(0);
+ auto id = MakeUnique<nsString>(NS_LITERAL_STRING("viewsource"));
+ bodyAttrs->addAttribute(nsHtml5AttributeName::ATTR_ID, id.release(), -1);
+
+ auto klass = MakeUnique<nsString>();
+ if (mozilla::Preferences::GetBool("view_source.wrap_long_lines", true)) {
+ klass->Append(NS_LITERAL_STRING("wrap "));
+ }
+ if (mozilla::Preferences::GetBool("view_source.syntax_highlight", true)) {
+ klass->Append(NS_LITERAL_STRING("highlight"));
+ }
+ if (!klass->IsEmpty()) {
+ bodyAttrs->addAttribute(nsHtml5AttributeName::ATTR_CLASS, klass.release(), -1);
+ }
+
+ int32_t tabSize = mozilla::Preferences::GetInt("view_source.tab_size", 4);
+ if (tabSize > 0) {
+ auto style = MakeUnique<nsString>(NS_LITERAL_STRING("-moz-tab-size: "));
+ style->AppendInt(tabSize);
+ bodyAttrs->addAttribute(nsHtml5AttributeName::ATTR_STYLE, style.release(), -1);
+ }
+
+ return bodyAttrs;
+}
+
+// static
+nsHtml5HtmlAttributes*
+nsHtml5ViewSourceUtils::NewLinkAttributes()
+{
+ nsHtml5HtmlAttributes* linkAttrs = new nsHtml5HtmlAttributes(0);
+ nsString* rel = new nsString(NS_LITERAL_STRING("stylesheet"));
+ linkAttrs->addAttribute(nsHtml5AttributeName::ATTR_REL, rel, -1);
+ nsString* type = new nsString(NS_LITERAL_STRING("text/css"));
+ linkAttrs->addAttribute(nsHtml5AttributeName::ATTR_TYPE, type, -1);
+ nsString* href = new nsString(
+ NS_LITERAL_STRING("resource://gre-resources/viewsource.css"));
+ linkAttrs->addAttribute(nsHtml5AttributeName::ATTR_HREF, href, -1);
+ return linkAttrs;
+}