- add sources.
[platform/framework/web/crosswalk.git] / src / ui / base / ime / linux / linux_input_method_context_factory.h
1 // Copyright 2013 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 UI_BASE_IME_LINUX_LINUX_INPUT_METHOD_CONTEXT_FACTORY_H_
6 #define UI_BASE_IME_LINUX_LINUX_INPUT_METHOD_CONTEXT_FACTORY_H_
7
8 #include "base/memory/scoped_ptr.h"
9 #include "ui/base/ui_export.h"
10
11 namespace ui {
12
13 class LinuxInputMethodContext;
14 class LinuxInputMethodContextDelegate;
15
16 // An interface that lets different Linux platforms override the
17 // CreateInputMethodContext function declared here to return native input method
18 // contexts.
19 class UI_EXPORT LinuxInputMethodContextFactory {
20  public:
21   // Returns the current active factory or NULL.
22   static const LinuxInputMethodContextFactory* instance();
23
24   // Sets the dynamically loaded singleton that creates an input method context.
25   // This pointer is not owned, and if this method is called a second time,
26   // the first instance is not deleted.
27   static void SetInstance(const LinuxInputMethodContextFactory* instance);
28
29   virtual ~LinuxInputMethodContextFactory() {}
30
31   // Returns a native input method context.
32   virtual scoped_ptr<LinuxInputMethodContext> CreateInputMethodContext(
33       LinuxInputMethodContextDelegate* delegate) const = 0;
34 };
35
36 }  // namespace ui
37
38 #endif  // UI_BASE_IME_LINUX_LINUX_INPUT_METHOD_CONTEXT_FACTORY_H_