extension_urls.cc 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  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. #include "extensions/common/extension_urls.h"
  5. #include "base/strings/escape.h"
  6. #include "base/strings/string_util.h"
  7. #include "base/strings/stringprintf.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/url_util.h"
  12. #include "url/gurl.h"
  13. #include "url/origin.h"
  14. namespace extensions {
  15. bool IsSourceFromAnExtension(const std::u16string& source) {
  16. return GURL(source).SchemeIs(kExtensionScheme) ||
  17. base::StartsWith(source, u"extensions::",
  18. base::CompareCase::SENSITIVE);
  19. }
  20. } // namespace extensions
  21. namespace extension_urls {
  22. const char kChromeWebstoreBaseURL[] = "https://chrome.google.com/webstore";
  23. const char kNewChromeWebstoreBaseURL[] = "https://webstore.google.com/";
  24. const char kChromeWebstoreUpdateURL[] =
  25. "https://clients2.google.com/service/update2/crx";
  26. GURL GetWebstoreLaunchURL() {
  27. extensions::ExtensionsClient* client = extensions::ExtensionsClient::Get();
  28. if (client)
  29. return client->GetWebstoreBaseURL();
  30. return GURL(kChromeWebstoreBaseURL);
  31. }
  32. GURL GetNewWebstoreLaunchURL() {
  33. extensions::ExtensionsClient* client = extensions::ExtensionsClient::Get();
  34. if (client)
  35. return client->GetNewWebstoreBaseURL();
  36. return GURL(kNewChromeWebstoreBaseURL);
  37. }
  38. // TODO(csharrison,devlin): Migrate the following methods to return
  39. // GURLs.
  40. // TODO(devlin): Try to use GURL methods like Resolve instead of string
  41. // concatenation.
  42. std::string GetWebstoreExtensionsCategoryURL() {
  43. return GetWebstoreLaunchURL().spec() + "/category/extensions";
  44. }
  45. std::string GetWebstoreItemDetailURLPrefix() {
  46. return GetWebstoreLaunchURL().spec() + "/detail/";
  47. }
  48. GURL GetWebstoreItemJsonDataURL(const std::string& extension_id) {
  49. return GURL(GetWebstoreLaunchURL().spec() + "/inlineinstall/detail/" +
  50. extension_id);
  51. }
  52. GURL GetDefaultWebstoreUpdateUrl() {
  53. return GURL(kChromeWebstoreUpdateURL);
  54. }
  55. GURL GetWebstoreUpdateUrl() {
  56. extensions::ExtensionsClient* client = extensions::ExtensionsClient::Get();
  57. if (client)
  58. return client->GetWebstoreUpdateURL();
  59. return GetDefaultWebstoreUpdateUrl();
  60. }
  61. GURL GetWebstoreReportAbuseUrl(const std::string& extension_id,
  62. const std::string& referrer_id) {
  63. return GURL(base::StringPrintf("%s/report/%s?utm_source=%s",
  64. GetWebstoreLaunchURL().spec().c_str(),
  65. extension_id.c_str(), referrer_id.c_str()));
  66. }
  67. bool IsWebstoreUpdateUrl(const GURL& update_url) {
  68. GURL store_url = GetWebstoreUpdateUrl();
  69. return (update_url.host_piece() == store_url.host_piece() &&
  70. update_url.path_piece() == store_url.path_piece());
  71. }
  72. bool IsBlocklistUpdateUrl(const GURL& url) {
  73. extensions::ExtensionsClient* client = extensions::ExtensionsClient::Get();
  74. if (client)
  75. return client->IsBlocklistUpdateURL(url);
  76. return false;
  77. }
  78. bool IsSafeBrowsingUrl(const url::Origin& origin, base::StringPiece path) {
  79. return origin.DomainIs("sb-ssl.google.com") ||
  80. origin.DomainIs("safebrowsing.googleapis.com") ||
  81. (origin.DomainIs("safebrowsing.google.com") &&
  82. base::StartsWith(path, "/safebrowsing",
  83. base::CompareCase::SENSITIVE));
  84. }
  85. } // namespace extension_urls