1// Copyright 2012 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#ifndef SYNC_JS_JS_BACKEND_H_ 6#define SYNC_JS_JS_BACKEND_H_ 7 8// See README.js for design comments. 9 10#include <string> 11 12#include "sync/base/sync_export.h" 13 14namespace syncer { 15 16class JsArgList; 17class JsEventHandler; 18class JsReplyHandler; 19template <typename T> class WeakHandle; 20 21// Interface representing the backend of chrome://sync-internals. A 22// JsBackend can handle messages and can emit events to a 23// JsEventHandler. 24class SYNC_EXPORT_PRIVATE JsBackend { 25 public: 26 // Starts emitting events to the given handler, if initialized. 27 virtual void SetJsEventHandler( 28 const WeakHandle<JsEventHandler>& event_handler) = 0; 29 30 // Processes the given message and replies via the given handler, if 31 // initialized. 32 virtual void ProcessJsMessage( 33 const std::string& name, const JsArgList& args, 34 const WeakHandle<JsReplyHandler>& reply_handler) = 0; 35 36 protected: 37 virtual ~JsBackend() {} 38}; 39 40} // namespace syncer 41 42#endif // SYNC_JS_JS_BACKEND_H_ 43