// 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_