#include "ui/base/ime/init/input_method_initializer.h"
#include "base/functional/bind.h"
#include "base/functional/callback.h"
#include "base/trace_event/trace_event.h"
#include "build/build_config.h"
#if defined(USE_AURA) && BUILDFLAG(IS_LINUX)
#include "ui/base/ime/linux/fake_input_method_context.h"
#include "ui/base/ime/linux/linux_input_method_context_factory.h"
#elif BUILDFLAG(IS_WIN)
#include "ui/base/ime/init/input_method_factory.h"
#include "ui/base/ime/win/tsf_bridge.h"
#endif
namespace ui {
void InitializeInputMethod() {
TRACE_EVENT0("startup", "ui::InitializeInputMethod");
#if BUILDFLAG(IS_WIN)
TSFBridge::Initialize();
#endif
}
void ShutdownInputMethod() {
#if BUILDFLAG(IS_WIN)
TSFBridge::Shutdown();
#endif
}
void InitializeInputMethodForTesting() {
#if defined(USE_AURA) && BUILDFLAG(IS_LINUX)
GetInputMethodContextFactoryForTest() =
base::BindRepeating([](LinuxInputMethodContextDelegate* delegate)
-> std::unique_ptr<LinuxInputMethodContext> {
return std::make_unique<FakeInputMethodContext>();
});
#elif BUILDFLAG(IS_WIN)
TSFBridge::InitializeForTesting();
#endif
}
void ShutdownInputMethodForTesting() {
#if defined(USE_AURA) && BUILDFLAG(IS_LINUX)
GetInputMethodContextFactoryForTest() = LinuxInputMethodContextFactory();
#elif BUILDFLAG(IS_WIN)
TSFBridge::Shutdown();
#endif
}
}