diff options
author | Jake Petroules <jake.petroules@qt.io> | 2016-12-07 15:15:46 -0800 |
---|---|---|
committer | Jake Petroules <jake.petroules@qt.io> | 2017-01-11 21:55:58 +0000 |
commit | 2ef67e395211a7742fc4400cc10ce9eeecc3c185 (patch) | |
tree | e2d0a6b35c3a52f6c3eaf57bb666e80fd981b2e4 | |
parent | d432d42dd1cc2d5adac5fd2e7e5a55b7fbb4304d (diff) |
Remove WebView and UIWebView backends
Our minimum deployment target is now macOS 10.10 and iOS 8.0 in Qt 5.9,
so the WKWebView backend will always be used instead.
Change-Id: Ifd24948954cc273fee458c212b1801dc4a5aca45
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
-rw-r--r-- | examples/webview/minibrowser/minibrowser.pro | 2 | ||||
-rw-r--r-- | src/webview/qtwebviewfunctions.cpp | 2 | ||||
-rw-r--r-- | src/webview/qwebview_darwin.mm | 45 | ||||
-rw-r--r-- | src/webview/qwebview_ios.mm | 267 | ||||
-rw-r--r-- | src/webview/qwebview_ios_p.h | 104 | ||||
-rw-r--r-- | src/webview/qwebview_osx.mm | 248 | ||||
-rw-r--r-- | src/webview/qwebview_osx_p.h | 98 | ||||
-rw-r--r-- | src/webview/webview-lib.pri | 13 | ||||
-rw-r--r-- | tests/auto/qml/tests.pri | 2 | ||||
-rw-r--r-- | tests/auto/webview/qwebview/qwebview.pro | 2 |
10 files changed, 11 insertions, 772 deletions
diff --git a/examples/webview/minibrowser/minibrowser.pro b/examples/webview/minibrowser/minibrowser.pro index 04fe228..266c996 100644 --- a/examples/webview/minibrowser/minibrowser.pro +++ b/examples/webview/minibrowser/minibrowser.pro @@ -9,7 +9,7 @@ RESOURCES += qml.qrc EXAMPLE_FILES += doc -osx:QMAKE_INFO_PLIST = macos/Info.plist +macos:QMAKE_INFO_PLIST = macos/Info.plist ios:QMAKE_INFO_PLIST = ios/Info.plist target.path = $$[QT_INSTALL_EXAMPLES]/webview/minibrowser diff --git a/src/webview/qtwebviewfunctions.cpp b/src/webview/qtwebviewfunctions.cpp index 710df0c..7509f21 100644 --- a/src/webview/qtwebviewfunctions.cpp +++ b/src/webview/qtwebviewfunctions.cpp @@ -41,7 +41,7 @@ #include <QtWebEngine/qtwebengineglobal.h> #endif // QT_WEBVIEW_WEBENGINE_BACKEND -#ifdef Q_OS_OSX +#ifdef Q_OS_MACOS #include <QtCore/qbytearray.h> #endif diff --git a/src/webview/qwebview_darwin.mm b/src/webview/qwebview_darwin.mm index 6d337c2..45add1d 100644 --- a/src/webview/qwebview_darwin.mm +++ b/src/webview/qwebview_darwin.mm @@ -48,19 +48,11 @@ #include <WebKit/WebKit.h> #ifdef Q_OS_IOS -#include "qwebview_ios_p.h" - -#include <UIKit/UIKit.h> - -#import <UIKit/UIView.h> -#import <UIKit/UIWindow.h> -#import <UIKit/UIViewController.h> -#import <UIKit/UITapGestureRecognizer.h> +#import <UIKit/UIKit.h> #import <UIKit/UIGestureRecognizerSubclass.h> #endif -#ifdef Q_OS_OSX -#include "qwebview_osx_p.h" +#ifdef Q_OS_MACOS #include "qwebview_webengine_p.h" #include <AppKit/AppKit.h> @@ -70,35 +62,13 @@ typedef NSView UIView; QT_BEGIN_NAMESPACE -inline QSysInfo::MacVersion qt_OS_limit(QSysInfo::MacVersion osxVersion, - QSysInfo::MacVersion iosVersion) -{ -#ifdef Q_OS_OSX - Q_UNUSED(iosVersion) - return osxVersion; -#else - Q_UNUSED(osxVersion) - return iosVersion; -#endif -} - QWebViewPrivate *QWebViewPrivate::create(QWebView *q) { -#if QT_MACOS_IOS_PLATFORM_SDK_EQUAL_OR_ABOVE(__MAC_10_10, __IPHONE_8_0) - if (QSysInfo::MacintoshVersion >= qt_OS_limit(QSysInfo::MV_10_10, QSysInfo::MV_IOS_8_0) - && QtWebViewPrivate::useNativeWebView()) - return new QDarwinWebViewPrivate(q); -#endif - -#if defined(Q_OS_IOS) - return new QIosWebViewPrivate(q); -#else -# if defined(Q_OS_MACOS) - if (QtWebViewPrivate::useNativeWebView()) - return new QOsxWebViewPrivate(q); -# endif - return new QWebEngineWebViewPrivate(q); +#ifdef Q_OS_MACOS + if (!QtWebViewPrivate::useNativeWebView()) + return new QWebEngineWebViewPrivate(q); #endif + return new QDarwinWebViewPrivate(q); } static inline CGRect toCGRect(const QRectF &rect) @@ -153,8 +123,6 @@ QT_END_NAMESPACE // ------------------------------------------------------------------------- -#if QT_MACOS_IOS_PLATFORM_SDK_EQUAL_OR_ABOVE(__MAC_10_10, __IPHONE_8_0) - @interface QtWKWebViewDelegate : NSObject<WKNavigationDelegate> { QDarwinWebViewPrivate *qDarwinWebViewPrivate; } @@ -433,6 +401,5 @@ void QDarwinWebViewPrivate::runJavaScriptPrivate(const QString &script, int call Q_EMIT javaScriptResult(callbackId, fromJSValue(result)); }]; } -#endif QT_END_NAMESPACE diff --git a/src/webview/qwebview_ios.mm b/src/webview/qwebview_ios.mm deleted file mode 100644 index fe0f17f..0000000 --- a/src/webview/qwebview_ios.mm +++ /dev/null @@ -1,267 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2015 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the QtWebView module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** 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 The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/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 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later 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 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qwebview_ios_p.h" -#include "qwebview_darwin_p.h" -#include "qwebview_p.h" -#include "qwebviewloadrequest_p.h" - -#include <QtCore/qmap.h> -#include <QtCore/qvariant.h> - -#include <CoreFoundation/CoreFoundation.h> -#include <UIKit/UIKit.h> - -#import <UIKit/UIView.h> -#import <UIKit/UIWindow.h> -#import <UIKit/UIViewController.h> -#import <UIKit/UITapGestureRecognizer.h> -#import <UIKit/UIGestureRecognizerSubclass.h> - -QT_BEGIN_NAMESPACE - -static inline CGRect toCGRect(const QRectF &rect) -{ - return CGRectMake(rect.x(), rect.y(), rect.width(), rect.height()); -} - -// ------------------------------------------------------------------------- - -class QWebViewInterface; - -@interface QtWebViewDelegate : NSObject<UIWebViewDelegate> { - QIosWebViewPrivate *qIosWebViewPrivate; -} -- (QtWebViewDelegate *)initWithQAbstractWebView:(QIosWebViewPrivate *)webViewPrivate; -- (void)pageDone; - -// protocol: -- (void)webViewDidStartLoad:(UIWebView *)webView; -- (void)webViewDidFinishLoad:(UIWebView *)webView; -- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error; -@end - -@implementation QtWebViewDelegate -- (QtWebViewDelegate *)initWithQAbstractWebView:(QIosWebViewPrivate *)webViewPrivate -{ - qIosWebViewPrivate = webViewPrivate; - return self; -} - -- (void)pageDone -{ - Q_EMIT qIosWebViewPrivate->loadProgressChanged(qIosWebViewPrivate->loadProgress()); - Q_EMIT qIosWebViewPrivate->titleChanged(qIosWebViewPrivate->title()); -} - -- (void)webViewDidStartLoad:(UIWebView *)webView -{ - Q_UNUSED(webView); - // UIWebViewDelegate gives us per-frame notifications while the QWebView API - // should provide per-page notifications. Keep track of started frame loads - // and emit notifications when the final frame completes. - if (++qIosWebViewPrivate->requestFrameCount == 1) { - Q_EMIT qIosWebViewPrivate->loadingChanged(QWebViewLoadRequestPrivate(qIosWebViewPrivate->url(), - QWebView::LoadStartedStatus, - QString())); - } - - Q_EMIT qIosWebViewPrivate->loadProgressChanged(qIosWebViewPrivate->loadProgress()); -} - -- (void)webViewDidFinishLoad:(UIWebView *)webView -{ - Q_UNUSED(webView); - if (--qIosWebViewPrivate->requestFrameCount == 0) { - [self pageDone]; - Q_EMIT qIosWebViewPrivate->loadingChanged(QWebViewLoadRequestPrivate(qIosWebViewPrivate->url(), - QWebView::LoadSucceededStatus, - QString())); - } -} - -- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error -{ - Q_UNUSED(webView); - if (--qIosWebViewPrivate->requestFrameCount == 0) { - [self pageDone]; - NSString *errorString = [error localizedFailureReason]; - Q_EMIT qIosWebViewPrivate->loadingChanged(QWebViewLoadRequestPrivate(qIosWebViewPrivate->url(), - QWebView::LoadFailedStatus, - QString::fromNSString(errorString))); - } -} -@end - -QIosWebViewPrivate::QIosWebViewPrivate(QObject *p) - : QWebViewPrivate(p) - , uiWebView(0) - , m_recognizer(0) -{ - CGRect frame = CGRectMake(0.0, 0.0, 400, 400); - uiWebView = [[UIWebView alloc] initWithFrame:frame]; - uiWebView.delegate = [[QtWebViewDelegate alloc] initWithQAbstractWebView:this]; - - m_recognizer = [[QIOSNativeViewSelectedRecognizer alloc] initWithQWindowControllerItem:this]; - [uiWebView addGestureRecognizer:m_recognizer]; - uiWebView.scalesPageToFit = YES; -} - -QIosWebViewPrivate::~QIosWebViewPrivate() -{ - [uiWebView.delegate release]; - uiWebView.delegate = nil; // reset as per UIWebViewDelegate documentation - [uiWebView release]; - [m_recognizer release]; -} - -QUrl QIosWebViewPrivate::url() const -{ - NSURL *url = [[uiWebView request] URL]; - return QUrl::fromNSURL(url).toString(); -} - -void QIosWebViewPrivate::setUrl(const QUrl &url) -{ - requestFrameCount = 0; - [uiWebView loadRequest:[NSURLRequest requestWithURL:url.toNSURL()]]; -} - -void QIosWebViewPrivate::loadHtml(const QString &html, const QUrl &baseUrl) -{ - [uiWebView loadHTMLString:html.toNSString() baseURL:baseUrl.toNSURL()]; -} - -bool QIosWebViewPrivate::canGoBack() const -{ - return uiWebView.canGoBack; -} - -bool QIosWebViewPrivate::canGoForward() const -{ - return uiWebView.canGoForward; -} - -QString QIosWebViewPrivate::title() const -{ - NSString *title = [uiWebView stringByEvaluatingJavaScriptFromString:@"document.title"]; - return QString::fromNSString(title); -} - -int QIosWebViewPrivate::loadProgress() const -{ - // TODO: - return isLoading() ? 100 : 0; -} - -bool QIosWebViewPrivate::isLoading() const -{ - return uiWebView.loading; -} - -void QIosWebViewPrivate::setParentView(QObject *view) -{ - m_parentView = view; - - if (!uiWebView) - return; - - QWindow *w = qobject_cast<QWindow *>(view); - if (w) { - UIView *parentView = reinterpret_cast<UIView *>(w->winId()); - [parentView addSubview:uiWebView]; - } else { - [uiWebView removeFromSuperview]; - } -} - -QObject *QIosWebViewPrivate::parentView() const -{ - return m_parentView; -} - -void QIosWebViewPrivate::setGeometry(const QRect &geometry) -{ - if (!uiWebView) - return; - - [uiWebView setFrame:toCGRect(geometry)]; -} - -void QIosWebViewPrivate::setVisibility(QWindow::Visibility visibility) -{ - Q_UNUSED(visibility); -} - -void QIosWebViewPrivate::setVisible(bool visible) -{ - [uiWebView setHidden:!visible]; -} - -void QIosWebViewPrivate::setFocus(bool focus) -{ - Q_EMIT requestFocus(focus); -} - -void QIosWebViewPrivate::goBack() -{ - [uiWebView goBack]; -} - -void QIosWebViewPrivate::goForward() -{ - [uiWebView goForward]; -} - -void QIosWebViewPrivate::stop() -{ - [uiWebView stopLoading]; -} - -void QIosWebViewPrivate::reload() -{ - [uiWebView reload]; -} - -void QIosWebViewPrivate::runJavaScriptPrivate(const QString &script, int callbackId) -{ - // ### TODO needs more async - NSString *result = [uiWebView stringByEvaluatingJavaScriptFromString:script.toNSString()]; - if (callbackId != -1) - Q_EMIT javaScriptResult(callbackId, QString::fromNSString(result)); -} - -QT_END_NAMESPACE diff --git a/src/webview/qwebview_ios_p.h b/src/webview/qwebview_ios_p.h deleted file mode 100644 index 840e358..0000000 --- a/src/webview/qwebview_ios_p.h +++ /dev/null @@ -1,104 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2015 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the QtWebView module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** 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 The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/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 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later 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 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QWEBVIEW_IOS_P_H -#define QWEBVIEW_IOS_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtCore/qobject.h> -#include <QtCore/qurl.h> -#include <QtGui/qwindow.h> - -#include "qwebview_p_p.h" - -QT_BEGIN_NAMESPACE - -Q_FORWARD_DECLARE_OBJC_CLASS(UIWebView); -Q_FORWARD_DECLARE_OBJC_CLASS(UIGestureRecognizer); - -class QIosWebViewPrivate : public QWebViewPrivate -{ - Q_OBJECT -public: - explicit QIosWebViewPrivate(QObject *p = 0); - ~QIosWebViewPrivate() Q_DECL_OVERRIDE; - - QUrl url() const Q_DECL_OVERRIDE; - void setUrl(const QUrl &url) Q_DECL_OVERRIDE; - bool canGoBack() const Q_DECL_OVERRIDE; - bool canGoForward() const Q_DECL_OVERRIDE; - QString title() const Q_DECL_OVERRIDE; - int loadProgress() const Q_DECL_OVERRIDE; - bool isLoading() const Q_DECL_OVERRIDE; - - void setParentView(QObject *view) Q_DECL_OVERRIDE; - QObject *parentView() const Q_DECL_OVERRIDE; - void setGeometry(const QRect &geometry) Q_DECL_OVERRIDE; - void setVisibility(QWindow::Visibility visibility) Q_DECL_OVERRIDE; - void setVisible(bool visible) Q_DECL_OVERRIDE; - void setFocus(bool focus) Q_DECL_OVERRIDE; - -public Q_SLOTS: - void goBack() Q_DECL_OVERRIDE; - void goForward() Q_DECL_OVERRIDE; - void reload() Q_DECL_OVERRIDE; - void stop() Q_DECL_OVERRIDE; - void loadHtml(const QString &html, const QUrl &baseUrl = QUrl()) Q_DECL_OVERRIDE; - -protected: - void runJavaScriptPrivate(const QString& script, - int callbackId) Q_DECL_OVERRIDE; - -public: - UIWebView *uiWebView; - UIGestureRecognizer *m_recognizer; - int requestFrameCount; - QPointer<QObject> m_parentView; -}; - -QT_END_NAMESPACE - -#endif // QWEBVIEW_IOS_P_H diff --git a/src/webview/qwebview_osx.mm b/src/webview/qwebview_osx.mm deleted file mode 100644 index 80d33e5..0000000 --- a/src/webview/qwebview_osx.mm +++ /dev/null @@ -1,248 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2015 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the QtWebView module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** 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 The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/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 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later 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 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qwebview_p.h" -#include "qwebview_osx_p.h" -#include "qwebviewloadrequest_p.h" - -#include <QtCore/qglobal.h> -#include <QtCore/qstring.h> -#include <QtCore/qvariant.h> - -#import <CoreFoundation/CoreFoundation.h> -#import <WebKit/WebKit.h> - -#if QT_MACOS_PLATFORM_SDK_EQUAL_OR_ABOVE(__MAC_10_11) -#define QtFrameLoadDelegateProtocol <WebFrameLoadDelegate> -#else -// WebFrameLoadDelegate is an informal protocol in <= 10.10 SDK. -#define QtFrameLoadDelegateProtocol -#endif - -@interface QtFrameLoadDelegate : NSObject QtFrameLoadDelegateProtocol { - QOsxWebViewPrivate *qtWebViewPrivate; -} -- (QtFrameLoadDelegate *)initWithQWebViewPrivate:(QOsxWebViewPrivate *)webViewPrivate; -- (void)pageDone; - -// protocol: -- (void)webView:(WebView *)sender didStartProvisionalLoadForFrame:(WebFrame *)frame; -- (void)webView:(WebView *)sender didCommitLoadForFrame:(WebFrame *)frame; -- (void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame; -- (void)webView:(WebView *)sender didFailLoadWithError:(NSError *)error forFrame:(WebFrame *)frame; -@end - -@implementation QtFrameLoadDelegate - -- (QtFrameLoadDelegate *)initWithQWebViewPrivate:(QOsxWebViewPrivate *)webViewPrivate -{ - qtWebViewPrivate = webViewPrivate; - return self; -} - -- (void)pageDone -{ - Q_EMIT qtWebViewPrivate->titleChanged(qtWebViewPrivate->title()); - Q_EMIT qtWebViewPrivate->loadProgressChanged(qtWebViewPrivate->loadProgress()); -} - -- (void)webView:(WebView *)sender didStartProvisionalLoadForFrame:(WebFrame *)frame -{ - Q_UNUSED(sender); - Q_UNUSED(frame); - - // WebView gives us per-frame notifications while the QWebView API - // should provide per-page notifications. Keep track of started frame loads - // and emit notifications when the final frame completes. - if (++qtWebViewPrivate->requestFrameCount == 1) { - Q_EMIT qtWebViewPrivate->loadingChanged(QWebViewLoadRequestPrivate(qtWebViewPrivate->url(), - QWebView::LoadStartedStatus, - QString())); - } -} - -- (void)webView:(WebView *)sender didCommitLoadForFrame:(WebFrame *)frame -{ - Q_UNUSED(sender); - Q_UNUSED(frame); -} - -- (void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame -{ - Q_UNUSED(sender); - Q_UNUSED(frame); - if (--qtWebViewPrivate->requestFrameCount == 0) { - [self pageDone]; - Q_EMIT qtWebViewPrivate->loadingChanged(QWebViewLoadRequestPrivate(qtWebViewPrivate->url(), - QWebView::LoadSucceededStatus, - QString())); - } -} - -- (void)webView:(WebView *)sender didFailLoadWithError:(NSError *)error forFrame:(WebFrame *)frame -{ - Q_UNUSED(sender); - Q_UNUSED(error); - Q_UNUSED(frame); - if (--qtWebViewPrivate->requestFrameCount == 0) { - [self pageDone]; - NSString *errorString = [error localizedFailureReason]; - Q_EMIT qtWebViewPrivate->loadingChanged(QWebViewLoadRequestPrivate(qtWebViewPrivate->url(), - QWebView::LoadFailedStatus, - QString::fromNSString(errorString))); - } -} - -@end - -QT_BEGIN_NAMESPACE - -QOsxWebViewPrivate::QOsxWebViewPrivate(QWebView *q) - : QWebViewPrivate(q) -{ - NSRect frame = NSMakeRect(0.0, 0.0, 400, 400); - webView = [[WebView alloc] initWithFrame:frame frameName:@"Qt Frame" groupName:nil]; - [webView setFrameLoadDelegate:[[QtFrameLoadDelegate alloc] initWithQWebViewPrivate:this]]; - m_window = QWindow::fromWinId(reinterpret_cast<WId>(webView)); -} - -QOsxWebViewPrivate::~QOsxWebViewPrivate() -{ - [webView.frameLoadDelegate release]; - [webView release]; - if (m_window != 0 && m_window->parent() == 0) - delete m_window; -} - -QUrl QOsxWebViewPrivate::url() const -{ - NSString *currentURL = [webView stringByEvaluatingJavaScriptFromString:@"window.location.href"]; - return QString::fromNSString(currentURL); -} - -void QOsxWebViewPrivate::setUrl(const QUrl &url) -{ - requestFrameCount = 0; - [[webView mainFrame] loadRequest:[NSURLRequest requestWithURL:url.toNSURL()]]; -} - -bool QOsxWebViewPrivate::canGoBack() const -{ - return webView.canGoBack; -} - -void QOsxWebViewPrivate::goBack() -{ - [webView goBack]; -} - -bool QOsxWebViewPrivate::canGoForward() const -{ - return webView.canGoForward; -} - -void QOsxWebViewPrivate::goForward() -{ - [webView goForward]; -} - -void QOsxWebViewPrivate::reload() -{ - [[webView mainFrame] reload]; -} - -QString QOsxWebViewPrivate::title() const -{ - NSString *title = [webView stringByEvaluatingJavaScriptFromString:@"document.title"]; - return QString::fromNSString(title); -} - -int QOsxWebViewPrivate::loadProgress() const -{ - // TODO: - return isLoading() ? 100 : 0; -} - -bool QOsxWebViewPrivate::isLoading() const -{ - return webView.isLoading; -} - -void QOsxWebViewPrivate::runJavaScriptPrivate(const QString& script, int callbackId) -{ - // ### TODO needs more async - NSString *result = [webView stringByEvaluatingJavaScriptFromString:script.toNSString()]; - if (callbackId != -1) - Q_EMIT javaScriptResult(callbackId, QVariant::fromValue(QString::fromNSString(result))); -} - -void QOsxWebViewPrivate::setParentView(QObject *view) -{ - m_window->setParent(qobject_cast<QWindow *>(view)); -} - -QObject *QOsxWebViewPrivate::parentView() const -{ - return m_window->parent(); -} - -void QOsxWebViewPrivate::setGeometry(const QRect &geometry) -{ - m_window->setGeometry(geometry); -} - -void QOsxWebViewPrivate::setVisibility(QWindow::Visibility visibility) -{ - m_window->setVisibility(visibility); -} - -void QOsxWebViewPrivate::setVisible(bool visible) -{ - m_window->setVisible(visible); -} - -void QOsxWebViewPrivate::stop() -{ - [webView stopLoading:webView]; -} - -void QOsxWebViewPrivate::loadHtml(const QString &html, const QUrl &baseUrl) -{ - Q_UNUSED(html); - Q_UNUSED(baseUrl); -} - -QT_END_NAMESPACE diff --git a/src/webview/qwebview_osx_p.h b/src/webview/qwebview_osx_p.h deleted file mode 100644 index 33d09a2..0000000 --- a/src/webview/qwebview_osx_p.h +++ /dev/null @@ -1,98 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2015 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the QtWebView module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** 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 The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/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 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later 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 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QWEBVIEW_IOS_P_H -#define QWEBVIEW_IOS_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtCore/qobject.h> -#include <QtCore/qurl.h> -#include <QtGui/qwindow.h> - -#include "qwebview_p_p.h" - -Q_FORWARD_DECLARE_OBJC_CLASS(WebView); - -QT_BEGIN_NAMESPACE - -class QOsxWebViewPrivate : public QWebViewPrivate -{ - Q_OBJECT -public: - QOsxWebViewPrivate(QWebView *q); - ~QOsxWebViewPrivate(); - - QUrl url() const Q_DECL_OVERRIDE; - void setUrl(const QUrl &url) Q_DECL_OVERRIDE; - bool canGoBack() const Q_DECL_OVERRIDE; - bool canGoForward() const Q_DECL_OVERRIDE; - QString title() const Q_DECL_OVERRIDE; - int loadProgress() const Q_DECL_OVERRIDE; - bool isLoading() const Q_DECL_OVERRIDE; - void runJavaScriptPrivate(const QString& script, int callbackId) Q_DECL_OVERRIDE; - - void setParentView(QObject *view) Q_DECL_OVERRIDE; - QObject *parentView() const Q_DECL_OVERRIDE; - void setGeometry(const QRect &geometry) Q_DECL_OVERRIDE; - void setVisibility(QWindow::Visibility visibility) Q_DECL_OVERRIDE; - void setVisible(bool visible) Q_DECL_OVERRIDE; - -public Q_SLOTS: - void goBack() Q_DECL_OVERRIDE; - void goForward() Q_DECL_OVERRIDE; - void reload() Q_DECL_OVERRIDE; - void stop() Q_DECL_OVERRIDE; - void loadHtml(const QString &html, const QUrl &baseUrl = QUrl()) Q_DECL_OVERRIDE; - -public: - QWindow *m_window; - WebView *webView; - int requestFrameCount; -}; - -QT_END_NAMESPACE - -#endif // QWEBVIEW_IOS_P_H diff --git a/src/webview/webview-lib.pri b/src/webview/webview-lib.pri index 6b6fbbe..39ebd46 100644 --- a/src/webview/webview-lib.pri +++ b/src/webview/webview-lib.pri @@ -52,18 +52,7 @@ android { qwebview_darwin_p.h LIBS_PRIVATE += -framework Foundation -framework WebKit - ios { - LIBS_PRIVATE += -framework UIKit - PRIVATE_HEADERS += qwebview_ios_p.h - OBJECTIVE_SOURCES += qwebview_ios.mm - } - - osx { - LIBS_PRIVATE += -framework AppKit - PRIVATE_HEADERS += qwebview_osx_p.h - OBJECTIVE_SOURCES += qwebview_osx.mm - CONFIG += use_webengine_backend - } + macos: CONFIG += use_webengine_backend } else: winrt { NO_PCH_SOURCES += qwebview_winrt.cpp SOURCES += $$COMMON_SOURCES diff --git a/tests/auto/qml/tests.pri b/tests/auto/qml/tests.pri index e23f416..627a7f0 100644 --- a/tests/auto/qml/tests.pri +++ b/tests/auto/qml/tests.pri @@ -13,7 +13,7 @@ INCLUDEPATH += \ QT += testlib network quick webview-private -osx: CONFIG -= app_bundle +macos: CONFIG -= app_bundle DISTFILES += \ $$PWD/qquickwebview/dummy.qml diff --git a/tests/auto/webview/qwebview/qwebview.pro b/tests/auto/webview/qwebview/qwebview.pro index a9f1aa8..168b6ab 100644 --- a/tests/auto/webview/qwebview/qwebview.pro +++ b/tests/auto/webview/qwebview/qwebview.pro @@ -1,6 +1,6 @@ CONFIG += testcase parallel_test TARGET = tst_qwebview -osx:CONFIG -= app_bundle +macos:CONFIG -= app_bundle !qtHaveModule(quick) { DEFINES += QT_NO_QQUICKWEBVIEW_TESTS |