Changeset 84091 in webkit


Ignore:
Timestamp:
Apr 16, 2011 12:31:42 PM (13 years ago)
Author:
weinig@apple.com
Message:

2011-04-16 Sam Weinig <sam@webkit.org>

Reviewed by Simon Fraser.

Pages in the PageCache don't have the correct visited link coloring after being restored
https://bugs.webkit.org/show_bug.cgi?id=58721

  • WebCore.exp.in: Add export of markPagesForVistedLinkStyleRecalc for use by WebKit2.
  • history/CachedPage.cpp: (WebCore::CachedPage::CachedPage): (WebCore::CachedPage::restore): (WebCore::CachedPage::clear):
  • history/CachedPage.h: (WebCore::CachedPage::markForVistedLinkStyleRecalc): Add bit, set by calling markForVistedLinkStyleRecalc, which forces a visited link style recalc when being restored.
  • history/PageCache.h:
  • history/PageCache.cpp: (WebCore::PageCache::markPagesForVistedLinkStyleRecalc): Mark all pages in the page cache as requiring visited link style recalc.
  • page/PageGroup.cpp: (WebCore::PageGroup::addVisitedLink): (WebCore::PageGroup::removeVisitedLinks): (WebCore::PageGroup::removeAllVisitedLinks): Set dirty bit when changing any visited link information.


2011-04-16 Sam Weinig <sam@webkit.org>

Reviewed by Simon Fraser.

Pages in the PageCache don't have the correct visited link coloring after being restored
https://bugs.webkit.org/show_bug.cgi?id=58721

  • WebProcess/WebProcess.cpp: (WebKit::WebProcess::visitedLinkStateChanged): (WebKit::WebProcess::allVisitedLinkStateChanged): Mark all pages in the page cache as needing visited link style recalc whenever visited link information changes.
Location:
trunk/Source
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r84090 r84091  
     12011-04-16  Sam Weinig  <sam@webkit.org>
     2
     3        Reviewed by Simon Fraser.
     4
     5        Pages in the PageCache don't have the correct visited link coloring after being restored
     6        https://bugs.webkit.org/show_bug.cgi?id=58721
     7
     8        * WebCore.exp.in:
     9        Add export of markPagesForVistedLinkStyleRecalc for use by WebKit2.
     10
     11        * history/CachedPage.cpp:
     12        (WebCore::CachedPage::CachedPage):
     13        (WebCore::CachedPage::restore):
     14        (WebCore::CachedPage::clear):
     15        * history/CachedPage.h:
     16        (WebCore::CachedPage::markForVistedLinkStyleRecalc):
     17        Add bit, set by calling markForVistedLinkStyleRecalc, which forces a visited link
     18        style recalc when being restored.
     19
     20        * history/PageCache.h:
     21        * history/PageCache.cpp:
     22        (WebCore::PageCache::markPagesForVistedLinkStyleRecalc):
     23        Mark all pages in the page cache as requiring visited link style recalc.
     24
     25        * page/PageGroup.cpp:
     26        (WebCore::PageGroup::addVisitedLink):
     27        (WebCore::PageGroup::removeVisitedLinks):
     28        (WebCore::PageGroup::removeAllVisitedLinks):
     29        Set dirty bit when changing any visited link information.
     30       
     31
    1322011-04-16  Leo Yang  <leoyang.webkit@gmail.com>
    233
  • trunk/Source/WebCore/WebCore.exp.in

    r84052 r84091  
    539539__ZN7WebCore20UserGestureIndicatorC1ENS_26ProcessingUserGestureStateE
    540540__ZN7WebCore20UserGestureIndicatorD1Ev
     541__ZN7WebCore20makeRGBA32FromFloatsEffff
    541542__ZN7WebCore20protocolIsJavaScriptERKN3WTF6StringE
    542 __ZN7WebCore20makeRGBA32FromFloatsEffff
    543543__ZN7WebCore21BackForwardController11itemAtIndexEi
    544544__ZN7WebCore21PlatformKeyboardEvent24disambiguateKeyDownEventENS0_4TypeEb
     
    713713__ZN7WebCore5Color5whiteE
    714714__ZN7WebCore5Frame10createViewERKNS_7IntSizeERKNS_5ColorEbS3_bNS_13ScrollbarModeEbS7_b
     715__ZN7WebCore5Frame13rangeForPointERKNS_8IntPointE
    715716__ZN7WebCore5Frame14frameForWidgetEPKNS_6WidgetE
    716717__ZN7WebCore5Frame17setPageZoomFactorEf
     
    724725__ZN7WebCore5Frame9nodeImageEPNS_4NodeE
    725726__ZN7WebCore5Frame9scalePageEfRKNS_8IntPointE
    726 __ZN7WebCore5Frame13rangeForPointERKNS_8IntPointE
    727727__ZN7WebCore5FrameD1Ev
    728728__ZN7WebCore5Image12supportsTypeERKN3WTF6StringE
     
    877877__ZN7WebCore8Settings27setFTPDirectoryTemplatePathERKN3WTF6StringE
    878878__ZN7WebCore8Settings27setLoadsImagesAutomaticallyEb
    879 __ZN7WebCore8Settings44setLoadsSiteIconsIgnoringImageLoadingSettingEb
    880879__ZN7WebCore8Settings27setLocalStorageDatabasePathERKN3WTF6StringE
    881880__ZN7WebCore8Settings27setSpatialNavigationEnabledEb
     
    902901__ZN7WebCore8Settings40setTextDirectionSubmenuInclusionBehaviorENS_37TextDirectionSubmenuInclusionBehaviorE
    903902__ZN7WebCore8Settings41setNeedsKeyboardEventDisambiguationQuirksEb
     903__ZN7WebCore8Settings44setLoadsSiteIconsIgnoringImageLoadingSettingEb
    904904__ZN7WebCore8blankURLEv
    905905__ZN7WebCore8makeRGBAEiiii
     
    979979__ZN7WebCore9PageCache11setCapacityEi
    980980__ZN7WebCore9PageCache27releaseAutoreleasedPagesNowEv
     981__ZN7WebCore9PageCache33markPagesForVistedLinkStyleRecalcEv
    981982__ZN7WebCore9PageGroup13isLinkVisitedEy
    982983__ZN7WebCore9PageGroup14addVisitedLinkEPKtm
     
    12211222__ZNK7WebCore6Chrome12createWindowEPNS_5FrameERKNS_16FrameLoadRequestERKNS_14WindowFeaturesERKNS_16NavigationActionE
    12221223__ZNK7WebCore6Cursor14platformCursorEv
    1223 __ZNK7WebCore6Editor8behaviorEv
    12241224__ZNK7WebCore6Editor12selectedTextEv
    12251225__ZNK7WebCore6Editor13canEditRichlyEv
     
    12431243__ZNK7WebCore6Editor7canCopyEv
    12441244__ZNK7WebCore6Editor7canEditEv
     1245__ZNK7WebCore6Editor8behaviorEv
    12451246__ZNK7WebCore6Editor8canPasteEv
    12461247__ZNK7WebCore6Editor9canDeleteEv
  • trunk/Source/WebCore/history/CachedPage.cpp

    r53274 r84091  
    2727#include "CachedPage.h"
    2828
     29#include "CSSStyleSelector.h"
    2930#include "FocusController.h"
    3031#include "Frame.h"
     
    5051    : m_timeStamp(currentTime())
    5152    , m_cachedMainFrame(CachedFrame::create(page->mainFrame()))
     53    , m_needStyleRecalcForVisitedLinks(false)
    5254{
    5355#ifndef NDEBUG
     
    8183            static_cast<Element*>(node)->updateFocusAppearance(true);
    8284    }
    83    
     85
     86    if (m_needStyleRecalcForVisitedLinks) {
     87        for (Frame* frame = page->mainFrame(); frame; frame = frame->tree()->traverseNext()) {
     88            if (CSSStyleSelector* styleSelector = frame->document()->styleSelector())
     89                styleSelector->allVisitedStateChanged();
     90        }
     91    }
     92
    8493    clear();
    8594}
     
    9099    m_cachedMainFrame->clear();
    91100    m_cachedMainFrame = 0;
     101    m_needStyleRecalcForVisitedLinks = false;
    92102}
    93103
  • trunk/Source/WebCore/history/CachedPage.h

    r53274 r84091  
    5151    CachedFrame* cachedMainFrame() { return m_cachedMainFrame.get(); }
    5252
     53    void markForVistedLinkStyleRecalc() { m_needStyleRecalcForVisitedLinks = true; }
     54
    5355private:
    5456    CachedPage(Page*);
     
    5658    double m_timeStamp;
    5759    RefPtr<CachedFrame> m_cachedMainFrame;
     60    bool m_needStyleRecalcForVisitedLinks;
    5861};
    5962
  • trunk/Source/WebCore/history/PageCache.cpp

    r76872 r84091  
    342342}
    343343
     344void PageCache::markPagesForVistedLinkStyleRecalc()
     345{
     346    for (HistoryItem* current = m_head; current; current = current->m_next)
     347        current->m_cachedPage->markForVistedLinkStyleRecalc();
     348}
     349
    344350void PageCache::add(PassRefPtr<HistoryItem> prpItem, Page* page)
    345351{
  • trunk/Source/WebCore/history/PageCache.h

    r76248 r84091  
    6060        int autoreleasedPageCount() const;
    6161
     62        void markPagesForVistedLinkStyleRecalc();
     63
    6264    private:
    6365        typedef HashSet<RefPtr<CachedPage> > CachedPageSet;
  • trunk/Source/WebCore/page/PageGroup.cpp

    r80892 r84091  
    3434#include "IDBFactoryBackendInterface.h"
    3535#include "Page.h"
     36#include "PageCache.h"
    3637#include "SecurityOrigin.h"
    3738#include "Settings.h"
     
    203204#endif
    204205    Page::visitedStateChanged(this, hash);
     206    pageCache()->markPagesForVistedLinkStyleRecalc();
    205207}
    206208
     
    227229    m_visitedLinkHashes.clear();
    228230    Page::allVisitedStateChanged(this);
     231    pageCache()->markPagesForVistedLinkStyleRecalc();
    229232}
    230233
     
    232235{
    233236    Page::removeAllVisitedLinks();
     237    pageCache()->markPagesForVistedLinkStyleRecalc();
    234238}
    235239
  • trunk/Source/WebKit2/ChangeLog

    r84082 r84091  
     12011-04-16  Sam Weinig  <sam@webkit.org>
     2
     3        Reviewed by Simon Fraser.
     4
     5        Pages in the PageCache don't have the correct visited link coloring after being restored
     6        https://bugs.webkit.org/show_bug.cgi?id=58721
     7
     8        * WebProcess/WebProcess.cpp:
     9        (WebKit::WebProcess::visitedLinkStateChanged):
     10        (WebKit::WebProcess::allVisitedLinkStateChanged):
     11        Mark all pages in the page cache as needing visited link style recalc
     12        whenever visited link information changes.
     13
    1142011-04-15  Daniel Bates  <dbates@webkit.org>
    215
  • trunk/Source/WebKit2/WebProcess/WebProcess.cpp

    r83777 r84091  
    6060#include <WebCore/MemoryCache.h>
    6161#include <WebCore/Page.h>
     62#include <WebCore/PageCache.h>
    6263#include <WebCore/PageGroup.h>
    6364#include <WebCore/ResourceHandle.h>
     
    7071
    7172#ifndef NDEBUG
    72 #include <WebCore/MemoryCache.h>
    7373#include <WebCore/GCController.h>
    7474#endif
     
    284284            Page::visitedStateChanged(PageGroup::pageGroup(it->second->identifier()), linkHashes[i]);
    285285    }
     286
     287    pageCache()->markPagesForVistedLinkStyleRecalc();
    286288}
    287289
     
    293295    for (; it != end; ++it)
    294296        Page::allVisitedStateChanged(PageGroup::pageGroup(it->second->identifier()));
     297
     298    pageCache()->markPagesForVistedLinkStyleRecalc();
    295299}
    296300
Note: See TracChangeset for help on using the changeset viewer.