Changeset 192711 in webkit


Ignore:
Timestamp:
Nov 20, 2015 5:42:11 PM (8 years ago)
Author:
commit-queue@webkit.org
Message:

Renaming PageCache suspension code to support more reasons for suspension.
https://bugs.webkit.org/show_bug.cgi?id=151527

Patch by Katlyn Graff <kgraff@apple.com> on 2015-11-20
Reviewed by Ryosuke Niwa.

No new tests because this is simply a refactor.

Renamed Element:: and Document:: documentWillSuspendForPageCache(),
documentDidResumeFromPageCache(),
registerForPageCacheSuspensionCallbacks(),
unregisterForPageCacheSuspensionCallbacks() to prepare to support
alternate reasons for document-level suspension.

  • dom/Document.cpp:

(WebCore::Document::suspend):
(WebCore::Document::resume):
(WebCore::Document::registerForDocumentSuspensionCallbacks):
(WebCore::Document::unregisterForDocumentSuspensionCallbacks):
(WebCore::Document::documentWillSuspendForPageCache): Deleted.
(WebCore::Document::documentDidResumeFromPageCache): Deleted.
(WebCore::Document::registerForPageCacheSuspensionCallbacks): Deleted.
(WebCore::Document::unregisterForPageCacheSuspensionCallbacks): Deleted.

  • dom/Document.h:
  • dom/Element.h:

(WebCore::Element::prepareForDocumentSuspension):
(WebCore::Element::resumeFromDocumentSuspension):
(WebCore::Element::documentWillSuspendForPageCache): Deleted.
(WebCore::Element::documentDidResumeFromPageCache): Deleted.

  • history/CachedFrame.cpp:

(WebCore::CachedFrameBase::restore):
(WebCore::CachedFrame::CachedFrame):

  • html/HTMLFormElement.cpp:

(WebCore::HTMLFormElement::~HTMLFormElement):
(WebCore::HTMLFormElement::parseAttribute):
(WebCore::HTMLFormElement::resumeFromDocumentSuspension):
(WebCore::HTMLFormElement::didMoveToNewDocument):
(WebCore::HTMLFormElement::documentDidResumeFromPageCache): Deleted.

  • html/HTMLFormElement.h:
  • html/HTMLInputElement.cpp:

(WebCore::HTMLInputElement::~HTMLInputElement):
(WebCore::HTMLInputElement::registerForSuspensionCallbackIfNeeded):
(WebCore::HTMLInputElement::unregisterForSuspensionCallbackIfNeeded):
(WebCore::HTMLInputElement::resumeFromDocumentSuspension):
(WebCore::HTMLInputElement::prepareForDocumentSuspension):
(WebCore::HTMLInputElement::didMoveToNewDocument):
(WebCore::HTMLInputElement::documentDidResumeFromPageCache): Deleted.
(WebCore::HTMLInputElement::documentWillSuspendForPageCache): Deleted.

  • html/HTMLInputElement.h:
  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::registerWithDocument):
(WebCore::HTMLMediaElement::unregisterWithDocument):
(WebCore::HTMLMediaElement::prepareForDocumentSuspension):
(WebCore::HTMLMediaElement::resumeFromDocumentSuspension):
(WebCore::HTMLMediaElement::documentWillSuspendForPageCache): Deleted.
(WebCore::HTMLMediaElement::documentDidResumeFromPageCache): Deleted.

  • html/HTMLMediaElement.h:
  • html/HTMLPlugInImageElement.cpp:

(WebCore::HTMLPlugInImageElement::~HTMLPlugInImageElement):
(WebCore::HTMLPlugInImageElement::createElementRenderer):
(WebCore::HTMLPlugInImageElement::didMoveToNewDocument):
(WebCore::HTMLPlugInImageElement::prepareForDocumentSuspension):
(WebCore::HTMLPlugInImageElement::resumeFromDocumentSuspension):
(WebCore::HTMLPlugInImageElement::documentWillSuspendForPageCache): Deleted.
(WebCore::HTMLPlugInImageElement::documentDidResumeFromPageCache): Deleted.

  • html/HTMLPlugInImageElement.h:
  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::commitProvisionalLoad):

  • svg/SVGSVGElement.cpp:

(WebCore::SVGSVGElement::SVGSVGElement):
(WebCore::SVGSVGElement::~SVGSVGElement):
(WebCore::SVGSVGElement::didMoveToNewDocument):
(WebCore::SVGSVGElement::prepareForDocumentSuspension):
(WebCore::SVGSVGElement::resumeFromDocumentSuspension):
(WebCore::SVGSVGElement::documentWillSuspendForPageCache): Deleted.
(WebCore::SVGSVGElement::documentDidResumeFromPageCache): Deleted.

  • svg/SVGSVGElement.h:
Location:
trunk/Source/WebCore
Files:
16 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r192709 r192711  
     12015-11-20  Katlyn Graff  <kgraff@apple.com>
     2
     3        Renaming PageCache suspension code to support more reasons for suspension.
     4        https://bugs.webkit.org/show_bug.cgi?id=151527
     5
     6        Reviewed by Ryosuke Niwa.
     7
     8        No new tests because this is simply a refactor.
     9
     10        Renamed Element:: and Document:: documentWillSuspendForPageCache(),
     11        documentDidResumeFromPageCache(),
     12        registerForPageCacheSuspensionCallbacks(),
     13        unregisterForPageCacheSuspensionCallbacks() to prepare to support
     14        alternate reasons for document-level suspension.
     15
     16        * dom/Document.cpp:
     17        (WebCore::Document::suspend):
     18        (WebCore::Document::resume):
     19        (WebCore::Document::registerForDocumentSuspensionCallbacks):
     20        (WebCore::Document::unregisterForDocumentSuspensionCallbacks):
     21        (WebCore::Document::documentWillSuspendForPageCache): Deleted.
     22        (WebCore::Document::documentDidResumeFromPageCache): Deleted.
     23        (WebCore::Document::registerForPageCacheSuspensionCallbacks): Deleted.
     24        (WebCore::Document::unregisterForPageCacheSuspensionCallbacks): Deleted.
     25        * dom/Document.h:
     26        * dom/Element.h:
     27        (WebCore::Element::prepareForDocumentSuspension):
     28        (WebCore::Element::resumeFromDocumentSuspension):
     29        (WebCore::Element::documentWillSuspendForPageCache): Deleted.
     30        (WebCore::Element::documentDidResumeFromPageCache): Deleted.
     31        * history/CachedFrame.cpp:
     32        (WebCore::CachedFrameBase::restore):
     33        (WebCore::CachedFrame::CachedFrame):
     34        * html/HTMLFormElement.cpp:
     35        (WebCore::HTMLFormElement::~HTMLFormElement):
     36        (WebCore::HTMLFormElement::parseAttribute):
     37        (WebCore::HTMLFormElement::resumeFromDocumentSuspension):
     38        (WebCore::HTMLFormElement::didMoveToNewDocument):
     39        (WebCore::HTMLFormElement::documentDidResumeFromPageCache): Deleted.
     40        * html/HTMLFormElement.h:
     41        * html/HTMLInputElement.cpp:
     42        (WebCore::HTMLInputElement::~HTMLInputElement):
     43        (WebCore::HTMLInputElement::registerForSuspensionCallbackIfNeeded):
     44        (WebCore::HTMLInputElement::unregisterForSuspensionCallbackIfNeeded):
     45        (WebCore::HTMLInputElement::resumeFromDocumentSuspension):
     46        (WebCore::HTMLInputElement::prepareForDocumentSuspension):
     47        (WebCore::HTMLInputElement::didMoveToNewDocument):
     48        (WebCore::HTMLInputElement::documentDidResumeFromPageCache): Deleted.
     49        (WebCore::HTMLInputElement::documentWillSuspendForPageCache): Deleted.
     50        * html/HTMLInputElement.h:
     51        * html/HTMLMediaElement.cpp:
     52        (WebCore::HTMLMediaElement::registerWithDocument):
     53        (WebCore::HTMLMediaElement::unregisterWithDocument):
     54        (WebCore::HTMLMediaElement::prepareForDocumentSuspension):
     55        (WebCore::HTMLMediaElement::resumeFromDocumentSuspension):
     56        (WebCore::HTMLMediaElement::documentWillSuspendForPageCache): Deleted.
     57        (WebCore::HTMLMediaElement::documentDidResumeFromPageCache): Deleted.
     58        * html/HTMLMediaElement.h:
     59        * html/HTMLPlugInImageElement.cpp:
     60        (WebCore::HTMLPlugInImageElement::~HTMLPlugInImageElement):
     61        (WebCore::HTMLPlugInImageElement::createElementRenderer):
     62        (WebCore::HTMLPlugInImageElement::didMoveToNewDocument):
     63        (WebCore::HTMLPlugInImageElement::prepareForDocumentSuspension):
     64        (WebCore::HTMLPlugInImageElement::resumeFromDocumentSuspension):
     65        (WebCore::HTMLPlugInImageElement::documentWillSuspendForPageCache): Deleted.
     66        (WebCore::HTMLPlugInImageElement::documentDidResumeFromPageCache): Deleted.
     67        * html/HTMLPlugInImageElement.h:
     68        * loader/FrameLoader.cpp:
     69        (WebCore::FrameLoader::commitProvisionalLoad):
     70        * svg/SVGSVGElement.cpp:
     71        (WebCore::SVGSVGElement::SVGSVGElement):
     72        (WebCore::SVGSVGElement::~SVGSVGElement):
     73        (WebCore::SVGSVGElement::didMoveToNewDocument):
     74        (WebCore::SVGSVGElement::prepareForDocumentSuspension):
     75        (WebCore::SVGSVGElement::resumeFromDocumentSuspension):
     76        (WebCore::SVGSVGElement::documentWillSuspendForPageCache): Deleted.
     77        (WebCore::SVGSVGElement::documentDidResumeFromPageCache): Deleted.
     78        * svg/SVGSVGElement.h:
     79
    1802015-11-20  Simon Fraser  <simon.fraser@apple.com>
    281
  • trunk/Source/WebCore/dom/Document.cpp

    r192369 r192711  
    45054505}
    45064506
    4507 void Document::documentWillSuspendForPageCache()
     4507void Document::suspend()
    45084508{
    45094509    documentWillBecomeInactive();
    45104510
    45114511    for (auto* element : m_documentSuspensionCallbackElements)
    4512         element->documentWillSuspendForPageCache();
     4512        element->prepareForDocumentSuspension();
    45134513
    45144514#ifndef NDEBUG
     
    45244524}
    45254525
    4526 void Document::documentDidResumeFromPageCache()
     4526void Document::resume()
    45274527{
    45284528    Vector<Element*> elements;
    45294529    copyToVector(m_documentSuspensionCallbackElements, elements);
    45304530    for (auto* element : elements)
    4531         element->documentDidResumeFromPageCache();
     4531        element->resumeFromDocumentSuspension();
    45324532
    45334533    if (renderView())
     
    45414541}
    45424542
    4543 void Document::registerForPageCacheSuspensionCallbacks(Element* e)
     4543void Document::registerForDocumentSuspensionCallbacks(Element* e)
    45444544{
    45454545    m_documentSuspensionCallbackElements.add(e);
    45464546}
    45474547
    4548 void Document::unregisterForPageCacheSuspensionCallbacks(Element* e)
     4548void Document::unregisterForDocumentSuspensionCallbacks(Element* e)
    45494549{
    45504550    m_documentSuspensionCallbackElements.remove(e);
  • trunk/Source/WebCore/dom/Document.h

    r192354 r192711  
    10031003    void setInPageCache(bool flag);
    10041004
    1005     // Elements can register themselves for the "documentWillSuspendForPageCache()" and 
    1006     // "documentDidResumeFromPageCache()" callbacks
    1007     void registerForPageCacheSuspensionCallbacks(Element*);
    1008     void unregisterForPageCacheSuspensionCallbacks(Element*);
     1005    // Elements can register themselves for the "suspend()" and
     1006    // "resume()" callbacks
     1007    void registerForDocumentSuspensionCallbacks(Element*);
     1008    void unregisterForDocumentSuspensionCallbacks(Element*);
    10091009
    10101010    void documentWillBecomeInactive();
    1011     void documentWillSuspendForPageCache();
    1012     void documentDidResumeFromPageCache();
     1011    void suspend();
     1012    void resume();
    10131013
    10141014    void registerForMediaVolumeCallbacks(Element*);
  • trunk/Source/WebCore/dom/Element.h

    r191452 r192711  
    347347
    348348    // Use Document::registerForDocumentActivationCallbacks() to subscribe to these
    349     virtual void documentWillSuspendForPageCache() { }
    350     virtual void documentDidResumeFromPageCache() { }
     349    virtual void prepareForDocumentSuspension() { }
     350    virtual void resumeFromDocumentSuspension() { }
    351351
    352352    // Use Document::registerForMediaVolumeCallbacks() to subscribe to this
  • trunk/Source/WebCore/history/CachedFrame.cpp

    r188659 r192711  
    136136#endif
    137137
    138     m_document->documentDidResumeFromPageCache();
     138    m_document->resume();
    139139}
    140140
     
    166166    // Suspending must also happen after we've recursed over child frames, in case
    167167    // those create more objects.
    168     m_document->documentWillSuspendForPageCache();
     168    m_document->suspend();
    169169    m_document->suspendScriptedAnimationControllerCallbacks();
    170170    m_document->suspendActiveDOMObjects(ActiveDOMObject::PageCache);
     
    180180    frame.view()->clearScrollableAreas();
    181181
    182     // documentWillSuspendForPageCache() can set up a layout timer on the FrameView, so clear timers after that.
     182    // suspend() can set up a layout timer on the FrameView, so clear timers after that.
    183183    frame.clearTimers();
    184184
  • trunk/Source/WebCore/html/HTMLFormElement.cpp

    r191353 r192711  
    8585    document().formController().willDeleteForm(this);
    8686    if (!shouldAutocomplete())
    87         document().unregisterForPageCacheSuspensionCallbacks(this);
     87        document().unregisterForDocumentSuspensionCallbacks(this);
    8888
    8989    for (auto& associatedElement : m_associatedElements)
     
    493493    else if (name == autocompleteAttr) {
    494494        if (!shouldAutocomplete())
    495             document().registerForPageCacheSuspensionCallbacks(this);
     495            document().registerForDocumentSuspensionCallbacks(this);
    496496        else
    497             document().unregisterForPageCacheSuspensionCallbacks(this);
     497            document().unregisterForDocumentSuspensionCallbacks(this);
    498498    }
    499499    else
     
    811811}
    812812
    813 void HTMLFormElement::documentDidResumeFromPageCache()
     813void HTMLFormElement::resumeFromDocumentSuspension()
    814814{
    815815    ASSERT(!shouldAutocomplete());
     
    825825    if (!shouldAutocomplete()) {
    826826        if (oldDocument)
    827             oldDocument->unregisterForPageCacheSuspensionCallbacks(this);
    828         document().registerForPageCacheSuspensionCallbacks(this);
     827            oldDocument->unregisterForDocumentSuspensionCallbacks(this);
     828        document().registerForDocumentSuspensionCallbacks(this);
    829829    }
    830830
  • trunk/Source/WebCore/html/HTMLFormElement.h

    r191353 r192711  
    151151    virtual bool isURLAttribute(const Attribute&) const override;
    152152
    153     virtual void documentDidResumeFromPageCache() override;
     153    virtual void resumeFromDocumentSuspension() override;
    154154
    155155    virtual void didMoveToNewDocument(Document* oldDocument) override;
  • trunk/Source/WebCore/html/HTMLInputElement.cpp

    r191876 r192711  
    151151{
    152152    if (needsSuspensionCallback())
    153         document().unregisterForPageCacheSuspensionCallbacks(this);
     153        document().unregisterForDocumentSuspensionCallbacks(this);
    154154
    155155    // Need to remove form association while this is still an HTMLInputElement
     
    14001400{
    14011401    if (needsSuspensionCallback())
    1402         document().registerForPageCacheSuspensionCallbacks(this);
     1402        document().registerForDocumentSuspensionCallbacks(this);
    14031403}
    14041404
     
    14061406{
    14071407    if (!needsSuspensionCallback())
    1408         document().unregisterForPageCacheSuspensionCallbacks(this);
     1408        document().unregisterForDocumentSuspensionCallbacks(this);
    14091409}
    14101410
     
    14321432}
    14331433
    1434 void HTMLInputElement::documentDidResumeFromPageCache()
     1434void HTMLInputElement::resumeFromDocumentSuspension()
    14351435{
    14361436    ASSERT(needsSuspensionCallback());
    14371437
    14381438#if ENABLE(INPUT_TYPE_COLOR)
    1439     // <input type=color> uses documentWillSuspendForPageCache to detach the color picker UI,
     1439    // <input type=color> uses prepareForDocumentSuspension to detach the color picker UI,
    14401440    // so it should not be reset when being loaded from page cache.
    14411441    if (isColorControl())
     
    14461446
    14471447#if ENABLE(INPUT_TYPE_COLOR)
    1448 void HTMLInputElement::documentWillSuspendForPageCache()
     1448void HTMLInputElement::prepareForDocumentSuspension()
    14491449{
    14501450    if (!isColorControl())
     
    15031503        // Always unregister for cache callbacks when leaving a document, even if we would otherwise like to be registered
    15041504        if (needsSuspensionCallback)
    1505             oldDocument->unregisterForPageCacheSuspensionCallbacks(this);
     1505            oldDocument->unregisterForDocumentSuspensionCallbacks(this);
    15061506        if (isRadioButton())
    15071507            oldDocument->formController().checkedRadioButtons().removeButton(this);
     
    15131513
    15141514    if (needsSuspensionCallback)
    1515         document().registerForPageCacheSuspensionCallbacks(this);
     1515        document().registerForDocumentSuspensionCallbacks(this);
    15161516
    15171517#if ENABLE(TOUCH_EVENTS)
  • trunk/Source/WebCore/html/HTMLInputElement.h

    r191876 r192711  
    377377    virtual bool isOutOfRange() const override final;
    378378
    379     virtual void documentDidResumeFromPageCache() override final;
     379    virtual void resumeFromDocumentSuspension() override final;
    380380#if ENABLE(INPUT_TYPE_COLOR)
    381     virtual void documentWillSuspendForPageCache() override final;
     381    virtual void prepareForDocumentSuspension() override final;
    382382#endif
    383383
  • trunk/Source/WebCore/html/HTMLMediaElement.cpp

    r192503 r192711  
    546546
    547547#if ENABLE(WIRELESS_PLAYBACK_TARGET)
    548     document.registerForPageCacheSuspensionCallbacks(this);
     548    document.registerForDocumentSuspensionCallbacks(this);
    549549#endif
    550550
     
    580580
    581581#if ENABLE(WIRELESS_PLAYBACK_TARGET)
    582     document.unregisterForPageCacheSuspensionCallbacks(this);
     582    document.unregisterForDocumentSuspensionCallbacks(this);
    583583#endif
    584584
     
    606606
    607607#if ENABLE(WIRELESS_PLAYBACK_TARGET)
    608 void HTMLMediaElement::documentWillSuspendForPageCache()
     608void HTMLMediaElement::prepareForDocumentSuspension()
    609609{
    610610    m_mediaSession->unregisterWithDocument(document());
    611611}
    612612
    613 void HTMLMediaElement::documentDidResumeFromPageCache()
     613void HTMLMediaElement::resumeFromDocumentSuspension()
    614614{
    615615    m_mediaSession->registerWithDocument(document());
  • trunk/Source/WebCore/html/HTMLMediaElement.h

    r192354 r192711  
    748748
    749749#if ENABLE(WIRELESS_PLAYBACK_TARGET)
    750     virtual void documentWillSuspendForPageCache() override final;
    751     virtual void documentDidResumeFromPageCache() override final;
     750    virtual void prepareForDocumentSuspension() override final;
     751    virtual void resumeFromDocumentSuspension() override final;
    752752
    753753    enum class UpdateMediaState {
  • trunk/Source/WebCore/html/HTMLPlugInImageElement.cpp

    r190859 r192711  
    124124{
    125125    if (m_needsDocumentActivationCallbacks)
    126         document().unregisterForPageCacheSuspensionCallbacks(this);
     126        document().unregisterForDocumentSuspensionCallbacks(this);
    127127}
    128128
     
    201201    if (!m_needsDocumentActivationCallbacks) {
    202202        m_needsDocumentActivationCallbacks = true;
    203         document().registerForPageCacheSuspensionCallbacks(this);
     203        document().registerForDocumentSuspensionCallbacks(this);
    204204    }
    205205
     
    302302{
    303303    if (m_needsDocumentActivationCallbacks) {
    304         oldDocument->unregisterForPageCacheSuspensionCallbacks(this);
    305         document().registerForPageCacheSuspensionCallbacks(this);
     304        oldDocument->unregisterForDocumentSuspensionCallbacks(this);
     305        document().registerForDocumentSuspensionCallbacks(this);
    306306    }
    307307
     
    312312}
    313313
    314 void HTMLPlugInImageElement::documentWillSuspendForPageCache()
     314void HTMLPlugInImageElement::prepareForDocumentSuspension()
    315315{
    316316    if (renderer())
    317317        Style::detachRenderTree(*this);
    318318
    319     HTMLPlugInElement::documentWillSuspendForPageCache();
    320 }
    321 
    322 void HTMLPlugInImageElement::documentDidResumeFromPageCache()
     319    HTMLPlugInElement::prepareForDocumentSuspension();
     320}
     321
     322void HTMLPlugInImageElement::resumeFromDocumentSuspension()
    323323{
    324324    setNeedsStyleRecalc(ReconstructRenderTree);
    325325
    326     HTMLPlugInElement::documentDidResumeFromPageCache();
     326    HTMLPlugInElement::resumeFromDocumentSuspension();
    327327}
    328328
  • trunk/Source/WebCore/html/HTMLPlugInImageElement.h

    r190859 r192711  
    121121    virtual void willDetachRenderers() override final;
    122122
    123     virtual void documentWillSuspendForPageCache() override final;
    124     virtual void documentDidResumeFromPageCache() override final;
     123    virtual void prepareForDocumentSuspension() override final;
     124    virtual void resumeFromDocumentSuspension() override final;
    125125
    126126    virtual void defaultEventHandler(Event*) override final;
  • trunk/Source/WebCore/loader/FrameLoader.cpp

    r192354 r192711  
    18211821            m_frame.page()->chrome().didReceiveDocType(&m_frame);
    18221822#endif
    1823         m_frame.document()->documentDidResumeFromPageCache();
     1823        m_frame.document()->resume();
    18241824
    18251825        // Force a layout to update view size and thereby update scrollbars.
  • trunk/Source/WebCore/svg/SVGSVGElement.cpp

    r191002 r192711  
    6969    ASSERT(hasTagName(SVGNames::svgTag));
    7070    registerAnimatedPropertiesForSVGSVGElement();
    71     document.registerForPageCacheSuspensionCallbacks(this);
     71    document.registerForDocumentSuspensionCallbacks(this);
    7272}
    7373
     
    8686    if (m_viewSpec)
    8787        m_viewSpec->resetContextElement();
    88     document().unregisterForPageCacheSuspensionCallbacks(this);
     88    document().unregisterForDocumentSuspensionCallbacks(this);
    8989    document().accessSVGExtensions().removeTimeContainer(this);
    9090}
     
    9393{
    9494    if (oldDocument)
    95         oldDocument->unregisterForPageCacheSuspensionCallbacks(this);
    96     document().registerForPageCacheSuspensionCallbacks(this);
     95        oldDocument->unregisterForDocumentSuspensionCallbacks(this);
     96    document().registerForDocumentSuspensionCallbacks(this);
    9797    SVGGraphicsElement::didMoveToNewDocument(oldDocument);
    9898}
     
    659659}
    660660
    661 void SVGSVGElement::documentWillSuspendForPageCache()
     661void SVGSVGElement::prepareForDocumentSuspension()
    662662{
    663663    pauseAnimations();
    664664}
    665665
    666 void SVGSVGElement::documentDidResumeFromPageCache()
     666void SVGSVGElement::resumeFromDocumentSuspension()
    667667{
    668668    unpauseAnimations();
  • trunk/Source/WebCore/svg/SVGSVGElement.h

    r185503 r192711  
    140140    virtual void svgAttributeChanged(const QualifiedName&) override;
    141141    virtual bool selfHasRelativeLengths() const override;
    142     virtual void documentWillSuspendForPageCache() override;
    143     virtual void documentDidResumeFromPageCache() override;
     142    virtual void prepareForDocumentSuspension() override;
     143    virtual void resumeFromDocumentSuspension() override;
    144144    virtual AffineTransform localCoordinateSpaceTransform(SVGLocatable::CTMScope) const override;
    145145
Note: See TracChangeset for help on using the changeset viewer.