// Copyright 2012 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 SYNC_JS_JS_CONTROLLER_H_
#define SYNC_JS_JS_CONTROLLER_H_

// See README.js for design comments.

#include <string>

#include "sync/base/sync_export.h"

namespace syncer {

class JsArgList;
class JsEventHandler;
class JsReplyHandler;
template <typename T> class WeakHandle;

// An interface for objects that JsEventHandlers directly interact
// with.  JsEventHandlers can add themselves to receive events and
// also send messages which will eventually reach the backend.
class SYNC_EXPORT JsController {
 public:
  // Adds an event handler which will start receiving JS events (not
  // immediately, so this can be called in the handler's constructor).
  // Multiple event handlers are supported, but each event handler
  // must be added at most once.
  //
  // Ideally, we'd take WeakPtrs, but we need the raw pointer values
  // to be able to look them up for removal.
  virtual void AddJsEventHandler(JsEventHandler* event_handler) = 0;

  // Removes the given event handler if it has been added.  It will
  // immediately stop receiving any JS events.
  virtual void RemoveJsEventHandler(JsEventHandler* event_handler) = 0;

  // Processes a JS message.  The reply (if any) will be sent to
  // |reply_handler| if it is initialized.
  virtual void ProcessJsMessage(
      const std::string& name, const JsArgList& args,
      const WeakHandle<JsReplyHandler>& reply_handler) = 0;

 protected:
  virtual ~JsController() {}
};

}  // namespace syncer

#endif  // SYNC_JS_JS_CONTROLLER_H_
