linux_ui_factory.cc 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. // Copyright 2022 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. #include "ui/linux/linux_ui_factory.h"
  5. #include <utility>
  6. #include "ui/base/buildflags.h"
  7. #include "ui/linux/linux_ui.h"
  8. #if BUILDFLAG(USE_GTK)
  9. #include "ui/gtk/gtk_ui_factory.h"
  10. #endif
  11. #if BUILDFLAG(USE_QT)
  12. #include "ui/qt/qt_ui.h"
  13. #endif
  14. namespace ui {
  15. std::unique_ptr<LinuxUi> CreateLinuxUi() {
  16. // TODO(thomasanderson): LinuxUI backend should be chosen depending on the
  17. // environment.
  18. #if BUILDFLAG(USE_QT)
  19. {
  20. std::unique_ptr<LinuxUi> fallback_linux_ui;
  21. #if BUILDFLAG(USE_GTK)
  22. fallback_linux_ui = BuildGtkUi();
  23. if (!fallback_linux_ui->Initialize())
  24. fallback_linux_ui.reset();
  25. #endif
  26. auto qt_ui = qt::CreateQtUi(std::move(fallback_linux_ui));
  27. if (qt_ui->Initialize())
  28. return qt_ui;
  29. }
  30. #endif
  31. #if BUILDFLAG(USE_GTK)
  32. {
  33. auto gtk_ui = BuildGtkUi();
  34. if (gtk_ui->Initialize())
  35. return gtk_ui;
  36. }
  37. #endif
  38. return nullptr;
  39. }
  40. } // namespace ui