diff --git a/lib/lib.pro b/lib/lib.pro index 1aada92914d78d4c9ceed0303db2072ba292f2ae..35fa09deae09b9cb5f24d2acccc08881d5f8ed35 100644 --- a/lib/lib.pro +++ b/lib/lib.pro @@ -30,6 +30,7 @@ SOURCES = \ resource_context_qt.cpp \ url_request_context_getter_qt.cpp \ web_contents_delegate_qt.cpp \ + web_contents_view_qt.cpp \ web_engine_context.cpp \ web_event_factory.cpp diff --git a/lib/qquickwebcontentsview.cpp b/lib/qquickwebcontentsview.cpp index 03796fcc0061742f218540a63feb38057404eed6..9841d4a77b7fdb5a2fa94369835f88d8231950da 100644 --- a/lib/qquickwebcontentsview.cpp +++ b/lib/qquickwebcontentsview.cpp @@ -45,7 +45,6 @@ #include "content/public/browser/navigation_entry.h" #include "content/public/browser/web_contents.h" -#include "browser_context_qt.h" #include "content_browser_client_qt.h" #include "render_widget_host_view_qt_delegate_quick.h" #include "web_contents_delegate_qt.h" @@ -164,12 +163,7 @@ void QQuickWebContentsView::geometryChanged(const QRectF &newGeometry, const QRe } QQuickWebContentsViewPrivate::QQuickWebContentsViewPrivate() - // This has to be the first thing we do. - : context(WebEngineContext::current()) { - content::BrowserContext* browser_context = static_cast<ContentBrowserClientQt*>(content::GetContentClient()->browser())->browser_context(); - webContentsDelegate.reset(new WebContentsDelegateQt(browser_context, NULL, MSG_ROUTING_NONE, gfx::Size())); - WebContentsViewQt* contents_view = static_cast<WebContentsViewQt*>(webContentsDelegate->web_contents()->GetView()); contents_view->SetClient(this); } diff --git a/lib/qquickwebcontentsview_p.h b/lib/qquickwebcontentsview_p.h index f7fed2c012dc2eac1a6c9366c863bc7fc9d09edf..f7d5493246e40fb8681ab2ce1d2df108eab55b2e 100644 --- a/lib/qquickwebcontentsview_p.h +++ b/lib/qquickwebcontentsview_p.h @@ -43,9 +43,7 @@ #define QQUICKWEBCONTENTSVIEWPRIVATE_H #include "qwebcontentsview.h" -#include "web_contents_delegate_qt.h" #include "web_contents_view_qt.h" -#include "web_engine_context.h" class QQuickWebContentsViewPrivate : public WebContentsViewQtClient { @@ -55,9 +53,6 @@ public: QQuickWebContentsViewPrivate(); RenderWidgetHostViewQtDelegate* CreateRenderWidgetHostViewQtDelegate(RenderWidgetHostViewQt *view) Q_DECL_OVERRIDE; - - scoped_refptr<WebEngineContext> context; - scoped_ptr<WebContentsDelegateQt> webContentsDelegate; }; #endif // QQUICKWEBCONTENTSVIEWPRIVATE_H diff --git a/lib/qwebcontentsview.cpp b/lib/qwebcontentsview.cpp index 0d637ae7c19b3755a59c18684f5b991e74a6cd3b..506a8385354b6eb94085546d35a3e767e4778989 100644 --- a/lib/qwebcontentsview.cpp +++ b/lib/qwebcontentsview.cpp @@ -44,7 +44,6 @@ #include "content/public/browser/web_contents.h" -#include "browser_context_qt.h" #include "content_browser_client_qt.h" #include "render_widget_host_view_qt_delegate_widget.h" #include "web_contents_delegate_qt.h" @@ -135,13 +134,8 @@ void QWebContentsView::stop() } QWebContentsViewPrivate::QWebContentsViewPrivate() - // This has to be the first thing we do. - : context(WebEngineContext::current()) - , m_isLoading(false) + : m_isLoading(false) { - content::BrowserContext* browser_context = static_cast<ContentBrowserClientQt*>(content::GetContentClient()->browser())->browser_context(); - webContentsDelegate.reset(new WebContentsDelegateQt(browser_context, NULL, MSG_ROUTING_NONE, gfx::Size())); - WebContentsViewQt* contents_view = static_cast<WebContentsViewQt*>(webContentsDelegate->web_contents()->GetView()); contents_view->SetClient(this); } diff --git a/lib/qwebcontentsview_p.h b/lib/qwebcontentsview_p.h index 6476004367325b057786b0464d3b35280b480285..9e3328679598e3f5ebc3e47738bdd607b0c6dd8e 100644 --- a/lib/qwebcontentsview_p.h +++ b/lib/qwebcontentsview_p.h @@ -43,9 +43,7 @@ #define QWEBCONTESTSVIEWPRIVATE_H #include "qwebcontentsview.h" -#include "web_contents_delegate_qt.h" #include "web_contents_view_qt.h" -#include "web_engine_context.h" #include <QScopedPointer> @@ -60,10 +58,7 @@ public: void _q_onLoadingStateChanged(); -public: - scoped_refptr<WebEngineContext> context; - scoped_ptr<WebContentsDelegateQt> webContentsDelegate; bool m_isLoading; }; -#endif \ No newline at end of file +#endif diff --git a/lib/web_contents_view_qt.cpp b/lib/web_contents_view_qt.cpp new file mode 100644 index 0000000000000000000000000000000000000000..dedf85f01d988caa594654f7476c89cad56d7972 --- /dev/null +++ b/lib/web_contents_view_qt.cpp @@ -0,0 +1,62 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtWebEngine module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "web_contents_view_qt.h" + +#include "browser_context_qt.h" +#include "content_browser_client_qt.h" + +WebContentsViewQtClient::WebContentsViewQtClient() +// This has to be the first thing we do. + : context(WebEngineContext::current()) +{ + content::BrowserContext* browser_context = static_cast<ContentBrowserClientQt*>(content::GetContentClient()->browser())->browser_context(); + webContentsDelegate.reset(new WebContentsDelegateQt(browser_context, NULL, MSG_ROUTING_NONE, gfx::Size())); +} + +content::RenderWidgetHostView* WebContentsViewQt::CreateViewForWidget(content::RenderWidgetHost* render_widget_host) +{ + RenderWidgetHostViewQt *view = new RenderWidgetHostViewQt(render_widget_host); + RenderWidgetHostViewQtDelegate *viewDelegate = m_client->CreateRenderWidgetHostViewQtDelegate(view); + view->SetDelegate(viewDelegate); + + return view; +} diff --git a/lib/web_contents_view_qt.h b/lib/web_contents_view_qt.h index b57683deb20969e5dcdcffed54cc76b9b98241e8..dbdd3cc9c229eac90987d08551cc47f9c6a2c3a8 100644 --- a/lib/web_contents_view_qt.h +++ b/lib/web_contents_view_qt.h @@ -49,11 +49,17 @@ #include "content/port/browser/web_contents_view_port.h" #include "render_widget_host_view_qt.h" +#include "web_contents_delegate_qt.h" +#include "web_engine_context.h" class WebContentsViewQtClient { public: + WebContentsViewQtClient(); virtual ~WebContentsViewQtClient() { } virtual RenderWidgetHostViewQtDelegate* CreateRenderWidgetHostViewQtDelegate(RenderWidgetHostViewQt *view) = 0; + + scoped_refptr<WebEngineContext> context; + scoped_ptr<WebContentsDelegateQt> webContentsDelegate; }; class WebContentsViewQt @@ -67,14 +73,7 @@ public: void SetClient(WebContentsViewQtClient* client) { m_client = client; } - virtual content::RenderWidgetHostView *CreateViewForWidget(content::RenderWidgetHost* render_widget_host) - { - RenderWidgetHostViewQt *view = new RenderWidgetHostViewQt(render_widget_host); - RenderWidgetHostViewQtDelegate *viewDelegate = m_client->CreateRenderWidgetHostViewQtDelegate(view); - view->SetDelegate(viewDelegate); - - return view; - } + virtual content::RenderWidgetHostView *CreateViewForWidget(content::RenderWidgetHost* render_widget_host); virtual void CreateView(const gfx::Size& initial_size, gfx::NativeView context) { QT_NOT_YET_IMPLEMENTED }