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

Unified Diff: components/dom_distiller/webui/dom_distiller_handler.cc

Issue 151003006: Add support for distilling arbitrary URLs in DOM Distiller Viewer. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Addressed comments. added unit tests Created 6 years, 10 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 side-by-side diff with in-line comments
Download patch
Index: components/dom_distiller/webui/dom_distiller_handler.cc
diff --git a/components/dom_distiller/webui/dom_distiller_handler.cc b/components/dom_distiller/webui/dom_distiller_handler.cc
index ede4f40615b78c919609e262ce382bb0c0809667..cef86fcbff1d180f9424fcc1eea537e22c55d67d 100644
--- a/components/dom_distiller/webui/dom_distiller_handler.cc
+++ b/components/dom_distiller/webui/dom_distiller_handler.cc
@@ -7,11 +7,15 @@
#include <vector>
#include "base/bind.h"
+#include "base/guid.h"
#include "base/values.h"
#include "components/dom_distiller/core/dom_distiller_service.h"
#include "components/dom_distiller/core/proto/distilled_page.pb.h"
+#include "components/dom_distiller/core/url_constants.h"
#include "content/public/browser/web_contents.h"
#include "content/public/browser/web_ui.h"
+#include "net/base/escape.h"
+#include "net/base/url_util.h"
#include "url/gurl.h"
namespace dom_distiller {
@@ -35,6 +39,9 @@ void DomDistillerHandler::RegisterMessages() {
"selectArticle",
base::Bind(&DomDistillerHandler::HandleSelectArticle,
base::Unretained(this)));
+ web_ui()->RegisterMessageCallback(
+ "viewUrl",
+ base::Bind(&DomDistillerHandler::HandleViewUrl, base::Unretained(this)));
}
void DomDistillerHandler::HandleAddArticle(const base::ListValue* args) {
@@ -51,13 +58,36 @@ void DomDistillerHandler::HandleAddArticle(const base::ListValue* args) {
}
}
+void DomDistillerHandler::HandleViewUrl(const base::ListValue* args) {
+ std::string url;
+ args->GetString(0, &url);
+ GURL gurl(url);
+ if (gurl.is_valid()) {
+ GURL view_url(article_scheme_ + "://" + base::GenerateGUID() + "/?" +
shashi 2014/02/25 21:48:08 Probably want to use the GetDistillerViewUrl* func
nyquist 2014/02/27 00:07:37 Done.
+ std::string(kUrlKey) + "=" +
+ net::EscapeQueryParamValue(gurl.spec(), true));
+ DCHECK(view_url.is_valid());
+ web_ui()->GetWebContents()->GetController().LoadURL(
+ view_url,
+ content::Referrer(),
+ content::PAGE_TRANSITION_GENERATED,
+ std::string());
+ } else {
+ web_ui()->CallJavascriptFunction("domDistiller.onViewUrlFailed");
+ }
+}
+
void DomDistillerHandler::HandleSelectArticle(const base::ListValue* args) {
std::string entry_id;
args->GetString(0, &entry_id);
- GURL url(article_scheme_ + std::string("://") + entry_id);
+ GURL url(article_scheme_ + "://" + base::GenerateGUID() + "/?" +
shashi 2014/02/25 21:48:08 Probably want to use the GetDistillerViewUrl* func
nyquist 2014/02/27 00:07:37 Done.
+ std::string(kEntryIdKey) + "=" +
+ net::EscapeQueryParamValue(entry_id, true));
DCHECK(url.is_valid());
- web_ui()->GetWebContents()->GetController().LoadURL(url,
- content::Referrer(), content::PAGE_TRANSITION_GENERATED,
+ web_ui()->GetWebContents()->GetController().LoadURL(
+ url,
+ content::Referrer(),
+ content::PAGE_TRANSITION_GENERATED,
std::string());
}
@@ -89,4 +119,16 @@ void DomDistillerHandler::OnArticleAdded(bool article_available) {
}
}
+const GURL DomDistillerHandler::GetDistillerViewUrlFromEntryId(
shashi 2014/02/25 21:48:08 Is this function used anywhere?
cjhopman 2014/02/25 22:25:14 Looks like this is also defined in the tests.
nyquist 2014/02/27 00:07:37 Done. Created dom_distiller::url_utils for this an
+ const std::string& entry_id) const {
+ GURL url(article_scheme_ + "://" + base::GenerateGUID());
+ return net::AppendOrReplaceQueryParameter(url, kEntryIdKey, entry_id);
+}
+
+const GURL DomDistillerHandler::GetDistillerViewUrlFromUrl(const GURL& view_url)
+ const {
+ GURL url(article_scheme_ + "://" + base::GenerateGUID());
shashi 2014/02/25 21:48:08 Same for this function.
nyquist 2014/02/27 00:07:37 Done.
+ return net::AppendOrReplaceQueryParameter(url, kUrlKey, view_url.spec());
+}
+
} // namespace dom_distiller

Powered by Google App Engine
This is Rietveld 408576698