// Copyright 2014 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef EXTENSIONS_RENDERER_DISPATCHER_DELEGATE_H_ #define EXTENSIONS_RENDERER_DISPATCHER_DELEGATE_H_ #include #include namespace extensions { class Dispatcher; class Extension; class ExtensionBindingsSystem; class ModuleSystem; class NativeExtensionBindingsSystem; class ResourceBundleSourceMap; class ScriptContext; // Base class and default implementation for an extensions::Dispacher delegate. // DispatcherDelegate can be used to override and extend the behavior of the // extensions system's renderer side. class DispatcherDelegate { public: virtual ~DispatcherDelegate() {} // Initializes origin permissions for a newly created extension context. virtual void InitOriginPermissions(const Extension* extension, bool is_extension_active) {} // Includes additional native handlers in a ScriptContext's ModuleSystem. virtual void RegisterNativeHandlers(Dispatcher* dispatcher, ModuleSystem* module_system, ExtensionBindingsSystem* bindings_system, ScriptContext* context) {} // Includes additional source resources into the resource map. virtual void PopulateSourceMap(ResourceBundleSourceMap* source_map) {} // Requires additional modules within an extension context's module system. virtual void RequireAdditionalModules(ScriptContext* context) {} // Allows the delegate to respond to an updated set of active extensions in // the Dispatcher. virtual void OnActiveExtensionsUpdated( const std::set& extension_ids) {} // Allows the delegate to add any additional custom bindings or types to the // native bindings system. This will only be called if --native-crx-bindings // is enabled. virtual void InitializeBindingsSystem( Dispatcher* dispatcher, NativeExtensionBindingsSystem* bindings_system) {} }; } // namespace extensions #endif // EXTENSIONS_RENDERER_DISPATCHER_DELEGATE_H_