1 // Copyright 2013 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 "extensions/common/extension_urls.h"
7 #include "base/strings/string_util.h"
8 #include "base/strings/stringprintf.h"
9 #include "base/strings/utf_string_conversions.h"
10 #include "extensions/common/constants.h"
11 #include "extensions/common/extensions_client.h"
12 #include "net/base/escape.h"
13 #include "net/base/url_util.h"
16 namespace extensions
{
18 const char kEventBindings
[] = "event_bindings";
20 const char kSchemaUtils
[] = "schemaUtils";
22 bool IsSourceFromAnExtension(const base::string16
& source
) {
23 return GURL(source
).SchemeIs(kExtensionScheme
) ||
24 base::StartsWith(source
, base::ASCIIToUTF16("extensions::"),
25 base::CompareCase::SENSITIVE
);
28 } // namespace extensions
30 namespace extension_urls
{
32 const char kChromeWebstoreBaseURL
[] = "https://chrome.google.com/webstore";
33 const char kChromeWebstoreUpdateURL
[] =
34 "https://clients2.google.com/service/update2/crx";
36 std::string
GetWebstoreLaunchURL() {
37 extensions::ExtensionsClient
* client
= extensions::ExtensionsClient::Get();
39 return client
->GetWebstoreBaseURL();
40 return kChromeWebstoreBaseURL
;
43 std::string
GetWebstoreExtensionsCategoryURL() {
44 return GetWebstoreLaunchURL() + "/category/extensions";
47 std::string
GetWebstoreItemDetailURLPrefix() {
48 return GetWebstoreLaunchURL() + "/detail/";
51 GURL
GetWebstoreItemJsonDataURL(const std::string
& extension_id
) {
52 return GURL(GetWebstoreLaunchURL() + "/inlineinstall/detail/" + extension_id
);
55 GURL
GetWebstoreJsonSearchUrl(const std::string
& query
,
56 const std::string
& host_language_code
) {
57 GURL
url(GetWebstoreLaunchURL() + "/jsonsearch");
58 url
= net::AppendQueryParameter(url
, "q", query
);
59 url
= net::AppendQueryParameter(url
, "hl", host_language_code
);
63 GURL
GetWebstoreSearchPageUrl(const std::string
& query
) {
64 return GURL(GetWebstoreLaunchURL() + "/search/" +
65 net::EscapeQueryParamValue(query
, false));
68 GURL
GetWebstoreUpdateUrl() {
69 extensions::ExtensionsClient
* client
= extensions::ExtensionsClient::Get();
71 return GURL(client
->GetWebstoreUpdateURL());
72 return GURL(kChromeWebstoreUpdateURL
);
75 GURL
GetWebstoreReportAbuseUrl(const std::string
& extension_id
,
76 const std::string
& referrer_id
) {
77 return GURL(base::StringPrintf("%s/report/%s?utm_source=%s",
78 GetWebstoreLaunchURL().c_str(),
79 extension_id
.c_str(), referrer_id
.c_str()));
82 bool IsWebstoreUpdateUrl(const GURL
& update_url
) {
83 GURL store_url
= GetWebstoreUpdateUrl();
84 if (update_url
== store_url
) {
87 return (update_url
.host() == store_url
.host() &&
88 update_url
.path() == store_url
.path());
92 bool IsBlacklistUpdateUrl(const GURL
& url
) {
93 extensions::ExtensionsClient
* client
= extensions::ExtensionsClient::Get();
95 return client
->IsBlacklistUpdateURL(url
);
99 } // namespace extension_urls