diff options
author | Ben Murdoch <benm@google.com> | 2011-05-13 16:23:25 +0100 |
---|---|---|
committer | Ben Murdoch <benm@google.com> | 2011-05-16 11:35:02 +0100 |
commit | 65f03d4f644ce73618e5f4f50dd694b26f55ae12 (patch) | |
tree | f478babb801e720de7bfaee23443ffe029f58731 /Source/WebCore/history | |
parent | 47de4a2fb7262c7ebdb9cd133ad2c54c187454d0 (diff) | |
download | external_webkit-65f03d4f644ce73618e5f4f50dd694b26f55ae12.zip external_webkit-65f03d4f644ce73618e5f4f50dd694b26f55ae12.tar.gz external_webkit-65f03d4f644ce73618e5f4f50dd694b26f55ae12.tar.bz2 |
Merge WebKit at r75993: Initial merge by git.
Change-Id: I602bbdc3974787a3b0450456a30a7868286921c3
Diffstat (limited to 'Source/WebCore/history')
-rw-r--r-- | Source/WebCore/history/BackForwardListChromium.cpp | 157 | ||||
-rw-r--r-- | Source/WebCore/history/BackForwardListImpl.h | 28 | ||||
-rw-r--r-- | Source/WebCore/history/HistoryItem.cpp | 22 | ||||
-rw-r--r-- | Source/WebCore/history/HistoryItem.h | 5 | ||||
-rw-r--r-- | Source/WebCore/history/PageCache.cpp | 8 |
5 files changed, 31 insertions, 189 deletions
diff --git a/Source/WebCore/history/BackForwardListChromium.cpp b/Source/WebCore/history/BackForwardListChromium.cpp deleted file mode 100644 index a22a147..0000000 --- a/Source/WebCore/history/BackForwardListChromium.cpp +++ /dev/null @@ -1,157 +0,0 @@ -/* - * Copyright (C) 2005, 2006 Apple Computer, Inc. All rights reserved. - * Copyright (C) 2008 Torch Mobile Inc. All rights reserved. (http://www.torchmobile.com/) - * Copyright (c) 2009, Google Inc. All rights reserved. - * - * 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 COMPUTER, INC. ``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 COMPUTER, INC. OR - * 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 "BackForwardListImpl.h" - -#include "HistoryItem.h" -#include "Logging.h" - -namespace WebCore { - -static const unsigned DefaultCapacity = 100; -static const unsigned NoCurrentItemIndex = UINT_MAX; - -BackForwardListImpl::BackForwardListImpl(Page* page) - : m_page(page) - , m_client(0) - , m_capacity(DefaultCapacity) - , m_closed(true) - , m_enabled(true) -{ -} - -BackForwardListImpl::~BackForwardListImpl() -{ - ASSERT(m_closed); -} - -void BackForwardListImpl::addItem(PassRefPtr<HistoryItem> prpItem) -{ - ASSERT(prpItem); - if (m_capacity == 0 || !m_enabled) - return; - - m_client->addItem(prpItem); -} - -void BackForwardListImpl::goToItem(HistoryItem* item) -{ - m_client->goToItem(item); -} - -int BackForwardListImpl::capacity() -{ - return m_capacity; -} - -void BackForwardListImpl::setCapacity(int size) -{ - m_capacity = size; -} - -bool BackForwardListImpl::enabled() -{ - return m_enabled; -} - -void BackForwardListImpl::setEnabled(bool enabled) -{ - m_enabled = enabled; - if (!enabled) { - int capacity = m_capacity; - setCapacity(0); - setCapacity(capacity); - } -} - -int BackForwardListImpl::backListCount() -{ - return m_client->backListCount(); -} - -int BackForwardListImpl::forwardListCount() -{ - return m_client->forwardListCount(); -} - -HistoryItem* BackForwardListImpl::itemAtIndex(int index) -{ - return m_client->itemAtIndex(index); -} - -HistoryItemVector& BackForwardListImpl::entries() -{ - static HistoryItemVector noEntries; - return noEntries; -} - -void BackForwardListImpl::close() -{ - if (m_client) - m_client->close(); - m_page = 0; - m_closed = true; -} - -bool BackForwardListImpl::closed() -{ - return m_closed; -} - -void BackForwardListImpl::goBack() -{ - ASSERT_NOT_REACHED(); -} - -void BackForwardListImpl::goForward() -{ - ASSERT_NOT_REACHED(); -} - -void BackForwardListImpl::backListWithLimit(int, HistoryItemVector&) -{ - ASSERT_NOT_REACHED(); -} - -void BackForwardListImpl::forwardListWithLimit(int, HistoryItemVector&) -{ - ASSERT_NOT_REACHED(); -} - -bool BackForwardListImpl::containsItem(HistoryItem*) -{ - ASSERT_NOT_REACHED(); - return false; -} - -void BackForwardListImpl::removeItem(HistoryItem*) -{ - ASSERT_NOT_REACHED(); -} - -} // namespace WebCore diff --git a/Source/WebCore/history/BackForwardListImpl.h b/Source/WebCore/history/BackForwardListImpl.h index 30043fa..7b1a422 100644 --- a/Source/WebCore/history/BackForwardListImpl.h +++ b/Source/WebCore/history/BackForwardListImpl.h @@ -39,25 +39,6 @@ class Page; typedef Vector<RefPtr<HistoryItem> > HistoryItemVector; typedef HashSet<RefPtr<HistoryItem> > HistoryItemHashSet; -// FIXME: Change Chromium to use its own BackForwardList implementation -// and not use BackForwardListImpl at all, then remove this -// BackForwardListClient feature entirely and just don't use this -// class on Chromium. -#if PLATFORM(CHROMIUM) -// In the Chromium port, the back/forward list is managed externally. -// See BackForwardListChromium.cpp -class BackForwardListClient { -public: - virtual ~BackForwardListClient() { } - virtual void addItem(PassRefPtr<HistoryItem>) = 0; - virtual void goToItem(HistoryItem*) = 0; - virtual HistoryItem* itemAtIndex(int) = 0; - virtual int backListCount() = 0; - virtual int forwardListCount() = 0; - virtual void close() = 0; -}; -#endif - // FIXME: After renaming BackForwardList to BackForwardClient, // rename this to BackForwardList. class BackForwardListImpl : public BackForwardList { @@ -65,11 +46,6 @@ public: static PassRefPtr<BackForwardListImpl> create(Page* page) { return adoptRef(new BackForwardListImpl(page)); } virtual ~BackForwardListImpl(); -#if PLATFORM(CHROMIUM) - // Must be called before any other methods. - void setClient(BackForwardListClient* client) { m_client = client; } -#endif - Page* page() { return m_page; } virtual void addItem(PassRefPtr<HistoryItem>); @@ -109,13 +85,9 @@ private: virtual bool isActive() { return enabled() && capacity(); } Page* m_page; -#if PLATFORM(CHROMIUM) - BackForwardListClient* m_client; -#else HistoryItemVector m_entries; HistoryItemHashSet m_entryHash; unsigned m_current; -#endif unsigned m_capacity; bool m_closed; bool m_enabled; diff --git a/Source/WebCore/history/HistoryItem.cpp b/Source/WebCore/history/HistoryItem.cpp index 0995913..f9e6c96 100644 --- a/Source/WebCore/history/HistoryItem.cpp +++ b/Source/WebCore/history/HistoryItem.cpp @@ -40,7 +40,7 @@ namespace WebCore { -const uint32_t backForwardTreeEncodingVersion = 0; +const uint32_t backForwardTreeEncodingVersion = 1; static long long generateSequenceNumber() { @@ -59,6 +59,7 @@ void (*notifyHistoryItemChanged)(HistoryItem*) = defaultNotifyHistoryItemChanged HistoryItem::HistoryItem() : m_lastVisitedTime(0) , m_lastVisitWasHTTPNonGet(false) + , m_pageScaleFactor(1) , m_lastVisitWasFailure(false) , m_isTargetItem(false) , m_visitCount(0) @@ -73,6 +74,7 @@ HistoryItem::HistoryItem(const String& urlString, const String& title, double ti , m_title(title) , m_lastVisitedTime(time) , m_lastVisitWasHTTPNonGet(false) + , m_pageScaleFactor(1) , m_lastVisitWasFailure(false) , m_isTargetItem(false) , m_visitCount(0) @@ -89,6 +91,7 @@ HistoryItem::HistoryItem(const String& urlString, const String& title, const Str , m_displayTitle(alternateTitle) , m_lastVisitedTime(time) , m_lastVisitWasHTTPNonGet(false) + , m_pageScaleFactor(1) , m_lastVisitWasFailure(false) , m_isTargetItem(false) , m_visitCount(0) @@ -106,6 +109,7 @@ HistoryItem::HistoryItem(const KURL& url, const String& target, const String& pa , m_title(title) , m_lastVisitedTime(0) , m_lastVisitWasHTTPNonGet(false) + , m_pageScaleFactor(1) , m_lastVisitWasFailure(false) , m_isTargetItem(false) , m_visitCount(0) @@ -137,6 +141,7 @@ inline HistoryItem::HistoryItem(const HistoryItem& item) , m_lastVisitedTime(item.m_lastVisitedTime) , m_lastVisitWasHTTPNonGet(item.m_lastVisitWasHTTPNonGet) , m_scrollPoint(item.m_scrollPoint) + , m_pageScaleFactor(item.m_pageScaleFactor) , m_lastVisitWasFailure(item.m_lastVisitWasFailure) , m_isTargetItem(item.m_isTargetItem) , m_visitCount(item.m_visitCount) @@ -379,6 +384,16 @@ void HistoryItem::clearScrollPoint() m_scrollPoint.setY(0); } +float HistoryItem::pageScaleFactor() const +{ + return m_pageScaleFactor; +} + +void HistoryItem::setPageScaleFactor(float scaleFactor) +{ + m_pageScaleFactor = scaleFactor; +} + void HistoryItem::setDocumentState(const Vector<String>& state) { m_documentState = state; @@ -667,6 +682,8 @@ void HistoryItem::encodeBackForwardTreeNode(Encoder& encoder) const encoder.encodeInt32(m_scrollPoint.x()); encoder.encodeInt32(m_scrollPoint.y()); + + encoder.encodeFloat(m_pageScaleFactor); encoder.encodeBool(m_stateObject); if (m_stateObject) { @@ -776,6 +793,9 @@ resume: if (!decoder.decodeInt32(y)) return 0; node->m_scrollPoint = IntPoint(x, y); + + if (!decoder.decodeFloat(node->m_pageScaleFactor)) + return 0; bool hasStateObject; if (!decoder.decodeBool(hasStateObject)) diff --git a/Source/WebCore/history/HistoryItem.h b/Source/WebCore/history/HistoryItem.h index 19b33ad..a4622c0 100644 --- a/Source/WebCore/history/HistoryItem.h +++ b/Source/WebCore/history/HistoryItem.h @@ -123,6 +123,10 @@ public: const IntPoint& scrollPoint() const; void setScrollPoint(const IntPoint&); void clearScrollPoint(); + + float pageScaleFactor() const; + void setPageScaleFactor(float); + const Vector<String>& documentState() const; void setDocumentState(const Vector<String>&); void clearDocumentState(); @@ -245,6 +249,7 @@ private: bool m_lastVisitWasHTTPNonGet; IntPoint m_scrollPoint; + float m_pageScaleFactor; Vector<String> m_documentState; HistoryItemVector m_children; diff --git a/Source/WebCore/history/PageCache.cpp b/Source/WebCore/history/PageCache.cpp index 7375a9c..a5dfb1e 100644 --- a/Source/WebCore/history/PageCache.cpp +++ b/Source/WebCore/history/PageCache.cpp @@ -252,6 +252,8 @@ bool PageCache::canCachePageContainingThisFrame(Frame* frame) return frame->loader()->documentLoader() && frame->loader()->documentLoader()->mainDocumentError().isNull() + // Do not cache error pages (these can be recognized as pages with substitute data or unreachable URLs). + && !(frame->loader()->documentLoader()->substituteData().isValid() && !frame->loader()->documentLoader()->substituteData().failingURL().isEmpty()) // FIXME: If we ever change this so that frames with plug-ins will be cached, // we need to make sure that we don't cache frames that have outstanding NPObjects // (objects created by the plug-in). Since there is no way to pause/resume a Netscape plug-in, @@ -453,7 +455,7 @@ void PageCache::releaseAutoreleasedPagesNow() m_autoreleaseTimer.stop(); // Postpone dead pruning until all our resources have gone dead. - cache()->setPruneEnabled(false); + memoryCache()->setPruneEnabled(false); CachedPageSet tmp; tmp.swap(m_autoreleaseSet); @@ -463,8 +465,8 @@ void PageCache::releaseAutoreleasedPagesNow() (*it)->destroy(); // Now do the prune. - cache()->setPruneEnabled(true); - cache()->prune(); + memoryCache()->setPruneEnabled(true); + memoryCache()->prune(); } void PageCache::autorelease(PassRefPtr<CachedPage> page) |