extension_constants.cc revision c2e0dbddbe15c98d52c4786dac06cb8952a8ae6d
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/common/extensions/extension_constants.h"
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/common/extensions/extension_manifest_constants.h"
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <vector>
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/command_line.h"
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/string_util.h"
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/common/chrome_switches.h"
132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "net/base/url_util.h"
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace extension_urls {
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)std::string GetWebstoreLaunchURL() {
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::string gallery_prefix = kGalleryBrowsePrefix;
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kAppsGalleryURL))
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    gallery_prefix = CommandLine::ForCurrentProcess()->GetSwitchValueASCII(
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        switches::kAppsGalleryURL);
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (EndsWith(gallery_prefix, "/", true))
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    gallery_prefix = gallery_prefix.substr(0, gallery_prefix.length() - 1);
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return gallery_prefix;
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)std::string GetExtensionGalleryURL() {
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return GetWebstoreLaunchURL() + "/category/extensions";
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)std::string GetWebstoreItemDetailURLPrefix() {
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return GetWebstoreLaunchURL() + "/detail/";
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)GURL GetWebstoreIntentQueryURL(const std::string& action,
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                               const std::string& type) {
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  const char kIntentsCategoryPath[] = "category/collection/webintent_apps";
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GURL url(std::string(kGalleryBrowsePrefix) + "/");
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  url = url.Resolve(kIntentsCategoryPath);
412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  url = net::AppendQueryParameter(url, "_wi", action);
422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  url = net::AppendQueryParameter(url, "_mt", type);
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return url;
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)GURL GetWebstoreItemJsonDataURL(const std::string& extension_id) {
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return GURL(GetWebstoreLaunchURL() + "/inlineinstall/detail/" + extension_id);
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char kGalleryUpdateHttpsUrl[] =
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    "https://clients2.google.com/service/update2/crx";
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// TODO(battre): Delete the HTTP URL once the blacklist is downloaded via HTTPS.
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char kExtensionBlocklistUrlPrefix[] =
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    "http://www.gstatic.com/chrome/extensions/blacklist";
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char kExtensionBlocklistHttpsUrlPrefix[] =
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    "https://www.gstatic.com/chrome/extensions/blacklist";
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)GURL GetWebstoreUpdateUrl() {
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CommandLine* cmdline = CommandLine::ForCurrentProcess();
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (cmdline->HasSwitch(switches::kAppsGalleryUpdateURL))
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return GURL(cmdline->GetSwitchValueASCII(switches::kAppsGalleryUpdateURL));
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  else
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return GURL(kGalleryUpdateHttpsUrl);
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool IsWebstoreUpdateUrl(const GURL& update_url) {
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GURL store_url = GetWebstoreUpdateUrl();
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (update_url == store_url) {
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return true;
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  } else {
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return (update_url.host() == store_url.host() &&
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            update_url.path() == store_url.path());
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool IsBlacklistUpdateUrl(const GURL& url) {
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The extension blacklist URL is returned from the update service and
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // therefore not determined by Chromium. If the location of the blacklist file
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // ever changes, we need to update this function. A DCHECK in the
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // ExtensionUpdater ensures that we notice a change. This is the full URL
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // of a blacklist:
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // http://www.gstatic.com/chrome/extensions/blacklist/l_0_0_0_7.txt
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return StartsWithASCII(url.spec(), kExtensionBlocklistUrlPrefix, true) ||
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      StartsWithASCII(url.spec(), kExtensionBlocklistHttpsUrlPrefix, true);
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char kGalleryBrowsePrefix[] = "https://chrome.google.com/webstore";
895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace extension_urls
915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace extension_filenames {
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char kTempExtensionName[] = "CRX_INSTALL";
955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// The file to write our decoded images to, relative to the extension_path.
975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char kDecodedImagesFilename[] = "DECODED_IMAGES";
985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// The file to write our decoded message catalogs to, relative to the
1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// extension_path.
1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char kDecodedMessageCatalogsFilename[] = "DECODED_MESSAGE_CATALOGS";
1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char kGeneratedBackgroundPageFilename[] =
1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    "_generated_background_page.html";
105c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
106c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)const char kModulesDir[] = "_modules";
107c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
108c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}  // namespace extension_filenames
1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// These must match the values expected by the chrome.management extension API.
1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace extension_info_keys {
1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  const char kDescriptionKey[] = "description";
1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  const char kEnabledKey[] = "enabled";
1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  const char kHomepageUrlKey[] = "homepageUrl";
1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  const char kIdKey[] = "id";
1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  const char kNameKey[] = "name";
1172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  const char kKioskEnabledKey[] = "kioskEnabled";
1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  const char kOfflineEnabledKey[] = "offlineEnabled";
1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  const char kOptionsUrlKey[] = "optionsUrl";
1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  const char kDetailsUrlKey[] = "detailsUrl";
1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  const char kVersionKey[] = "version";
1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  const char kPackagedAppKey[] = "packagedApp";
1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace extension_filenames
1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace extension_misc {
127c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char kBookmarkManagerId[] = "eemcgdkfndhakfknompkggombfjjjeno";
129c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)const char kChromeAppId[] = "mgndgikekgjfcpckkfioiadnlibdjbkf";
1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char kCitrixReceiverAppId[] = "haiffjcadagjlijoggckpgfnoeiflnem";
1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char kCitrixReceiverAppBetaId[] = "gnedhmakppccajfpfiihfcdlnpgomkcf";
1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char kCitrixReceiverAppDevId[] = "fjcibdnjlbfnbfdjneajpipnlcppleek";
133c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)const char kCloudPrintAppId[] = "mfehgcgbbipciphmccgaenjidiccnmng";
1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char kEnterpriseWebStoreAppId[] = "afchcafgojfnemjkcbhfekplkmjaldaa";
135c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)const char kGmailAppId[] = "pjkljhegncpnkpknbcohdijeoejaedia";
136c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)const char kGoogleDocAppId[] = "aohghmighlieiainnegkcijnfilokake";
137c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)const char kGooglePlayMusicAppId[] = "icppfcnhkcmnfdhfhphakoifcfokfdhg";
138c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)const char kGoogleSearchAppId[] = "coobgpohoikkiipiblmjeljniedjpjpf";
139c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)const char kGoogleSheetsAppId[] = "felcaaldnbdncclmgdcncolpebgiejap";
140c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)const char kGoogleSlidesAppId[] = "aapocclcgogkmnckokdopfmhonfmgoek";
1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char kHTermAppId[] = "pnhechapfaindjhompbnflcldabbghjo";
1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char kHTermDevAppId[] = "okddffdblfhhnmhodogpojmfkjmhinfp";
1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char kCroshBuiltinAppId[] = "nkoccljplnhpfnfiajclkommnmllphnl";
1442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)const char kQuickOfficeComponentExtensionId[] =
1452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    "bpmcpldpdmajfigpchkicefoigmkfalc";
1462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)const char kQuickOfficeDevExtensionId[] = "ionpfmkccalenbmnddpbmocokhaknphg";
1472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)const char kQuickOfficeExtensionId[] = "gbkeegbaiigmenfmjfclcdgdpimamgkj";
148c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)const char kSettingsAppId[] = "ennkphjdgehloodpbhlhldgbnhmacadg";
1492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)const char kStreamsPrivateTestExtensionId[] =
1502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    "oickdpebdnfbgkcaoklfcdhjniefkcji";
1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char kWebStoreAppId[] = "ahfgeienlihckogmohjhadlkjgocpleb";
152c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)const char kYoutubeAppId[] = "blpcfgokakmgnkcojhhkbfbldkacnbeo";
153c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char kAppLaunchHistogram[] = "Extensions.AppLaunch";
1552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)const char kPlatformAppLaunchHistogram[] = "Apps.AppLaunch";
1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_CHROMEOS)
1572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)const char kChromeVoxExtensionPath[] =
1582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    "/usr/share/chromeos-assets/accessibility/extensions/access_chromevox";
1592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)const char kSpeechSynthesisExtensionPath[] =
1602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    "/usr/share/chromeos-assets/speech_synthesis/patts";
1612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)const char kSpeechSynthesisExtensionId[] =
1622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    "gjjabgpgjpampikjhjpfhneeoapjbjaf";
1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char kWallpaperManagerId[] = "obklkkbkpaoaejdabbfldmcfplpdgolj";
1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char kAppStateNotInstalled[] = "not_installed";
1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char kAppStateInstalled[] = "installed";
1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char kAppStateDisabled[] = "disabled";
1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char kAppStateRunning[] = "running";
1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char kAppStateCannotRun[] = "cannot_run";
1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char kAppStateReadyToRun[] = "ready_to_run";
1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char kMediaFileSystemPathPart[] = "_";
1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const int kExtensionIconSizes[] = {
1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXTENSION_ICON_GIGANTOR,  // 512
1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXTENSION_ICON_EXTRA_LARGE,  // 256
1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXTENSION_ICON_LARGE,  // 128
1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXTENSION_ICON_MEDIUM,  // 48
1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXTENSION_ICON_SMALL,  // 32
1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXTENSION_ICON_SMALLISH,  // 24
1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXTENSION_ICON_BITTY  // 16
1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const size_t kNumExtensionIconSizes =
1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    arraysize(kExtensionIconSizes);
1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const int kExtensionActionIconSizes[] = {
1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXTENSION_ICON_ACTION,  // 19,
1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  2 * EXTENSION_ICON_ACTION  // 38
1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const size_t kNumExtensionActionIconSizes =
1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    arraysize(kExtensionActionIconSizes);
1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const int kScriptBadgeIconSizes[] = {
1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXTENSION_ICON_BITTY,  // 16
1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  2 * EXTENSION_ICON_BITTY  // 32
1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const size_t kNumScriptBadgeIconSizes =
2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    arraysize(kScriptBadgeIconSizes);
2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace extension_misc
205