diff options
-rw-r--r-- | lib/web_engine_context.cpp | 49 | ||||
-rw-r--r-- | patches/0001-Export-ContentMainRunner.patch (renamed from patches/0001-My-local-fixes.patch) | 16 | ||||
-rwxr-xr-x | patches/patch-chromium.sh | 2 |
3 files changed, 23 insertions, 44 deletions
diff --git a/lib/web_engine_context.cpp b/lib/web_engine_context.cpp index 3059bc089..149e580b9 100644 --- a/lib/web_engine_context.cpp +++ b/lib/web_engine_context.cpp @@ -92,15 +92,6 @@ static QByteArray subProcessPath() { return processPath; } -static void initializeBlinkPaths() -{ - static bool initialized = false; - if (initialized) - return; - - PathService::Override(content::CHILD_PROCESS_EXE, base::FilePath(qStringToStringType(QString(subProcessPath())))); -} - // Return a timeout suitable for the glib loop, -1 to block forever, // 0 to return right away, or a timeout in milliseconds from now. int GetTimeIntervalMilliseconds(const base::TimeTicks& from) { @@ -196,7 +187,15 @@ base::MessagePump* messagePumpFactory() class ContentMainDelegateQt : public content::ContentMainDelegate { public: - content::ContentBrowserClient* CreateContentBrowserClient() + + // This is where the embedder puts all of its startup code that needs to run + // before the sandbox is engaged. + void PreSandboxStartup() Q_DECL_OVERRIDE + { + PathService::Override(base::FILE_EXE, base::FilePath(qStringToStringType(subProcessPath()))); + } + + content::ContentBrowserClient* CreateContentBrowserClient() Q_DECL_OVERRIDE { m_browserClient.reset(new ContentBrowserClientQt); return m_browserClient.get(); @@ -214,26 +213,22 @@ WebEngineContext::WebEngineContext() sContext = this; { - QByteArray subProcessPathOption("--browser-subprocess-path="); - subProcessPathOption.append(subProcessPath()); - std::string ua = webkit_glue::BuildUserAgentFromProduct("QtWebEngine/0.1"); - QByteArray userAgentParameter("--user-agent="); userAgentParameter.append(QString::fromStdString(ua).toUtf8()); - const QStringList args = QCoreApplication::arguments(); - const int argc = args.size() + 3; - const char* argv[argc]; - int i = 0; - for(; i < args.size(); ++i) - argv[i] = args.at(i).toLatin1().constData(); - argv[i++] = subProcessPathOption.constData(); - argv[i++] = "--no-sandbox"; - argv[i++] = "--disable-plugins"; - argv[i] = userAgentParameter.constData(); - - CommandLine::Init(argc, argv); + QList<QByteArray> args; + Q_FOREACH (const QString& arg, QCoreApplication::arguments()) + args << arg.toUtf8(); + args << userAgentParameter; + args << QByteArrayLiteral("--no-sandbox"); + args << QByteArrayLiteral("--disable-plugins"); + + const char* argv[args.size()]; + for (int i = 0; i < args.size(); ++i) + argv[i] = args[i].constData(); + + CommandLine::Init(args.size(), argv); } // This needs to be set before the MessageLoop is created by BrowserMainRunner. @@ -245,8 +240,6 @@ WebEngineContext::WebEngineContext() runner->Initialize(0, 0, new ContentMainDelegateQt); } - initializeBlinkPaths(); - static content::BrowserMainRunner *browserRunner = 0; if (!browserRunner) { browserRunner = content::BrowserMainRunner::Create(); diff --git a/patches/0001-My-local-fixes.patch b/patches/0001-Export-ContentMainRunner.patch index ab9e927d7..7cd402485 100644 --- a/patches/0001-My-local-fixes.patch +++ b/patches/0001-Export-ContentMainRunner.patch @@ -1,26 +1,12 @@ From 0a3b4029af83089cb313b555a47c5c510dc94cc7 Mon Sep 17 00:00:00 2001 From: Simon Hausmann <simon.hausmann@digia.com> Date: Mon, 29 Apr 2013 11:25:37 +0200 -Subject: [PATCH 1/2] My local fixes +Subject: Export ContentMainRunner --- - content/browser/zygote_host/zygote_host_impl_linux.cc | 1 + content/public/app/content_main_runner.h | 3 ++- - content/public/common/content_client.h | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) -diff --git a/content/browser/zygote_host/zygote_host_impl_linux.cc b/content/browser/zygote_host/zygote_host_impl_linux.cc -index ba7884f8..50eacc8 100644 ---- a/content/browser/zygote_host/zygote_host_impl_linux.cc -+++ b/content/browser/zygote_host/zygote_host_impl_linux.cc -@@ -70,6 +70,7 @@ void ZygoteHostImpl::Init(const std::string& sandbox_cmd) { - - base::FilePath chrome_path; - CHECK(PathService::Get(base::FILE_EXE, &chrome_path)); -+ chrome_path = CommandLine::ForCurrentProcess()->GetSwitchValuePath(switches::kBrowserSubprocessPath); - CommandLine cmd_line(chrome_path); - - cmd_line.AppendSwitchASCII(switches::kProcessType, switches::kZygoteProcess); diff --git a/content/public/app/content_main_runner.h b/content/public/app/content_main_runner.h index bed5ff2..992e0d0 100644 --- a/content/public/app/content_main_runner.h diff --git a/patches/patch-chromium.sh b/patches/patch-chromium.sh index 6bc1c5e05..0ffe6860f 100755 --- a/patches/patch-chromium.sh +++ b/patches/patch-chromium.sh @@ -61,7 +61,7 @@ git submodule update --recursive cd $CHROMIUM_SRC_DIR echo "Entering $PWD" -git am $PATCH_DIR/0001-My-local-fixes.patch +git am $PATCH_DIR/0001-Export-ContentMainRunner.patch git am $PATCH_DIR/0002-Add-WebEngineContext-to-RunLoop-s-friends.patch git am $PATCH_DIR/0001-Mac-Use-libc-instead-of-stdlibc.patch git am $PATCH_DIR/0002-Clang-libc-does-not-support-incomplete-types-in-temp.patch |