Move devtools resources to a separate devtools_resources.pak file (issue #714).

git-svn-id: https://chromiumembedded.googlecode.com/svn/trunk@762 5089003a-bbd8-11dd-ad1f-f1f9622dbc98
This commit is contained in:
Marshall Greenblatt 2012-09-05 22:34:30 +00:00
parent 234acdd760
commit 5ac06eb984
13 changed files with 551 additions and 552 deletions

View File

@ -49,6 +49,7 @@
],
'mac_bundle_resources': [
'<@(cefclient_bundle_resources_mac)',
'<(grit_out_dir)/devtools_resources.pak',
],
'mac_bundle_resources!': [
# TODO(mark): Come up with a fancier way to do this (mac_info_plist?)
@ -87,24 +88,6 @@
'<@(locales)',
],
},
{
# On Windows chrome.pak will contain only the inspector resources.
# Other resources are built into libcef.dll.
'action_name': 'repack_resources',
'variables': {
'pak_inputs': [
'<(grit_out_dir)/devtools_resources.pak',
],
},
'inputs': [
'<(repack_path)',
'<@(pak_inputs)',
],
'outputs': [
'<(INTERMEDIATE_DIR)/repack/chrome.pak',
],
'action': ['python', '<(repack_path)', '<@(_outputs)', '<@(pak_inputs)'],
},
],
'copies': [
{
@ -116,7 +99,7 @@
{
'destination': '<(PRODUCT_DIR)',
'files': [
'<(INTERMEDIATE_DIR)/repack/chrome.pak'
'<(grit_out_dir)/devtools_resources.pak'
],
},
],
@ -175,7 +158,6 @@
'process_outputs_as_mac_bundle_resources': 1,
'variables': {
'pak_inputs': [
'<(grit_out_dir)/devtools_resources.pak',
'<(SHARED_INTERMEDIATE_DIR)/net/net_resources.pak',
'<(SHARED_INTERMEDIATE_DIR)/ui/ui_resources/ui_resources_100_percent.pak',
'<(SHARED_INTERMEDIATE_DIR)/webkit/webkit_chromium_resources.pak',
@ -255,7 +237,6 @@
'action_name': 'repack_resources',
'variables': {
'pak_inputs': [
'<(grit_out_dir)/devtools_resources.pak',
'<(SHARED_INTERMEDIATE_DIR)/net/net_resources.pak',
'<(SHARED_INTERMEDIATE_DIR)/ui/ui_resources/ui_resources_100_percent.pak',
'<(SHARED_INTERMEDIATE_DIR)/webkit/webkit_chromium_resources.pak',
@ -282,7 +263,8 @@
{
'destination': '<(PRODUCT_DIR)',
'files': [
'<(INTERMEDIATE_DIR)/repack/chrome.pak'
'<(INTERMEDIATE_DIR)/repack/chrome.pak',
'<(grit_out_dir)/devtools_resources.pak',
],
},
{

View File

@ -188,18 +188,18 @@ typedef struct _cef_settings_t {
#endif
///
// The fully qualified path for the cef.pak file. If this value is empty
// the cef.pak file must be located in the module directory. This value is
// ignored on Mac OS X where pack files are always loaded from the app bundle
// resource directory.
// The fully qualified path for the resources directory. If this value is
// empty the chrome.pak and/or devtools_resources.pak files must be located in
// the module directory on Windows/Linux or the app bundle Resources directory
// on Mac OS X.
///
cef_string_t pack_file_path;
cef_string_t resources_dir_path;
///
// The fully qualified path for the locales directory. If this value is empty
// the locales directory must be located in the module directory. This value
// is ignored on Mac OS X where pack files are always loaded from the app
// bundle resource directory.
// bundle Resources directory.
///
cef_string_t locales_dir_path;

View File

@ -259,7 +259,7 @@ struct CefSettingsTraits {
cef_string_list_free(s->extra_plugin_paths);
cef_string_clear(&s->log_file);
cef_string_clear(&s->javascript_flags);
cef_string_clear(&s->pack_file_path);
cef_string_clear(&s->resources_dir_path);
cef_string_clear(&s->locales_dir_path);
}
@ -294,8 +294,8 @@ struct CefSettingsTraits {
src->auto_detect_proxy_settings_enabled;
#endif
cef_string_set(src->pack_file_path.str, src->pack_file_path.length,
&target->pack_file_path, copy);
cef_string_set(src->resources_dir_path.str, src->resources_dir_path.length,
&target->resources_dir_path, copy);
cef_string_set(src->locales_dir_path.str, src->locales_dir_path.length,
&target->locales_dir_path, copy);
target->pack_loading_disabled = src->pack_loading_disabled;

View File

@ -37,31 +37,6 @@ namespace {
// to initialize or reset to the same value.
const int kNextBrowserIdReset = 1;
#if defined(OS_MACOSX)
FilePath GetDefaultPackPath() {
// Start out with the path to the running executable.
FilePath execPath;
PathService::Get(base::FILE_EXE, &execPath);
// Get the main bundle path.
FilePath bundlePath = base::mac::GetAppBundlePath(execPath);
// Go into the Contents/Resources directory.
return bundlePath.Append(FILE_PATH_LITERAL("Contents"))
.Append(FILE_PATH_LITERAL("Resources"));
}
#else // !defined(OS_MACOSX)
FilePath GetDefaultPackPath() {
FilePath pak_dir;
PathService::Get(base::DIR_MODULE, &pak_dir);
return pak_dir;
}
#endif // !defined(OS_MACOSX)
// Used in multi-threaded message loop mode to observe shutdown of the UI
// thread.
class DestructionObserver : public MessageLoop::DestructionObserver {
@ -392,14 +367,26 @@ CefRefPtr<CefBrowserImpl> CefContext::GetBrowserByID(int id) {
}
void CefContext::InitializeResourceBundle() {
FilePath pak_file, locales_dir;
#if !defined(OS_WIN)
FilePath chrome_pak_file;
#endif
FilePath devtools_pak_file, locales_dir;
if (!settings_.pack_loading_disabled) {
if (settings_.pack_file_path.length > 0)
pak_file = FilePath(CefString(&settings_.pack_file_path));
FilePath resources_dir_path;
if (settings_.resources_dir_path.length > 0)
resources_dir_path = FilePath(CefString(&settings_.resources_dir_path));
if (resources_dir_path.empty())
resources_dir_path = GetResourcesFilePath();
if (pak_file.empty())
pak_file = GetDefaultPackPath().Append(FILE_PATH_LITERAL("chrome.pak"));
if (!resources_dir_path.empty()) {
#if !defined(OS_WIN)
chrome_pak_file = resources_dir_path.Append(
FILE_PATH_LITERAL("chrome.pak"));
#endif
devtools_pak_file = resources_dir_path.Append(
FILE_PATH_LITERAL("devtools_resources.pak"));
}
if (settings_.locales_dir_path.length > 0)
locales_dir = FilePath(CefString(&settings_.locales_dir_path));
@ -420,14 +407,25 @@ void CefContext::InitializeResourceBundle() {
CHECK(!loaded_locale.empty()) << "Locale could not be found for "
<< locale_str;
if (file_util::PathExists(pak_file)) {
resource_bundle_delegate_->set_allow_pack_file_load(true);
// The chrome.pak file is required on non-Windows platforms.
#if !defined(OS_WIN)
if (file_util::PathExists(chrome_pak_file)) {
ResourceBundle::GetSharedInstance().AddDataPackFromPath(
pak_file, ui::SCALE_FACTOR_NONE);
resource_bundle_delegate_->set_allow_pack_file_load(false);
chrome_pak_file, ui::SCALE_FACTOR_NONE);
} else {
NOTREACHED() << "Could not load chrome.pak";
}
#endif
// The devtools_resources.pak file is optional.
if (file_util::PathExists(devtools_pak_file)) {
ResourceBundle::GetSharedInstance().AddDataPackFromPath(
devtools_pak_file, ui::SCALE_FACTOR_NONE);
}
resource_bundle_delegate_->set_allow_pack_file_load(false);
}
}
@ -536,25 +534,24 @@ base::StringPiece CefContext::GetDataResource(int resource_id) const {
return value;
}
#if defined(OS_MACOSX)
FilePath CefContext::GetResourcesFilePath() const {
FilePath path;
// We need to know if we're bundled or not to know which path to use.
if (base::mac::AmIBundled()) {
PathService::Get(base::DIR_EXE, &path);
path = path.Append(FilePath::kParentDirectory);
return path.AppendASCII("Resources");
} else {
// TODO(port): Allow the embedder to customize the resource path.
PathService::Get(base::DIR_SOURCE_ROOT, &path);
path = path.AppendASCII("src");
path = path.AppendASCII("cef");
path = path.AppendASCII("tests");
path = path.AppendASCII("cefclient");
return path.AppendASCII("res");
}
#if defined(OS_MACOSX)
// Start out with the path to the running executable.
FilePath execPath;
PathService::Get(base::FILE_EXE, &execPath);
// Get the main bundle path.
FilePath bundlePath = base::mac::GetAppBundlePath(execPath);
// Go into the Contents/Resources directory.
return bundlePath.Append(FILE_PATH_LITERAL("Contents"))
.Append(FILE_PATH_LITERAL("Resources"));
#else
FilePath pak_dir;
PathService::Get(base::DIR_MODULE, &pak_dir);
return pak_dir;
#endif
}
#endif // defined(OS_MACOSX)
std::string CefContext::locale() const {
std::string localeStr = CefString(&settings_.locale);

View File

@ -59,9 +59,7 @@ class CefContext : public CefBase {
string16 GetLocalizedString(int message_id) const;
base::StringPiece GetDataResource(int resource_id) const;
#if defined(OS_MACOSX)
FilePath GetResourcesFilePath() const;
#endif
// Retrieve the path at which cache data will be stored on disk. If empty,
// cache data will be stored in-memory.

View File

@ -250,8 +250,8 @@ void AppGetSettings(CefSettings& settings, CefRefPtr<CefApp>& app) {
CefString(&settings.javascript_flags) =
g_command_line->GetSwitchValue(cefclient::kJavascriptFlags);
CefString(&settings.pack_file_path) =
g_command_line->GetSwitchValue(cefclient::kPackFilePath);
CefString(&settings.resources_dir_path) =
g_command_line->GetSwitchValue(cefclient::kResourcesDirPath);
CefString(&settings.locales_dir_path) =
g_command_line->GetSwitchValue(cefclient::kLocalesDirPath);

View File

@ -30,7 +30,7 @@ const char kGraphicsImpl_DesktopCmdBuffer[] = "desktop-command-buffer";
const char kLocalStorageQuota[] = "local-storage-quota";
const char kSessionStorageQuota[] = "session-storage-quota";
const char kJavascriptFlags[] = "javascript-flags";
const char kPackFilePath[] = "pack-file-path";
const char kResourcesDirPath[] = "resources-dir-path";
const char kLocalesDirPath[] = "locales-dir-path";
const char kPackLoadingDisabled[] = "pack-loading-disabled";

View File

@ -32,7 +32,7 @@ extern const char kGraphicsImpl_DesktopCmdBuffer[];
extern const char kLocalStorageQuota[];
extern const char kSessionStorageQuota[];
extern const char kJavascriptFlags[];
extern const char kPackFilePath[];
extern const char kResourcesDirPath[];
extern const char kLocalesDirPath[];
extern const char kPackLoadingDisabled[];

View File

@ -117,8 +117,8 @@ void CefTestSuite::GetSettings(CefSettings& settings) {
javascript_flags += " " + other_javascript_flags;
CefString(&settings.javascript_flags) = javascript_flags;
CefString(&settings.pack_file_path) =
commandline_->GetSwitchValueASCII(cefclient::kPackFilePath);
CefString(&settings.resources_dir_path) =
commandline_->GetSwitchValueASCII(cefclient::kResourcesDirPath);
CefString(&settings.locales_dir_path) =
commandline_->GetSwitchValueASCII(cefclient::kLocalesDirPath);

View File

@ -63,14 +63,21 @@ Required components:
* Localized resources
locales/
Note: A .pak file is loaded from this folder based on the value of
CefSettings.locale. Only configured locales need to be distributed. If no
locale is configured the default locale of "en-US" will be used. The
locales folder must exist in the same directory as the executable.
Note: Contains localized strings for WebKit UI controls. A .pak file is loaded
from this folder based on the value of environment variables which are read
with the following precedence order: LANGUAGE, LC_ALL, LC_MESSAGES and LANG.
Only configured locales need to be distributed. If no locale is configured the
default locale of "en-US" will be used. Locale file loading can be disabled
completely using CefSettings.pack_loading_disabled. The locales folder path
can be customized using CefSettings.locales_dir_path.
* Other resources
chrome.pak
Note: The chrome.pak file must exist in the same directory as the executable.
devtools_resources.pak
Note: The devtools_resources.pak file contains WebKit inspector resources and
is optional. All other resources are required. Pack file loading can be
disabled completely using CefSettings.pack_loading_disabled. The resources
directory path can be customized using CefSettings.resources_dir_path.
LICENSING

View File

@ -68,14 +68,21 @@ Required components:
* Localized resources
Resources/*.lproj/
Note: A .pak file is loaded from this folder based on the value of
CefSettings.locale. Only configured locales need to be distributed. If no
locale is configured the default locale of "en" will be used.
Note: Contains localized strings for WebKit UI controls. A .pak file is loaded
from this folder based on the CefSettings.locale value. Only configured
locales need to be distributed. If no locale is configured the default locale
of "en" will be used. Locale file loading can be disabled completely using
CefSettings.pack_loading_disabled.
* Other resources
Resources/chrome.pak
Resources/devtools_resources.pak
Resources/*.png
Resources/*.tiff
Note: The devtools_resources.pak file contains WebKit inspector resources and
is optional. All other resources are required. Pack file loading can be
disabled completely using CefSettings.pack_loading_disabled. The resources
directory path can be customized using CefSettings.resources_dir_path.
Optional components:

View File

@ -74,17 +74,22 @@ Required components:
* Localized resources
locales/
Note: A .pak file is loaded from this folder based on the value of
CefSettings.locale. Only configured locales need to be distributed. If no
locale is configured the default locale of "en-US" will be used. The
locales folder must exist in the same directory as libcef.dll.
* Other resources
chrome.pak
Note: The chrome.pak file must exist in the same directory as libcef.dll.
Note: Contains localized strings for WebKit UI controls. A .pak file is loaded
from this folder based on the CefSettings.locale value. Only configured
locales need to be distributed. If no locale is configured the default locale
of "en-US" will be used. Locale file loading can be disabled completely using
CefSettings.pack_loading_disabled. The locales folder path can be customized
using CefSettings.locales_dir_path.
Optional components:
* Other resources
devtools_resources.pak
Note: The devtools_resources.pak file contains WebKit inspector resources.
Pack file loading can be disabled completely using CefSettings.
pack_loading_disabled. The resources directory path can be customized using
CefSettings.resources_dir_path.
* FFmpeg audio and video support
avcodec-54.dll
avformat-54.dll

View File

@ -278,7 +278,7 @@ if platform == 'windows':
copy_files(os.path.join(script_dir, 'distrib/win/*.dll'), dst_dir, options.quiet)
copy_files(os.path.join(cef_dir, 'Debug/*.dll'), dst_dir, options.quiet)
copy_file(os.path.join(cef_dir, 'Debug/cefclient.exe'), dst_dir, options.quiet)
copy_file(os.path.join(cef_dir, 'Debug/chrome.pak'), dst_dir, options.quiet)
copy_file(os.path.join(cef_dir, 'Debug/devtools_resources.pak'), dst_dir, options.quiet)
copy_dir(os.path.join(cef_dir, 'Debug/locales'), os.path.join(dst_dir, 'locales'), \
options.quiet)
@ -296,7 +296,7 @@ if platform == 'windows':
copy_files(os.path.join(script_dir, 'distrib/win/*.dll'), dst_dir, options.quiet)
copy_files(os.path.join(cef_dir, 'Release/*.dll'), dst_dir, options.quiet)
copy_file(os.path.join(cef_dir, 'Release/cefclient.exe'), dst_dir, options.quiet)
copy_file(os.path.join(cef_dir, 'Release/chrome.pak'), dst_dir, options.quiet)
copy_file(os.path.join(cef_dir, 'Release/devtools_resources.pak'), dst_dir, options.quiet)
copy_dir(os.path.join(cef_dir, 'Release/locales'), os.path.join(dst_dir, 'locales'), \
options.quiet)
@ -371,6 +371,7 @@ elif platform == 'macosx':
make_dir(dst_dir, options.quiet)
copy_files(os.path.join(cef_dir, '../third_party/WebKit/Source/WebCore/Resources/*.*'), dst_dir, options.quiet)
copy_file(os.path.join(cef_dir, '../xcodebuild/Release/cefclient.app/Contents/Resources/chrome.pak'), dst_dir, options.quiet)
copy_file(os.path.join(cef_dir, '../xcodebuild/Release/cefclient.app/Contents/Resources/devtools_resources.pak'), dst_dir, options.quiet)
copy_files(os.path.join(cef_dir, '../xcodebuild/Release/cefclient.app/Contents/Resources/*.lproj'), dst_dir, options.quiet)
remove_dir(os.path.join(dst_dir, 'English.lproj'))
@ -404,6 +405,7 @@ elif platform == 'linux':
copy_dir(os.path.join(linux_build_dir, 'Debug/lib.target'), os.path.join(dst_dir, 'lib.target'), options.quiet)
copy_file(os.path.join(linux_build_dir, 'Debug/cefclient'), dst_dir, options.quiet)
copy_file(os.path.join(linux_build_dir, 'Debug/chrome.pak'), dst_dir, options.quiet)
copy_file(os.path.join(linux_build_dir, 'Debug/devtools_resources.pak'), dst_dir, options.quiet)
copy_dir(os.path.join(linux_build_dir, 'Debug/locales'), os.path.join(dst_dir, 'locales'), options.quiet)
else:
@ -416,6 +418,7 @@ elif platform == 'linux':
copy_dir(os.path.join(linux_build_dir, 'Release/lib.target'), os.path.join(dst_dir, 'lib.target'), options.quiet)
copy_file(os.path.join(linux_build_dir, 'Release/cefclient'), dst_dir, options.quiet)
copy_file(os.path.join(linux_build_dir, 'Release/chrome.pak'), dst_dir, options.quiet)
copy_file(os.path.join(linux_build_dir, 'Release/devtools_resources.pak'), dst_dir, options.quiet)
copy_dir(os.path.join(linux_build_dir, 'Release/locales'), os.path.join(dst_dir, 'locales'), options.quiet)
else: