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
3 // found in the LICENSE file.
5 #include "components/dom_distiller/core/url_utils.h"
10 #include "components/dom_distiller/core/url_constants.h"
11 #include "grit/components_resources.h"
12 #include "net/base/url_util.h"
13 #include "ui/base/resource/resource_bundle.h"
16 namespace dom_distiller
{
22 const char kDummyInternalUrlPrefix
[] = "chrome-distiller-internal://dummy/";
26 const GURL
GetDistillerViewUrlFromEntryId(const std::string
& scheme
,
27 const std::string
& entry_id
) {
28 GURL
url(scheme
+ "://" + base::GenerateGUID());
29 return net::AppendOrReplaceQueryParameter(url
, kEntryIdKey
, entry_id
);
32 const GURL
GetDistillerViewUrlFromUrl(const std::string
& scheme
,
33 const GURL
& view_url
) {
34 GURL
url(scheme
+ "://" + base::GenerateGUID());
35 return net::AppendOrReplaceQueryParameter(url
, kUrlKey
, view_url
.spec());
38 const GURL
GetOriginalUrlFromDistillerUrl(const GURL
& url
) {
39 if (!dom_distiller::url_utils::IsDistilledPage(url
))
42 std::string original_url_str
;
43 net::GetValueForKeyInQuery(url
, kUrlKey
, &original_url_str
);
45 return GURL(original_url_str
);
48 std::string
GetValueForKeyInUrl(const GURL
& url
, const std::string
& key
) {
52 if (net::GetValueForKeyInQuery(url
, key
, &value
)) {
58 std::string
GetValueForKeyInUrlPathQuery(const std::string
& path
,
59 const std::string
& key
) {
60 // Tools for retrieving a value in a query only works with full GURLs, so
61 // using a dummy scheme and host to create a fake URL which can be parsed.
62 GURL
dummy_url(kDummyInternalUrlPrefix
+ path
);
63 return GetValueForKeyInUrl(dummy_url
, key
);
66 bool IsUrlDistillable(const GURL
& url
) {
67 return url
.is_valid() && url
.SchemeIsHTTPOrHTTPS();
70 bool IsDistilledPage(const GURL
& url
) {
71 return url
.is_valid() && url
.scheme() == kDomDistillerScheme
;
74 std::string
GetIsDistillableJs() {
75 return ResourceBundle::GetSharedInstance()
76 .GetRawDataResource(IDR_IS_DISTILLABLE_JS
).as_string();
79 } // namespace url_utils
81 } // namespace dom_distiller