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 14 namespace syncer { 15 16 class JsArgList; 17 class JsEventHandler; 18 class JsReplyHandler; 19 template <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. 24 class 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: ~JsBackend()37 virtual ~JsBackend() {} 38 }; 39 40 } // namespace syncer 41 42 #endif // SYNC_JS_JS_BACKEND_H_ 43