18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* 2d0825bca7fe65beaee391d30da42e937db621564Steve Block * Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies) 3d0825bca7fe65beaee391d30da42e937db621564Steve Block * Copyright (C) 2009 Girish Ramakrishnan <girish@forwardbias.in> 4d0825bca7fe65beaee391d30da42e937db621564Steve Block * Copyright (C) 2006 George Staikos <staikos@kde.org> 5d0825bca7fe65beaee391d30da42e937db621564Steve Block * Copyright (C) 2006 Dirk Mueller <mueller@kde.org> 6d0825bca7fe65beaee391d30da42e937db621564Steve Block * Copyright (C) 2006 Zack Rusin <zack@kde.org> 7d0825bca7fe65beaee391d30da42e937db621564Steve Block * Copyright (C) 2006 Simon Hausmann <hausmann@kde.org> 8d0825bca7fe65beaee391d30da42e937db621564Steve Block * 9d0825bca7fe65beaee391d30da42e937db621564Steve Block * All rights reserved. 108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Redistribution and use in source and binary forms, with or without 128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * modification, are permitted provided that the following conditions 138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * are met: 148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 1. Redistributions of source code must retain the above copyright 158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * notice, this list of conditions and the following disclaimer. 168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 2. Redistributions in binary form must reproduce the above copyright 178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * notice, this list of conditions and the following disclaimer in the 188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * documentation and/or other materials provided with the distribution. 198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY 218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR 248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 30d0825bca7fe65beaee391d30da42e937db621564Steve Block * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 33d0825bca7fe65beaee391d30da42e937db621564Steve Block#ifndef webpage_h 34d0825bca7fe65beaee391d30da42e937db621564Steve Block#define webpage_h 35d0825bca7fe65beaee391d30da42e937db621564Steve Block 36d0825bca7fe65beaee391d30da42e937db621564Steve Block#include <qwebframe.h> 37d0825bca7fe65beaee391d30da42e937db621564Steve Block#include <qwebpage.h> 38d0825bca7fe65beaee391d30da42e937db621564Steve Block 39d0825bca7fe65beaee391d30da42e937db621564Steve Blockclass WebPage : public QWebPage { 40d0825bca7fe65beaee391d30da42e937db621564Steve Block Q_OBJECT 41d0825bca7fe65beaee391d30da42e937db621564Steve Block 42d0825bca7fe65beaee391d30da42e937db621564Steve Blockpublic: 43d0825bca7fe65beaee391d30da42e937db621564Steve Block WebPage(QObject* parent = 0); 448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 45d0825bca7fe65beaee391d30da42e937db621564Steve Block virtual QWebPage* createWindow(QWebPage::WebWindowType); 46d0825bca7fe65beaee391d30da42e937db621564Steve Block virtual QObject* createPlugin(const QString&, const QUrl&, const QStringList&, const QStringList&); 47d0825bca7fe65beaee391d30da42e937db621564Steve Block virtual bool supportsExtension(QWebPage::Extension extension) const; 48d0825bca7fe65beaee391d30da42e937db621564Steve Block virtual bool extension(Extension extension, const ExtensionOption* option, ExtensionReturn* output); 498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 50d0825bca7fe65beaee391d30da42e937db621564Steve Block virtual bool acceptNavigationRequest(QWebFrame* frame, const QNetworkRequest& request, NavigationType type); 518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 52dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block QString userAgentForUrl(const QUrl& url) const; 53dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block void setInterruptingJavaScriptEnabled(bool enabled) { m_interruptingJavaScriptEnabled = enabled; } 54dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 55d0825bca7fe65beaee391d30da42e937db621564Steve Blockpublic slots: 56d0825bca7fe65beaee391d30da42e937db621564Steve Block void openUrlInDefaultBrowser(const QUrl& url = QUrl()); 57dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block void setUserAgent(const QString& ua) { m_userAgent = ua; } 58dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block bool shouldInterruptJavaScript(); 59e78cbe89e6f337f2f1fe40315be88f742b547151Steve Block void authenticationRequired(QNetworkReply*, QAuthenticator*); 604576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang void requestPermission(QWebFrame* frame, QWebPage::Feature feature); 614576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang void featurePermissionRequestCanceled(QWebFrame* frame, QWebPage::Feature feature); 628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 63d0825bca7fe65beaee391d30da42e937db621564Steve Blockprivate: 64d0825bca7fe65beaee391d30da42e937db621564Steve Block void applyProxy(); 65dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block QString m_userAgent; 66dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block bool m_interruptingJavaScriptEnabled; 67d0825bca7fe65beaee391d30da42e937db621564Steve Block}; 688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 69635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project#endif 70