Home | History | Annotate | Download | only in extensions
      1 // Copyright (c) 2012 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 "chrome/common/extensions/extension_constants.h"
      6 
      7 #include <vector>
      8 
      9 #include "base/command_line.h"
     10 #include "base/strings/string_util.h"
     11 #include "chrome/common/chrome_switches.h"
     12 #include "net/base/escape.h"
     13 #include "net/base/url_util.h"
     14 
     15 namespace extension_urls {
     16 
     17 std::string GetWebstoreLaunchURL() {
     18   std::string gallery_prefix = kGalleryBrowsePrefix;
     19   if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kAppsGalleryURL))
     20     gallery_prefix = CommandLine::ForCurrentProcess()->GetSwitchValueASCII(
     21         switches::kAppsGalleryURL);
     22   if (EndsWith(gallery_prefix, "/", true))
     23     gallery_prefix = gallery_prefix.substr(0, gallery_prefix.length() - 1);
     24   return gallery_prefix;
     25 }
     26 
     27 std::string GetExtensionGalleryURL() {
     28   return GetWebstoreLaunchURL() + "/category/extensions";
     29 }
     30 
     31 std::string GetWebstoreItemDetailURLPrefix() {
     32   return GetWebstoreLaunchURL() + "/detail/";
     33 }
     34 
     35 GURL GetWebstoreItemJsonDataURL(const std::string& extension_id) {
     36   return GURL(GetWebstoreLaunchURL() + "/inlineinstall/detail/" + extension_id);
     37 }
     38 
     39 GURL GetWebstoreJsonSearchUrl(const std::string& query, const std::string& hl) {
     40   GURL url(GetWebstoreLaunchURL() + "/jsonsearch");
     41   url = net::AppendQueryParameter(url, "q", query);
     42   url = net::AppendQueryParameter(url, "hl", hl);
     43   return url;
     44 }
     45 
     46 GURL GetWebstoreSearchPageUrl(const std::string& query) {
     47   return GURL(GetWebstoreLaunchURL() + "/search/" +
     48               net::EscapeQueryParamValue(query, false));
     49 }
     50 
     51 const char kGalleryUpdateHttpsUrl[] =
     52     "https://clients2.google.com/service/update2/crx";
     53 // TODO(battre): Delete the HTTP URL once the blacklist is downloaded via HTTPS.
     54 const char kExtensionBlocklistUrlPrefix[] =
     55     "http://www.gstatic.com/chrome/extensions/blacklist";
     56 const char kExtensionBlocklistHttpsUrlPrefix[] =
     57     "https://www.gstatic.com/chrome/extensions/blacklist";
     58 
     59 GURL GetWebstoreUpdateUrl() {
     60   CommandLine* cmdline = CommandLine::ForCurrentProcess();
     61   if (cmdline->HasSwitch(switches::kAppsGalleryUpdateURL))
     62     return GURL(cmdline->GetSwitchValueASCII(switches::kAppsGalleryUpdateURL));
     63   else
     64     return GURL(kGalleryUpdateHttpsUrl);
     65 }
     66 
     67 bool IsWebstoreUpdateUrl(const GURL& update_url) {
     68   GURL store_url = GetWebstoreUpdateUrl();
     69   if (update_url == store_url) {
     70     return true;
     71   } else {
     72     return (update_url.host() == store_url.host() &&
     73             update_url.path() == store_url.path());
     74   }
     75 }
     76 
     77 bool IsBlacklistUpdateUrl(const GURL& url) {
     78   // The extension blacklist URL is returned from the update service and
     79   // therefore not determined by Chromium. If the location of the blacklist file
     80   // ever changes, we need to update this function. A DCHECK in the
     81   // ExtensionUpdater ensures that we notice a change. This is the full URL
     82   // of a blacklist:
     83   // http://www.gstatic.com/chrome/extensions/blacklist/l_0_0_0_7.txt
     84   return StartsWithASCII(url.spec(), kExtensionBlocklistUrlPrefix, true) ||
     85       StartsWithASCII(url.spec(), kExtensionBlocklistHttpsUrlPrefix, true);
     86 }
     87 
     88 const char kGalleryBrowsePrefix[] = "https://chrome.google.com/webstore";
     89 
     90 const char kWebstoreSourceField[] = "utm_source";
     91 
     92 const char kLaunchSourceAppList[] = "chrome-app-launcher";
     93 const char kLaunchSourceAppListSearch[] = "chrome-app-launcher-search";
     94 
     95 }  // namespace extension_urls
     96 
     97 namespace extension_misc {
     98 
     99 const char kBookmarkManagerId[] = "eemcgdkfndhakfknompkggombfjjjeno";
    100 const char kChromeAppId[] = "mgndgikekgjfcpckkfioiadnlibdjbkf";
    101 const char kCloudPrintAppId[] = "mfehgcgbbipciphmccgaenjidiccnmng";
    102 const char kEnterpriseWebStoreAppId[] = "afchcafgojfnemjkcbhfekplkmjaldaa";
    103 const char kGmailAppId[] = "pjkljhegncpnkpknbcohdijeoejaedia";
    104 const char kGoogleDocAppId[] = "aohghmighlieiainnegkcijnfilokake";
    105 const char kGooglePlayMusicAppId[] = "icppfcnhkcmnfdhfhphakoifcfokfdhg";
    106 const char kGoogleSearchAppId[] = "coobgpohoikkiipiblmjeljniedjpjpf";
    107 const char kGoogleSheetsAppId[] = "felcaaldnbdncclmgdcncolpebgiejap";
    108 const char kGoogleSlidesAppId[] = "aapocclcgogkmnckokdopfmhonfmgoek";
    109 const char kHTermAppId[] = "pnhechapfaindjhompbnflcldabbghjo";
    110 const char kHTermDevAppId[] = "okddffdblfhhnmhodogpojmfkjmhinfp";
    111 const char kIdentityApiUiAppId[] = "ahjaciijnoiaklcomgnblndopackapon";
    112 const char kCroshBuiltinAppId[] = "nkoccljplnhpfnfiajclkommnmllphnl";
    113 const char kPdfExtensionId[] = "mhjfbmdgcfjbbpaeojofohoefgiehjai";
    114 const char kQuickOfficeComponentExtensionId[] =
    115     "bpmcpldpdmajfigpchkicefoigmkfalc";
    116 const char kQuickOfficeDevExtensionId[] = "ionpfmkccalenbmnddpbmocokhaknphg";
    117 const char kQuickOfficeExtensionId[] = "gbkeegbaiigmenfmjfclcdgdpimamgkj";
    118 const char kSettingsAppId[] = "ennkphjdgehloodpbhlhldgbnhmacadg";
    119 const char kStreamsPrivateTestExtensionId[] =
    120     "oickdpebdnfbgkcaoklfcdhjniefkcji";
    121 const char kWebStoreAppId[] = "ahfgeienlihckogmohjhadlkjgocpleb";
    122 const char kYoutubeAppId[] = "blpcfgokakmgnkcojhhkbfbldkacnbeo";
    123 const char kInAppPaymentsSupportAppId[] = "nmmhkkegccagdldgiimedpiccmgmieda";
    124 const char kTipsAndTricksAppId[] = "hkhhlkdconhgemhegnplaldnmnmkaemd";
    125 
    126 const char kAppLaunchHistogram[] = "Extensions.AppLaunch";
    127 const char kPlatformAppLaunchHistogram[] = "Apps.AppLaunch";
    128 #if defined(OS_CHROMEOS)
    129 const char kChromeVoxExtensionPath[] = "chromeos/chromevox";
    130 // The extension id for the built-in component extension.
    131 const char kChromeVoxExtensionId[] =
    132     "mndnfokpggljbaajbnioimlmbfngpief";
    133 const char kConnectivityDiagnosticsPath[] =
    134     "/usr/share/chromeos-assets/connectivity_diagnostics";
    135 const char kConnectivityDiagnosticsLauncherPath[] =
    136     "/usr/share/chromeos-assets/connectivity_diagnostics_launcher";
    137 const char kSpeechSynthesisExtensionPath[] =
    138     "/usr/share/chromeos-assets/speech_synthesis/patts";
    139 const char kSpeechSynthesisExtensionId[] =
    140     "gjjabgpgjpampikjhjpfhneeoapjbjaf";
    141 const char kWallpaperManagerId[] = "obklkkbkpaoaejdabbfldmcfplpdgolj";
    142 const char kFirstRunDialogId[] = "jdgcneonijmofocbhmijhacgchbihela";
    143 #else
    144 // The extension id for the web store extension.
    145 const char kChromeVoxExtensionId[] =
    146     "kgejglhpjiefppelpmljglcjbhoiplfn";
    147 #endif
    148 
    149 const char kAppStateNotInstalled[] = "not_installed";
    150 const char kAppStateInstalled[] = "installed";
    151 const char kAppStateDisabled[] = "disabled";
    152 const char kAppStateRunning[] = "running";
    153 const char kAppStateCannotRun[] = "cannot_run";
    154 const char kAppStateReadyToRun[] = "ready_to_run";
    155 
    156 const char kMediaFileSystemPathPart[] = "_";
    157 
    158 const int kExtensionIconSizes[] = {
    159   EXTENSION_ICON_GIGANTOR,  // 512
    160   EXTENSION_ICON_EXTRA_LARGE,  // 256
    161   EXTENSION_ICON_LARGE,  // 128
    162   EXTENSION_ICON_MEDIUM,  // 48
    163   EXTENSION_ICON_SMALL,  // 32
    164   EXTENSION_ICON_SMALLISH,  // 24
    165   EXTENSION_ICON_BITTY,  // 16
    166   // Additional 2x resources to load.
    167   2 * EXTENSION_ICON_MEDIUM,  // 96
    168   2 * EXTENSION_ICON_SMALL  // 64
    169 };
    170 
    171 const size_t kNumExtensionIconSizes =
    172     arraysize(kExtensionIconSizes);
    173 
    174 const int kExtensionActionIconSizes[] = {
    175   EXTENSION_ICON_ACTION,  // 19,
    176   2 * EXTENSION_ICON_ACTION  // 38
    177 };
    178 
    179 const size_t kNumExtensionActionIconSizes =
    180     arraysize(kExtensionActionIconSizes);
    181 
    182 const int kScriptBadgeIconSizes[] = {
    183   EXTENSION_ICON_BITTY,  // 16
    184   2 * EXTENSION_ICON_BITTY  // 32
    185 };
    186 
    187 const size_t kNumScriptBadgeIconSizes =
    188     arraysize(kScriptBadgeIconSizes);
    189 
    190 }  // namespace extension_misc
    191