blob: 4ec9d6c251053aa346722e7254cb63ca69b09e4e [file] [log] [blame]
// Copyright 2022 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "ui/base/resource/scoped_startup_resource_bundle.h"
#include <string>
#include "base/command_line.h"
#include "ui/base/l10n/l10n_util.h"
#include "ui/base/resource/resource_bundle.h"
#include "ui/base/ui_base_switches.h"
namespace ui {
ScopedStartupResourceBundle::ScopedStartupResourceBundle() {
// Ensure the ResourceBundle is initialized for string resource access.
if (!ui::ResourceBundle::HasSharedInstance()) {
// Try to determine the best locale source to use.
std::string locale;
const base::CommandLine& command_line =
*base::CommandLine::ForCurrentProcess();
if (command_line.HasSwitch(switches::kLang)) {
locale = command_line.GetSwitchValueASCII(::switches::kLang);
} else {
locale = l10n_util::GetApplicationLocale(std::string());
}
if (locale.empty())
locale = "en-US";
// Load a temporary resource bundle. The temporary instance must be unloaded
// when exiting the scoper.
cleanup_resource_bundle_ = true;
ui::ResourceBundle::InitSharedInstanceWithLocale(
locale, nullptr, ui::ResourceBundle::DO_NOT_LOAD_COMMON_RESOURCES);
}
}
ScopedStartupResourceBundle::~ScopedStartupResourceBundle() {
if (cleanup_resource_bundle_)
ui::ResourceBundle::CleanupSharedInstance();
}
} // namespace ui