diff options
author | Zeno Albisser <zeno.albisser@digia.com> | 2013-06-06 13:53:06 +0200 |
---|---|---|
committer | Zeno Albisser <zeno.albisser@digia.com> | 2013-06-06 13:57:11 +0200 |
commit | a1c0740f25b8c519910786a47e64d2d4f71495d9 (patch) | |
tree | 4dd87a6f020d867ba92d47e5953f4cc4c30907c6 /lib/content_browser_client_qt.cpp | |
parent | 8736ce7b3800daa90d6b4b2b5a9831a77cba6d5a (diff) |
Introduce BrowserMainPartsQt to prepare for Shell removal.
Diffstat (limited to 'lib/content_browser_client_qt.cpp')
-rw-r--r-- | lib/content_browser_client_qt.cpp | 68 |
1 files changed, 67 insertions, 1 deletions
diff --git a/lib/content_browser_client_qt.cpp b/lib/content_browser_client_qt.cpp index 4251a9fe1..0470d6700 100644 --- a/lib/content_browser_client_qt.cpp +++ b/lib/content_browser_client_qt.cpp @@ -6,11 +6,77 @@ #include "content/public/browser/render_process_host.h" // To be cleaned up +#include "content/shell/shell.h" #include "content/shell/shell_browser_main_parts.h" +#include "content/shell/shell_browser_context.h" +#include "content/public/browser/browser_main_parts.h" +#include "net/base/net_module.h" +#include "net/base/net_util.h" #include "browser_context_qt.h" #include "web_contents_view_qt.h" +static GURL GetStartupURL() { + CommandLine* command_line = CommandLine::ForCurrentProcess(); + const CommandLine::StringVector& args = command_line->GetArgs(); + + if (args.empty()) + return GURL("http://www.google.com/"); + + GURL url(args[0]); + if (url.is_valid() && url.has_scheme()) + return url; + + return net::FilePathToFileURL(base::FilePath(args[0])); +} + + +class BrowserMainPartsQt : public content::BrowserMainParts +{ +public: + BrowserMainPartsQt(const content::MainFunctionParams& parameters) + : content::BrowserMainParts() + , m_parameters(parameters) + , m_runMessageLoop(true) + { } + + void PreMainMessageLoopStart() { } + void PostMainMessageLoopStart() { } + void PreEarlyInitialization() { } + + void PreMainMessageLoopRun() { + m_browserContext.reset(new content::ShellBrowserContext(false)); + m_offTheRecordBrowserContext.reset(new content::ShellBrowserContext(true)); + + content::Shell::CreateNewWindow(m_browserContext.get(), GetStartupURL(), NULL, MSG_ROUTING_NONE, gfx::Size()); + + if (m_parameters.ui_task) { + m_parameters.ui_task->Run(); + delete m_parameters.ui_task; + m_runMessageLoop = false; + } + } + + bool MainMessageLoopRun(int* result_code) { + return !m_runMessageLoop; + } + + void PostMainMessageLoopRun() { + m_browserContext.reset(); + m_offTheRecordBrowserContext.reset(); + } + +private: + scoped_ptr<content::ShellBrowserContext> m_browserContext; + scoped_ptr<content::ShellBrowserContext> m_offTheRecordBrowserContext; + + // For running content_browsertests. + const content::MainFunctionParams& m_parameters; + bool m_runMessageLoop; + + DISALLOW_COPY_AND_ASSIGN(BrowserMainPartsQt); +}; + content::WebContentsViewPort* ContentBrowserClientQt::OverrideCreateWebContentsView(content::WebContents* web_contents, content::RenderViewHostDelegateView** render_view_host_delegate_view) { @@ -22,7 +88,7 @@ content::WebContentsViewPort* ContentBrowserClientQt::OverrideCreateWebContentsV content::BrowserMainParts *ContentBrowserClientQt::CreateBrowserMainParts(const content::MainFunctionParams ¶meters) { - m_browserMainParts = new content::ShellBrowserMainParts(parameters); + m_browserMainParts = new BrowserMainPartsQt(parameters); m_browser_context = new BrowserContextQt(); return m_browserMainParts; } |