| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "components/dom_distiller/core/viewer.h" | 5 #include "components/dom_distiller/core/viewer.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/json/json_writer.h" | 10 #include "base/json/json_writer.h" |
| (...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 95 *title = l10n_util::GetStringUTF8(IDS_DOM_DISTILLER_VIEWER_NO_DATA_TITLE); | 95 *title = l10n_util::GetStringUTF8(IDS_DOM_DISTILLER_VIEWER_NO_DATA_TITLE); |
| 96 UMA_HISTOGRAM_BOOLEAN("DomDistiller.PageHasDistilledData", !content->empty()); | 96 UMA_HISTOGRAM_BOOLEAN("DomDistiller.PageHasDistilledData", !content->empty()); |
| 97 if (content->empty()) { | 97 if (content->empty()) { |
| 98 *content = l10n_util::GetStringUTF8( | 98 *content = l10n_util::GetStringUTF8( |
| 99 IDS_DOM_DISTILLER_VIEWER_NO_DATA_CONTENT); | 99 IDS_DOM_DISTILLER_VIEWER_NO_DATA_CONTENT); |
| 100 } | 100 } |
| 101 } | 101 } |
| 102 | 102 |
| 103 std::string ReplaceHtmlTemplateValues( | 103 std::string ReplaceHtmlTemplateValues( |
| 104 const std::string& title, | 104 const std::string& title, |
| 105 const std::string& textDirection, |
| 105 const std::string& content, | 106 const std::string& content, |
| 106 const std::string& loading_indicator_class, | 107 const std::string& loading_indicator_class, |
| 107 const std::string& original_url, | 108 const std::string& original_url, |
| 108 const DistilledPagePrefs::Theme theme, | 109 const DistilledPagePrefs::Theme theme, |
| 109 const DistilledPagePrefs::FontFamily font_family) { | 110 const DistilledPagePrefs::FontFamily font_family) { |
| 110 base::StringPiece html_template = | 111 base::StringPiece html_template = |
| 111 ResourceBundle::GetSharedInstance().GetRawDataResource( | 112 ResourceBundle::GetSharedInstance().GetRawDataResource( |
| 112 IDR_DOM_DISTILLER_VIEWER_HTML); | 113 IDR_DOM_DISTILLER_VIEWER_HTML); |
| 113 std::vector<std::string> substitutions; | 114 std::vector<std::string> substitutions; |
| 114 substitutions.push_back(title); // $1 | 115 substitutions.push_back(title); // $1 |
| 115 substitutions.push_back(kViewerCssPath); // $2 | 116 substitutions.push_back(kViewerCssPath); // $2 |
| 116 substitutions.push_back(kViewerJsPath); // $3 | 117 substitutions.push_back(kViewerJsPath); // $3 |
| 117 substitutions.push_back(GetThemeCssClass(theme) + " " + | 118 substitutions.push_back(GetThemeCssClass(theme) + " " + |
| 118 GetFontCssClass(font_family)); // $4 | 119 GetFontCssClass(font_family)); // $4 |
| 119 substitutions.push_back(content); // $5 | 120 substitutions.push_back(content); // $5 |
| 120 substitutions.push_back(loading_indicator_class); // $6 | 121 substitutions.push_back(loading_indicator_class); // $6 |
| 121 substitutions.push_back(original_url); // $7 | 122 substitutions.push_back(original_url); // $7 |
| 122 substitutions.push_back( | 123 substitutions.push_back( |
| 123 l10n_util::GetStringUTF8(IDS_DOM_DISTILLER_VIEWER_VIEW_ORIGINAL)); // $8 | 124 l10n_util::GetStringUTF8(IDS_DOM_DISTILLER_VIEWER_VIEW_ORIGINAL)); // $8 |
| 125 substitutions.push_back(textDirection); // $9 |
| 124 return ReplaceStringPlaceholders(html_template, substitutions, NULL); | 126 return ReplaceStringPlaceholders(html_template, substitutions, NULL); |
| 125 } | 127 } |
| 126 | 128 |
| 127 } // namespace | 129 } // namespace |
| 128 | 130 |
| 129 namespace viewer { | 131 namespace viewer { |
| 130 | 132 |
| 131 const std::string GetUnsafeIncrementalDistilledPageJs( | 133 const std::string GetUnsafeIncrementalDistilledPageJs( |
| 132 const DistilledPageProto* page_proto, | 134 const DistilledPageProto* page_proto, |
| 133 const bool is_last_page) { | 135 const bool is_last_page) { |
| (...skipping 19 matching lines...) Expand all Loading... |
| 153 const DistilledPagePrefs::Theme theme, | 155 const DistilledPagePrefs::Theme theme, |
| 154 const DistilledPagePrefs::FontFamily font_family) { | 156 const DistilledPagePrefs::FontFamily font_family) { |
| 155 DCHECK(page_proto); | 157 DCHECK(page_proto); |
| 156 std::string title = net::EscapeForHTML(page_proto->title()); | 158 std::string title = net::EscapeForHTML(page_proto->title()); |
| 157 std::ostringstream unsafe_output_stream; | 159 std::ostringstream unsafe_output_stream; |
| 158 unsafe_output_stream << page_proto->html(); | 160 unsafe_output_stream << page_proto->html(); |
| 159 std::string unsafe_article_html = unsafe_output_stream.str(); | 161 std::string unsafe_article_html = unsafe_output_stream.str(); |
| 160 EnsureNonEmptyTitleAndContent(&title, &unsafe_article_html); | 162 EnsureNonEmptyTitleAndContent(&title, &unsafe_article_html); |
| 161 std::string original_url = page_proto->url(); | 163 std::string original_url = page_proto->url(); |
| 162 return ReplaceHtmlTemplateValues( | 164 return ReplaceHtmlTemplateValues( |
| 163 title, unsafe_article_html, "visible", original_url, theme, font_family); | 165 title, page_proto->text_direction(), unsafe_article_html, "visible", |
| 166 original_url, theme, font_family); |
| 164 } | 167 } |
| 165 | 168 |
| 166 const std::string GetUnsafeArticleHtml( | 169 const std::string GetUnsafeArticleHtml( |
| 167 const DistilledArticleProto* article_proto, | 170 const DistilledArticleProto* article_proto, |
| 168 const DistilledPagePrefs::Theme theme, | 171 const DistilledPagePrefs::Theme theme, |
| 169 const DistilledPagePrefs::FontFamily font_family) { | 172 const DistilledPagePrefs::FontFamily font_family) { |
| 170 DCHECK(article_proto); | 173 DCHECK(article_proto); |
| 171 std::string title; | 174 std::string title; |
| 172 std::string unsafe_article_html; | 175 std::string unsafe_article_html; |
| 176 std::string text_direction = ""; |
| 173 if (article_proto->has_title() && article_proto->pages_size() > 0 && | 177 if (article_proto->has_title() && article_proto->pages_size() > 0 && |
| 174 article_proto->pages(0).has_html()) { | 178 article_proto->pages(0).has_html()) { |
| 175 title = net::EscapeForHTML(article_proto->title()); | 179 title = net::EscapeForHTML(article_proto->title()); |
| 176 std::ostringstream unsafe_output_stream; | 180 std::ostringstream unsafe_output_stream; |
| 177 for (int page_num = 0; page_num < article_proto->pages_size(); ++page_num) { | 181 for (int page_num = 0; page_num < article_proto->pages_size(); ++page_num) { |
| 178 unsafe_output_stream << article_proto->pages(page_num).html(); | 182 unsafe_output_stream << article_proto->pages(page_num).html(); |
| 179 } | 183 } |
| 180 unsafe_article_html = unsafe_output_stream.str(); | 184 unsafe_article_html = unsafe_output_stream.str(); |
| 185 text_direction = article_proto->pages(0).text_direction(); |
| 181 } | 186 } |
| 182 | 187 |
| 183 EnsureNonEmptyTitleAndContent(&title, &unsafe_article_html); | 188 EnsureNonEmptyTitleAndContent(&title, &unsafe_article_html); |
| 184 | 189 |
| 185 std::string original_url; | 190 std::string original_url; |
| 186 if (article_proto->pages_size() > 0 && article_proto->pages(0).has_url()) { | 191 if (article_proto->pages_size() > 0 && article_proto->pages(0).has_url()) { |
| 187 original_url = article_proto->pages(0).url(); | 192 original_url = article_proto->pages(0).url(); |
| 188 } | 193 } |
| 189 | 194 |
| 190 return ReplaceHtmlTemplateValues( | 195 return ReplaceHtmlTemplateValues( |
| 191 title, unsafe_article_html, "hidden", original_url, theme, font_family); | 196 title, text_direction, unsafe_article_html, "hidden", original_url, |
| 197 theme, font_family); |
| 192 } | 198 } |
| 193 | 199 |
| 194 const std::string GetErrorPageHtml( | 200 const std::string GetErrorPageHtml( |
| 195 const DistilledPagePrefs::Theme theme, | 201 const DistilledPagePrefs::Theme theme, |
| 196 const DistilledPagePrefs::FontFamily font_family) { | 202 const DistilledPagePrefs::FontFamily font_family) { |
| 197 std::string title = l10n_util::GetStringUTF8( | 203 std::string title = l10n_util::GetStringUTF8( |
| 198 IDS_DOM_DISTILLER_VIEWER_FAILED_TO_FIND_ARTICLE_TITLE); | 204 IDS_DOM_DISTILLER_VIEWER_FAILED_TO_FIND_ARTICLE_TITLE); |
| 199 std::string content = l10n_util::GetStringUTF8( | 205 std::string content = l10n_util::GetStringUTF8( |
| 200 IDS_DOM_DISTILLER_VIEWER_FAILED_TO_FIND_ARTICLE_CONTENT); | 206 IDS_DOM_DISTILLER_VIEWER_FAILED_TO_FIND_ARTICLE_CONTENT); |
| 201 return ReplaceHtmlTemplateValues( | 207 return ReplaceHtmlTemplateValues( |
| 202 title, content, "hidden", "", theme, font_family); | 208 title, "", content, "hidden", "", theme, font_family); |
| 203 } | 209 } |
| 204 | 210 |
| 205 const std::string GetCss() { | 211 const std::string GetCss() { |
| 206 return ResourceBundle::GetSharedInstance().GetRawDataResource( | 212 return ResourceBundle::GetSharedInstance().GetRawDataResource( |
| 207 IDR_DISTILLER_CSS).as_string(); | 213 IDR_DISTILLER_CSS).as_string(); |
| 208 } | 214 } |
| 209 | 215 |
| 210 const std::string GetJavaScript() { | 216 const std::string GetJavaScript() { |
| 211 return ResourceBundle::GetSharedInstance() | 217 return ResourceBundle::GetSharedInstance() |
| 212 .GetRawDataResource(IDR_DOM_DISTILLER_VIEWER_JS) | 218 .GetRawDataResource(IDR_DOM_DISTILLER_VIEWER_JS) |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 255 } | 261 } |
| 256 | 262 |
| 257 const std::string GetDistilledPageFontFamilyJs( | 263 const std::string GetDistilledPageFontFamilyJs( |
| 258 DistilledPagePrefs::FontFamily font_family) { | 264 DistilledPagePrefs::FontFamily font_family) { |
| 259 return "useFontFamily('" + GetJsFontFamily(font_family) + "');"; | 265 return "useFontFamily('" + GetJsFontFamily(font_family) + "');"; |
| 260 } | 266 } |
| 261 | 267 |
| 262 } // namespace viewer | 268 } // namespace viewer |
| 263 | 269 |
| 264 } // namespace dom_distiller | 270 } // namespace dom_distiller |
| OLD | NEW |