Index: components/dom_distiller/content/dom_distiller_viewer_source.cc |
diff --git a/components/dom_distiller/content/dom_distiller_viewer_source.cc b/components/dom_distiller/content/dom_distiller_viewer_source.cc |
index 90f3e45413811c9b36cf916a96f137dac0f81026..c3351c2cc5383870384c95f89af27b1d1cd3c977 100644 |
--- a/components/dom_distiller/content/dom_distiller_viewer_source.cc |
+++ b/components/dom_distiller/content/dom_distiller_viewer_source.cc |
@@ -11,46 +11,15 @@ |
#include "base/memory/ref_counted_memory.h" |
#include "base/memory/scoped_ptr.h" |
#include "base/message_loop/message_loop.h" |
-#include "base/strings/string_util.h" |
-#include "components/dom_distiller/core/dom_distiller_service.h" |
-#include "components/dom_distiller/core/proto/distilled_article.pb.h" |
-#include "components/dom_distiller/core/proto/distilled_page.pb.h" |
#include "components/dom_distiller/core/task_tracker.h" |
#include "components/dom_distiller/core/url_constants.h" |
-#include "components/dom_distiller/core/url_utils.h" |
+#include "components/dom_distiller/core/viewer.h" |
#include "content/public/browser/render_frame_host.h" |
#include "content/public/browser/render_view_host.h" |
-#include "grit/component_resources.h" |
-#include "grit/component_strings.h" |
-#include "net/base/escape.h" |
#include "net/url_request/url_request.h" |
-#include "ui/base/l10n/l10n_util.h" |
-#include "ui/base/resource/resource_bundle.h" |
-#include "url/gurl.h" |
namespace dom_distiller { |
-namespace { |
- |
-std::string ReplaceHtmlTemplateValues(const std::string& title, |
- const std::string& content, |
- const std::string& original_url) { |
- base::StringPiece html_template = |
- ResourceBundle::GetSharedInstance().GetRawDataResource( |
- IDR_DOM_DISTILLER_VIEWER_HTML); |
- std::vector<std::string> substitutions; |
- substitutions.push_back(title); // $1 |
- substitutions.push_back(kCssPath); // $2 |
- substitutions.push_back(title); // $3 |
- substitutions.push_back(content); // $4 |
- substitutions.push_back(original_url); // $5 |
- substitutions.push_back( |
- l10n_util::GetStringUTF8(IDS_DOM_DISTILLER_VIEWER_VIEW_ORIGINAL)); // $6 |
- return ReplaceStringPlaceholders(html_template, substitutions, NULL); |
-} |
- |
-} // namespace |
- |
// Handles receiving data asynchronously for a specific entry, and passing |
// it along to the data callback for the data source. |
class DomDistillerViewerSource::RequestViewerHandle |
@@ -61,11 +30,11 @@ class DomDistillerViewerSource::RequestViewerHandle |
virtual ~RequestViewerHandle(); |
// ViewRequestDelegate implementation. |
- virtual void OnArticleReady(const DistilledArticleProto* article_proto) |
- OVERRIDE; |
+ virtual void OnArticleReady( |
+ const DistilledArticleProto* article_proto) OVERRIDE; |
- virtual void OnArticleUpdated(ArticleDistillationUpdate article_update) |
- OVERRIDE; |
+ virtual void OnArticleUpdated( |
+ ArticleDistillationUpdate article_update) OVERRIDE; |
void TakeViewerHandle(scoped_ptr<ViewerHandle> viewer_handle); |
@@ -80,38 +49,15 @@ class DomDistillerViewerSource::RequestViewerHandle |
DomDistillerViewerSource::RequestViewerHandle::RequestViewerHandle( |
const content::URLDataSource::GotDataCallback& callback) |
- : callback_(callback) {} |
+ : callback_(callback) { |
+} |
-DomDistillerViewerSource::RequestViewerHandle::~RequestViewerHandle() {} |
+DomDistillerViewerSource::RequestViewerHandle::~RequestViewerHandle() { |
+} |
void DomDistillerViewerSource::RequestViewerHandle::OnArticleReady( |
const DistilledArticleProto* article_proto) { |
- DCHECK(article_proto); |
- std::string title; |
- std::string unsafe_article_html; |
- if (article_proto->has_title() && article_proto->pages_size() > 0 && |
- article_proto->pages(0).has_html()) { |
- title = net::EscapeForHTML(article_proto->title()); |
- // TODO(shashishekhar): Add support for correcting displaying multiple pages |
- // after discussing the right way to display them. |
- 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(); |
- } else { |
- title = l10n_util::GetStringUTF8(IDS_DOM_DISTILLER_VIEWER_NO_DATA_TITLE); |
- unsafe_article_html = |
- l10n_util::GetStringUTF8(IDS_DOM_DISTILLER_VIEWER_NO_DATA_CONTENT); |
- } |
- |
- std::string original_url; |
- if (article_proto->pages_size() > 0 && article_proto->pages(0).has_url()) { |
- original_url = article_proto->pages(0).url(); |
- } |
- |
- std::string unsafe_page_html = |
- ReplaceHtmlTemplateValues(title, unsafe_article_html, original_url); |
+ std::string unsafe_page_html = viewer::GetUnsafeHtml(article_proto); |
callback_.Run(base::RefCountedString::TakeString(&unsafe_page_html)); |
base::MessageLoop::current()->DeleteSoon(FROM_HERE, this); |
} |
@@ -129,9 +75,11 @@ void DomDistillerViewerSource::RequestViewerHandle::TakeViewerHandle( |
DomDistillerViewerSource::DomDistillerViewerSource( |
DomDistillerServiceInterface* dom_distiller_service, |
const std::string& scheme) |
- : scheme_(scheme), dom_distiller_service_(dom_distiller_service) {} |
+ : scheme_(scheme), dom_distiller_service_(dom_distiller_service) { |
+} |
-DomDistillerViewerSource::~DomDistillerViewerSource() {} |
+DomDistillerViewerSource::~DomDistillerViewerSource() { |
+} |
std::string DomDistillerViewerSource::GetSource() const { |
return scheme_ + "://"; |
@@ -151,17 +99,15 @@ void DomDistillerViewerSource::StartDataRequest( |
CHECK_EQ(0, render_view_host->GetEnabledBindings()); |
if (kCssPath == path) { |
- std::string css = ResourceBundle::GetSharedInstance() |
- .GetRawDataResource(IDR_DISTILLER_CSS) |
- .as_string(); |
+ std::string css = viewer::GetCss(); |
callback.Run(base::RefCountedString::TakeString(&css)); |
return; |
} |
RequestViewerHandle* request_viewer_handle = |
new RequestViewerHandle(callback); |
- scoped_ptr<ViewerHandle> viewer_handle = |
- CreateViewRequest(path, request_viewer_handle); |
+ scoped_ptr<ViewerHandle> viewer_handle = viewer::CreateViewRequest( |
+ dom_distiller_service_, path, request_viewer_handle); |
if (viewer_handle) { |
// The service returned a |ViewerHandle| and guarantees it will call |
@@ -174,12 +120,8 @@ void DomDistillerViewerSource::StartDataRequest( |
// |RequestViewerHandle| will never be called, so clean up now. |
delete request_viewer_handle; |
- std::string title = l10n_util::GetStringUTF8( |
- IDS_DOM_DISTILLER_VIEWER_FAILED_TO_FIND_ARTICLE_TITLE); |
- std::string content = l10n_util::GetStringUTF8( |
- IDS_DOM_DISTILLER_VIEWER_FAILED_TO_FIND_ARTICLE_CONTENT); |
- std::string html = ReplaceHtmlTemplateValues(title, content, ""); |
- callback.Run(base::RefCountedString::TakeString(&html)); |
+ std::string error_page_html = viewer::GetErrorPageHtml(); |
+ callback.Run(base::RefCountedString::TakeString(&error_page_html)); |
} |
}; |
@@ -198,42 +140,12 @@ bool DomDistillerViewerSource::ShouldServiceRequest( |
// TODO(nyquist): Start tracking requests using this method. |
void DomDistillerViewerSource::WillServiceRequest( |
const net::URLRequest* request, |
- std::string* path) const {} |
+ std::string* path) const { |
+} |
std::string DomDistillerViewerSource::GetContentSecurityPolicyObjectSrc() |
const { |
return "object-src 'none'; style-src 'self';"; |
} |
-scoped_ptr<ViewerHandle> DomDistillerViewerSource::CreateViewRequest( |
- const std::string& path, |
- ViewRequestDelegate* view_request_delegate) { |
- std::string entry_id = |
- url_utils::GetValueForKeyInUrlPathQuery(path, kEntryIdKey); |
- bool has_valid_entry_id = !entry_id.empty(); |
- entry_id = StringToUpperASCII(entry_id); |
- |
- std::string requested_url_str = |
- url_utils::GetValueForKeyInUrlPathQuery(path, kUrlKey); |
- GURL requested_url(requested_url_str); |
- bool has_valid_url = url_utils::IsUrlDistillable(requested_url); |
- |
- if (has_valid_entry_id && has_valid_url) { |
- // It is invalid to specify a query param for both |kEntryIdKey| and |
- // |kUrlKey|. |
- return scoped_ptr<ViewerHandle>(); |
- } |
- |
- if (has_valid_entry_id) { |
- return dom_distiller_service_->ViewEntry(view_request_delegate, entry_id) |
- .Pass(); |
- } else if (has_valid_url) { |
- return dom_distiller_service_->ViewUrl(view_request_delegate, requested_url) |
- .Pass(); |
- } |
- |
- // It is invalid to not specify a query param for |kEntryIdKey| or |kUrlKey|. |
- return scoped_ptr<ViewerHandle>(); |
-} |
- |
} // namespace dom_distiller |