diff --git a/cef.gyp b/cef.gyp index 125f9802a..28f4a22a3 100644 --- a/cef.gyp +++ b/cef.gyp @@ -138,7 +138,7 @@ ], }, { - 'postbuild_name': 'Copy Pack File', + 'postbuild_name': 'Copy cef.pak File', 'action': [ 'cp', '-f', @@ -146,6 +146,15 @@ '${BUILT_PRODUCTS_DIR}/cefclient.app/Contents/Frameworks/Chromium Embedded Framework.framework/Resources/cef.pak' ], }, + { + 'postbuild_name': 'Copy devtools_resources.pak File', + 'action': [ + 'cp', + '-f', + '${BUILT_PRODUCTS_DIR}/devtools_resources.pak', + '${BUILT_PRODUCTS_DIR}/cefclient.app/Contents/Frameworks/Chromium Embedded Framework.framework/Resources/devtools_resources.pak' + ], + }, { 'postbuild_name': 'Copy WebCore Resources', 'action': [ @@ -316,7 +325,7 @@ ], }, { - 'postbuild_name': 'Copy Pack File', + 'postbuild_name': 'Copy cef.pak File', 'action': [ 'cp', '-f', @@ -324,6 +333,15 @@ '${BUILT_PRODUCTS_DIR}/cef_unittests.app/Contents/Frameworks/Chromium Embedded Framework.framework/Resources/cef.pak' ], }, + { + 'postbuild_name': 'Copy devtools_resources.pak File', + 'action': [ + 'cp', + '-f', + '${BUILT_PRODUCTS_DIR}/devtools_resources.pak', + '${BUILT_PRODUCTS_DIR}/cef_unittests.app/Contents/Frameworks/Chromium Embedded Framework.framework/Resources/devtools_resources.pak' + ], + }, { 'postbuild_name': 'Copy WebCore Resources', 'action': [ @@ -635,7 +653,6 @@ '<(SHARED_INTERMEDIATE_DIR)/content/content_resources.pak', '<(SHARED_INTERMEDIATE_DIR)/net/net_resources.pak', '<(SHARED_INTERMEDIATE_DIR)/ui/ui_resources/ui_resources_100_percent.pak', - '<(SHARED_INTERMEDIATE_DIR)/webkit/devtools_resources.pak', '<(SHARED_INTERMEDIATE_DIR)/webkit/webkit_chromium_resources.pak', '<(SHARED_INTERMEDIATE_DIR)/webkit/webkit_resources.pak', '<(grit_out_dir)/cef_resources.pak', @@ -694,6 +711,15 @@ '<@(header_inputs)'], }, ], + 'copies': [ + { + # Keep the devtools_resources.pak file separate. + 'destination': '<(PRODUCT_DIR)', + 'files': [ + '<(SHARED_INTERMEDIATE_DIR)/webkit/devtools_resources.pak', + ], + }, + ], }, { 'target_name': 'libcef_static', diff --git a/include/internal/cef_types.h b/include/internal/cef_types.h index 2b4b157f9..11e4a85d9 100644 --- a/include/internal/cef_types.h +++ b/include/internal/cef_types.h @@ -222,18 +222,18 @@ typedef struct _cef_settings_t { bool auto_detect_proxy_settings_enabled; /// - // 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 cef.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; diff --git a/include/internal/cef_types_wrappers.h b/include/internal/cef_types_wrappers.h index 6456716ce..2fea2173e 100644 --- a/include/internal/cef_types_wrappers.h +++ b/include/internal/cef_types_wrappers.h @@ -264,7 +264,7 @@ struct CefSettingsTraits { cef_string_clear(&s->locale); 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 { target->auto_detect_proxy_settings_enabled = src->auto_detect_proxy_settings_enabled; - 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; diff --git a/libcef/browser/content_browser_client.cc b/libcef/browser/content_browser_client.cc index 4f910f554..8f97a068c 100644 --- a/libcef/browser/content_browser_client.cc +++ b/libcef/browser/content_browser_client.cc @@ -103,7 +103,7 @@ void CefContentBrowserClient::AppendExtraCommandLineSwitches( switches::kLogSeverity, switches::kProductVersion, switches::kLocale, - switches::kPackFilePath, + switches::kResourcesDirPath, switches::kLocalesDirPath, switches::kPackLoadingDisabled, }; diff --git a/libcef/common/cef_switches.cc b/libcef/common/cef_switches.cc index a626df51e..e5c42ef39 100644 --- a/libcef/common/cef_switches.cc +++ b/libcef/common/cef_switches.cc @@ -24,8 +24,8 @@ const char kLogSeverity_Error[] = "error"; const char kLogSeverity_ErrorReport[] = "error-report"; const char kLogSeverity_Disable[] = "disable"; -// Path to cef.pak file. -const char kPackFilePath[] = "pack-file-path"; +// Path to resources directory. +const char kResourcesDirPath[] = "resources-dir-path"; // Path to locales directory. const char kLocalesDirPath[] = "locales-dir-path"; diff --git a/libcef/common/cef_switches.h b/libcef/common/cef_switches.h index 27ec00474..c46d8a142 100644 --- a/libcef/common/cef_switches.h +++ b/libcef/common/cef_switches.h @@ -20,7 +20,7 @@ extern const char kLogSeverity_Warning[]; extern const char kLogSeverity_Error[]; extern const char kLogSeverity_ErrorReport[]; extern const char kLogSeverity_Disable[]; -extern const char kPackFilePath[]; +extern const char kResourcesDirPath[]; extern const char kLocalesDirPath[]; extern const char kPackLoadingDisabled[]; diff --git a/libcef/common/main_delegate.cc b/libcef/common/main_delegate.cc index bdb3b6bb0..5bbe0953f 100644 --- a/libcef/common/main_delegate.cc +++ b/libcef/common/main_delegate.cc @@ -57,7 +57,7 @@ FilePath GetFrameworkBundlePath() { FILE_PATH_LITERAL("Chromium Embedded Framework.framework")); } -FilePath GetDefaultPackPath() { +FilePath GetResourcesFilePath() { return GetFrameworkBundlePath().Append(FILE_PATH_LITERAL("Resources")); } @@ -83,7 +83,7 @@ void OverrideChildProcessPath() { #else // !defined(OS_MACOSX) -FilePath GetDefaultPackPath() { +FilePath GetResourcesFilePath() { FilePath pak_dir; PathService::Get(base::DIR_MODULE, &pak_dir); return pak_dir; @@ -228,10 +228,12 @@ bool CefMainDelegate::BasicStartupComplete(int* exit_code) { if (settings.pack_loading_disabled) { command_line->AppendSwitch(switches::kPackLoadingDisabled); } else { - if (settings.pack_file_path.length > 0) { - FilePath file_path = FilePath(CefString(&settings.pack_file_path)); - if (!file_path.empty()) - command_line->AppendSwitchPath(switches::kPackFilePath, file_path); + if (settings.resources_dir_path.length > 0) { + FilePath file_path = FilePath(CefString(&settings.resources_dir_path)); + if (!file_path.empty()) { + command_line->AppendSwitchPath(switches::kResourcesDirPath, + file_path); + } } if (settings.locales_dir_path.length > 0) { @@ -383,14 +385,22 @@ void CefMainDelegate::ShutdownBrowser() { void CefMainDelegate::InitializeResourceBundle() { const CommandLine& command_line = *CommandLine::ForCurrentProcess(); - FilePath pak_file, locales_dir; + FilePath cef_pak_file, devtools_pak_file, locales_dir; if (!content_client_.pack_loading_disabled()) { - if (command_line.HasSwitch(switches::kPackFilePath)) - pak_file = command_line.GetSwitchValuePath(switches::kPackFilePath); + FilePath resources_dir; + if (command_line.HasSwitch(switches::kResourcesDirPath)) { + resources_dir = + command_line.GetSwitchValuePath(switches::kResourcesDirPath); + } + if (resources_dir.empty()) + resources_dir = GetResourcesFilePath(); - if (pak_file.empty()) - pak_file = GetDefaultPackPath().Append(FILE_PATH_LITERAL("cef.pak")); + if (!resources_dir.empty()) { + cef_pak_file = resources_dir.Append(FILE_PATH_LITERAL("cef.pak")); + devtools_pak_file = + resources_dir.Append(FILE_PATH_LITERAL("devtools_resources.pak")); + } if (command_line.HasSwitch(switches::kLocalesDirPath)) locales_dir = command_line.GetSwitchValuePath(switches::kLocalesDirPath); @@ -409,13 +419,20 @@ void CefMainDelegate::InitializeResourceBundle() { if (!content_client_.pack_loading_disabled()) { CHECK(!loaded_locale.empty()) << "Locale could not be found for " << locale; - if (file_util::PathExists(pak_file)) { - content_client_.set_allow_pack_file_load(true); + content_client_.set_allow_pack_file_load(true); + + if (file_util::PathExists(cef_pak_file)) { ResourceBundle::GetSharedInstance().AddDataPackFromPath( - pak_file, ui::SCALE_FACTOR_NONE); - content_client_.set_allow_pack_file_load(false); + cef_pak_file, ui::SCALE_FACTOR_NONE); } else { NOTREACHED() << "Could not load cef.pak"; } + + if (file_util::PathExists(devtools_pak_file)) { + ResourceBundle::GetSharedInstance().AddDataPackFromPath( + devtools_pak_file, ui::SCALE_FACTOR_NONE); + } + + content_client_.set_allow_pack_file_load(false); } } diff --git a/tools/distrib/linux/README.txt b/tools/distrib/linux/README.txt index 19982cea9..45dccd443 100644 --- a/tools/distrib/linux/README.txt +++ b/tools/distrib/linux/README.txt @@ -73,9 +73,10 @@ Optional components: * Other resources cef.pak + devtools_resources.pak Note: Contains WebKit image and inspector resources. Pack file loading can be - disabled completely using CefSettings.pack_loading_disabled. The cef.pak file - path can be customized using CefSettings.pack_file_path. + disabled completely using CefSettings.pack_loading_disabled. The resources + directory path can be customized using CefSettings.resources_dir_path. LICENSING diff --git a/tools/distrib/mac/README.txt b/tools/distrib/mac/README.txt index b3da9a334..e558539ec 100644 --- a/tools/distrib/mac/README.txt +++ b/tools/distrib/mac/README.txt @@ -84,8 +84,10 @@ Optional components: * Other resources Resources/cef.pak + Resources/devtools_resources.pak Note: Contains WebKit image and inspector resources. Pack file loading can be - disabled completely using CefSettings.pack_loading_disabled. + disabled completely using CefSettings.pack_loading_disabled. The resources + directory path can be customized using CefSettings.resources_dir_path. * FFmpeg audio and video support ffmpegsumo.so diff --git a/tools/distrib/win/README.txt b/tools/distrib/win/README.txt index 5e07732f5..2c1a3d680 100644 --- a/tools/distrib/win/README.txt +++ b/tools/distrib/win/README.txt @@ -83,9 +83,10 @@ Optional components: * Other resources cef.pak + devtools_resources.pak Note: Contains WebKit image and inspector resources. Pack file loading can be - disabled completely using CefSettings.pack_loading_disabled. The cef.pak file - path can be customized using CefSettings.pack_file_path. + 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 diff --git a/tools/make_distrib.py b/tools/make_distrib.py index 5527c2cad..d5872ae38 100644 --- a/tools/make_distrib.py +++ b/tools/make_distrib.py @@ -287,6 +287,7 @@ if platform == 'windows': copy_files(os.path.join(build_dir, '*.dll'), dst_dir, options.quiet) copy_file(os.path.join(build_dir, 'cefclient.exe'), dst_dir, options.quiet) copy_file(os.path.join(build_dir, 'cef.pak'), dst_dir, options.quiet) + copy_file(os.path.join(build_dir, 'devtools_resources.pak'), dst_dir, options.quiet) copy_dir(os.path.join(build_dir, 'locales'), os.path.join(dst_dir, 'locales'), \ options.quiet) @@ -306,6 +307,7 @@ if platform == 'windows': copy_files(os.path.join(build_dir, '*.dll'), dst_dir, options.quiet) copy_file(os.path.join(build_dir, 'cefclient.exe'), dst_dir, options.quiet) copy_file(os.path.join(build_dir, 'cef.pak'), dst_dir, options.quiet) + copy_file(os.path.join(build_dir, 'devtools_resources.pak'), dst_dir, options.quiet) copy_dir(os.path.join(build_dir, 'locales'), os.path.join(dst_dir, 'locales'), \ options.quiet) @@ -422,6 +424,7 @@ elif platform == 'linux': copy_dir(os.path.join(build_dir, 'lib.target'), os.path.join(dst_dir, 'lib.target'), options.quiet) copy_file(os.path.join(build_dir, 'cefclient'), dst_dir, options.quiet) copy_file(os.path.join(build_dir, 'cef.pak'), dst_dir, options.quiet) + copy_file(os.path.join(build_dir, 'devtools_resources.pak'), dst_dir, options.quiet) copy_dir(os.path.join(build_dir, 'locales'), os.path.join(dst_dir, 'locales'), options.quiet) else: sys.stderr.write("No Debug build files.\n") @@ -434,6 +437,7 @@ elif platform == 'linux': copy_dir(os.path.join(build_dir, 'lib.target'), os.path.join(dst_dir, 'lib.target'), options.quiet) copy_file(os.path.join(build_dir, 'cefclient'), dst_dir, options.quiet) copy_file(os.path.join(build_dir, 'cef.pak'), dst_dir, options.quiet) + copy_file(os.path.join(build_dir, 'devtools_resources.pak'), dst_dir, options.quiet) copy_dir(os.path.join(build_dir, 'locales'), os.path.join(dst_dir, 'locales'), options.quiet) else: sys.stderr.write("No Release build files.\n")