summaryrefslogtreecommitdiffstats
path: root/lib/web_engine_context.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lib/web_engine_context.cpp')
-rw-r--r--lib/web_engine_context.cpp49
1 files changed, 21 insertions, 28 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();