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

Side by Side Diff: components/dom_distiller/core/viewer.cc

Issue 563923002: display error message for empty distilled content (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: move test to browsertest to bypass missing resources on ios/android Created 6 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 unified diff | Download patch
OLDNEW
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 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
82 // Maps fontFamilies to CSS fontFamily classes. 82 // Maps fontFamilies to CSS fontFamily classes.
83 const std::string GetFontCssClass(DistilledPagePrefs::FontFamily font_family) { 83 const std::string GetFontCssClass(DistilledPagePrefs::FontFamily font_family) {
84 if (font_family == DistilledPagePrefs::SERIF) { 84 if (font_family == DistilledPagePrefs::SERIF) {
85 return kSerifCssClass; 85 return kSerifCssClass;
86 } else if (font_family == DistilledPagePrefs::MONOSPACE) { 86 } else if (font_family == DistilledPagePrefs::MONOSPACE) {
87 return kMonospaceCssClass; 87 return kMonospaceCssClass;
88 } 88 }
89 return kSansSerifCssClass; 89 return kSansSerifCssClass;
90 } 90 }
91 91
92 void EnsureNonEmptyTitleAndContent(std::string* title, std::string* content) {
93 if (title->empty())
94 *title = l10n_util::GetStringUTF8(IDS_DOM_DISTILLER_VIEWER_NO_DATA_TITLE);
95 if (content->empty()) {
96 *content = l10n_util::GetStringUTF8(
97 IDS_DOM_DISTILLER_VIEWER_NO_DATA_CONTENT);
98 }
99 }
100
92 std::string ReplaceHtmlTemplateValues( 101 std::string ReplaceHtmlTemplateValues(
93 const std::string& title, 102 const std::string& title,
94 const std::string& content, 103 const std::string& content,
95 const std::string& loading_indicator_class, 104 const std::string& loading_indicator_class,
96 const std::string& original_url, 105 const std::string& original_url,
97 const DistilledPagePrefs::Theme theme, 106 const DistilledPagePrefs::Theme theme,
98 const DistilledPagePrefs::FontFamily font_family) { 107 const DistilledPagePrefs::FontFamily font_family) {
99 base::StringPiece html_template = 108 base::StringPiece html_template =
100 ResourceBundle::GetSharedInstance().GetRawDataResource( 109 ResourceBundle::GetSharedInstance().GetRawDataResource(
101 IDR_DOM_DISTILLER_VIEWER_HTML); 110 IDR_DOM_DISTILLER_VIEWER_HTML);
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
139 148
140 const std::string GetUnsafePartialArticleHtml( 149 const std::string GetUnsafePartialArticleHtml(
141 const DistilledPageProto* page_proto, 150 const DistilledPageProto* page_proto,
142 const DistilledPagePrefs::Theme theme, 151 const DistilledPagePrefs::Theme theme,
143 const DistilledPagePrefs::FontFamily font_family) { 152 const DistilledPagePrefs::FontFamily font_family) {
144 DCHECK(page_proto); 153 DCHECK(page_proto);
145 std::string title = net::EscapeForHTML(page_proto->title()); 154 std::string title = net::EscapeForHTML(page_proto->title());
146 std::ostringstream unsafe_output_stream; 155 std::ostringstream unsafe_output_stream;
147 unsafe_output_stream << page_proto->html(); 156 unsafe_output_stream << page_proto->html();
148 std::string unsafe_article_html = unsafe_output_stream.str(); 157 std::string unsafe_article_html = unsafe_output_stream.str();
158 EnsureNonEmptyTitleAndContent(&title, &unsafe_article_html);
149 std::string original_url = page_proto->url(); 159 std::string original_url = page_proto->url();
150 return ReplaceHtmlTemplateValues( 160 return ReplaceHtmlTemplateValues(
151 title, unsafe_article_html, "visible", original_url, theme, font_family); 161 title, unsafe_article_html, "visible", original_url, theme, font_family);
152 } 162 }
153 163
154 const std::string GetUnsafeArticleHtml( 164 const std::string GetUnsafeArticleHtml(
155 const DistilledArticleProto* article_proto, 165 const DistilledArticleProto* article_proto,
156 const DistilledPagePrefs::Theme theme, 166 const DistilledPagePrefs::Theme theme,
157 const DistilledPagePrefs::FontFamily font_family) { 167 const DistilledPagePrefs::FontFamily font_family) {
158 DCHECK(article_proto); 168 DCHECK(article_proto);
159 std::string title; 169 std::string title;
160 std::string unsafe_article_html; 170 std::string unsafe_article_html;
161 if (article_proto->has_title() && article_proto->pages_size() > 0 && 171 if (article_proto->has_title() && article_proto->pages_size() > 0 &&
162 article_proto->pages(0).has_html()) { 172 article_proto->pages(0).has_html()) {
163 title = net::EscapeForHTML(article_proto->title()); 173 title = net::EscapeForHTML(article_proto->title());
164 std::ostringstream unsafe_output_stream; 174 std::ostringstream unsafe_output_stream;
165 for (int page_num = 0; page_num < article_proto->pages_size(); ++page_num) { 175 for (int page_num = 0; page_num < article_proto->pages_size(); ++page_num) {
166 unsafe_output_stream << article_proto->pages(page_num).html(); 176 unsafe_output_stream << article_proto->pages(page_num).html();
167 } 177 }
168 unsafe_article_html = unsafe_output_stream.str(); 178 unsafe_article_html = unsafe_output_stream.str();
169 } else {
170 title = l10n_util::GetStringUTF8(IDS_DOM_DISTILLER_VIEWER_NO_DATA_TITLE);
171 unsafe_article_html =
172 l10n_util::GetStringUTF8(IDS_DOM_DISTILLER_VIEWER_NO_DATA_CONTENT);
173 } 179 }
174 180
181 EnsureNonEmptyTitleAndContent(&title, &unsafe_article_html);
182
175 std::string original_url; 183 std::string original_url;
176 if (article_proto->pages_size() > 0 && article_proto->pages(0).has_url()) { 184 if (article_proto->pages_size() > 0 && article_proto->pages(0).has_url()) {
177 original_url = article_proto->pages(0).url(); 185 original_url = article_proto->pages(0).url();
178 } 186 }
179 187
180 return ReplaceHtmlTemplateValues( 188 return ReplaceHtmlTemplateValues(
181 title, unsafe_article_html, "hidden", original_url, theme, font_family); 189 title, unsafe_article_html, "hidden", original_url, theme, font_family);
182 } 190 }
183 191
184 const std::string GetErrorPageHtml( 192 const std::string GetErrorPageHtml(
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
245 } 253 }
246 254
247 const std::string GetDistilledPageFontFamilyJs( 255 const std::string GetDistilledPageFontFamilyJs(
248 DistilledPagePrefs::FontFamily font_family) { 256 DistilledPagePrefs::FontFamily font_family) {
249 return "useFontFamily('" + GetJsFontFamily(font_family) + "');"; 257 return "useFontFamily('" + GetJsFontFamily(font_family) + "');";
250 } 258 }
251 259
252 } // namespace viewer 260 } // namespace viewer
253 261
254 } // namespace dom_distiller 262 } // namespace dom_distiller
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698