Index: components/dom_distiller/core/viewer.cc |
diff --git a/components/dom_distiller/core/viewer.cc b/components/dom_distiller/core/viewer.cc |
index e19f3785f71b92c2243e8c07be8ea3b0429ace9f..8bc49587218a65d713983c8322f4ee42b1e9bfc2 100644 |
--- a/components/dom_distiller/core/viewer.cc |
+++ b/components/dom_distiller/core/viewer.cc |
@@ -143,6 +143,26 @@ std::string ReplaceHtmlTemplateValues( |
return ReplaceStringPlaceholders(html_template, substitutions, NULL); |
} |
+std::string ReplacePrintPreviewHtmlTemplateValues( |
+ const std::string& title, |
+ const std::string& textDirection, |
+ const std::string& content, |
+ const DistilledPagePrefs::Theme theme, |
+ const DistilledPagePrefs::FontFamily font_family) { |
+ base::StringPiece html_template = |
+ ResourceBundle::GetSharedInstance().GetRawDataResource( |
+ IDR_DOM_DISTILLER_PRINT_PREVIEW_HTML); |
+ |
+ std::vector<std::string> substitutions; |
+ substitutions.push_back(title); // $1 |
+ substitutions.push_back(kPrintPreviewViewerCssPath); // $2 |
+ substitutions.push_back(GetThemeCssClass(theme) + " " + |
+ GetFontCssClass(font_family)); // $3 |
+ substitutions.push_back(content); // $4 |
+ substitutions.push_back(textDirection); // $9 |
+ return ReplaceStringPlaceholders(html_template, substitutions, NULL); |
+} |
+ |
} // namespace |
namespace viewer { |
@@ -242,11 +262,48 @@ const std::string GetErrorPageHtml( |
font_family); |
} |
+const std::string GetUnsafePrintPreviewHtml( |
+ const DistilledArticleProto* article_proto, |
+ const DistilledPagePrefs::Theme theme, |
+ const DistilledPagePrefs::FontFamily font_family) { |
+ DCHECK(article_proto); |
+ std::string title; |
+ std::string unsafe_article_html; |
+ std::string text_direction = ""; |
+ if (article_proto->has_title() && article_proto->pages_size() > 0 && |
+ article_proto->pages(0).has_html()) { |
+ title = net::EscapeForHTML(article_proto->title()); |
+ std::ostringstream unsafe_output_stream; |
+ for (int page_num = 0; page_num < article_proto->pages_size(); ++page_num) { |
+ unsafe_output_stream << article_proto->pages(page_num).html(); |
+ } |
+ unsafe_article_html = unsafe_output_stream.str(); |
+ text_direction = article_proto->pages(0).text_direction(); |
+ } |
+ |
+ EnsureNonEmptyTitle(&title); |
+ EnsureNonEmptyContent(&unsafe_article_html); |
+ |
+ std::string original_url; |
+ if (article_proto->pages_size() > 0 && article_proto->pages(0).has_url()) { |
+ original_url = article_proto->pages(0).url(); |
+ } |
+ |
+ return ReplacePrintPreviewHtmlTemplateValues( |
+ title, text_direction, unsafe_article_html, |
+ theme, font_family); |
+} |
+ |
const std::string GetCss() { |
return ResourceBundle::GetSharedInstance().GetRawDataResource( |
IDR_DISTILLER_CSS).as_string(); |
} |
+const std::string GetPrintPreviewCss() { |
+ return ResourceBundle::GetSharedInstance().GetRawDataResource( |
+ IDR_DISTILLER_PRINT_PREVIEW_CSS).as_string(); |
+} |
+ |
const std::string GetJavaScript() { |
return ResourceBundle::GetSharedInstance() |
.GetRawDataResource(IDR_DOM_DISTILLER_VIEWER_JS) |