1 #include "wrt/src/browser/wrt_browser_main_parts.h"
3 #include "components/nacl/common/buildflags.h"
4 #include "content/public/common/result_codes.h"
5 #include "electron/shell/browser/browser_process_impl.h"
6 #include "electron/shell/browser/electron_browser_client.h"
7 #include "extensions/buildflags/buildflags.h"
8 #include "ui/aura/screen_ozone.h"
9 #include "ui/base/l10n/l10n_util.h"
10 #include "wrt/src/common/locale_manager.h"
12 #if ENABLE_CHROME_EXTENSIONS
13 #include "wrt/src/browser/extensions/wrt_browser_context_keyed_service_factories.h"
15 #if BUILDFLAG(ENABLE_NACL)
16 #include "components/nacl/browser/nacl_browser.h"
17 #include "components/nacl/browser/nacl_browser_delegate_impl_efl.h"
18 #include "components/nacl/browser/nacl_process_host.h"
19 #include "content/public/browser/browser_task_traits.h"
20 #include "content/public/browser/browser_thread.h"
23 #if ENABLE_CHROME_EXTENSIONS
24 #include "wrt/src/browser/extensions/wrt_browser_context_keyed_service_factories.h"
25 #include "wrt/src/browser/ui/webui/wrt_web_ui_controller_factory.h"
30 WRTBrowserMainParts::WRTBrowserMainParts()
31 : electron::ElectronBrowserMainParts() {}
33 WRTBrowserMainParts::~WRTBrowserMainParts() {}
35 void WRTBrowserMainParts::PreCreateMainMessageLoop() {
36 // skip ElectronBrowserMainParts::PreCreateMainMessageLoop for avoiding resource bundle conflict
39 int WRTBrowserMainParts::PreMainMessageLoopRun() {
40 ElectronBrowserMainParts::PreMainMessageLoopRun();
42 #if ENABLE_CHROME_EXTENSIONS
43 extensions::wrt::EnsureBrowserContextKeyedServiceFactoriesBuilt();
44 content::WebUIControllerFactory::RegisterFactory(
45 WRTWebUIControllerFactory::GetInstance());
48 #if BUILDFLAG(ENABLE_NACL)
49 nacl::NaClBrowser::SetDelegate(
50 std::make_unique<NaClBrowserDelegateImplEfl>());
52 base::PostTaskWithTraits(
53 FROM_HERE, {content::BrowserThread::IO},
54 base::BindOnce(&nacl::NaClProcessHost::EarlyStartup));
57 return content::RESULT_CODE_NORMAL_EXIT;
60 #if BUILDFLAG(USE_ALLOCATOR_SHIM)
61 void WRTBrowserMainParts::PostCreateThreads() {
62 extra_parts_profiling_.PostCreateThreads();
66 int WRTBrowserMainParts::PreCreateThreads() {
67 std::string system_locale = LocaleManager::GetSystemLocale();
69 // Initialize the app locale.
70 std::string app_locale = l10n_util::GetApplicationLocale(system_locale);
71 electron::ElectronBrowserClient::SetApplicationLocale(app_locale);
72 fake_browser_process_->SetApplicationLocale(app_locale);
74 screen_ = std::make_unique<aura::ScopedScreenOzone>();
76 return ElectronBrowserMainParts::PreCreateThreads();