From e3de43ff09c06d478b7be46706deae737894dd83 Mon Sep 17 00:00:00 2001 From: Andras Becsi <andras.becsi@digia.com> Date: Tue, 25 Jun 2013 18:01:24 +0200 Subject: [PATCH] Deduplicate data in private view classes Move common data from WebContentsView private classes to the common base class WebContentsViewQtClient. Change-Id: I77484691a24d14403c8a6e434d6fb33ac557637e Reviewed-by: Zeno Albisser <zeno.albisser@digia.com> --- lib/lib.pro | 1 + lib/qquickwebcontentsview.cpp | 6 ---- lib/qquickwebcontentsview_p.h | 5 --- lib/qwebcontentsview.cpp | 8 +---- lib/qwebcontentsview_p.h | 7 +--- lib/web_contents_view_qt.cpp | 62 +++++++++++++++++++++++++++++++++++ lib/web_contents_view_qt.h | 15 ++++----- 7 files changed, 72 insertions(+), 32 deletions(-) create mode 100644 lib/web_contents_view_qt.cpp diff --git a/lib/lib.pro b/lib/lib.pro index 1aada9291..35fa09dea 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 03796fcc0..9841d4a77 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 f7fed2c01..f7d549324 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 0d637ae7c..506a83853 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 647600436..9e3328679 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 000000000..dedf85f01 --- /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 b57683deb..dbdd3cc9c 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 } -- GitLab