summaryrefslogtreecommitdiffstats
path: root/src/core
diff options
context:
space:
mode:
authorAndras Becsi <andras.becsi@digia.com>2014-02-13 12:13:15 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-02-13 14:28:04 +0100
commit514b9f71de89a14401e305f32c61fbad5759e5f2 (patch)
treeb28a799abaf06ac6eeaf7cb1de6c640fdda4d26f /src/core
parent33237bd32f13fbabb7be248a1d46323c89edf57c (diff)
Fix path service assertions
Registering a path provider did not turn out to be a clean enough solution for overriding chromium paths because of debug assertions that require the key range not to collide with already registered path providers. Instead of patching chromium or using workarounds switch back to using PathService::Override and only replace the jni-based default PathProviderAndroid on embedded android. Change-Id: I4530bc8fa3eba36c0d2403729be9a792f3c2120f Reviewed-by: Jocelyn Turcotte <jocelyn.turcotte@digia.com>
Diffstat (limited to 'src/core')
-rw-r--r--src/core/content_main_delegate_qt.cpp5
-rw-r--r--src/core/resource_bundle_qt.cpp2
-rw-r--r--src/core/web_engine_context.cpp7
-rw-r--r--src/core/web_engine_library_info.cpp28
-rw-r--r--src/core/web_engine_library_info.h6
5 files changed, 21 insertions, 27 deletions
diff --git a/src/core/content_main_delegate_qt.cpp b/src/core/content_main_delegate_qt.cpp
index 43cca7ef9..f75204ada 100644
--- a/src/core/content_main_delegate_qt.cpp
+++ b/src/core/content_main_delegate_qt.cpp
@@ -63,8 +63,9 @@ static base::StringPiece PlatformResourceProvider(int key) {
void ContentMainDelegateQt::PreSandboxStartup()
{
- // Register the Qt path provider which handles necessary paths for base, ui and content.
- PathService::RegisterProvider(WebEngineLibraryInfo::pathProviderQt, base::PATH_START, content::PATH_END);
+ PathService::Override(base::FILE_EXE, WebEngineLibraryInfo::getPath(base::FILE_EXE));
+ PathService::Override(content::DIR_MEDIA_LIBS, WebEngineLibraryInfo::getPath(content::DIR_MEDIA_LIBS));
+ PathService::Override(ui::DIR_LOCALES, WebEngineLibraryInfo::getPath(ui::DIR_LOCALES));
net::NetModule::SetResourceProvider(PlatformResourceProvider);
ui::ResourceBundle::InitSharedInstanceWithLocale(l10n_util::GetApplicationLocale(std::string("en-US")), 0);
diff --git a/src/core/resource_bundle_qt.cpp b/src/core/resource_bundle_qt.cpp
index 951f4af21..5865cc5ba 100644
--- a/src/core/resource_bundle_qt.cpp
+++ b/src/core/resource_bundle_qt.cpp
@@ -49,7 +49,7 @@ namespace ui {
void ResourceBundle::LoadCommonResources()
{
// We repacked the resources we need and installed them. now let chromium mmap that file.
- AddDataPackFromPath(WebEngineLibraryInfo::repackedResourcesPath(), SCALE_FACTOR_100P);
+ AddDataPackFromPath(WebEngineLibraryInfo::getPath(QT_RESOURCES_PAK), SCALE_FACTOR_100P);
}
// As GetLocaleFilePath is excluded for Mac in resource_bundle.cc,
diff --git a/src/core/web_engine_context.cpp b/src/core/web_engine_context.cpp
index 193179ea1..3b0862128 100644
--- a/src/core/web_engine_context.cpp
+++ b/src/core/web_engine_context.cpp
@@ -45,7 +45,6 @@
#include "base/command_line.h"
#include "base/files/file_path.h"
-#include "base/path_service.h"
#include "base/run_loop.h"
#include "base/threading/thread_restrictions.h"
#include "content/public/app/content_main_runner.h"
@@ -131,11 +130,7 @@ WebEngineContext::WebEngineContext(WebContentsAdapterClient::RenderingMode rende
CommandLine* parsedCommandLine = CommandLine::ForCurrentProcess();
parsedCommandLine->AppendSwitchASCII(switches::kUserAgent, webkit_glue::BuildUserAgentFromProduct("QtWebEngine/0.1"));
-
- base::FilePath subprocessPath;
- PathService::Get(content::CHILD_PROCESS_EXE, &subprocessPath);
- parsedCommandLine->AppendSwitchPath(switches::kBrowserSubprocessPath, subprocessPath);
-
+ parsedCommandLine->AppendSwitchPath(switches::kBrowserSubprocessPath, WebEngineLibraryInfo::getPath(content::CHILD_PROCESS_EXE));
parsedCommandLine->AppendSwitch(switches::kNoSandbox);
parsedCommandLine->AppendSwitch(switches::kDisablePlugins);
diff --git a/src/core/web_engine_library_info.cpp b/src/core/web_engine_library_info.cpp
index 40cd7a1b7..67a466c90 100644
--- a/src/core/web_engine_library_info.cpp
+++ b/src/core/web_engine_library_info.cpp
@@ -138,31 +138,30 @@ namespace base {
// PathService registers PathProviderAndroid by default on Android.
bool PathProviderAndroid(int key, FilePath* result)
{
- return WebEngineLibraryInfo::pathProviderQt(key, result);
+ *result = WebEngineLibraryInfo::getPath(key);
+ return !(result->empty());
}
}
#endif // defined(OS_ANDROID)
-base::FilePath WebEngineLibraryInfo::repackedResourcesPath()
-{
- return toFilePath(location(QLibraryInfo::DataPath) % QStringLiteral("/qtwebengine_resources.pak"));
-}
-
-bool WebEngineLibraryInfo::pathProviderQt(int key, base::FilePath* result)
+base::FilePath WebEngineLibraryInfo::getPath(int key)
{
QString directory;
switch (key) {
+ case QT_RESOURCES_PAK:
+ return toFilePath(location(QLibraryInfo::DataPath) % QStringLiteral("/qtwebengine_resources.pak"));
case base::FILE_EXE:
case content::CHILD_PROCESS_EXE:
- *result = toFilePath(subProcessPath());
- return true;
+ return toFilePath(subProcessPath());
+#if defined(OS_POSIX)
case base::DIR_CACHE:
directory = QStandardPaths::writableLocation(QStandardPaths::CacheLocation);
break;
case base::DIR_HOME:
directory = QDir::homePath();
break;
+#endif
case base::DIR_USER_DESKTOP:
directory = QStandardPaths::writableLocation(QStandardPaths::DesktopLocation);
break;
@@ -174,18 +173,15 @@ bool WebEngineLibraryInfo::pathProviderQt(int key, base::FilePath* result)
break;
#endif
case content::DIR_MEDIA_LIBS:
- *result = toFilePath(pluginsPath());
- return true;
+ return toFilePath(pluginsPath());
case ui::DIR_LOCALES:
- *result = toFilePath(localesPath());
- return true;
+ return toFilePath(localesPath());
default:
// Note: the path system expects this function to override the default
// behavior. So no need to log an error if we don't support a given
// path. The system will just use the default.
- return false;
+ return base::FilePath();
}
- *result = toFilePath(directory.isEmpty() ? fallbackDir() : directory);
- return true;
+ return toFilePath(directory.isEmpty() ? fallbackDir() : directory);
}
diff --git a/src/core/web_engine_library_info.h b/src/core/web_engine_library_info.h
index 644f85003..84fee12af 100644
--- a/src/core/web_engine_library_info.h
+++ b/src/core/web_engine_library_info.h
@@ -43,11 +43,13 @@
#define WEB_ENGINE_LIBRARY_INFO_H
#include "base/files/file_path.h"
+enum {
+ QT_RESOURCES_PAK = 5000
+};
class WebEngineLibraryInfo {
public:
- static base::FilePath repackedResourcesPath();
- static bool pathProviderQt(int key, base::FilePath* result);
+ static base::FilePath getPath(int key);
};