// Copyright (c) 2011 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 CHROME_BROWSER_SYNC_JS_EVENT_ROUTER_H_
#define CHROME_BROWSER_SYNC_JS_EVENT_ROUTER_H_
#pragma once
// See README.js for design comments.
#include <string>
namespace browser_sync {
class JsArgList;
class JsEventHandler;
// An interface for objects that don't directly handle Javascript
// events but can pass them to JsEventHandlers or route them to other
// JsEventRouters.
class JsEventRouter {
public:
// If |target| is NULL that means the event is intended for every
// handler. Otherwise the event is meant for the given target only.
// |target| is const because it shouldn't be used except by the
// router that directly knows about it (which can then safely cast
// away the constness).
virtual void RouteJsEvent(const std::string& name, const JsArgList& args,
const JsEventHandler* target) = 0;
protected:
virtual ~JsEventRouter() {}
};
} // namespace browser_sync
#endif // CHROME_BROWSER_SYNC_JS_EVENT_ROUTER_H_