⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tst_qwebframe.cpp

📁 linux下开源浏览器WebKit的源码,市面上的很多商用浏览器都是移植自WebKit
💻 CPP
📖 第 1 页 / 共 5 页
字号:
        m_qtFunctionInvoked = 48;        return *this;    }    Q_INVOKABLE const QObject& myInvokableReturningConstRef() const {        const_cast<MyQObject*>(this)->m_qtFunctionInvoked = 49;        return *this;    }    Q_INVOKABLE void myInvokableWithPointArg(const QPoint &arg) {        const_cast<MyQObject*>(this)->m_qtFunctionInvoked = 50;        m_actuals << qVariantFromValue(arg);    }    Q_INVOKABLE void myInvokableWithPointArg(const QPointF &arg) {        const_cast<MyQObject*>(this)->m_qtFunctionInvoked = 51;        m_actuals << qVariantFromValue(arg);    }    Q_INVOKABLE void myInvokableWithBoolArg(bool arg) {        m_qtFunctionInvoked = 52;        m_actuals << arg;    }    void emitMySignal() {        emit mySignal();    }    void emitMySignalWithIntArg(int arg) {        emit mySignalWithIntArg(arg);    }    void emitMySignal2(bool arg) {        emit mySignal2(arg);    }    void emitMySignal2() {        emit mySignal2();    }    void emitMySignalWithDateTimeArg(QDateTime dt) {        emit mySignalWithDateTimeArg(dt);    }    void emitMySignalWithRegexArg(QRegExp r) {        emit mySignalWithRegexArg(r);    }public Q_SLOTS:    void mySlot() {        m_qtFunctionInvoked = 20;    }    void mySlotWithIntArg(int arg) {        m_qtFunctionInvoked = 21;        m_actuals << arg;    }    void mySlotWithDoubleArg(double arg) {        m_qtFunctionInvoked = 22;        m_actuals << arg;    }    void mySlotWithStringArg(const QString &arg) {        m_qtFunctionInvoked = 23;        m_actuals << arg;    }    void myOverloadedSlot() {        m_qtFunctionInvoked = 24;    }    void myOverloadedSlot(QObject* arg) {        m_qtFunctionInvoked = 41;        m_actuals << qVariantFromValue(arg);    }    void myOverloadedSlot(bool arg) {        m_qtFunctionInvoked = 25;        m_actuals << arg;    }    void myOverloadedSlot(const QStringList &arg) {        m_qtFunctionInvoked = 42;        m_actuals << arg;    }    void myOverloadedSlot(double arg) {        m_qtFunctionInvoked = 26;        m_actuals << arg;    }    void myOverloadedSlot(float arg) {        m_qtFunctionInvoked = 27;        m_actuals << arg;    }    void myOverloadedSlot(int arg) {        m_qtFunctionInvoked = 28;        m_actuals << arg;    }    void myOverloadedSlot(const QString &arg) {        m_qtFunctionInvoked = 29;        m_actuals << arg;    }    void myOverloadedSlot(const QColor &arg) {        m_qtFunctionInvoked = 30;        m_actuals << arg;    }    void myOverloadedSlot(const QBrush &arg) {        m_qtFunctionInvoked = 31;        m_actuals << arg;    }    void myOverloadedSlot(const QDateTime &arg) {        m_qtFunctionInvoked = 32;        m_actuals << arg;    }    void myOverloadedSlot(const QDate &arg) {        m_qtFunctionInvoked = 33;        m_actuals << arg;    }    void myOverloadedSlot(const QRegExp &arg) {        m_qtFunctionInvoked = 34;        m_actuals << arg;    }    void myOverloadedSlot(const QVariant &arg) {        m_qtFunctionInvoked = 35;        m_actuals << arg;    }    void qscript_call(int arg) {        m_qtFunctionInvoked = 40;        m_actuals << arg;    }protected Q_SLOTS:    void myProtectedSlot() {        m_qtFunctionInvoked = 36;    }private Q_SLOTS:    void myPrivateSlot() { }Q_SIGNALS:    void mySignal();    void mySignalWithIntArg(int arg);    void mySignalWithDoubleArg(double arg);    void mySignal2(bool arg = false);    void mySignalWithDateTimeArg(QDateTime dt);    void mySignalWithRegexArg(QRegExp r);private:    int m_intValue;    QVariant m_variantValue;    QVariantList m_variantListValue;    QString m_stringValue;    QStringList m_stringListValue;    QByteArray m_byteArrayValue;    QBrush m_brushValue;    double m_hiddenValue;    int m_writeOnlyValue;    int m_readOnlyValue;    QKeySequence m_shortcut;    CustomType m_customType;    int m_qtFunctionInvoked;    QVariantList m_actuals;};class MyOtherQObject : public MyQObject{public:    MyOtherQObject(QObject* parent = 0)        : MyQObject(parent) { }};class MyEnumTestQObject : public QObject{    Q_OBJECT    Q_PROPERTY(QString p1 READ p1)    Q_PROPERTY(QString p2 READ p2)    Q_PROPERTY(QString p3 READ p3 SCRIPTABLE false)    Q_PROPERTY(QString p4 READ p4)    Q_PROPERTY(QString p5 READ p5 SCRIPTABLE false)    Q_PROPERTY(QString p6 READ p6)public:    MyEnumTestQObject(QObject* parent = 0)        : QObject(parent) { }    QString p1() const {        return QLatin1String("p1");    }    QString p2() const {        return QLatin1String("p2");    }    QString p3() const {        return QLatin1String("p3");    }    QString p4() const {        return QLatin1String("p4");    }    QString p5() const {        return QLatin1String("p5");    }    QString p6() const {        return QLatin1String("p5");    }public Q_SLOTS:    void mySlot() { }    void myOtherSlot() { }Q_SIGNALS:    void mySignal();};class tst_QWebFrame : public QObject{    Q_OBJECTpublic:    tst_QWebFrame();    virtual ~tst_QWebFrame();    bool eventFilter(QObject* watched, QEvent* event);public slots:    void init();    void cleanup();private slots:    void getSetStaticProperty();    void getSetDynamicProperty();    void getSetChildren();    void callQtInvokable();    void connectAndDisconnect();    void classEnums();    void classConstructor();    void overrideInvokable();    void transferInvokable();    void findChild();    void findChildren();    void overloadedSlots();    void enumerate_data();    void enumerate();    void objectDeleted();    void typeConversion();    void symmetricUrl();    void progressSignal();    void domCycles();    void setHtml();    void setHtmlWithResource();    void ipv6HostEncoding();    void metaData();    void popupFocus();    void hitTestContent();    void jsByteArray();    void ownership();private:    QString  evalJS(const QString&s) {        // Convert an undefined return variant to the string "undefined"        QVariant ret = evalJSV(s);        if (ret.userType() == QMetaType::Void)            return "undefined";        else            return ret.toString();    }    QVariant evalJSV(const QString &s) {        return m_page->mainFrame()->evaluateJavaScript(s);    }    QString  evalJS(const QString&s, QString& type) {        return evalJSV(s, type).toString();    }    QVariant evalJSV(const QString &s, QString& type) {        // As a special measure, if we get an exception we set the type to 'error'        // (in ecma, an Error object has typeof object, but qtscript has a convenience function)        // Similarly, an array is an object, but we'd prefer to have a type of 'array'        // Also, consider a QMetaType::Void QVariant to be undefined        QString escaped = s;        escaped.replace('\'', "\\'"); // Don't preescape your single quotes!        evalJS("var retvalue;\               var typevalue; \               try {\               retvalue = eval('" + escaped + "'); \               typevalue = typeof retvalue; \               if (retvalue instanceof Array) \               typevalue = 'array'; \           } \               catch(e) {\               retvalue = e.name + ': ' + e.message;\               typevalue = 'error';\           }");        QVariant ret = evalJSV("retvalue");        if (ret.userType() != QMetaType::Void)            type = evalJS("typevalue");        else {            ret = QString("undefined");            type = sUndefined;        }        evalJS("delete retvalue; delete typevalue");        return ret;    }    QObject* firstChildByClassName(QObject* parent, const char* className) {        const QObjectList & children = parent->children();        foreach (QObject* child, children) {            if (!strcmp(child->metaObject()->className(), className)) {                return child;            }        }        return 0;    }    const QString sTrue;    const QString sFalse;    const QString sUndefined;    const QString sArray;    const QString sFunction;    const QString sError;    const QString sString;    const QString sObject;    const QString sNumber;private:    QWebView* m_view;    QWebPage* m_page;    MyQObject* m_myObject;    QWebView* m_popupTestView;    int m_popupTestPaintCount;};tst_QWebFrame::tst_QWebFrame()    : sTrue("true"), sFalse("false"), sUndefined("undefined"), sArray("array"), sFunction("function"), sError("error"),        sString("string"), sObject("object"), sNumber("number"), m_popupTestView(0), m_popupTestPaintCount(0){}tst_QWebFrame::~tst_QWebFrame(){}bool tst_QWebFrame::eventFilter(QObject* watched, QEvent* event){    // used on the popupFocus test    if (watched == m_popupTestView) {        if (event->type() == QEvent::Paint)            m_popupTestPaintCount++;    }    return QObject::eventFilter(watched, event);}void tst_QWebFrame::init(){    m_view = new QWebView();    m_page = m_view->page();    m_myObject = new MyQObject();    m_page->mainFrame()->addToJavaScriptWindowObject("myObject", m_myObject);}void tst_QWebFrame::cleanup(){    delete m_view;    delete m_myObject;}void tst_QWebFrame::getSetStaticProperty(){    QCOMPARE(evalJS("typeof myObject.noSuchProperty"), sUndefined);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -