summaryrefslogtreecommitdiffstats
path: root/Source/WebKit2/UIProcess/API/qt/qwkhistory.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebKit2/UIProcess/API/qt/qwkhistory.cpp')
-rw-r--r--Source/WebKit2/UIProcess/API/qt/qwkhistory.cpp182
1 files changed, 182 insertions, 0 deletions
diff --git a/Source/WebKit2/UIProcess/API/qt/qwkhistory.cpp b/Source/WebKit2/UIProcess/API/qt/qwkhistory.cpp
new file mode 100644
index 0000000..3f424b5
--- /dev/null
+++ b/Source/WebKit2/UIProcess/API/qt/qwkhistory.cpp
@@ -0,0 +1,182 @@
+/*
+ * Copyright (C) 2010 Juha Savolainen (juha.savolainen@weego.fi)
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#include "config.h"
+#include "qwkhistory.h"
+
+#include <QSharedData>
+#include <QString>
+#include <QUrl>
+#include "qwkhistory_p.h"
+#include "WebBackForwardList.h"
+#include <WebKit2/WKArray.h>
+#include <WebKit2/WKRetainPtr.h>
+#include "WKBackForwardList.h"
+#include "WKStringQt.h"
+#include "WKURL.h"
+#include "WKURLQt.h"
+
+using namespace WebKit;
+
+QWKHistoryItemPrivate::QWKHistoryItemPrivate(WKBackForwardListItemRef listItem)
+ : m_backForwardListItem(listItem)
+{
+}
+
+QWKHistoryItemPrivate::~QWKHistoryItemPrivate()
+{
+}
+
+QWKHistoryItem::QWKHistoryItem(const QWKHistoryItem& other)
+ : d(other.d)
+{
+}
+
+QWKHistoryItem& QWKHistoryItem::QWKHistoryItem::operator=(const QWKHistoryItem& other)
+{
+ d = other.d;
+ return *this;
+}
+
+QWKHistoryItem::QWKHistoryItem(WKBackForwardListItemRef item)
+ : d(new QWKHistoryItemPrivate(item))
+{
+}
+
+QWKHistoryItem::~QWKHistoryItem()
+{
+}
+
+QString QWKHistoryItem::title() const
+{
+ if (!d->m_backForwardListItem)
+ return QString();
+ WKRetainPtr<WKStringRef> title = WKBackForwardListItemCopyTitle(d->m_backForwardListItem.get());
+ return WKStringCopyQString(title.get());
+}
+
+QUrl QWKHistoryItem::url() const
+{
+ if (!d->m_backForwardListItem)
+ return QUrl();
+ WKRetainPtr<WKURLRef> url = WKBackForwardListItemCopyURL(d->m_backForwardListItem.get());
+ return WKURLCopyQUrl(url.get());
+}
+
+QWKHistoryPrivate::QWKHistoryPrivate(WebKit::WebBackForwardList* list)
+ : m_backForwardList(list)
+{
+}
+
+QWKHistory* QWKHistoryPrivate::createHistory(WebKit::WebBackForwardList* list)
+{
+ QWKHistory* history = new QWKHistory();
+ history->d = new QWKHistoryPrivate(list);
+ return history;
+}
+
+QWKHistoryPrivate::~QWKHistoryPrivate()
+{
+}
+
+QWKHistory::QWKHistory()
+{
+}
+
+QWKHistory::~QWKHistory()
+{
+ delete d;
+}
+
+int QWKHistory::backListCount() const
+{
+ return WKBackForwardListGetBackListCount(toAPI(d->m_backForwardList));
+}
+
+int QWKHistory::forwardListCount() const
+{
+ return WKBackForwardListGetForwardListCount(toAPI(d->m_backForwardList));
+}
+
+int QWKHistory::count() const
+{
+ return backListCount() + forwardListCount();
+}
+
+QWKHistoryItem QWKHistory::currentItem() const
+{
+ WKRetainPtr<WKBackForwardListItemRef> itemRef = WKBackForwardListGetCurrentItem(toAPI(d->m_backForwardList));
+ QWKHistoryItem item(itemRef.get());
+ return item;
+}
+
+QWKHistoryItem QWKHistory::backItem() const
+{
+ WKRetainPtr<WKBackForwardListItemRef> itemRef = WKBackForwardListGetBackItem(toAPI(d->m_backForwardList));
+ QWKHistoryItem item(itemRef.get());
+ return item;
+}
+
+QWKHistoryItem QWKHistory::forwardItem() const
+{
+ WKRetainPtr<WKBackForwardListItemRef> itemRef = WKBackForwardListGetForwardItem(toAPI(d->m_backForwardList));
+ QWKHistoryItem item(itemRef.get());
+ return item;
+}
+
+QWKHistoryItem QWKHistory::itemAt(int index) const
+{
+ WKRetainPtr<WKBackForwardListItemRef> itemRef = WKBackForwardListGetItemAtIndex(toAPI(d->m_backForwardList), index);
+ QWKHistoryItem item(itemRef.get());
+ return item;
+}
+
+QList<QWKHistoryItem> QWKHistory::backItems(int maxItems) const
+{
+ WKArrayRef arrayRef = WKBackForwardListCopyBackListWithLimit(toAPI(d->m_backForwardList), maxItems);
+ int size = WKArrayGetSize(arrayRef);
+ QList<QWKHistoryItem> itemList;
+ for (int i = 0; i < size; ++i) {
+ WKTypeRef wkHistoryItem = WKArrayGetItemAtIndex(arrayRef, i);
+ WKBackForwardListItemRef itemRef = static_cast<WKBackForwardListItemRef>(wkHistoryItem);
+ QWKHistoryItem item(itemRef);
+ itemList.append(item);
+ }
+ return itemList;
+}
+
+QList<QWKHistoryItem> QWKHistory::forwardItems(int maxItems) const
+{
+ WKArrayRef arrayRef = WKBackForwardListCopyForwardListWithLimit(toAPI(d->m_backForwardList), maxItems);
+ int size = WKArrayGetSize(arrayRef);
+ QList<QWKHistoryItem> itemList;
+ for (int i = 0; i < size; ++i) {
+ WKTypeRef wkHistoryItem = WKArrayGetItemAtIndex(arrayRef, i);
+ WKBackForwardListItemRef itemRef = static_cast<WKBackForwardListItemRef>(wkHistoryItem);
+ QWKHistoryItem item(itemRef);
+ itemList.append(item);
+ }
+ return itemList;
+}
+