shell_extensions_client.cc revision 1320f92c476a1ad9d19dba2a48c72b75566198e9
19258b6bc66e09368ada54001f619d53b4fc976d5ager@chromium.org// Copyright 2014 The Chromium Authors. All rights reserved. 29a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com// Use of this source code is governed by a BSD-style license that can be 39a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com// found in the LICENSE file. 49a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com 59a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com#include "extensions/shell/common/shell_extensions_client.h" 69a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com 79a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com#include "base/lazy_instance.h" 89a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com#include "base/logging.h" 99a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com#include "extensions/common/api/generated_schemas.h" 109a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com#include "extensions/common/common_manifest_handlers.h" 119a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com#include "extensions/common/extension_urls.h" 129a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com#include "extensions/common/features/api_feature.h" 139a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com#include "extensions/common/features/base_feature_provider.h" 149a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com#include "extensions/common/features/json_feature_provider_source.h" 159a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com#include "extensions/common/features/manifest_feature.h" 169a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com#include "extensions/common/features/permission_feature.h" 179a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com#include "extensions/common/features/simple_feature.h" 189a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com#include "extensions/common/manifest_handler.h" 199a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com#include "extensions/common/permissions/permission_message_provider.h" 209a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com#include "extensions/common/permissions/permissions_info.h" 219a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com#include "extensions/common/permissions/permissions_provider.h" 229a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com#include "extensions/common/url_pattern_set.h" 239a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com#include "grit/extensions_resources.h" 249a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com 259a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.comnamespace extensions { 269a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com 279a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.comnamespace { 282b995c4171e67960088466af11110c6f6aeea4fcmachenbach@chromium.org 292b995c4171e67960088466af11110c6f6aeea4fcmachenbach@chromium.orgtemplate <class FeatureClass> 309a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.comSimpleFeature* CreateFeature() { 319a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com return new FeatureClass; 329a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com} 339a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com 349a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com// TODO(jamescook): Refactor ChromePermissionsMessageProvider so we can share 359a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com// code. For now, this implementation does nothing. 369a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.comclass ShellPermissionMessageProvider : public PermissionMessageProvider { 379a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com public: 38160a7b0747492f3f735353d9582521f3314bf4dfdanno@chromium.org ShellPermissionMessageProvider() {} 399a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com virtual ~ShellPermissionMessageProvider() {} 40160a7b0747492f3f735353d9582521f3314bf4dfdanno@chromium.org 41160a7b0747492f3f735353d9582521f3314bf4dfdanno@chromium.org // PermissionMessageProvider implementation. 42160a7b0747492f3f735353d9582521f3314bf4dfdanno@chromium.org virtual PermissionMessages GetPermissionMessages( 43160a7b0747492f3f735353d9582521f3314bf4dfdanno@chromium.org const PermissionSet* permissions, 449a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com Manifest::Type extension_type) const OVERRIDE { 45160a7b0747492f3f735353d9582521f3314bf4dfdanno@chromium.org return PermissionMessages(); 46160a7b0747492f3f735353d9582521f3314bf4dfdanno@chromium.org } 47160a7b0747492f3f735353d9582521f3314bf4dfdanno@chromium.org 48160a7b0747492f3f735353d9582521f3314bf4dfdanno@chromium.org virtual std::vector<base::string16> GetWarningMessages( 499a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com const PermissionSet* permissions, 50160a7b0747492f3f735353d9582521f3314bf4dfdanno@chromium.org Manifest::Type extension_type) const OVERRIDE { 51160a7b0747492f3f735353d9582521f3314bf4dfdanno@chromium.org return std::vector<base::string16>(); 52160a7b0747492f3f735353d9582521f3314bf4dfdanno@chromium.org } 539a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com 54160a7b0747492f3f735353d9582521f3314bf4dfdanno@chromium.org virtual std::vector<base::string16> GetWarningMessagesDetails( 559a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com const PermissionSet* permissions, 56160a7b0747492f3f735353d9582521f3314bf4dfdanno@chromium.org Manifest::Type extension_type) const OVERRIDE { 57160a7b0747492f3f735353d9582521f3314bf4dfdanno@chromium.org return std::vector<base::string16>(); 58160a7b0747492f3f735353d9582521f3314bf4dfdanno@chromium.org } 59160a7b0747492f3f735353d9582521f3314bf4dfdanno@chromium.org 60160a7b0747492f3f735353d9582521f3314bf4dfdanno@chromium.org virtual bool IsPrivilegeIncrease( 61defbd109bb9bd556bb8ece103c3b340d3552155ekasperl@chromium.org const PermissionSet* old_permissions, 62defbd109bb9bd556bb8ece103c3b340d3552155ekasperl@chromium.org const PermissionSet* new_permissions, 63160a7b0747492f3f735353d9582521f3314bf4dfdanno@chromium.org Manifest::Type extension_type) const OVERRIDE { 64160a7b0747492f3f735353d9582521f3314bf4dfdanno@chromium.org // Ensure we implement this before shipping. 65160a7b0747492f3f735353d9582521f3314bf4dfdanno@chromium.org CHECK(false); 66160a7b0747492f3f735353d9582521f3314bf4dfdanno@chromium.org return false; 67160a7b0747492f3f735353d9582521f3314bf4dfdanno@chromium.org } 68defbd109bb9bd556bb8ece103c3b340d3552155ekasperl@chromium.org 69defbd109bb9bd556bb8ece103c3b340d3552155ekasperl@chromium.org private: 70160a7b0747492f3f735353d9582521f3314bf4dfdanno@chromium.org DISALLOW_COPY_AND_ASSIGN(ShellPermissionMessageProvider); 71160a7b0747492f3f735353d9582521f3314bf4dfdanno@chromium.org}; 72160a7b0747492f3f735353d9582521f3314bf4dfdanno@chromium.org 73160a7b0747492f3f735353d9582521f3314bf4dfdanno@chromium.orgbase::LazyInstance<ShellPermissionMessageProvider> 74160a7b0747492f3f735353d9582521f3314bf4dfdanno@chromium.org g_permission_message_provider = LAZY_INSTANCE_INITIALIZER; 75defbd109bb9bd556bb8ece103c3b340d3552155ekasperl@chromium.org 769a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com} // namespace 779a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com 789a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.comShellExtensionsClient::ShellExtensionsClient() 799a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com : extensions_api_permissions_(ExtensionsAPIPermissions()) { 809a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com} 819a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com 829a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.comShellExtensionsClient::~ShellExtensionsClient() { 839a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com} 849a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com 859a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.comvoid ShellExtensionsClient::Initialize() { 86defbd109bb9bd556bb8ece103c3b340d3552155ekasperl@chromium.org RegisterCommonManifestHandlers(); 879a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com ManifestHandler::FinalizeRegistration(); 889a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com // TODO(jamescook): Do we need to whitelist any extensions? 899a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com 909a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com PermissionsInfo::GetInstance()->AddProvider(extensions_api_permissions_); 919a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com} 929a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com 939a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.comconst PermissionMessageProvider& 949a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.comShellExtensionsClient::GetPermissionMessageProvider() const { 959a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com NOTIMPLEMENTED(); 969a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com return g_permission_message_provider.Get(); 979a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com} 989a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com 996a2b0aa331a1ae1829a9b9637ad18cfc7ec9d840ager@chromium.orgconst std::string ShellExtensionsClient::GetProductName() { 100defbd109bb9bd556bb8ece103c3b340d3552155ekasperl@chromium.org return "app_shell"; 1019a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com} 1029a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com 1039a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.comscoped_ptr<FeatureProvider> ShellExtensionsClient::CreateFeatureProvider( 1049a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com const std::string& name) const { 1059a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com scoped_ptr<FeatureProvider> provider; 1069a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com scoped_ptr<JSONFeatureProviderSource> source( 1079a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com CreateFeatureProviderSource(name)); 1089a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com if (name == "api") { 1099a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com provider.reset(new BaseFeatureProvider(source->dictionary(), 110defbd109bb9bd556bb8ece103c3b340d3552155ekasperl@chromium.org CreateFeature<APIFeature>)); 1119a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com } else if (name == "manifest") { 1129a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com provider.reset(new BaseFeatureProvider(source->dictionary(), 113160a7b0747492f3f735353d9582521f3314bf4dfdanno@chromium.org CreateFeature<ManifestFeature>)); 1149a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com } else if (name == "permission") { 1159a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com provider.reset(new BaseFeatureProvider(source->dictionary(), 1169a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com CreateFeature<PermissionFeature>)); 1179a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com } else { 1189a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com NOTREACHED(); 1192b995c4171e67960088466af11110c6f6aeea4fcmachenbach@chromium.org } 1202b995c4171e67960088466af11110c6f6aeea4fcmachenbach@chromium.org return provider.Pass(); 1219a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com} 1229a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com 1239a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.comscoped_ptr<JSONFeatureProviderSource> 1246a2b0aa331a1ae1829a9b9637ad18cfc7ec9d840ager@chromium.orgShellExtensionsClient::CreateFeatureProviderSource( 1259a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com const std::string& name) const { 1269a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com scoped_ptr<JSONFeatureProviderSource> source( 1279a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com new JSONFeatureProviderSource(name)); 1282b995c4171e67960088466af11110c6f6aeea4fcmachenbach@chromium.org if (name == "api") { 1292b995c4171e67960088466af11110c6f6aeea4fcmachenbach@chromium.org source->LoadJSON(IDR_EXTENSION_API_FEATURES); 1309a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com } else if (name == "manifest") { 1319a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com source->LoadJSON(IDR_EXTENSION_MANIFEST_FEATURES); 1325ad5acef6bd4ebc785f946d8bcc2a88b1e031827ricow@chromium.org } else if (name == "permission") { 133defbd109bb9bd556bb8ece103c3b340d3552155ekasperl@chromium.org source->LoadJSON(IDR_EXTENSION_PERMISSION_FEATURES); 1349a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com } else { 1356a2b0aa331a1ae1829a9b9637ad18cfc7ec9d840ager@chromium.org NOTREACHED(); 1369a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com source.reset(); 1379a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com } 138defbd109bb9bd556bb8ece103c3b340d3552155ekasperl@chromium.org return source.Pass(); 1399a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com} 1409a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com 1419a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.comvoid ShellExtensionsClient::FilterHostPermissions( 1429a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com const URLPatternSet& hosts, 1439a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com URLPatternSet* new_hosts, 1449a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com std::set<PermissionMessage>* messages) const { 1459a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com NOTIMPLEMENTED(); 1469a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com} 1479a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com 1489a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.comvoid ShellExtensionsClient::SetScriptingWhitelist( 1499a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com const ScriptingWhitelist& whitelist) { 1509a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com scripting_whitelist_ = whitelist; 1519a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com} 1529a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com 1539a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.comconst ExtensionsClient::ScriptingWhitelist& 1549a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.comShellExtensionsClient::GetScriptingWhitelist() const { 1559a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com // TODO(jamescook): Real whitelist. 1569a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com return scripting_whitelist_; 1579a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com} 1589a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com 1599a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.comURLPatternSet ShellExtensionsClient::GetPermittedChromeSchemeHosts( 1609a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com const Extension* extension, 1619a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com const APIPermissionSet& api_permissions) const { 1629a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com NOTIMPLEMENTED(); 1639a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com return URLPatternSet(); 1649a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com} 1659a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com 1669a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.combool ShellExtensionsClient::IsScriptableURL(const GURL& url, 1679a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com std::string* error) const { 168defbd109bb9bd556bb8ece103c3b340d3552155ekasperl@chromium.org NOTIMPLEMENTED(); 169defbd109bb9bd556bb8ece103c3b340d3552155ekasperl@chromium.org return true; 1709a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com} 1719a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com 1729a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.combool ShellExtensionsClient::IsAPISchemaGenerated( 1739a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com const std::string& name) const { 1749a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com return core_api::GeneratedSchemas::IsGenerated(name); 1759a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com} 1769a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com 1779a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.combase::StringPiece ShellExtensionsClient::GetAPISchema( 178defbd109bb9bd556bb8ece103c3b340d3552155ekasperl@chromium.org const std::string& name) const { 179defbd109bb9bd556bb8ece103c3b340d3552155ekasperl@chromium.org return core_api::GeneratedSchemas::Get(name); 180defbd109bb9bd556bb8ece103c3b340d3552155ekasperl@chromium.org} 181defbd109bb9bd556bb8ece103c3b340d3552155ekasperl@chromium.org 182defbd109bb9bd556bb8ece103c3b340d3552155ekasperl@chromium.orgvoid ShellExtensionsClient::RegisterAPISchemaResources( 183defbd109bb9bd556bb8ece103c3b340d3552155ekasperl@chromium.org ExtensionAPI* api) const { 184defbd109bb9bd556bb8ece103c3b340d3552155ekasperl@chromium.org} 185defbd109bb9bd556bb8ece103c3b340d3552155ekasperl@chromium.org 186defbd109bb9bd556bb8ece103c3b340d3552155ekasperl@chromium.orgbool ShellExtensionsClient::ShouldSuppressFatalErrors() const { 187defbd109bb9bd556bb8ece103c3b340d3552155ekasperl@chromium.org return true; 1889a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com} 1899a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com 1909a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.comstd::string ShellExtensionsClient::GetWebstoreBaseURL() const { 1919a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com return extension_urls::kChromeWebstoreBaseURL; 192defbd109bb9bd556bb8ece103c3b340d3552155ekasperl@chromium.org} 193160a7b0747492f3f735353d9582521f3314bf4dfdanno@chromium.org 194defbd109bb9bd556bb8ece103c3b340d3552155ekasperl@chromium.orgstd::string ShellExtensionsClient::GetWebstoreUpdateURL() const { 1959a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com return extension_urls::kChromeWebstoreUpdateURL; 1969a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com} 197394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.com 198394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.combool ShellExtensionsClient::IsBlacklistUpdateURL(const GURL& url) const { 199394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.com // TODO(rockot): Maybe we want to do something else here. For now we accept 200394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.com // any URL as a blacklist URL because we don't really care. 201394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.com return true; 202394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.com} 203394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.com 204} // namespace extensions 205