Changeset 156625 in webkit


Ignore:
Timestamp:
Sep 29, 2013 9:36:35 PM (10 years ago)
Author:
weinig@apple.com
Message:

Cleanup PageThrottler and PageConsole a bit
https://bugs.webkit.org/show_bug.cgi?id=122085

Reviewed by Anders Carlsson.

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

(WebCore::FrameLoader::completed):

  • loader/FrameLoader.h:
  • loader/SubresourceLoader.cpp:

(WebCore::SubresourceLoader::checkForHTTPStatusCodeError):
(WebCore::SubresourceLoader::didFinishLoading):
(WebCore::SubresourceLoader::didFail):
(WebCore::SubresourceLoader::willCancel):

  • loader/SubresourceLoader.h:

Store the PageActivityAssertionToken as a std::unique_ptr.

  • page/Page.cpp:

(WebCore::Page::Page):
Use createOwned and pass this by reference for the PageThrottler and PageConsole.
(WebCore::Page::~Page):
Remove unnecessary clearing of an OwnPtr that is about to be destroyed.

  • page/Page.h:

Make m_pageThrottler const and return it as a reference.

  • page/PageActivityAssertionToken.cpp:

(WebCore::PageActivityAssertionToken::PageActivityAssertionToken):
(WebCore::PageActivityAssertionToken::~PageActivityAssertionToken):

  • page/PageActivityAssertionToken.h:

Take the PageThrottler by reference in the constructor. It is never null.

  • page/PageConsole.cpp:

(WebCore::PageConsole::PageConsole):
(WebCore::PageConsole::~PageConsole):
(WebCore::PageConsole::addMessage):

  • page/PageConsole.h:

Pass and store the Page as a reference and remove an extraneous null check. Remove
the create function.

  • page/PageThrottler.cpp:

(WebCore::PageThrottler::PageThrottler):
(WebCore::PageThrottler::~PageThrottler):
(WebCore::PageThrottler::createActivityToken):
(WebCore::PageThrottler::throttlePage):
(WebCore::PageThrottler::unthrottlePage):
(WebCore::PageThrottler::addActivityToken):
(WebCore::PageThrottler::removeActivityToken):

  • page/PageThrottler.h:

Pass and store the Page as a reference. Move the creation of PageActivityAssertionToken here
to aid encapsulation.

Location:
trunk/Source/WebCore
Files:
14 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r156623 r156625  
     12013-09-29  Sam Weinig  <sam@webkit.org>
     2
     3        Cleanup PageThrottler and PageConsole a bit
     4        https://bugs.webkit.org/show_bug.cgi?id=122085
     5
     6        Reviewed by Anders Carlsson.
     7
     8        * html/HTMLMediaElement.h:
     9        * loader/FrameLoader.cpp:
     10        (WebCore::FrameLoader::completed):
     11        * loader/FrameLoader.h:
     12        * loader/SubresourceLoader.cpp:
     13        (WebCore::SubresourceLoader::checkForHTTPStatusCodeError):
     14        (WebCore::SubresourceLoader::didFinishLoading):
     15        (WebCore::SubresourceLoader::didFail):
     16        (WebCore::SubresourceLoader::willCancel):
     17        * loader/SubresourceLoader.h:
     18        Store the PageActivityAssertionToken as a std::unique_ptr.
     19
     20        * page/Page.cpp:
     21        (WebCore::Page::Page):
     22        Use createOwned and pass this by reference for the PageThrottler and PageConsole.
     23        (WebCore::Page::~Page):
     24        Remove unnecessary clearing of an OwnPtr that is about to be destroyed.
     25        * page/Page.h:
     26        Make m_pageThrottler const and return it as a reference.
     27
     28        * page/PageActivityAssertionToken.cpp:
     29        (WebCore::PageActivityAssertionToken::PageActivityAssertionToken):
     30        (WebCore::PageActivityAssertionToken::~PageActivityAssertionToken):
     31        * page/PageActivityAssertionToken.h:
     32        Take the PageThrottler by reference in the constructor. It is never null.
     33
     34        * page/PageConsole.cpp:
     35        (WebCore::PageConsole::PageConsole):
     36        (WebCore::PageConsole::~PageConsole):
     37        (WebCore::PageConsole::addMessage):
     38        * page/PageConsole.h:
     39        Pass and store the Page as a reference and remove an extraneous null check. Remove
     40        the create function.
     41
     42        * page/PageThrottler.cpp:
     43        (WebCore::PageThrottler::PageThrottler):
     44        (WebCore::PageThrottler::~PageThrottler):
     45        (WebCore::PageThrottler::createActivityToken):
     46        (WebCore::PageThrottler::throttlePage):
     47        (WebCore::PageThrottler::unthrottlePage):
     48        (WebCore::PageThrottler::addActivityToken):
     49        (WebCore::PageThrottler::removeActivityToken):
     50        * page/PageThrottler.h:
     51        Pass and store the Page as a reference. Move the creation of PageActivityAssertionToken here
     52        to aid encapsulation.
     53
    1542013-09-29  Darin Adler  <darin@apple.com>
    255
  • trunk/Source/WebCore/html/HTMLMediaElement.h

    r156550 r156625  
    782782#endif
    783783
    784     OwnPtr<PageActivityAssertionToken> m_activityToken;
     784    std::unique_ptr<PageActivityAssertionToken> m_activityToken;
    785785    size_t m_reportedExtraMemoryCost;
    786786
  • trunk/Source/WebCore/loader/FrameLoader.cpp

    r156607 r156625  
    11021102    if (m_frame.view())
    11031103        m_frame.view()->maintainScrollPositionAtAnchor(0);
    1104     m_activityAssertion.clear();
     1104    m_activityAssertion = nullptr;
    11051105}
    11061106
  • trunk/Source/WebCore/loader/FrameLoader.h

    r156607 r156625  
    448448    URL m_previousURL;
    449449    RefPtr<HistoryItem> m_requestedHistoryItem;
    450     OwnPtr<PageActivityAssertionToken> m_activityAssertion;
     450    std::unique_ptr<PageActivityAssertionToken> m_activityAssertion;
    451451};
    452452
  • trunk/Source/WebCore/loader/SubresourceLoader.cpp

    r156550 r156625  
    261261
    262262    m_state = Finishing;
    263     m_activityAssertion.clear();
     263    m_activityAssertion = nullptr;
    264264    m_resource->error(CachedResource::LoadError);
    265265    cancel();
     
    279279    CachedResourceHandle<CachedResource> protectResource(m_resource);
    280280    m_state = Finishing;
    281     m_activityAssertion.clear();
     281    m_activityAssertion = nullptr;
    282282    m_resource->setLoadFinishTime(finishTime);
    283283    m_resource->finishLoading(resourceData());
     
    304304    CachedResourceHandle<CachedResource> protectResource(m_resource);
    305305    m_state = Finishing;
    306     m_activityAssertion.clear();
     306    m_activityAssertion = nullptr;
    307307    if (m_resource->resourceToRevalidate())
    308308        memoryCache()->revalidationFailed(m_resource);
     
    327327    Ref<SubresourceLoader> protect(*this);
    328328    m_state = Finishing;
    329     m_activityAssertion.clear();
     329    m_activityAssertion = nullptr;
    330330    if (m_resource->resourceToRevalidate())
    331331        memoryCache()->revalidationFailed(m_resource);
  • trunk/Source/WebCore/loader/SubresourceLoader.h

    r152778 r156625  
    103103    SubresourceLoaderState m_state;
    104104    OwnPtr<RequestCountTracker> m_requestCountTracker;
    105     OwnPtr<PageActivityAssertionToken> m_activityAssertion;
     105    std::unique_ptr<PageActivityAssertionToken> m_activityAssertion;
    106106};
    107107
  • trunk/Source/WebCore/page/Page.cpp

    r156607 r156625  
    186186    , m_alternativeTextClient(pageClients.alternativeTextClient)
    187187    , m_scriptedAnimationsSuspended(false)
    188     , m_pageThrottler(PageThrottler::create(this))
    189     , m_console(PageConsole::create(this))
     188    , m_pageThrottler(createOwned<PageThrottler>(*this))
     189    , m_console(createOwned<PageConsole>(*this))
    190190    , m_lastSpatialNavigationCandidatesCount(0) // NOTE: Only called from Internals for Spatial Navigation testing.
    191191    , m_framesHandlingBeforeUnloadEvent(0)
     
    236236    pageCounter.decrement();
    237237#endif
    238 
    239     m_pageThrottler.clear();
    240238}
    241239
     
    15061504}
    15071505
    1508 PassOwnPtr<PageActivityAssertionToken> Page::createActivityToken()
    1509 {
    1510     return adoptPtr(new PageActivityAssertionToken(m_pageThrottler.get()));
     1506std::unique_ptr<PageActivityAssertionToken> Page::createActivityToken()
     1507{
     1508    return m_pageThrottler->createActivityToken();
    15111509}
    15121510
  • trunk/Source/WebCore/page/Page.h

    r156607 r156625  
    396396    void resetSeenMediaEngines();
    397397
    398     PageThrottler* pageThrottler() { return m_pageThrottler.get(); }
    399     PassOwnPtr<PageActivityAssertionToken> createActivityToken();
     398    PageThrottler& pageThrottler() { return *m_pageThrottler; }
     399    std::unique_ptr<PageActivityAssertionToken> createActivityToken();
    400400
    401401    PageConsole& console() { return *m_console; }
     
    547547
    548548    bool m_scriptedAnimationsSuspended;
    549     OwnPtr<PageThrottler> m_pageThrottler;
    550 
     549    const OwnPtr<PageThrottler> m_pageThrottler;
    551550    const OwnPtr<PageConsole> m_console;
    552551
  • trunk/Source/WebCore/page/PageActivityAssertionToken.cpp

    r150971 r156625  
    3131namespace WebCore {
    3232
    33 PageActivityAssertionToken::PageActivityAssertionToken(PageThrottler* throttler)
    34     :m_throttler(throttler)
     33PageActivityAssertionToken::PageActivityAssertionToken(PageThrottler& throttler)
     34    : m_throttler(&throttler)
    3535{
    36     if (m_throttler)
    37         m_throttler->addActivityToken(this);
     36    m_throttler->addActivityToken(*this);
    3837}
    3938
     
    4140{
    4241    if (m_throttler)
    43         m_throttler->removeActivityToken(this);
     42        m_throttler->removeActivityToken(*this);
    4443}
    4544
     
    4948}
    5049
    51 }
     50} // namespace WebCore
    5251
    5352
  • trunk/Source/WebCore/page/PageActivityAssertionToken.h

    r150971 r156625  
    3636    WTF_MAKE_NONCOPYABLE(PageActivityAssertionToken);
    3737public:
     38    PageActivityAssertionToken(PageThrottler&);
    3839    ~PageActivityAssertionToken();
    3940
     
    4142
    4243private:
    43     friend class Page;
    44     PageActivityAssertionToken(PageThrottler*);
    45 
    4644    PageThrottler* m_throttler;
    4745};
    4846
    49 }
     47} // namespace WebCore
    5048
    5149#endif // PageActivityAssertionToken_h
  • trunk/Source/WebCore/page/PageConsole.cpp

    r156130 r156625  
    5656}
    5757
    58 PageConsole::PageConsole(Page* page) : m_page(page) { }
    59 
    60 PageConsole::~PageConsole() { }
     58PageConsole::PageConsole(Page& page)
     59    : m_page(page)
     60{
     61}
     62
     63PageConsole::~PageConsole()
     64{
     65}
    6166
    6267void PageConsole::printSourceURLAndLine(const String& sourceURL, unsigned lineNumber)
     
    162167        return;
    163168
    164     Page* page = this->page();
    165     if (!page)
    166         return;
    167 
    168169    if (callStack)
    169         InspectorInstrumentation::addMessageToConsole(page, source, LogMessageType, level, message, callStack, requestIdentifier);
     170        InspectorInstrumentation::addMessageToConsole(&m_page, source, LogMessageType, level, message, callStack, requestIdentifier);
    170171    else
    171         InspectorInstrumentation::addMessageToConsole(page, source, LogMessageType, level, message, url, lineNumber, columnNumber, state, requestIdentifier);
     172        InspectorInstrumentation::addMessageToConsole(&m_page, source, LogMessageType, level, message, url, lineNumber, columnNumber, state, requestIdentifier);
    172173
    173174    if (source == CSSMessageSource)
    174175        return;
    175176
    176     if (page->settings().privateBrowsingEnabled())
    177         return;
    178 
    179     page->chrome().client().addMessageToConsole(source, level, message, lineNumber, columnNumber, url);
    180 
    181     if (!page->settings().logsPageMessagesToSystemConsoleEnabled() && !shouldPrintExceptions())
     177    if (m_page.settings().privateBrowsingEnabled())
     178        return;
     179
     180    m_page.chrome().client().addMessageToConsole(source, level, message, lineNumber, columnNumber, url);
     181
     182    if (!m_page.settings().logsPageMessagesToSystemConsoleEnabled() && !shouldPrintExceptions())
    182183        return;
    183184
  • trunk/Source/WebCore/page/PageConsole.h

    r155736 r156625  
    3232#include "ConsoleTypes.h"
    3333#include "ScriptCallStack.h"
    34 #include "ScriptState.h"
    3534#include <wtf/Forward.h>
    3635#include <wtf/PassOwnPtr.h>
     36
     37namespace JSC {
     38class ExecState;
     39}
    3740
    3841namespace WebCore {
     
    4346class PageConsole {
    4447public:
    45     static PassOwnPtr<PageConsole> create(Page* page) { return adoptPtr(new PageConsole(page)); }
    46     virtual ~PageConsole();
     48    PageConsole(Page&);
     49    ~PageConsole();
    4750
    4851    static void printSourceURLAndLine(const String& sourceURL, unsigned lineNumber);
     
    6063
    6164private:
    62     PageConsole(Page*);
    63 
    64     Page* page() { return m_page; };
    65 
    66     Page* m_page;
     65    Page& m_page;
    6766};
    6867
  • trunk/Source/WebCore/page/PageThrottler.cpp

    r156543 r156625  
    3232#include "Page.h"
    3333#include "PageActivityAssertionToken.h"
     34#include <wtf/StdLibExtras.h>
    3435
    3536namespace WebCore {
     
    3738static const double kThrottleHysteresisSeconds = 2.0;
    3839
    39 PageThrottler::PageThrottler(Page* page)
     40PageThrottler::PageThrottler(Page& page)
    4041    : m_page(page)
    4142    , m_throttleState(PageNotThrottledState)
    4243    , m_throttleHysteresisTimer(this, &PageThrottler::throttleHysteresisTimerFired)
    4344{
    44     m_page->chrome().client().incrementActivePageCount();
     45    m_page.chrome().client().incrementActivePageCount();
    4546}
    4647
     
    4950    setThrottled(false);
    5051
    51     for (HashSet<PageActivityAssertionToken*>::iterator i = m_activityTokens.begin(); i != m_activityTokens.end(); ++i)
    52         (*i)->invalidate();
     52    for (auto it = m_activityTokens.begin(), end = m_activityTokens.end(); it != end; ++it)
     53        (*it)->invalidate();
    5354
    5455    if (m_throttleState != PageThrottledState)
    55         m_page->chrome().client().decrementActivePageCount();
     56        m_page.chrome().client().decrementActivePageCount();
     57}
     58
     59std::unique_ptr<PageActivityAssertionToken> PageThrottler::createActivityToken()
     60{
     61    return std::make_unique<PageActivityAssertionToken>(*this);
    5662}
    5763
     
    6066    m_throttleState = PageThrottledState;
    6167
    62     m_page->chrome().client().decrementActivePageCount();
     68    m_page.chrome().client().decrementActivePageCount();
    6369
    64     for (Frame* frame = &m_page->mainFrame(); frame; frame = frame->tree().traverseNext()) {
     70    for (Frame* frame = &m_page.mainFrame(); frame; frame = frame->tree().traverseNext()) {
    6571        if (frame->document())
    6672            frame->document()->scriptedAnimationControllerSetThrottled(true);
    6773    }
    6874
    69     m_page->throttleTimers();
     75    m_page.throttleTimers();
    7076}
    7177
     
    7985
    8086    if (oldState == PageThrottledState)
    81         m_page->chrome().client().incrementActivePageCount();
     87        m_page.chrome().client().incrementActivePageCount();
    8288   
    83     for (Frame* frame = &m_page->mainFrame(); frame; frame = frame->tree().traverseNext()) {
     89    for (Frame* frame = &m_page.mainFrame(); frame; frame = frame->tree().traverseNext()) {
    8490        if (frame->document())
    8591            frame->document()->scriptedAnimationControllerSetThrottled(false);
    8692    }
    8793
    88     m_page->unthrottleTimers();
     94    m_page.unthrottleTimers();
    8995}
    9096
     
    129135}
    130136
    131 void PageThrottler::addActivityToken(PageActivityAssertionToken* token)
     137void PageThrottler::addActivityToken(PageActivityAssertionToken& token)
    132138{
    133     ASSERT(token && !m_activityTokens.contains(token));
     139    ASSERT(!m_activityTokens.contains(&token));
    134140
    135     m_activityTokens.add(token);
     141    m_activityTokens.add(&token);
    136142
    137143    // If we've already got events that block throttling we can return early
     
    149155}
    150156
    151 void PageThrottler::removeActivityToken(PageActivityAssertionToken* token)
     157void PageThrottler::removeActivityToken(PageActivityAssertionToken& token)
    152158{
    153     ASSERT(token && m_activityTokens.contains(token));
     159    ASSERT(m_activityTokens.contains(&token));
    154160
    155     m_activityTokens.remove(token);
     161    m_activityTokens.remove(&token);
    156162
    157163    if (m_activityTokens.size())
  • trunk/Source/WebCore/page/PageThrottler.h

    r152402 r156625  
    4040class PageThrottler {
    4141public:
    42     static PassOwnPtr<PageThrottler> create(Page* page)
    43     {
    44         return adoptPtr(new PageThrottler(page));
    45     }
     42    PageThrottler(Page&);
     43    ~PageThrottler();
     44
     45    std::unique_ptr<PageActivityAssertionToken> createActivityToken();
    4646
    4747    bool shouldThrottleAnimations() const { return m_throttleState != PageNotThrottledState; }
     
    5151
    5252    void reportInterestingEvent();
    53 
    54     ~PageThrottler();
    5553
    5654private:
     
    6260
    6361    friend class PageActivityAssertionToken;
    64     void addActivityToken(PageActivityAssertionToken*);
    65     void removeActivityToken(PageActivityAssertionToken*);
     62    void addActivityToken(PageActivityAssertionToken&);
     63    void removeActivityToken(PageActivityAssertionToken&);
    6664
    67     PageThrottler(Page*);
    6865    void startThrottleHysteresisTimer();
    6966    void stopThrottleHysteresisTimer();
    7067    void throttleHysteresisTimerFired(Timer<PageThrottler>*);
    7168
    72     Page* m_page;
    73 
    7469    void throttlePage();
    7570    void unthrottlePage();
    7671
     72    Page& m_page;
    7773    PageThrottleState m_throttleState;
    7874    Timer<PageThrottler> m_throttleHysteresisTimer;
Note: See TracChangeset for help on using the changeset viewer.