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. 4 5 #include "extensions/common/extension_urls.h" 6 7 #include "base/strings/string_util.h" 8 #include "base/strings/utf_string_conversions.h" 9 #include "extensions/common/constants.h" 10 #include "extensions/common/extensions_client.h" 11 #include "net/base/escape.h" 12 #include "net/base/url_util.h" 13 #include "url/gurl.h" 14 15 namespace extensions { 16 17 const char kEventBindings[] = "event_bindings"; 18 19 const char kSchemaUtils[] = "schemaUtils"; 20 21 bool IsSourceFromAnExtension(const base::string16& source) { 22 return GURL(source).SchemeIs(kExtensionScheme) || 23 StartsWith(source, 24 base::ASCIIToUTF16("extensions::"), 25 true /* case-sensitive */); 26 } 27 28 } // namespace extensions 29 30 namespace extension_urls { 31 32 const char kChromeWebstoreBaseURL[] = "https://chrome.google.com/webstore"; 33 const char kChromeWebstoreUpdateURL[] = 34 "https://clients2.google.com/service/update2/crx"; 35 36 std::string GetWebstoreLaunchURL() { 37 extensions::ExtensionsClient* client = extensions::ExtensionsClient::Get(); 38 if (client) 39 return client->GetWebstoreBaseURL(); 40 return kChromeWebstoreBaseURL; 41 } 42 43 std::string GetWebstoreExtensionsCategoryURL() { 44 return GetWebstoreLaunchURL() + "/category/extensions"; 45 } 46 47 std::string GetWebstoreItemDetailURLPrefix() { 48 return GetWebstoreLaunchURL() + "/detail/"; 49 } 50 51 GURL GetWebstoreItemJsonDataURL(const std::string& extension_id) { 52 return GURL(GetWebstoreLaunchURL() + "/inlineinstall/detail/" + extension_id); 53 } 54 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); 60 return url; 61 } 62 63 GURL GetWebstoreSearchPageUrl(const std::string& query) { 64 return GURL(GetWebstoreLaunchURL() + "/search/" + 65 net::EscapeQueryParamValue(query, false)); 66 } 67 68 GURL GetWebstoreUpdateUrl() { 69 extensions::ExtensionsClient* client = extensions::ExtensionsClient::Get(); 70 if (client) 71 return GURL(client->GetWebstoreUpdateURL()); 72 return GURL(kChromeWebstoreUpdateURL); 73 } 74 75 bool IsWebstoreUpdateUrl(const GURL& update_url) { 76 GURL store_url = GetWebstoreUpdateUrl(); 77 if (update_url == store_url) { 78 return true; 79 } else { 80 return (update_url.host() == store_url.host() && 81 update_url.path() == store_url.path()); 82 } 83 } 84 85 bool IsBlacklistUpdateUrl(const GURL& url) { 86 extensions::ExtensionsClient* client = extensions::ExtensionsClient::Get(); 87 if (client) 88 return client->IsBlacklistUpdateURL(url); 89 return false; 90 } 91 92 } // namespace extension_urls 93