 +document.addEventListener('DOMContentLoaded',
 +                          filePicker.initialize);
 diff --git a/chrome/browser/ui/aura/chrome_browser_main_extra_parts_aura.cc b/chrome/browser/ui/aura/chrome_browser_main_extra_parts_aura.cc
-index 62c391d..a97503f 100644
+index 62c391d..9389337 100644
 --- a/chrome/browser/ui/aura/chrome_browser_main_extra_parts_aura.cc
 +++ b/chrome/browser/ui/aura/chrome_browser_main_extra_parts_aura.cc
 @@ -30,6 +30,10 @@

 #if defined(USE_X11) && !defined(OS_CHROMEOS)
 #include "chrome/browser/ui/libgtk2ui/gtk2_ui.h"
 #endif
@@ -103,11 +107,16 @@ void ChromeBrowserMainExtraPartsAura::PreEarlyInitialization() {
     return;
   }
 #endif
+
+#if defined(USE_OZONE)
+  views::LinuxUI::SetInstance(BuildWebUI());
+#else
   // TODO(erg): Refactor this into a dlopen call when we add a GTK3 port.
   views::LinuxUI* gtk2_ui = BuildGtk2UI();
   gtk2_ui->SetNativeThemeOverride(base::Bind(&GetNativeThemeForWindow));
   views::LinuxUI::SetInstance(gtk2_ui);
 #endif
+#endif
 }
 
 void ChromeBrowserMainExtraPartsAura::ToolkitInitialized() {
diff --git a/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc b/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc
index 3128710..0af69cc 100644
--- a/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc

 .../browser/resources/file_picker/file_picker.css  |  72 +++++++++
 .../browser/resources/file_picker/file_picker.html |  37 +++++
 .../browser/resources/file_picker/file_picker.js   |  51 +++++++
 .../aura/chrome_browser_main_extra_parts_aura.cc   |  12 ++
 .../ui/webui/chrome_web_ui_controller_factory.cc   |   3 +
 .../browser/ui/webui/file_picker/file_picker_ui.cc |  46 ++++++
 .../browser/ui/webui/file_picker/file_picker_ui.h  |  24 +++
