capybara-webkit/src/WebPageManager.cpp

92 lines
2.1 KiB
C++
Raw Normal View History

2012-03-26 22:41:33 +00:00
#include "WebPageManager.h"
#include "WebPage.h"
2012-06-22 03:34:51 +00:00
#include "NetworkCookieJar.h"
#include <stdio.h>
2012-03-26 22:41:33 +00:00
WebPageManager::WebPageManager(QObject *parent) : QObject(parent) {
m_ignoreSslErrors = false;
2012-06-22 03:34:51 +00:00
m_cookieJar = new NetworkCookieJar(this);
2012-06-29 14:41:08 +00:00
m_success = true;
createPage(this)->setFocus();
2012-03-26 22:41:33 +00:00
}
void WebPageManager::append(WebPage *value) {
m_pages.append(value);
2012-03-26 22:41:33 +00:00
}
2012-06-29 14:41:08 +00:00
QList<WebPage *> WebPageManager::pages() const {
return m_pages;
2012-03-26 22:41:33 +00:00
}
void WebPageManager::setCurrentPage(WebPage *page) {
m_currentPage = page;
}
WebPage *WebPageManager::currentPage() {
return m_currentPage;
}
WebPage *WebPageManager::createPage(QObject *parent) {
WebPage *page = new WebPage(this, parent);
2012-06-29 14:41:08 +00:00
connect(page, SIGNAL(loadStarted()),
this, SLOT(emitLoadStarted()));
connect(page, SIGNAL(pageFinished(bool)),
this, SLOT(emitPageFinished(bool)));
connect(page, SIGNAL(requestCreated(QNetworkReply *)),
this, SLOT(requestCreated(QNetworkReply *)));
connect(page, SIGNAL(replyFinished(QNetworkReply *)),
this, SLOT(replyFinished(QNetworkReply *)));
append(page);
return page;
}
2012-05-15 01:59:28 +00:00
void WebPageManager::emitLoadStarted() {
2012-06-29 14:41:08 +00:00
if (m_started.empty()) {
2012-05-15 01:59:28 +00:00
emit loadStarted();
2012-06-29 14:41:08 +00:00
}
}
void WebPageManager::requestCreated(QNetworkReply *reply) {
m_started += reply;
}
void WebPageManager::replyFinished(QNetworkReply *reply) {
m_started.remove(reply);
}
void WebPageManager::emitPageFinished(bool success) {
m_success = success && m_success;
if (m_started.empty()) {
emit pageFinished(m_success);
m_success = true;
}
2012-05-15 01:59:28 +00:00
}
void WebPageManager::setIgnoreSslErrors(bool value) {
m_ignoreSslErrors = value;
}
bool WebPageManager::ignoreSslErrors() {
return m_ignoreSslErrors;
}
2012-05-15 01:59:28 +00:00
void WebPageManager::reset() {
2012-06-22 03:34:51 +00:00
m_cookieJar->clearCookies();
2012-05-15 01:59:28 +00:00
m_pages.first()->deleteLater();
m_pages.clear();
createPage(this)->setFocus();
}
2012-06-22 03:34:51 +00:00
NetworkCookieJar *WebPageManager::cookieJar() {
return m_cookieJar;
}
2012-06-29 14:41:08 +00:00
bool WebPageManager::isLoading() const {
foreach(WebPage *page, pages()) {
if (page->isLoading()) {
return true;
}
}
return false;
}