blob: 65f4a3aeb84e62cfa3363652f52527810fb164ad [file] [log] [blame]
// 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 <set>
#include <string>
namespace extensions {
class Dispatcher;
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() {}
// 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 modules for defining <webview> within an extension context's
// module system.
virtual void RequireWebViewModules(ScriptContext* context);
// Allows the delegate to respond to an updated set of active extensions in
// the Dispatcher.
virtual void OnActiveExtensionsUpdated(
const std::set<std::string>& 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_