Commit 182d586f authored by Nick Diego Yamane's avatar Nick Diego Yamane Committed by Commit Bot

ozone/x11: Fix an IME-related crash during browser initialization

Recent changes in LinuxInputMethodContextFactory initialization (see
crrev.com/c/2062974) broke ozone/x11. After it, browser crashes at
startup. This fixes it as well as adds DCHECK to make sure
LinuxInputMethodContextFactory is correctly set just after LinuxUI
initialization.

Bug: 1055061
Change-Id: Iefe5acc48ec9047b90042b398159e9b260a753f6
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2069229
Commit-Queue: Nick Yamane <nickdiego@igalia.com>
Reviewed-by: default avatarScott Violet <sky@chromium.org>
Reviewed-by: default avatarMaksim Sisov <msisov@igalia.com>
Reviewed-by: default avatarRobert Kroeger <rjkroege@chromium.org>
Cr-Commit-Position: refs/heads/master@{#744902}
parent 2af9e7e9
...@@ -36,4 +36,7 @@ void ChromeBrowserMainExtraPartsViewsLinux::ToolkitInitialized() { ...@@ -36,4 +36,7 @@ void ChromeBrowserMainExtraPartsViewsLinux::ToolkitInitialized() {
views::LinuxUI::SetInstance(linux_ui); views::LinuxUI::SetInstance(linux_ui);
linux_ui->Initialize(); linux_ui->Initialize();
DCHECK(ui::LinuxInputMethodContextFactory::instance())
<< "LinuxUI must set LinuxInputMethodContextFactory instance.";
} }
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
#include "base/message_loop/message_pump_type.h" #include "base/message_loop/message_pump_type.h"
#include "base/strings/utf_string_conversions.h" #include "base/strings/utf_string_conversions.h"
#include "ui/base/ime/linux/linux_input_method_context_factory.h"
#include "ui/base/x/x11_util.h" #include "ui/base/x/x11_util.h"
#include "ui/display/fake/fake_display_delegate.h" #include "ui/display/fake/fake_display_delegate.h"
#include "ui/events/devices/x11/touch_factory_x11.h" #include "ui/events/devices/x11/touch_factory_x11.h"
...@@ -114,6 +115,12 @@ class OzonePlatformX11 : public OzonePlatform { ...@@ -114,6 +115,12 @@ class OzonePlatformX11 : public OzonePlatform {
#if defined(OS_CHROMEOS) #if defined(OS_CHROMEOS)
return std::make_unique<InputMethodChromeOS>(delegate); return std::make_unique<InputMethodChromeOS>(delegate);
#else #else
// This method is used by upper layer components (e.g: GtkUi) to determine
// if the LinuxInputMethodContextFactory instance is provided by the Ozone
// platform implementation, so we must consider the case that it is still
// not set at this point.
if (!ui::LinuxInputMethodContextFactory::instance())
return nullptr;
return std::make_unique<InputMethodAuraLinux>(delegate); return std::make_unique<InputMethodAuraLinux>(delegate);
#endif #endif
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment