1 // Copyright (c) 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.
5 #ifndef CHROMEOS_IME_IBUS_BRIDGE_H_
6 #define CHROMEOS_IME_IBUS_BRIDGE_H_
9 #include "base/basictypes.h"
10 #include "chromeos/chromeos_export.h"
11 #include "chromeos/dbus/ibus/ibus_engine_factory_service.h"
14 class IBusInputContextHandlerInterface
;
15 class IBusEngineHandlerInterface
;
16 class IBusPanelCandidateWindowHandlerInterface
;
17 class IBusPanelPropertyHandlerInterface
;
19 // IBusBridge provides access of each IME related handler. This class is used
20 // for IME implementation without ibus-daemon. The legacy ibus IME communicates
21 // their engine with dbus protocol, but new implementation doesn't. Instead of
22 // dbus communcation, new implementation calls target service(e.g. PanelService
23 // or EngineService) directly by using this class.
26 virtual ~IBusBridge();
28 // Allocates the global instance. Must be called before any calls to Get().
29 static CHROMEOS_EXPORT
void Initialize();
31 // Releases the global instance.
32 static CHROMEOS_EXPORT
void Shutdown();
34 // Returns IBusBridge global instance. Initialize() must be called first.
35 static CHROMEOS_EXPORT IBusBridge
* Get();
37 // Returns current InputContextHandler. This function returns NULL if input
38 // context is not ready to use.
39 virtual IBusInputContextHandlerInterface
* GetInputContextHandler() const = 0;
41 // Updates current InputContextHandler. If there is no active input context,
42 // pass NULL for |handler|. Caller must release |handler|.
43 virtual void SetInputContextHandler(
44 IBusInputContextHandlerInterface
* handler
) = 0;
46 // Returns current EngineHandler. This function returns NULL if current engine
47 // is not ready to use.
48 virtual IBusEngineHandlerInterface
* GetEngineHandler() const = 0;
50 // Updates current EngineHandler. If there is no active engine service, pass
51 // NULL for |handler|. Caller must release |handler|.
52 virtual void SetEngineHandler(IBusEngineHandlerInterface
* handler
) = 0;
54 // Returns current CandidateWindowHandler. This function returns NULL if
55 // current candidate window is not ready to use.
56 virtual IBusPanelCandidateWindowHandlerInterface
*
57 GetCandidateWindowHandler() const = 0;
59 // Updates current CandidatWindowHandler. If there is no active candidate
60 // window service, pass NULL for |handler|. Caller must release |handler|.
61 virtual void SetCandidateWindowHandler(
62 IBusPanelCandidateWindowHandlerInterface
* handler
) = 0;
64 // Returns current PropertyHandler. This function returns NULL if panel window
65 // is not ready to use.
66 virtual IBusPanelPropertyHandlerInterface
* GetPropertyHandler() const = 0;
68 // Updates current PropertyHandler. If there is no active property service,
69 // pass NULL for |handler|. Caller must release |handler|.
70 virtual void SetPropertyHandler(
71 IBusPanelPropertyHandlerInterface
* handler
) = 0;
73 // Sets create engine handler for |engine_id|. |engine_id| must not be empty
74 // and |handler| must not be null.
75 virtual void SetCreateEngineHandler(
76 const std::string
& engine_id
,
77 const IBusEngineFactoryService::CreateEngineHandler
& handler
) = 0;
79 // Unsets create engine handler for |engine_id|. |engine_id| must not be
81 virtual void UnsetCreateEngineHandler(const std::string
& engine_id
) = 0;
83 // Creates engine. Do not call this function before SetCreateEngineHandler
84 // call with |engine_id|.
85 virtual void CreateEngine(const std::string
& engine_id
) = 0;
91 DISALLOW_COPY_AND_ASSIGN(IBusBridge
);
94 } // namespace chromeos
96 #endif // CHROMEOS_IME_IBUS_BRIDGE_H_