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